commit 193d112c35e4122ac7d4fb1fff0720aa24d85013 Author: spatialfree Date: Thu Jul 9 11:41:01 2020 -0700 double time pitch shift diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..069926b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.ogg filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07da593 --- /dev/null +++ b/.gitignore @@ -0,0 +1,71 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Asset meta data should only be ignored when the corresponding asset is also ignored +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.aab +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties + +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* \ No newline at end of file diff --git a/.insightsIgnore b/.insightsIgnore new file mode 100644 index 0000000..d6eee9e --- /dev/null +++ b/.insightsIgnore @@ -0,0 +1,39 @@ +// ****************************************************************************** +// * You can ignore file extensions like *.[fileExtension] * +// * You can add settings like @[settingName]=[value] * +// * You have to write all rules line by line without ','(Comma) * +// * You cannot add comment end of the rule. Example: e.js //Test File * +// * You cannot add multiple rules to one line * +// * You are free to delete this comment * +// * Settings as default * +// * - @exploreTimeout=7000 - Max 25000 Min 2000 Timeout between reports * +// * - @noIgnoreNodeModules=false - Overrides default node_modules ignore * +// * - @reExploreTimeout=5000 - Min 5000 Timeout for reExploring project * +// ****************************************************************************** +package.json +package-lock.json +.gitignore +.eslintrc.yml +.vscodeignore +LICENSE +.npmignore +.travis.yml +.jshintrc +gulpfile.js +license +*.txt +/.vscode +/Assets/Audio +/Assets/Fonts +/Assets/NaughtyAttributes +/Assets/Oculus +/Assets/Plugins +/Assets/Resources +/Assets/Scenes +/Assets/TextMesh Pro +/Builds +/Content +/Logs +/MemoryCaptures +/Packages +/Recordings \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..46a3a6c --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,54 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Unity Editor", + "type": "unity", + "path": "/c:/dofdev/SnakeInABox/Library/EditorInstance.json", + "request": "launch" + }, + { + "name": "Windows Player", + "type": "unity", + "request": "launch" + }, + { + "name": "OSX Player", + "type": "unity", + "request": "launch" + }, + { + "name": "Linux Player", + "type": "unity", + "request": "launch" + }, + { + "name": "iOS Player", + "type": "unity", + "request": "launch" + }, + { + "name": "Android Player", + "type": "unity", + "request": "launch" + }, + { + "name": "Xbox One Player", + "type": "unity", + "request": "launch" + }, + { + "name": "PS4 Player", + "type": "unity", + "request": "launch" + }, + { + "name": "SwitchPlayer", + "type": "unity", + "request": "launch" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4edd970 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,56 @@ +{ + "files.exclude": + { + "**/.DS_Store":true, + "**/.git":true, + "**/.gitignore":true, + "**/.gitmodules":true, + "**/*.booproj":true, + "**/*.pidb":true, + "**/*.suo":true, + "**/*.user":true, + "**/*.userprefs":true, + "**/*.unityproj":true, + "**/*.dll":true, + "**/*.exe":true, + "**/*.pdf":true, + "**/*.mid":true, + "**/*.midi":true, + "**/*.wav":true, + "**/*.gif":true, + "**/*.ico":true, + "**/*.jpg":true, + "**/*.jpeg":true, + "**/*.png":true, + "**/*.psd":true, + "**/*.tga":true, + "**/*.tif":true, + "**/*.tiff":true, + "**/*.3ds":true, + "**/*.3DS":true, + "**/*.fbx":true, + "**/*.FBX":true, + "**/*.lxo":true, + "**/*.LXO":true, + "**/*.ma":true, + "**/*.MA":true, + "**/*.obj":true, + "**/*.OBJ":true, + "**/*.asset":true, + "**/*.cubemap":true, + "**/*.flare":true, + "**/*.mat":true, + "**/*.meta":true, + "**/*.prefab":true, + "**/*.unity":true, + "build/":true, + "Build/":true, + "Library/":true, + "library/":true, + "obj/":true, + "Obj/":true, + "ProjectSettings/":true, + "temp/":true, + "Temp/":true + } +} \ No newline at end of file diff --git a/Assets/Audio.meta b/Assets/Audio.meta new file mode 100644 index 0000000..8433e67 --- /dev/null +++ b/Assets/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f48ef30280edf684c9fc813a8b642e54 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/Music.meta b/Assets/Audio/Music.meta new file mode 100644 index 0000000..8eee281 --- /dev/null +++ b/Assets/Audio/Music.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 333a6f87bf324df4a80c9a13de4d8d41 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/Music/aloe for your snake bite.ogg b/Assets/Audio/Music/aloe for your snake bite.ogg new file mode 100644 index 0000000..0d7890e --- /dev/null +++ b/Assets/Audio/Music/aloe for your snake bite.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b26ba297cd0e35fb38556367a5dd75dfe0292caa42cf18bcebd3e5b59c1a756 +size 52297121 diff --git a/Assets/Audio/Music/aloe for your snake bite.ogg.meta b/Assets/Audio/Music/aloe for your snake bite.ogg.meta new file mode 100644 index 0000000..eb05422 --- /dev/null +++ b/Assets/Audio/Music/aloe for your snake bite.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 61e6e2c2751e67a49bd094cc232ac63a +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/Music/no intro aloe for your snake bite.ogg b/Assets/Audio/Music/no intro aloe for your snake bite.ogg new file mode 100644 index 0000000..a795d95 --- /dev/null +++ b/Assets/Audio/Music/no intro aloe for your snake bite.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:661e25c82350a8a4a4d535feeafe8a0521eb0282b3c3ba0ff20378372dba7eb0 +size 46563222 diff --git a/Assets/Audio/Music/no intro aloe for your snake bite.ogg.meta b/Assets/Audio/Music/no intro aloe for your snake bite.ogg.meta new file mode 100644 index 0000000..f719322 --- /dev/null +++ b/Assets/Audio/Music/no intro aloe for your snake bite.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: fbec36a8b2984294f99e5ec00aa3e29b +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/Music/rain-loop.ogg b/Assets/Audio/Music/rain-loop.ogg new file mode 100644 index 0000000..5b2842a --- /dev/null +++ b/Assets/Audio/Music/rain-loop.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ae9674e5fed583855f5f8d551d4c2a4a234ff07300797484a61f8f8b3318f35 +size 2126992 diff --git a/Assets/Audio/Music/rain-loop.ogg.meta b/Assets/Audio/Music/rain-loop.ogg.meta new file mode 100644 index 0000000..fe077c2 --- /dev/null +++ b/Assets/Audio/Music/rain-loop.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 54853368e90ccf247aa2d98d22da8ffd +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/Music/snakelife.ogg b/Assets/Audio/Music/snakelife.ogg new file mode 100644 index 0000000..a5a089a --- /dev/null +++ b/Assets/Audio/Music/snakelife.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d70a63d0e2a411add3df6695ef7ddd273d3087a3b4da23ec9541358596a82f80 +size 9604659 diff --git a/Assets/Audio/Music/snakelife.ogg.meta b/Assets/Audio/Music/snakelife.ogg.meta new file mode 100644 index 0000000..342a3d4 --- /dev/null +++ b/Assets/Audio/Music/snakelife.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: ee45376984c1fb649b543319a91e0e40 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/Music/sweet aloe.ogg b/Assets/Audio/Music/sweet aloe.ogg new file mode 100644 index 0000000..b4e6571 --- /dev/null +++ b/Assets/Audio/Music/sweet aloe.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dd4e22ec7f90d1fd082bcc15594a3ebfa1856f9f708e84b18e9e0d7137579f4 +size 4129418 diff --git a/Assets/Audio/Music/sweet aloe.ogg.meta b/Assets/Audio/Music/sweet aloe.ogg.meta new file mode 100644 index 0000000..6bcf499 --- /dev/null +++ b/Assets/Audio/Music/sweet aloe.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 11488f53bfe50f54284d1afb96ada393 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-Back.ogg b/Assets/Audio/sfx-Back.ogg new file mode 100644 index 0000000..1ba8a28 --- /dev/null +++ b/Assets/Audio/sfx-Back.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4338c575807fae9bf1a96431b25e2709664e2cc772b6aa64d4aa77a355d1583 +size 24963 diff --git a/Assets/Audio/sfx-Back.ogg.meta b/Assets/Audio/sfx-Back.ogg.meta new file mode 100644 index 0000000..a34a1c8 --- /dev/null +++ b/Assets/Audio/sfx-Back.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: ed1ac1aed2049444bb77cab4305b5b7d +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-bump.ogg b/Assets/Audio/sfx-bump.ogg new file mode 100644 index 0000000..bf1118b --- /dev/null +++ b/Assets/Audio/sfx-bump.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d29784c51e09e93438a649348530933107a417cc9f4b8850c60ea4c149918f8c +size 11392 diff --git a/Assets/Audio/sfx-bump.ogg.meta b/Assets/Audio/sfx-bump.ogg.meta new file mode 100644 index 0000000..4647f5f --- /dev/null +++ b/Assets/Audio/sfx-bump.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 19c9cc89f9023644faba1147e2c45d3a +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-bump1.ogg b/Assets/Audio/sfx-bump1.ogg new file mode 100644 index 0000000..4af4a84 --- /dev/null +++ b/Assets/Audio/sfx-bump1.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1233d77528c59f01cf8516668417466fcadda8dc6d0c0723048a6b6ae338376 +size 12885 diff --git a/Assets/Audio/sfx-bump1.ogg.meta b/Assets/Audio/sfx-bump1.ogg.meta new file mode 100644 index 0000000..0a29fed --- /dev/null +++ b/Assets/Audio/sfx-bump1.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: d45fa403d7562df4cb4961e11956454e +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-bump2.ogg b/Assets/Audio/sfx-bump2.ogg new file mode 100644 index 0000000..21d07d4 --- /dev/null +++ b/Assets/Audio/sfx-bump2.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae98e4eafd6d01ae2e065a178c1df0ef5deb3f1084bcfcc6725862bed3485e8 +size 18800 diff --git a/Assets/Audio/sfx-bump2.ogg.meta b/Assets/Audio/sfx-bump2.ogg.meta new file mode 100644 index 0000000..f669258 --- /dev/null +++ b/Assets/Audio/sfx-bump2.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 0851ca148366f844f9ba3ba700c55e1a +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-click.ogg b/Assets/Audio/sfx-click.ogg new file mode 100644 index 0000000..add3bbf --- /dev/null +++ b/Assets/Audio/sfx-click.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08f082efa504ef723d835779389c07ec15b63734d8f62bc47378717fa0d300fb +size 11026 diff --git a/Assets/Audio/sfx-click.ogg.meta b/Assets/Audio/sfx-click.ogg.meta new file mode 100644 index 0000000..fada381 --- /dev/null +++ b/Assets/Audio/sfx-click.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 10a0f63b840c3c74b950a0e71e433b45 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-crash.ogg b/Assets/Audio/sfx-crash.ogg new file mode 100644 index 0000000..f947476 --- /dev/null +++ b/Assets/Audio/sfx-crash.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b4fc0362d906dd385c3f2cce853ee70015796dc44b63579c2c79631e12900df +size 42119 diff --git a/Assets/Audio/sfx-crash.ogg.meta b/Assets/Audio/sfx-crash.ogg.meta new file mode 100644 index 0000000..4eea3eb --- /dev/null +++ b/Assets/Audio/sfx-crash.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 72a6301a26f49e540b0848cfa2b67cfa +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-crisp-nom.ogg b/Assets/Audio/sfx-crisp-nom.ogg new file mode 100644 index 0000000..3ee70ce --- /dev/null +++ b/Assets/Audio/sfx-crisp-nom.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bbaa534f41e29d12949a9f0f8b8539c4ba2a71f70617e1f8af56157b9df231a +size 12082 diff --git a/Assets/Audio/sfx-crisp-nom.ogg.meta b/Assets/Audio/sfx-crisp-nom.ogg.meta new file mode 100644 index 0000000..060c5ae --- /dev/null +++ b/Assets/Audio/sfx-crisp-nom.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 82bd098f5506e3b41a07072eb3eb28d4 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-danger.wav b/Assets/Audio/sfx-danger.wav new file mode 100644 index 0000000..05fd7a5 --- /dev/null +++ b/Assets/Audio/sfx-danger.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9228aa979245235dc3d23e8392785f05e17ca31e52969a3ecf033d7c2a93998 +size 2013 diff --git a/Assets/Audio/sfx-danger.wav.meta b/Assets/Audio/sfx-danger.wav.meta new file mode 100644 index 0000000..f699339 --- /dev/null +++ b/Assets/Audio/sfx-danger.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 53e2bbe4ac507cf4586084d2e25e49fc +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-drop-splash.ogg b/Assets/Audio/sfx-drop-splash.ogg new file mode 100644 index 0000000..b14a348 --- /dev/null +++ b/Assets/Audio/sfx-drop-splash.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30224848a7feecb6d3b4d6c0b5c4e3a1982dce16f5f5e49c223b7e62ad77c16f +size 15105 diff --git a/Assets/Audio/sfx-drop-splash.ogg.meta b/Assets/Audio/sfx-drop-splash.ogg.meta new file mode 100644 index 0000000..5ca93da --- /dev/null +++ b/Assets/Audio/sfx-drop-splash.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 739fb39da93769745b381538c35e8983 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-gameover.wav b/Assets/Audio/sfx-gameover.wav new file mode 100644 index 0000000..a4ccad5 --- /dev/null +++ b/Assets/Audio/sfx-gameover.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c04d70937661c184a01c107e68608ce1e534c42ce58827c027ccb9371c45d1c9 +size 7183 diff --git a/Assets/Audio/sfx-gameover.wav.meta b/Assets/Audio/sfx-gameover.wav.meta new file mode 100644 index 0000000..3b5f53e --- /dev/null +++ b/Assets/Audio/sfx-gameover.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: efc3a76b296cf7045921386d49f9d960 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-hover.ogg b/Assets/Audio/sfx-hover.ogg new file mode 100644 index 0000000..4f4e330 --- /dev/null +++ b/Assets/Audio/sfx-hover.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efe335e7f99ba3b55b3518104fbcc10a2cb9827e278dcb1c29ed9a77a7026223 +size 12266 diff --git a/Assets/Audio/sfx-hover.ogg.meta b/Assets/Audio/sfx-hover.ogg.meta new file mode 100644 index 0000000..6a5009b --- /dev/null +++ b/Assets/Audio/sfx-hover.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 12aeb385f81005a49aa3de20b5984e02 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-step.ogg b/Assets/Audio/sfx-step.ogg new file mode 100644 index 0000000..90b329b --- /dev/null +++ b/Assets/Audio/sfx-step.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b20635a62161f8e8db28fad1fa7945e9154544a4d8179ae24563e815ee5fb157 +size 23784 diff --git a/Assets/Audio/sfx-step.ogg.meta b/Assets/Audio/sfx-step.ogg.meta new file mode 100644 index 0000000..daee782 --- /dev/null +++ b/Assets/Audio/sfx-step.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 41a9ee307ebbe314dbdb5ee57bd4fa30 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-step1.ogg b/Assets/Audio/sfx-step1.ogg new file mode 100644 index 0000000..4f7b448 --- /dev/null +++ b/Assets/Audio/sfx-step1.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5b431e186912984b5e83c119914f339bae58ce210a8886fbc3a3069ac8f3c65 +size 23028 diff --git a/Assets/Audio/sfx-step1.ogg.meta b/Assets/Audio/sfx-step1.ogg.meta new file mode 100644 index 0000000..0f513ba --- /dev/null +++ b/Assets/Audio/sfx-step1.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: b9b2d2b32f83fb0428cb365c1c48fe67 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-step2.ogg b/Assets/Audio/sfx-step2.ogg new file mode 100644 index 0000000..db2d0c2 --- /dev/null +++ b/Assets/Audio/sfx-step2.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f410342080f8cef8738eb5a5c83924063a7a50ba5d7aafb1c5db1c2da1e72196 +size 19967 diff --git a/Assets/Audio/sfx-step2.ogg.meta b/Assets/Audio/sfx-step2.ogg.meta new file mode 100644 index 0000000..04fb15e --- /dev/null +++ b/Assets/Audio/sfx-step2.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 086cfe24db2eed14197af75d67dff5be +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-step3.ogg b/Assets/Audio/sfx-step3.ogg new file mode 100644 index 0000000..6706078 --- /dev/null +++ b/Assets/Audio/sfx-step3.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd0ecf1641a04c4e4240af5c31c7c6e7136b002ab32b891e8edabad6e5c52260 +size 22438 diff --git a/Assets/Audio/sfx-step3.ogg.meta b/Assets/Audio/sfx-step3.ogg.meta new file mode 100644 index 0000000..fa48903 --- /dev/null +++ b/Assets/Audio/sfx-step3.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: cbc38424ce7dc4843b2581fa33b54efb +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-step4.ogg b/Assets/Audio/sfx-step4.ogg new file mode 100644 index 0000000..f59f66a --- /dev/null +++ b/Assets/Audio/sfx-step4.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de590ac680a790fe3c99d1df49956aa5e83fd70d8d47062f134dd4db39d6e2d2 +size 23074 diff --git a/Assets/Audio/sfx-step4.ogg.meta b/Assets/Audio/sfx-step4.ogg.meta new file mode 100644 index 0000000..d5cc289 --- /dev/null +++ b/Assets/Audio/sfx-step4.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 3489e62039fcba54385e97408d832500 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-step5.ogg b/Assets/Audio/sfx-step5.ogg new file mode 100644 index 0000000..ca6e390 --- /dev/null +++ b/Assets/Audio/sfx-step5.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89a215ab206d53cb5ee67009133ba1aa3d4d608ef189f303b95f1c8b8e33ef8e +size 21979 diff --git a/Assets/Audio/sfx-step5.ogg.meta b/Assets/Audio/sfx-step5.ogg.meta new file mode 100644 index 0000000..243bb83 --- /dev/null +++ b/Assets/Audio/sfx-step5.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: bcec00f74f7176348ac3050e78930705 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/sfx-step6.ogg b/Assets/Audio/sfx-step6.ogg new file mode 100644 index 0000000..ffe8683 --- /dev/null +++ b/Assets/Audio/sfx-step6.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5146470526a22bffd05b1ecbede41dd99d8e42f81f05a59ccb45814195089eb +size 23178 diff --git a/Assets/Audio/sfx-step6.ogg.meta b/Assets/Audio/sfx-step6.ogg.meta new file mode 100644 index 0000000..08ef165 --- /dev/null +++ b/Assets/Audio/sfx-step6.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: a2639ce18ce7b9e4c892a6eff137c09a +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Design.asset b/Assets/Design.asset new file mode 100644 index 0000000..f503a5a --- /dev/null +++ b/Assets/Design.asset @@ -0,0 +1,21 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b37f4483e8f4f3047b5e67b5118cb74d, type: 3} + m_Name: Design + m_EditorClassIdentifier: + headOffset: {x: 0, y: 2, z: -22} + scale: 60 + bounds: {x: 4, y: 3, z: 4} + foodValue: 6 + aiIQ: 0.05 + aiMaxChances: 12 + boxSpring: 13 diff --git a/Assets/Design.asset.meta b/Assets/Design.asset.meta new file mode 100644 index 0000000..baf84d8 --- /dev/null +++ b/Assets/Design.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e32077fc3027a1b48909bb54527a2ad4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts.meta b/Assets/Fonts.meta new file mode 100644 index 0000000..f0c2972 --- /dev/null +++ b/Assets/Fonts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ab70aee4d56447429c680537fbf93ed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/FiraCode-Regular.ttf b/Assets/Fonts/FiraCode-Regular.ttf new file mode 100644 index 0000000..8c367dc Binary files /dev/null and b/Assets/Fonts/FiraCode-Regular.ttf differ diff --git a/Assets/Fonts/FiraCode-Regular.ttf.meta b/Assets/Fonts/FiraCode-Regular.ttf.meta new file mode 100644 index 0000000..fe4e278 --- /dev/null +++ b/Assets/Fonts/FiraCode-Regular.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 13148e741ba03734b9a0651d7d8a3347 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Fira Code + fontNames: + - Fira Code + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/LiberationSans - OFL.txt b/Assets/Fonts/LiberationSans - OFL.txt new file mode 100644 index 0000000..f2473f9 --- /dev/null +++ b/Assets/Fonts/LiberationSans - OFL.txt @@ -0,0 +1,46 @@ +Digitized data copyright (c) 2010 Google Corporation + with Reserved Font Arimo, Tinos and Cousine. +Copyright (c) 2012 Red Hat, Inc. + with Reserved Font Name Liberation. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/Assets/Fonts/LiberationSans - OFL.txt.meta b/Assets/Fonts/LiberationSans - OFL.txt.meta new file mode 100644 index 0000000..fa60cea --- /dev/null +++ b/Assets/Fonts/LiberationSans - OFL.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e59c59b81ab47f9b6ec5781fa725d2c +timeCreated: 1484171296 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/LiberationSans.ttf b/Assets/Fonts/LiberationSans.ttf new file mode 100644 index 0000000..626dd93 Binary files /dev/null and b/Assets/Fonts/LiberationSans.ttf differ diff --git a/Assets/Fonts/LiberationSans.ttf.meta b/Assets/Fonts/LiberationSans.ttf.meta new file mode 100644 index 0000000..f2fc814 --- /dev/null +++ b/Assets/Fonts/LiberationSans.ttf.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: e3265ab4bf004d28a9537516768c1c75 +timeCreated: 1484171297 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/LibreBaskerville-Bold.ttf b/Assets/Fonts/LibreBaskerville-Bold.ttf new file mode 100644 index 0000000..13146e6 Binary files /dev/null and b/Assets/Fonts/LibreBaskerville-Bold.ttf differ diff --git a/Assets/Fonts/LibreBaskerville-Bold.ttf.meta b/Assets/Fonts/LibreBaskerville-Bold.ttf.meta new file mode 100644 index 0000000..a8687c0 --- /dev/null +++ b/Assets/Fonts/LibreBaskerville-Bold.ttf.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 8aca3460934632f468fa7f52ca400109 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Libre Baskerville + fontNames: + - Libre Baskerville + fallbackFontReferences: + - {fileID: 12800000, guid: 004aa824feb0658419225d89d57dc49d, type: 3} + - {fileID: 12800000, guid: a53e97f5a2d54f04ab6461fdc8407b33, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/LibreBaskerville-Italic.ttf b/Assets/Fonts/LibreBaskerville-Italic.ttf new file mode 100644 index 0000000..3796a57 Binary files /dev/null and b/Assets/Fonts/LibreBaskerville-Italic.ttf differ diff --git a/Assets/Fonts/LibreBaskerville-Italic.ttf.meta b/Assets/Fonts/LibreBaskerville-Italic.ttf.meta new file mode 100644 index 0000000..7caad97 --- /dev/null +++ b/Assets/Fonts/LibreBaskerville-Italic.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 004aa824feb0658419225d89d57dc49d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Libre Baskerville + fontNames: + - Libre Baskerville + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/LibreBaskerville-Regular.ttf b/Assets/Fonts/LibreBaskerville-Regular.ttf new file mode 100644 index 0000000..13947ca Binary files /dev/null and b/Assets/Fonts/LibreBaskerville-Regular.ttf differ diff --git a/Assets/Fonts/LibreBaskerville-Regular.ttf.meta b/Assets/Fonts/LibreBaskerville-Regular.ttf.meta new file mode 100644 index 0000000..80ae2ec --- /dev/null +++ b/Assets/Fonts/LibreBaskerville-Regular.ttf.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: a53e97f5a2d54f04ab6461fdc8407b33 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Libre Baskerville + fontNames: + - Libre Baskerville + fallbackFontReferences: + - {fileID: 12800000, guid: 004aa824feb0658419225d89d57dc49d, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/Mansalva.meta b/Assets/Fonts/Mansalva.meta new file mode 100644 index 0000000..7aa3c2c --- /dev/null +++ b/Assets/Fonts/Mansalva.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a9ad7728cee1454eab77c623c1f1aa7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/Mansalva/Mansalva-Regular.ttf b/Assets/Fonts/Mansalva/Mansalva-Regular.ttf new file mode 100644 index 0000000..1497925 Binary files /dev/null and b/Assets/Fonts/Mansalva/Mansalva-Regular.ttf differ diff --git a/Assets/Fonts/Mansalva/Mansalva-Regular.ttf.meta b/Assets/Fonts/Mansalva/Mansalva-Regular.ttf.meta new file mode 100644 index 0000000..66d3a4a --- /dev/null +++ b/Assets/Fonts/Mansalva/Mansalva-Regular.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 7abe56e2f5a13804a9c3aa01d40d072c +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Mansalva + fontNames: + - Mansalva + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/Mansalva/OFL.txt b/Assets/Fonts/Mansalva/OFL.txt new file mode 100644 index 0000000..db3eb92 --- /dev/null +++ b/Assets/Fonts/Mansalva/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2019 The Mansalva Project Authors (https://github.com/carolinashort/mansalva) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/Fonts/Mansalva/OFL.txt.meta b/Assets/Fonts/Mansalva/OFL.txt.meta new file mode 100644 index 0000000..a4c1a00 --- /dev/null +++ b/Assets/Fonts/Mansalva/OFL.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: aa65b7291c72cb549ac5c8cf3968b9a3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/OFL.txt b/Assets/Fonts/OFL.txt new file mode 100644 index 0000000..82edbc0 --- /dev/null +++ b/Assets/Fonts/OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2012, Pablo Impallari (www.impallari.com|impallari@gmail.com), +Copyright (c) 2012, Rodrigo Fuenzalida (www.rfuenzalida.com|hello�rfuenzalida.com), with Reserved Font Name Libre Baskerville. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/Fonts/OFL.txt.meta b/Assets/Fonts/OFL.txt.meta new file mode 100644 index 0000000..63344f0 --- /dev/null +++ b/Assets/Fonts/OFL.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ab1b9decc60f8264a98c799c9b2d5737 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/Staatliches.meta b/Assets/Fonts/Staatliches.meta new file mode 100644 index 0000000..53e7ccb --- /dev/null +++ b/Assets/Fonts/Staatliches.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e7ffe1f4e43e26242b3847111b4c1747 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/Staatliches/OFL.txt b/Assets/Fonts/Staatliches/OFL.txt new file mode 100644 index 0000000..d41dcbf --- /dev/null +++ b/Assets/Fonts/Staatliches/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2018 The Staatliches Authors (https://github.com/googlefonts/staatliches) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/Fonts/Staatliches/OFL.txt.meta b/Assets/Fonts/Staatliches/OFL.txt.meta new file mode 100644 index 0000000..1b0507c --- /dev/null +++ b/Assets/Fonts/Staatliches/OFL.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b5c7626603b50f045a2e050b33ce3b01 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Fonts/Staatliches/Staatliches-Regular.ttf b/Assets/Fonts/Staatliches/Staatliches-Regular.ttf new file mode 100644 index 0000000..5d8ae49 Binary files /dev/null and b/Assets/Fonts/Staatliches/Staatliches-Regular.ttf differ diff --git a/Assets/Fonts/Staatliches/Staatliches-Regular.ttf.meta b/Assets/Fonts/Staatliches/Staatliches-Regular.ttf.meta new file mode 100644 index 0000000..7c05a85 --- /dev/null +++ b/Assets/Fonts/Staatliches/Staatliches-Regular.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 18d6afda9799f6f46865b93de6df483b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Staatliches + fontNames: + - Staatliches + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GraphX Data.asset b/Assets/GraphX Data.asset new file mode 100644 index 0000000..0109a52 --- /dev/null +++ b/Assets/GraphX Data.asset @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 13034f037cc52bc46945cbdb2ca0eae6, type: 3} + m_Name: GraphX Data + m_EditorClassIdentifier: + foodMesh: {fileID: 4300006, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + arrowMesh: {fileID: 4300000, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + bodyMesh: {fileID: 4300004, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + coreMesh: {fileID: 4300070, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + snakeMat: {fileID: 2100000, guid: c1765b22e6a92834ca4c29d79bcfe253, type: 2} + unlitMat: {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + wetMat: {fileID: 2100000, guid: d584c93390323c84cbdb0665a4a3721a, type: 2} + faceMesh: {fileID: 4300030, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + faceDefault: {fileID: 4300030, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + faceEat: {fileID: 4300010, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + faceEaten: {fileID: 4300036, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + faceBump: {fileID: 4300038, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + faceBoxGameover: {fileID: 4300032, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + faceSelfGameover: {fileID: 4300040, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + poofMesh: {fileID: 4300078, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} + dripMesh: {fileID: 4300076, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} diff --git a/Assets/GraphX Data.asset.meta b/Assets/GraphX Data.asset.meta new file mode 100644 index 0000000..3438137 --- /dev/null +++ b/Assets/GraphX Data.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a2a60279d0f57e841b54091e749bdccb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials.meta b/Assets/Materials.meta new file mode 100644 index 0000000..efc2734 --- /dev/null +++ b/Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4377a7a826bf8041a735fa67d4efa11 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Arrow.shader b/Assets/Materials/Arrow.shader new file mode 100644 index 0000000..22d862f --- /dev/null +++ b/Assets/Materials/Arrow.shader @@ -0,0 +1,53 @@ +Shader "Custom/Arrow" +{ + Properties + { + + } + SubShader + { + // Tags { "Queue" = "Transparent+10" } + // ZTest Always + + Pass + { + // Fog { Mode Off } + // Blend OneMinusDstColor Zero + // ZWrite Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityStandardBRDF.cginc" + + struct appdata + { + float4 position : POSITION; + fixed3 normal : NORMAL; + }; + + struct v2f + { + float4 position : SV_POSITION; + fixed3 normal : TEXCOORD1; + fixed4 color : COLOR0; + }; + + v2f vert (appdata v) + { + v2f o; + o.position = UnityObjectToClipPos(v.position); + o.normal = UnityObjectToWorldNormal(v.normal); + + o.color = fixed4(1, 1, 1, 1) * clamp(dot(v.normal, fixed3(0.8, 1, 0.6)), 0.8, 1); + // o.color += + return o; + } + half4 frag( v2f i ) : COLOR + { + return i.color; + } + ENDCG + } + } +} diff --git a/Assets/Materials/Arrow.shader.meta b/Assets/Materials/Arrow.shader.meta new file mode 100644 index 0000000..14a01e6 --- /dev/null +++ b/Assets/Materials/Arrow.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 47ae7b13baebb9a4a940da82bb121c57 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Corrugated.mat b/Assets/Materials/Corrugated.mat new file mode 100644 index 0000000..c586036 --- /dev/null +++ b/Assets/Materials/Corrugated.mat @@ -0,0 +1,32 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Corrugated + m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalColors: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: [] + m_Colors: + - _Color: {r: 0.3584906, g: 0.28975987, b: 0.2823959, a: 1} diff --git a/Assets/Materials/Corrugated.mat.meta b/Assets/Materials/Corrugated.mat.meta new file mode 100644 index 0000000..e10aa98 --- /dev/null +++ b/Assets/Materials/Corrugated.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c10cdae32840cd4da5fa22f18738db9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Particles.mat b/Assets/Materials/Particles.mat new file mode 100644 index 0000000..336a7de --- /dev/null +++ b/Assets/Materials/Particles.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Particles + m_Shader: {fileID: 10720, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Materials/Particles.mat.meta b/Assets/Materials/Particles.mat.meta new file mode 100644 index 0000000..63f4a9e --- /dev/null +++ b/Assets/Materials/Particles.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a7287fa2602e7641bc265b98e87a85c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Snake.mat b/Assets/Materials/Snake.mat new file mode 100644 index 0000000..a0f9638 --- /dev/null +++ b/Assets/Materials/Snake.mat @@ -0,0 +1,122 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Snake + m_Shader: {fileID: 4800000, guid: d71f5939d94391c40b1b5a42b6c2a3d3, type: 3} + m_ShaderKeywords: _VERTEXCOLOR + m_LightmapFlags: 0 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalColors: + m_Texture: {fileID: 11700000, guid: f47a016bde0d3dd4ab7c09181b91ef25, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BlendOp: 0 + - _Bloom: 2 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0 + - _DstBlend: 0 + - _EmissionEnabled: 0 + - _EmissionScaleUI: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _IntensityVC: 1 + - _LightingEnabled: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Back: {r: 0.626703, g: 0.9716981, b: 0.4995995, a: 0} + - _Backup: {r: 0.4, g: 1, b: 0.25, a: 1} + - _Base: {r: 0.4, g: 1, b: 0.25, a: 1} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _ColorA: {r: 0.4, g: 1, b: 0.25, a: 1} + - _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} + - _ColorB: {r: 0.3, g: 1, b: 0.3, a: 1} + - _Delta: {r: -0.1, g: 0, b: 0.05, a: 1} + - _DirectionA: {r: 0.8, g: 1, b: 0.9, a: 1} + - _DirectionB: {r: -0.8, g: -0.7, b: -0.9, a: 1} + - _Down: {r: 0.4022339, g: 0.6509434, b: 0.43590117, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} + - _Forward: {r: 0.6152426, g: 0.9339623, b: 0.4978195, a: 0} + - _Left: {r: 0.5325515, g: 0.9056604, b: 0.3972944, a: 0} + - _Right: {r: 0.4460226, g: 0.8490566, b: 0.44455323, a: 0} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Up: {r: 0.859815, g: 0.99215686, b: 0.36078426, a: 0} diff --git a/Assets/Materials/Snake.mat.meta b/Assets/Materials/Snake.mat.meta new file mode 100644 index 0000000..1efa385 --- /dev/null +++ b/Assets/Materials/Snake.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c1765b22e6a92834ca4c29d79bcfe253 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Snake.shader b/Assets/Materials/Snake.shader new file mode 100644 index 0000000..478cda0 --- /dev/null +++ b/Assets/Materials/Snake.shader @@ -0,0 +1,107 @@ +Shader "Custom/Snake" +{ + Properties + { + _Base ("Base", Color) = (0.4, 1, 0.25, 1) + _Delta ("Delta", Vector) = (-0.1, 0, 0.05, 1) + + _Backup ("Backup", Color) = (0.4, 1, 0.25, 1) + + _DirectionA ("Direction A", Vector) = (0.8, 1, 0.9) + _DirectionB ("Direction B", Vector) = (-0.8, -0.7, -0.9) + } + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex VertexProgram + #pragma fragment FragmentProgram + #pragma multi_compile_instancing + #pragma target 3.5 + + // #include "UnityCG.cginc" + #include "UnityStandardBRDF.cginc" + + struct VertexData + { + fixed4 position : POSITION; + fixed3 normal : NORMAL; + UNITY_VERTEX_INPUT_INSTANCE_ID + fixed4 color : COLOR; + }; + + struct Interpolators + { + fixed4 position : SV_POSITION; + fixed3 normal : TEXCOORD1; + fixed4 color : COLOR0; + }; + + int _JustAte, _Flash; + fixed4 _Base, _Delta; + fixed3 _DirectionA, _DirectionB; + + Interpolators VertexProgram (VertexData v) + { + Interpolators i; + + UNITY_SETUP_INSTANCE_ID(v); + + int id = 0; + #ifdef UNITY_INSTANCING_ENABLED + id = unity_InstanceID; + #endif + + i.position = UnityObjectToClipPos(v.position); + i.normal = UnityObjectToWorldNormal(v.normal); + i.color = v.color; + + if (_Flash > 0) + { + i.color = fixed4(1, 1, 1, 1); + return i; + } + + // if mesh = snake green (for snake head) + if (i.color.g > 0.5 && i.color.r < 0.5) + { + // Base Color + i.color = fixed4(0, 0, 0, 1); + + // Complimentary Lights + i.color += _Base * clamp(dot(i.normal, _DirectionA), 0, 1); + i.color += (_Base + _Delta) * clamp(dot(i.normal, _DirectionB), 0, 1); + + // Rings + if ((id / 1.5) % 2 == 0) + { + i.color.r *= 1 + 0.8 * (1 - clamp((half)id / 27, 0, 1)); + } + + // Decay + i.color *= 1 - ((half)id / 729); + + if (id == _JustAte) + { + i.color += fixed4(1,1,1,1) * (1 - clamp((half)id / 27, 0, 1)); + } + + // Alpha Fix + i.color.a = 1; + } + + + return i; + } + + fixed4 FragmentProgram (Interpolators i) : SV_TARGET + { + return i.color; + } + + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/Materials/Snake.shader.meta b/Assets/Materials/Snake.shader.meta new file mode 100644 index 0000000..2596cd2 --- /dev/null +++ b/Assets/Materials/Snake.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d71f5939d94391c40b1b5a42b6c2a3d3 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Unlit.mat b/Assets/Materials/Unlit.mat new file mode 100644 index 0000000..f543ee8 --- /dev/null +++ b/Assets/Materials/Unlit.mat @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Unlit + m_Shader: {fileID: 4800000, guid: 9ec938468ff92c445ba11839aa6327d9, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Floats: [] + m_Colors: [] diff --git a/Assets/Materials/Unlit.mat.meta b/Assets/Materials/Unlit.mat.meta new file mode 100644 index 0000000..777d19a --- /dev/null +++ b/Assets/Materials/Unlit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb5f41eecb5ccc546814746a66914984 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Unlit.shader b/Assets/Materials/Unlit.shader new file mode 100644 index 0000000..7607e6c --- /dev/null +++ b/Assets/Materials/Unlit.shader @@ -0,0 +1,53 @@ +Shader "Custom/Unlit" +{ + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex VertexProgram + #pragma fragment FragmentProgram + #pragma multi_compile_instancing + #pragma target 3.5 + + // #include "UnityCG.cginc" + #include "UnityStandardBRDF.cginc" + + + struct VertexData + { + fixed4 position : POSITION; + // fixed3 normal : NORMAL; + UNITY_VERTEX_INPUT_INSTANCE_ID + fixed4 color : COLOR; + }; + + struct Interpolators + { + fixed4 position : SV_POSITION; + // fixed3 normal : TEXCOORD1; + fixed4 color : COLOR0; + // fixed attenuation : TEXCOORD2; + }; + + Interpolators VertexProgram (VertexData v) + { + Interpolators i; + UNITY_SETUP_INSTANCE_ID(v); + i.position = UnityObjectToClipPos(v.position); + // i.normal = UnityObjectToWorldNormal(v.normal); + i.color = v.color; + + return i; + } + + fixed4 FragmentProgram (Interpolators i) : SV_TARGET + { + return i.color; + } + + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/Materials/Unlit.shader.meta b/Assets/Materials/Unlit.shader.meta new file mode 100644 index 0000000..3ce041a --- /dev/null +++ b/Assets/Materials/Unlit.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9ec938468ff92c445ba11839aa6327d9 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Wet.mat b/Assets/Materials/Wet.mat new file mode 100644 index 0000000..268bdbe --- /dev/null +++ b/Assets/Materials/Wet.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Wet + m_Shader: {fileID: 4800000, guid: 8701bf1f0b58bdd4fab2d89ebb1fb2e2, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Floats: [] + m_Colors: + - _Backup: {r: 0.4, g: 1, b: 0.25, a: 1} + - _Base: {r: 0.4, g: 1, b: 0.25, a: 1} + - _Delta: {r: -0.1, g: 0, b: 0.05, a: 1} + - _DirectionA: {r: 0.8, g: 1, b: 0.9, a: 1} + - _DirectionB: {r: -0.8, g: -0.7, b: -0.9, a: 1} diff --git a/Assets/Materials/Wet.mat.meta b/Assets/Materials/Wet.mat.meta new file mode 100644 index 0000000..7f1191d --- /dev/null +++ b/Assets/Materials/Wet.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d584c93390323c84cbdb0665a4a3721a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Wet.shader b/Assets/Materials/Wet.shader new file mode 100644 index 0000000..0203fa0 --- /dev/null +++ b/Assets/Materials/Wet.shader @@ -0,0 +1,63 @@ +Shader "Custom/Wet" +{ + Properties + { + + } + SubShader + { + Tags { "Queue"="Transparent" } + // LOD 100 + Blend One One + ZWrite Off + // Cull Off + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_instancing + #pragma target 3.5 + + // #include "UnityCG.cginc" + #include "UnityStandardBRDF.cginc" + + struct appdata + { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + fixed3 normal : NORMAL; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed3 normal : TEXCOORD1; + fixed4 color : COLOR; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + o.vertex = UnityObjectToClipPos(v.vertex); + o.normal = UnityObjectToWorldNormal(v.normal); + + fixed4 base = fixed4(1, 1, 1, 1); + o.color = base * 0.1 * clamp(dot(o.normal, UnityWorldSpaceViewDir(o.vertex)), 0, 1); + + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + return i.color; + } + ENDCG + } + } +} diff --git a/Assets/Materials/Wet.shader.meta b/Assets/Materials/Wet.shader.meta new file mode 100644 index 0000000..63998b2 --- /dev/null +++ b/Assets/Materials/Wet.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8701bf1f0b58bdd4fab2d89ebb1fb2e2 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/snake-colors.asset b/Assets/Materials/snake-colors.asset new file mode 100644 index 0000000..db74d69 --- /dev/null +++ b/Assets/Materials/snake-colors.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!117 &11700000 +Texture3D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: snake-colors + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 3 + m_ColorSpace: 0 + m_Format: 8 + m_Width: 3 + m_Height: 3 + m_Depth: 3 + m_MipCount: 1 + m_DataSize: 108 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 0 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_IsReadable: 1 + image data: 108 + _typelessdata: 0000000000000000000000000000000074f153ff000000000000000000000000000000000000000059c87bff000000005add57ff000000005add57ff00000000b3ff36ff000000000000000000000000000000000000000074f153ff000000000000000000000000ff00ffff + m_StreamData: + offset: 0 + size: 0 + path: diff --git a/Assets/Materials/snake-colors.asset.meta b/Assets/Materials/snake-colors.asset.meta new file mode 100644 index 0000000..14d26e6 --- /dev/null +++ b/Assets/Materials/snake-colors.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f47a016bde0d3dd4ab7c09181b91ef25 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes.meta b/Assets/NaughtyAttributes.meta new file mode 100644 index 0000000..97fb244 --- /dev/null +++ b/Assets/NaughtyAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f9fd4c3ba2d482e459fe92c5223f34e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation.meta b/Assets/NaughtyAttributes/Documentation.meta new file mode 100644 index 0000000..df80bdc --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8dde3911cdcacad4cbe3192d388a5218 +folderAsset: yes +timeCreated: 1508669465 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/BlankSpace_Code.PNG b/Assets/NaughtyAttributes/Documentation/BlankSpace_Code.PNG new file mode 100644 index 0000000..dc6b1b2 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/BlankSpace_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/BlankSpace_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/BlankSpace_Code.PNG.meta new file mode 100644 index 0000000..9e74b46 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/BlankSpace_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 022c178ec9e442345958ad25512a17f4 +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/BlankSpace_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/BlankSpace_Inspector.PNG new file mode 100644 index 0000000..bf7450f Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/BlankSpace_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/BlankSpace_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/BlankSpace_Inspector.PNG.meta new file mode 100644 index 0000000..972a91f --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/BlankSpace_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 17ab0384d85cb744595133fcff8efb9d +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/BoxGroup_Code.PNG b/Assets/NaughtyAttributes/Documentation/BoxGroup_Code.PNG new file mode 100644 index 0000000..33f3d86 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/BoxGroup_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/BoxGroup_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/BoxGroup_Code.PNG.meta new file mode 100644 index 0000000..7f1d43a --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/BoxGroup_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: b962d99ba1e86044ea453878b9fd1ad6 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/BoxGroup_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/BoxGroup_Inspector.PNG new file mode 100644 index 0000000..624d4f7 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/BoxGroup_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/BoxGroup_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/BoxGroup_Inspector.PNG.meta new file mode 100644 index 0000000..bee4dee --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/BoxGroup_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 9b966e4d3fd75654cbfe73a12abb0b40 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Button_Code.PNG b/Assets/NaughtyAttributes/Documentation/Button_Code.PNG new file mode 100644 index 0000000..8b4d1b0 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Button_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Button_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/Button_Code.PNG.meta new file mode 100644 index 0000000..80a655c --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Button_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 76b0b7c29f8441540a1cf986b45f6a7c +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Button_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/Button_Inspector.PNG new file mode 100644 index 0000000..08ee979 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Button_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Button_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/Button_Inspector.PNG.meta new file mode 100644 index 0000000..c7f2391 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Button_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 794a606ccada1c449a6f12143f5d8ef6 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Dropdown_Code.PNG b/Assets/NaughtyAttributes/Documentation/Dropdown_Code.PNG new file mode 100644 index 0000000..fdbad05 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Dropdown_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Dropdown_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/Dropdown_Code.PNG.meta new file mode 100644 index 0000000..39c74fc --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Dropdown_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: a8c6bf35d7527a44e93ce41d925b07f0 +timeCreated: 1508767592 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Dropdown_Inspector.gif b/Assets/NaughtyAttributes/Documentation/Dropdown_Inspector.gif new file mode 100644 index 0000000..ffa5252 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Dropdown_Inspector.gif differ diff --git a/Assets/NaughtyAttributes/Documentation/Dropdown_Inspector.gif.meta b/Assets/NaughtyAttributes/Documentation/Dropdown_Inspector.gif.meta new file mode 100644 index 0000000..9986230 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Dropdown_Inspector.gif.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: c1db80a2110426d4f90e8c42467ca2c6 +timeCreated: 1508767592 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/EnableIf_Code.PNG b/Assets/NaughtyAttributes/Documentation/EnableIf_Code.PNG new file mode 100644 index 0000000..b253129 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/EnableIf_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/EnableIf_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/EnableIf_Code.PNG.meta new file mode 100644 index 0000000..37e31d6 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/EnableIf_Code.PNG.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 020173797840d4f49905844cc0a64fcd +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/EnableIf_Code2.PNG b/Assets/NaughtyAttributes/Documentation/EnableIf_Code2.PNG new file mode 100644 index 0000000..c09608f Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/EnableIf_Code2.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/EnableIf_Code2.PNG.meta b/Assets/NaughtyAttributes/Documentation/EnableIf_Code2.PNG.meta new file mode 100644 index 0000000..5618697 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/EnableIf_Code2.PNG.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 1846cf0f022944444af375235e7e33c7 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 7 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/EnableIf_Inspector.gif b/Assets/NaughtyAttributes/Documentation/EnableIf_Inspector.gif new file mode 100644 index 0000000..3855dec Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/EnableIf_Inspector.gif differ diff --git a/Assets/NaughtyAttributes/Documentation/EnableIf_Inspector.gif.meta b/Assets/NaughtyAttributes/Documentation/EnableIf_Inspector.gif.meta new file mode 100644 index 0000000..1ad5e46 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/EnableIf_Inspector.gif.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 55dace8f2296cf94ab88a1838ed4d7fe +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/InfoBox_Code.PNG b/Assets/NaughtyAttributes/Documentation/InfoBox_Code.PNG new file mode 100644 index 0000000..83103bd Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/InfoBox_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/InfoBox_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/InfoBox_Code.PNG.meta new file mode 100644 index 0000000..0a73839 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/InfoBox_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 93610132c9d0ac5469afc61d66817c99 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/InfoBox_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/InfoBox_Inspector.PNG new file mode 100644 index 0000000..369b6b0 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/InfoBox_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/InfoBox_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/InfoBox_Inspector.PNG.meta new file mode 100644 index 0000000..44fd1b8 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/InfoBox_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: edcea8333d68ae945ad1c760ae2d1562 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Label_Code.PNG b/Assets/NaughtyAttributes/Documentation/Label_Code.PNG new file mode 100644 index 0000000..f151f5c Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Label_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Label_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/Label_Code.PNG.meta new file mode 100644 index 0000000..ec4c0c1 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Label_Code.PNG.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: a9db3a118bcc6d14fb3b4722d33bd2b0 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Label_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/Label_Inspector.PNG new file mode 100644 index 0000000..7f8e1dd Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Label_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Label_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/Label_Inspector.PNG.meta new file mode 100644 index 0000000..c1bde08 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Label_Inspector.PNG.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 5d09d80a59968c4428c728d09f02f7fa +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Code.PNG b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Code.PNG new file mode 100644 index 0000000..f514c2e Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Code.PNG.meta new file mode 100644 index 0000000..f270607 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 20085933a153a464f8a4db07e9001f42 +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Inspector.PNG new file mode 100644 index 0000000..6086b40 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Inspector.PNG.meta new file mode 100644 index 0000000..100a052 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/MinMaxSlider_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: ca85e66652051634e815f4f8368f98d9 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Code.PNG b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Code.PNG new file mode 100644 index 0000000..0f3fd47 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Code.PNG.meta new file mode 100644 index 0000000..65031fa --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 50afb956ae7768b4b89d7b5ef321367f +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Inspector.gif b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Inspector.gif new file mode 100644 index 0000000..185c9cc Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Inspector.gif differ diff --git a/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Inspector.gif.meta b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Inspector.gif.meta new file mode 100644 index 0000000..46bb517 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/MinValueMaxValue_Inspector.gif.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 549658017be426742a56b94a5958b6f6 +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/OnValueChanged_Code.PNG b/Assets/NaughtyAttributes/Documentation/OnValueChanged_Code.PNG new file mode 100644 index 0000000..969f29f Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/OnValueChanged_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/OnValueChanged_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/OnValueChanged_Code.PNG.meta new file mode 100644 index 0000000..f75ae0f --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/OnValueChanged_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 1d9a471100e0c9748a60242500085501 +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ProgressBar_Code.png b/Assets/NaughtyAttributes/Documentation/ProgressBar_Code.png new file mode 100644 index 0000000..bbc547b Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ProgressBar_Code.png differ diff --git a/Assets/NaughtyAttributes/Documentation/ProgressBar_Code.png.meta b/Assets/NaughtyAttributes/Documentation/ProgressBar_Code.png.meta new file mode 100644 index 0000000..3281499 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ProgressBar_Code.png.meta @@ -0,0 +1,77 @@ +fileFormatVersion: 2 +guid: 5817ff65803edc24ca258286e6d2fd33 +timeCreated: 1518636277 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ProgressBar_Inspector.gif b/Assets/NaughtyAttributes/Documentation/ProgressBar_Inspector.gif new file mode 100644 index 0000000..7aada24 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ProgressBar_Inspector.gif differ diff --git a/Assets/NaughtyAttributes/Documentation/ProgressBar_Inspector.gif.meta b/Assets/NaughtyAttributes/Documentation/ProgressBar_Inspector.gif.meta new file mode 100644 index 0000000..b106c8b --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ProgressBar_Inspector.gif.meta @@ -0,0 +1,77 @@ +fileFormatVersion: 2 +guid: 631c492cc54906542851734be1231fab +timeCreated: 1518636277 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ReadOnly_Code.PNG b/Assets/NaughtyAttributes/Documentation/ReadOnly_Code.PNG new file mode 100644 index 0000000..603149b Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ReadOnly_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ReadOnly_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ReadOnly_Code.PNG.meta new file mode 100644 index 0000000..7772c2c --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ReadOnly_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 869278751dbd45549a12050d9fea7425 +timeCreated: 1508862811 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ReadOnly_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/ReadOnly_Inspector.PNG new file mode 100644 index 0000000..aaad6ae Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ReadOnly_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ReadOnly_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/ReadOnly_Inspector.PNG.meta new file mode 100644 index 0000000..27e94d7 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ReadOnly_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 867cf9de018b6fd46a306be250cd7196 +timeCreated: 1508862811 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ReorderableList_Code.PNG b/Assets/NaughtyAttributes/Documentation/ReorderableList_Code.PNG new file mode 100644 index 0000000..23de97e Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ReorderableList_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ReorderableList_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ReorderableList_Code.PNG.meta new file mode 100644 index 0000000..4a0ae92 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ReorderableList_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: d62a3181965d92a42981ed3d66adf987 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ReorderableList_Inspector.gif b/Assets/NaughtyAttributes/Documentation/ReorderableList_Inspector.gif new file mode 100644 index 0000000..bdf80f3 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ReorderableList_Inspector.gif differ diff --git a/Assets/NaughtyAttributes/Documentation/ReorderableList_Inspector.gif.meta b/Assets/NaughtyAttributes/Documentation/ReorderableList_Inspector.gif.meta new file mode 100644 index 0000000..37579df --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ReorderableList_Inspector.gif.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: a82acdae22e140148b602d98ff67b7b6 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Required_Code.PNG b/Assets/NaughtyAttributes/Documentation/Required_Code.PNG new file mode 100644 index 0000000..ac086f4 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Required_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Required_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/Required_Code.PNG.meta new file mode 100644 index 0000000..ab0153c --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Required_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: eec3cb64c7158614781457f102d28654 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Required_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/Required_Inspector.PNG new file mode 100644 index 0000000..97e28b8 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Required_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Required_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/Required_Inspector.PNG.meta new file mode 100644 index 0000000..2f3243e --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Required_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: c496c0d39ae55ec4db47a54c72510db1 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Code.PNG b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Code.PNG new file mode 100644 index 0000000..115558e Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Code.PNG.meta new file mode 100644 index 0000000..14c38fe --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 7a7b2846b5f13794db2650ade442c8bb +timeCreated: 1508833884 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Inspector.gif b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Inspector.gif new file mode 100644 index 0000000..414efa7 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Inspector.gif differ diff --git a/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Inspector.gif.meta b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Inspector.gif.meta new file mode 100644 index 0000000..2913c61 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ResizableTextArea_Inspector.gif.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 4d411d3022fdb9a4894b786023ff55c3 +timeCreated: 1508833884 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Section_Code.PNG b/Assets/NaughtyAttributes/Documentation/Section_Code.PNG new file mode 100644 index 0000000..93d1a9e Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Section_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Section_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/Section_Code.PNG.meta new file mode 100644 index 0000000..6af2cda --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Section_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: baeaf9f9d9ca90b4d8418fd8179195dd +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Section_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/Section_Inspector.PNG new file mode 100644 index 0000000..4fab082 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Section_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Section_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/Section_Inspector.PNG.meta new file mode 100644 index 0000000..93dea50 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Section_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 0cdac3f93cb6b764284bcfad3302eb59 +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Code.PNG b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Code.PNG new file mode 100644 index 0000000..85ff839 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Code.PNG.meta new file mode 100644 index 0000000..fe4e240 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: bb1c59dc18499aa4d87ea7c35f80101b +timeCreated: 1509093800 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Inspector.PNG new file mode 100644 index 0000000..ebf989a Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Inspector.PNG.meta new file mode 100644 index 0000000..00b5dda --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowAssetPreview_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 9fef8c6f9ed6f5b48b3f90e657bd71d5 +timeCreated: 1509093800 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowIf_Code.PNG b/Assets/NaughtyAttributes/Documentation/ShowIf_Code.PNG new file mode 100644 index 0000000..b7d7135 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowIf_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowIf_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowIf_Code.PNG.meta new file mode 100644 index 0000000..a88ee55 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowIf_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 8e647f629215ab5479f1f2e9e4e10f89 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowIf_Code2.PNG b/Assets/NaughtyAttributes/Documentation/ShowIf_Code2.PNG new file mode 100644 index 0000000..6d936d8 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowIf_Code2.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowIf_Code2.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowIf_Code2.PNG.meta new file mode 100644 index 0000000..f852e29 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowIf_Code2.PNG.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 1308689303de57648b40ba65250316e1 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 7 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowIf_Inspector.gif b/Assets/NaughtyAttributes/Documentation/ShowIf_Inspector.gif new file mode 100644 index 0000000..0f032ca Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowIf_Inspector.gif differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowIf_Inspector.gif.meta b/Assets/NaughtyAttributes/Documentation/ShowIf_Inspector.gif.meta new file mode 100644 index 0000000..f9e8a8b --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowIf_Inspector.gif.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 64454bc61e4706d4792d7f2d289ba722 +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Code.PNG b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Code.PNG new file mode 100644 index 0000000..e721b91 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Code.PNG.meta new file mode 100644 index 0000000..26bcbd7 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 910bb6ff194fd964b952f93e9c3768cd +timeCreated: 1510927252 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Inspector.PNG new file mode 100644 index 0000000..8969c64 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Inspector.PNG.meta new file mode 100644 index 0000000..c7ffb83 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowNativeProperty_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: cdd1d4dbda8666943acca44fba1b3772 +timeCreated: 1510927311 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Code.PNG b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Code.PNG new file mode 100644 index 0000000..4bac8d6 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Code.PNG.meta new file mode 100644 index 0000000..232434b --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: c38bd18425e6caf4c96de9e9dc75d44a +timeCreated: 1508840999 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Inspector.PNG new file mode 100644 index 0000000..a1f3795 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Inspector.PNG.meta new file mode 100644 index 0000000..54c469a --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ShowNonSerializedField_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: fa565d87ea4765f43ab14b962d78d1d3 +timeCreated: 1508840999 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Slider_Code.PNG b/Assets/NaughtyAttributes/Documentation/Slider_Code.PNG new file mode 100644 index 0000000..336bdf3 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Slider_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Slider_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/Slider_Code.PNG.meta new file mode 100644 index 0000000..909445c --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Slider_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: c2e8583b447997d4894f6882accea083 +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Slider_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/Slider_Inspector.PNG new file mode 100644 index 0000000..e745e41 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Slider_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Slider_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/Slider_Inspector.PNG.meta new file mode 100644 index 0000000..36d1aca --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Slider_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 53adc0cfbf605284a9df9e29f962da09 +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Tag_Code.PNG b/Assets/NaughtyAttributes/Documentation/Tag_Code.PNG new file mode 100644 index 0000000..d9dd013 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Tag_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Tag_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/Tag_Code.PNG.meta new file mode 100644 index 0000000..4a3e2fd --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Tag_Code.PNG.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: ba7e393195dbdc14ea10a898f571b05b +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/Tag_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/Tag_Inspector.PNG new file mode 100644 index 0000000..a5e616a Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/Tag_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/Tag_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/Tag_Inspector.PNG.meta new file mode 100644 index 0000000..d15f534 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/Tag_Inspector.PNG.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 743d1d7bb35066144812aae759d48d8a +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ValidateInput_Code.PNG b/Assets/NaughtyAttributes/Documentation/ValidateInput_Code.PNG new file mode 100644 index 0000000..9ff2ea7 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ValidateInput_Code.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ValidateInput_Code.PNG.meta b/Assets/NaughtyAttributes/Documentation/ValidateInput_Code.PNG.meta new file mode 100644 index 0000000..1524e0a --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ValidateInput_Code.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: ea806f31fb59c894e84a667948d116fc +timeCreated: 1508669478 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Documentation/ValidateInput_Inspector.PNG b/Assets/NaughtyAttributes/Documentation/ValidateInput_Inspector.PNG new file mode 100644 index 0000000..084d203 Binary files /dev/null and b/Assets/NaughtyAttributes/Documentation/ValidateInput_Inspector.PNG differ diff --git a/Assets/NaughtyAttributes/Documentation/ValidateInput_Inspector.PNG.meta b/Assets/NaughtyAttributes/Documentation/ValidateInput_Inspector.PNG.meta new file mode 100644 index 0000000..28ea083 --- /dev/null +++ b/Assets/NaughtyAttributes/Documentation/ValidateInput_Inspector.PNG.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 147278501eff2104aa2bdb9c911b580f +timeCreated: 1508669477 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/README.html b/Assets/NaughtyAttributes/README.html new file mode 100644 index 0000000..4a8f30a --- /dev/null +++ b/Assets/NaughtyAttributes/README.html @@ -0,0 +1,1355 @@ + + + + + README.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + README.md +

+ +
+

+NaughtyAttributes

+

NaughtyAttributes is an extension for the Unity Inspector.

+

It expands the range of attributes that Unity provides so that you can create powerful inspectors without the need of custom editors or property drawers. It also provides attributes that can be applied to non-serialized fields or functions.

+

It is implemented by replacing the default Unity Inspector. This means that if you have any custom editors, NaughtyAttributes will not work with them. All of your custom editors and property drawers are not affected in any way.

+

+System Requirements

+

Unity 2017.1.0 or later versions. Feel free to try older version. Don't forget to include the NaughtyAttributes namespace.

+

+Drawer Attributes

+

Provide special draw options to serialized fields. +A field can have only one DrawerAttribute. If a field has more than one, only the bottom one will be used.

+

+Slider

+

The same as Unity's Range attribute. +There is no difference between the two, you can use whatever you like, I just wanted to support a custom slider attribute.

+

code

+

inspector

+

+MinMaxSlider

+

A double slider. The min value is saved to the X property, and the max value is saved to the Y property of a Vector2 field.

+

code

+

inspector

+

+ReorderableList

+

Provides array type fields with an interface for easy reordering of elements.

+

code

+

inspector

+

+Button

+

A method can be marked as a button. A button appears in the inspector and executes the method if clicked. +Works both with instance and static methods.

+

code

+

inspector

+

+Dropdown

+

Provides an interface for dropdown value selection.

+

code

+

inspector

+

+ResizableTextArea

+

A resizable text area where you can see the whole text. +Unlike Unity's Multiline and TextArea attributes where you can see only 3 rows of a given text, and in order to see it or modify it you have to manually scroll down to the desired row.

+

code

+

inspector

+

+ShowNonSerializedField

+

Shows non-serialized fields in the inspector. +All non-serialized fields are displayed at the bottom of the inspector before the method buttons. +Keep in mind that if you change a non-static non-serialized field in the code - the value in the inspector will be updated after you press Play in the editor. +There is no such issue with static non-serialized fields because their values are updated at compile time. +It supports only certain types (bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object).

+

code

+

inspector

+

+ShowNativeProperty

+

Shows native C# properties in the inspector. +All native properties are displayed at the bottom of the inspector after the non-serialized fields and before the method buttons. +It supports only certain types (bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object).

+

code

+

inspector

+

+ReadOnly

+

Makes a field read only.

+

code

+

inspector

+

+EnableIf / DisableIf

+

code

+

inspector

+

You can have more than one condition.

+

code

+

+ShowAssetPreview

+

Shows the texture preview of a given asset (Sprite, Prefab...)

+

code

+

inspector

+

+ProgressBar

+

code

+

inspector

+

+Label

+

Override default field label

+

code

+

inspector

+

+Tag

+

Enable Tag selection with string field

+

code

+

inspector

+

+DrawCondition Attributes

+

Can be used to specify when a given serialized field is visible, and when not. A field can have only one DrawConditionAttribute.

+

+ShowIf / HideIf

+

code

+

inspector

+

You can have more than one condition.

+

code

+

+Group Attributes

+

Serialized fields can be grouped in different groups. +A field can have only one GroupAttribute. If a field has more than one, only the bottom one will be used.

+

+BoxGroup

+

Surrounds grouped fields with a box.

+

code

+

inspector

+

+Validator Attributes

+

Used for validating the fields. A field can have infinite number of validator attributes.

+

+MinValue / MaxValue

+

Clamps integer and float fields.

+

code

+

inspector

+

+Required

+

Used to remind the developer that a given reference type field is required.

+

code

+

inspector

+

+ValidateInput

+

The most powerful ValidatorAttribute.

+

code

+

inspector

+

+Meta Attributes

+

Give the fields meta data. A field can have infinite number of meta attributes.

+

+InfoBox

+

Used for providing additional information.

+

code

+

inspector

+

+OnValueChanged

+

Detects a value change and executes a callback. +Keep in mind that the event is detected only when the value is changed from the inspector. +If you want a runtime event, you should probably use an event/delegate and subscribe to it.

+

code

+

+How to create your own attributes

+

Lets say you want to implement your own [ReadOnly] attribute.

+

First you have to create a ReadOnlyAttribute class

+
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
+public class ReadOnlyAttribute : DrawerAttribute
+{
+}
+
+

Then you need to create a drawer for that attribute

+
[PropertyDrawer(typeof(ReadOnlyAttribute))]
+public class ReadOnlyPropertyDrawer : PropertyDrawer
+{
+	public override void DrawProperty(SerializedProperty property)
+	{
+		GUI.enabled = false;
+		EditorGUILayout.PropertyField(property, true);
+		GUI.enabled = true;
+	}
+}
+
+

Last, in order for the editor to recognize the drawer for this attribute, you have to press the Tools/NaughtyAttributes/Update Attributes Database menu item in the editor.

+

+License

+

MIT License

+

Copyright (c) 2017 Denis Rizov

+

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

+

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

+

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

+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/Assets/NaughtyAttributes/README.html.meta b/Assets/NaughtyAttributes/README.html.meta new file mode 100644 index 0000000..42c42d4 --- /dev/null +++ b/Assets/NaughtyAttributes/README.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f1c5c604e6d27cc4d86e81f45c704e11 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts.meta b/Assets/NaughtyAttributes/Scripts.meta new file mode 100644 index 0000000..238d7e9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 66686847ee1fa044bb15dfe473666178 +folderAsset: yes +timeCreated: 1507995546 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core.meta b/Assets/NaughtyAttributes/Scripts/Core.meta new file mode 100644 index 0000000..a055450 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1f67e408a6d0adf4ab29d095ccd8b116 +folderAsset: yes +timeCreated: 1507998942 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/ConditionOperator.cs b/Assets/NaughtyAttributes/Scripts/Core/ConditionOperator.cs new file mode 100644 index 0000000..2474f6d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ConditionOperator.cs @@ -0,0 +1,10 @@ +using System; + +namespace NaughtyAttributes +{ + public enum ConditionOperator + { + And, + Or + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/ConditionOperator.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ConditionOperator.cs.meta new file mode 100644 index 0000000..21b1100 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ConditionOperator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8da69fd2354ea264bb1c54362ee02938 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes.meta new file mode 100644 index 0000000..1b422d7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0d8ad70d0e1e04248b1f5c5d5fb358f4 +folderAsset: yes +timeCreated: 1508414568 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/DrawConditionAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/DrawConditionAttribute.cs new file mode 100644 index 0000000..30b684f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/DrawConditionAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + public class DrawConditionAttribute : NaughtyAttribute + { + + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/DrawConditionAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/DrawConditionAttribute.cs.meta new file mode 100644 index 0000000..6d27b22 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/DrawConditionAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8fd9817e8bf3e054ab8e73b47bdce8c7 +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/HideIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/HideIfAttribute.cs new file mode 100644 index 0000000..b739135 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/HideIfAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class HideIfAttribute : ShowIfAttribute + { + public HideIfAttribute(string condition) + : base(condition) + { + Reversed = true; + } + + public HideIfAttribute(ConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Reversed = true; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/HideIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/HideIfAttribute.cs.meta new file mode 100644 index 0000000..363b863 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/HideIfAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: aafc3a255165311419b7070198e7ffaf +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/ShowIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/ShowIfAttribute.cs new file mode 100644 index 0000000..46059f3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/ShowIfAttribute.cs @@ -0,0 +1,24 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ShowIfAttribute : DrawConditionAttribute + { + public string[] Conditions { get; private set; } + public ConditionOperator ConditionOperator { get; private set; } + public bool Reversed { get; protected set; } + + public ShowIfAttribute(string condition) + { + ConditionOperator = ConditionOperator.And; + Conditions = new string[1] { condition }; + } + + public ShowIfAttribute(ConditionOperator conditionOperator, params string[] conditions) + { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/ShowIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/ShowIfAttribute.cs.meta new file mode 100644 index 0000000..cff1299 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawConditionAttributes/ShowIfAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6a9e9448e6e70094297d49ec9c82c6e1 +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta new file mode 100644 index 0000000..756c714 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c76425e719cd4424d868674bcfb233f2 +folderAsset: yes +timeCreated: 1508151410 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ButtonAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ButtonAttribute.cs new file mode 100644 index 0000000..9e89ef6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ButtonAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class ButtonAttribute : DrawerAttribute + { + public string Text { get; private set; } + + public ButtonAttribute(string text = null) + { + this.Text = text; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ButtonAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ButtonAttribute.cs.meta new file mode 100644 index 0000000..3f00112 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ButtonAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d61d9be90aa48764096a2bea37c9bd60 +timeCreated: 1508591778 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DisableIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DisableIfAttribute.cs new file mode 100644 index 0000000..d9db224 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DisableIfAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class DisableIfAttribute : EnableIfAttribute + { + public DisableIfAttribute(string condition) + : base(condition) + { + Reversed = true; + } + + public DisableIfAttribute(ConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Reversed = true; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DisableIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DisableIfAttribute.cs.meta new file mode 100644 index 0000000..7315069 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DisableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dac53a514fd03bb48b3fae8d3d23bf78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs new file mode 100644 index 0000000..b3a3a67 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public abstract class DrawerAttribute : NaughtyAttribute + { + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta new file mode 100644 index 0000000..2043b25 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 57360d74732bf2749b2f8d5e0a0ea6f5 +timeCreated: 1508151410 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs new file mode 100644 index 0000000..0a433f4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class DropdownAttribute : DrawerAttribute + { + public string ValuesFieldName { get; private set; } + + public DropdownAttribute(string valuesFieldName) + { + this.ValuesFieldName = valuesFieldName; + } + } + + public interface IDropdownList : IEnumerable> + { + } + + public class DropdownList : IDropdownList + { + private List> values; + + public DropdownList() + { + this.values = new List>(); + } + + public void Add(string displayName, T value) + { + this.values.Add(new KeyValuePair(displayName, value)); + } + + public IEnumerator> GetEnumerator() + { + return this.values.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return this.GetEnumerator(); + } + + public static explicit operator DropdownList(DropdownList target) + { + DropdownList result = new DropdownList(); + foreach (var kvp in target) + { + result.Add(kvp.Key, kvp.Value); + } + + return result; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta new file mode 100644 index 0000000..a402b5a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: cd3b8c98b0803554e9152991fe806c62 +timeCreated: 1508752474 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnableIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnableIfAttribute.cs new file mode 100644 index 0000000..d5f12d4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnableIfAttribute.cs @@ -0,0 +1,24 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class EnableIfAttribute : DrawerAttribute + { + public string[] Conditions { get; private set; } + public ConditionOperator ConditionOperator { get; private set; } + public bool Reversed { get; protected set; } + + public EnableIfAttribute(string condition) + { + ConditionOperator = ConditionOperator.And; + Conditions = new string[1] { condition }; + } + + public EnableIfAttribute(ConditionOperator conditionOperator, params string[] conditions) + { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnableIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnableIfAttribute.cs.meta new file mode 100644 index 0000000..b2e4973 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3ef98b2c0ffe1b4c91fbec23d77898e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LabelAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LabelAttribute.cs new file mode 100644 index 0000000..d8a99d1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LabelAttribute.cs @@ -0,0 +1,18 @@ +using System; + +namespace NaughtyAttributes +{ + /// + /// Override default label + /// + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class LabelAttribute : DrawerAttribute + { + public string Label { get; private set; } + + public LabelAttribute(string label) + { + this.Label = label; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LabelAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LabelAttribute.cs.meta new file mode 100644 index 0000000..152c686 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LabelAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e58df0ada05db63488ddd96c571d7bc1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs new file mode 100644 index 0000000..aa429de --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MinMaxSliderAttribute : DrawerAttribute + { + public float MinValue { get; private set; } + public float MaxValue { get; private set; } + + public MinMaxSliderAttribute(float minValue, float maxValue) + { + this.MinValue = minValue; + this.MaxValue = maxValue; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta new file mode 100644 index 0000000..8dd63f3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 61d133a2d203a77419f35652a7f3fae0 +timeCreated: 1508427131 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs new file mode 100644 index 0000000..0649477 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs @@ -0,0 +1,32 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ProgressBarAttribute : DrawerAttribute + { + public string Name { get; private set; } + public float MaxValue { get; private set; } + public ProgressBarColor Color { get; private set; } + + public ProgressBarAttribute(string name = "", float maxValue = 100, ProgressBarColor color = ProgressBarColor.Blue) + { + Name = name; + MaxValue = maxValue; + Color = color; + } + } + + public enum ProgressBarColor + { + Red, + Pink, + Orange, + Yellow, + Green, + Blue, + Indigo, + Violet, + White + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta new file mode 100644 index 0000000..65bfa95 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8d8eb74e78cba7b43b3025525c5084b9 +timeCreated: 1518435237 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs new file mode 100644 index 0000000..d29794a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ReadOnlyAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs.meta new file mode 100644 index 0000000..54b0ced --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReadOnlyAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 4fa676ebc6d589c44817272871db148b +timeCreated: 1508862052 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReorderableListAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReorderableListAttribute.cs new file mode 100644 index 0000000..ff1a701 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReorderableListAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ReorderableListAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReorderableListAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReorderableListAttribute.cs.meta new file mode 100644 index 0000000..59e4c99 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ReorderableListAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ff85489452472c241987e5ba4c5e512a +timeCreated: 1508402303 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs new file mode 100644 index 0000000..e84e664 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ResizableTextAreaAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta new file mode 100644 index 0000000..43e40fd --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1793ea6e464ee6448930ecf133ed6a1d +timeCreated: 1508583166 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs new file mode 100644 index 0000000..6b35444 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ShowAssetPreviewAttribute : DrawerAttribute + { + public int Width { get; private set; } + public int Height { get; private set; } + + public ShowAssetPreviewAttribute(int width = 64, int height = 64) + { + this.Width = width; + this.Height = height; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta new file mode 100644 index 0000000..bcdeb2c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 313b856a920a987418d6437a8e20a59f +timeCreated: 1509089502 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNativePropertyAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNativePropertyAttribute.cs new file mode 100644 index 0000000..bb8a7c7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNativePropertyAttribute.cs @@ -0,0 +1,11 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)] + public class ShowNativePropertyAttribute : DrawerAttribute + { + + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNativePropertyAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNativePropertyAttribute.cs.meta new file mode 100644 index 0000000..29f619d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNativePropertyAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: acc7d7e8ec9e47a4aaf4167698ae076f +timeCreated: 1510926376 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNonSerializedFieldAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNonSerializedFieldAttribute.cs new file mode 100644 index 0000000..8f311ef --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNonSerializedFieldAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ShowNonSerializedFieldAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNonSerializedFieldAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNonSerializedFieldAttribute.cs.meta new file mode 100644 index 0000000..d21b234 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowNonSerializedFieldAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a176aad85de73b34ba3ecd4f7baa367b +timeCreated: 1508835721 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SliderAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SliderAttribute.cs new file mode 100644 index 0000000..ece2b58 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SliderAttribute.cs @@ -0,0 +1,23 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class SliderAttribute : DrawerAttribute + { + public float MinValue { get; private set; } + public float MaxValue { get; private set; } + + public SliderAttribute(float minValue, float maxValue) + { + this.MinValue = minValue; + this.MaxValue = maxValue; + } + + public SliderAttribute(int minValue, int maxValue) + { + this.MaxValue = minValue; + this.MaxValue = maxValue; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SliderAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SliderAttribute.cs.meta new file mode 100644 index 0000000..b121855 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SliderAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f75eef8142877c345ba9b95046dd3bf6 +timeCreated: 1508422518 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs new file mode 100644 index 0000000..f7829c6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs @@ -0,0 +1,12 @@ +using System; + +namespace NaughtyAttributes +{ + /// + /// Make tags appear as tag popup fields + /// + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class TagAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta new file mode 100644 index 0000000..475b869 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad140cd5debdba44aa6db74894a5e913 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes.meta new file mode 100644 index 0000000..4455f01 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 86ca4f90dd05bc448959ecd8f44097a7 +folderAsset: yes +timeCreated: 1508330803 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/BoxGroupAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/BoxGroupAttribute.cs new file mode 100644 index 0000000..a6f3b49 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/BoxGroupAttribute.cs @@ -0,0 +1,13 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class BoxGroupAttribute : GroupAttribute + { + public BoxGroupAttribute(string name = "") + : base(name) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/BoxGroupAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/BoxGroupAttribute.cs.meta new file mode 100644 index 0000000..fcdb278 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/BoxGroupAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 88c5a8d79f9e72a43a4cfa67fd08fdd6 +timeCreated: 1508326108 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/GroupAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/GroupAttribute.cs new file mode 100644 index 0000000..a317fe2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/GroupAttribute.cs @@ -0,0 +1,14 @@ +using System; + +namespace NaughtyAttributes +{ + public abstract class GroupAttribute : NaughtyAttribute + { + public string Name { get; private set; } + + public GroupAttribute(string name) + { + this.Name = name; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/GroupAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/GroupAttribute.cs.meta new file mode 100644 index 0000000..db3cc39 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/GroupAttributes/GroupAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: beb48511ef6091e4ba054ad1b618933c +timeCreated: 1508326108 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes.meta new file mode 100644 index 0000000..f2ed90e --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 51ee806b39c5fb343ae7d268404d8c67 +folderAsset: yes +timeCreated: 1508497398 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/InfoBoxAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/InfoBoxAttribute.cs new file mode 100644 index 0000000..d09c616 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/InfoBoxAttribute.cs @@ -0,0 +1,31 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class InfoBoxAttribute : MetaAttribute + { + public string Text { get; private set; } + public InfoBoxType Type { get; private set; } + public string VisibleIf { get; private set; } + + public InfoBoxAttribute(string text, InfoBoxType type = InfoBoxType.Normal, string visibleIf = null) + { + this.Text = text; + this.Type = type; + this.VisibleIf = visibleIf; + } + + public InfoBoxAttribute(string text, string visibleIf) + : this(text, InfoBoxType.Normal, visibleIf) + { + } + } + + public enum InfoBoxType + { + Normal, + Warning, + Error + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/InfoBoxAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/InfoBoxAttribute.cs.meta new file mode 100644 index 0000000..19cb564 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/InfoBoxAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 42c6184c84ab19d4382b06f9017f136d +timeCreated: 1508607449 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs new file mode 100644 index 0000000..ef2a451 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + public abstract class MetaAttribute : NaughtyAttribute + { + public int Order { get; set; } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta new file mode 100644 index 0000000..5f5e5d7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: fcd6d339bcd667044a48d41a78a7830c +timeCreated: 1508497398 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs new file mode 100644 index 0000000..ab826b8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class OnValueChangedAttribute : MetaAttribute + { + public string CallbackName { get; private set; } + + public OnValueChangedAttribute(string callbackName) + { + this.CallbackName = callbackName; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta new file mode 100644 index 0000000..1452234 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a144cdc17b6e4cf4f86692ae1dc7e4d7 +timeCreated: 1508610277 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttribute.cs new file mode 100644 index 0000000..6251af9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + // The base class for all naughty attributes + public class NaughtyAttribute : Attribute + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttribute.cs.meta new file mode 100644 index 0000000..fdf1ddf --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1accb89cb44c4a342a1857e5e3d13abb +timeCreated: 1508052914 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef new file mode 100644 index 0000000..b585d0b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef @@ -0,0 +1,12 @@ +{ + "name": "NaughtyAttributes.Core", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta new file mode 100644 index 0000000..731749c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 776d03a35f1b52c4a9aed9f56d7b4229 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta new file mode 100644 index 0000000..9bee434 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8a655727c2e629a438ad94f60080b9ea +folderAsset: yes +timeCreated: 1508151410 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs new file mode 100644 index 0000000..4c54127 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MaxValueAttribute : ValidatorAttribute + { + public float MaxValue { get; private set; } + + public MaxValueAttribute(float maxValue) + { + this.MaxValue = maxValue; + } + + public MaxValueAttribute(int maxValue) + { + this.MaxValue = maxValue; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta new file mode 100644 index 0000000..4ba3b5a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e018059e7fe12fd42a3a1bba0dbbf9c5 +timeCreated: 1508047804 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs new file mode 100644 index 0000000..627e747 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MinValueAttribute : ValidatorAttribute + { + public float MinValue { get; private set; } + + public MinValueAttribute(float minValue) + { + this.MinValue = minValue; + } + + public MinValueAttribute(int minValue) + { + this.MinValue = minValue; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta new file mode 100644 index 0000000..19450e8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 337be62eb8c929f4ab8b3d495a712a56 +timeCreated: 1508048805 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs new file mode 100644 index 0000000..903f658 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class RequiredAttribute : ValidatorAttribute + { + public string Message { get; private set; } + + public RequiredAttribute(string message = null) + { + this.Message = message; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta new file mode 100644 index 0000000..068d000 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0b70ebd0fbd89c648981f08469806779 +timeCreated: 1508655546 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs new file mode 100644 index 0000000..d024816 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ValidateInputAttribute : ValidatorAttribute + { + public string CallbackName { get; private set; } + public string Message { get; private set; } + + public ValidateInputAttribute(string callbackName, string message = null) + { + this.CallbackName = callbackName; + this.Message = message; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta new file mode 100644 index 0000000..ed365d1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f13ea28cf56e89f4cb335e28c9ab5d9a +timeCreated: 1508657795 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs new file mode 100644 index 0000000..38222eb --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public abstract class ValidatorAttribute : NaughtyAttribute + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta new file mode 100644 index 0000000..668f7e1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5fac74a9575c45342be1e6dda45610ad +timeCreated: 1508151410 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor.meta b/Assets/NaughtyAttributes/Scripts/Editor.meta new file mode 100644 index 0000000..8110aa8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b76068e69df25a94ab378b0b6829c4f0 +folderAsset: yes +timeCreated: 1507995613 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes.meta new file mode 100644 index 0000000..3f8ebe7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: bfd420e5bf6a25049b8fcea8b2f48c94 +folderAsset: yes +timeCreated: 1508153828 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/BaseAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/BaseAttribute.cs new file mode 100644 index 0000000..b3fef44 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/BaseAttribute.cs @@ -0,0 +1,23 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public abstract class BaseAttribute : Attribute, IAttribute + { + private Type targetAttributeType; + + public BaseAttribute(Type targetAttributeType) + { + this.targetAttributeType = targetAttributeType; + } + + public Type TargetAttributeType + { + get + { + return this.targetAttributeType; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/BaseAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/BaseAttribute.cs.meta new file mode 100644 index 0000000..d12b1ae --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/BaseAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: dd861c512b7cd804fa5f01b4d0e9f5bc +timeCreated: 1508424822 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/FieldDrawerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/FieldDrawerAttribute.cs new file mode 100644 index 0000000..e2de8b0 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/FieldDrawerAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class FieldDrawerAttribute : BaseAttribute + { + public FieldDrawerAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/FieldDrawerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/FieldDrawerAttribute.cs.meta new file mode 100644 index 0000000..456e222 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/FieldDrawerAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ad0dbf00ca9ec1e4290145dc40bda96f +timeCreated: 1508835980 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/IAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/IAttribute.cs new file mode 100644 index 0000000..5d24b68 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/IAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public interface IAttribute + { + Type TargetAttributeType { get; } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/IAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/IAttribute.cs.meta new file mode 100644 index 0000000..4b3a9d9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/IAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: eec883c51d802eb49be41f384e227dad +timeCreated: 1508424822 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/MethodDrawerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/MethodDrawerAttribute.cs new file mode 100644 index 0000000..ad78d4b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/MethodDrawerAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class MethodDrawerAttribute : BaseAttribute + { + public MethodDrawerAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/MethodDrawerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/MethodDrawerAttribute.cs.meta new file mode 100644 index 0000000..7b6acd3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/MethodDrawerAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b89ac4d9b78686548baa09fb0b103850 +timeCreated: 1508592495 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/NativePropertyDrawerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/NativePropertyDrawerAttribute.cs new file mode 100644 index 0000000..d60e141 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/NativePropertyDrawerAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class NativePropertyDrawerAttribute : BaseAttribute + { + public NativePropertyDrawerAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/NativePropertyDrawerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/NativePropertyDrawerAttribute.cs.meta new file mode 100644 index 0000000..9a726e7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/NativePropertyDrawerAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7c30e23a060c0614b876d7f14e0ee649 +timeCreated: 1510924166 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawConditionAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawConditionAttribute.cs new file mode 100644 index 0000000..c8fa6e9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawConditionAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class PropertyDrawConditionAttribute : BaseAttribute + { + public PropertyDrawConditionAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawConditionAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawConditionAttribute.cs.meta new file mode 100644 index 0000000..663b290 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawConditionAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d7962631135870e4fa748e6f81cd64d4 +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawerAttribute.cs new file mode 100644 index 0000000..cce3c96 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawerAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class PropertyDrawerAttribute : BaseAttribute + { + public PropertyDrawerAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawerAttribute.cs.meta new file mode 100644 index 0000000..3b4803b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyDrawerAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 77bb6824c4e9e054db05347dd8465f24 +timeCreated: 1508153828 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyGrouperAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyGrouperAttribute.cs new file mode 100644 index 0000000..5574cc5 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyGrouperAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class PropertyGrouperAttribute : BaseAttribute + { + public PropertyGrouperAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyGrouperAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyGrouperAttribute.cs.meta new file mode 100644 index 0000000..757cf05 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyGrouperAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9d1b7efb592ab4a4796c70edaad2be75 +timeCreated: 1508332897 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyMetaAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyMetaAttribute.cs new file mode 100644 index 0000000..0d2e09c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyMetaAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class PropertyMetaAttribute : BaseAttribute + { + public PropertyMetaAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyMetaAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyMetaAttribute.cs.meta new file mode 100644 index 0000000..2537218 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyMetaAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b46e1700b41c60141b19b0a7ed25a383 +timeCreated: 1508497398 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyValidatorAttribute.cs b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyValidatorAttribute.cs new file mode 100644 index 0000000..375bd33 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyValidatorAttribute.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public class PropertyValidatorAttribute : BaseAttribute + { + public PropertyValidatorAttribute(Type targetAttributeType) : base(targetAttributeType) + { + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyValidatorAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyValidatorAttribute.cs.meta new file mode 100644 index 0000000..1e3fbfe --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Attributes/PropertyValidatorAttribute.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 38c34a83bfd0a07468f20ae50c36737f +timeCreated: 1508153828 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration.meta new file mode 100644 index 0000000..4d91c4b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3876cb6aacfb99f46803d5e50eacdf2c +folderAsset: yes +timeCreated: 1508230862 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/CodeGenerator.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/CodeGenerator.cs new file mode 100644 index 0000000..bafbf0b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/CodeGenerator.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public class CodeGenerator : UnityEditor.Editor + { + private static readonly string GENERATED_CODE_TARGET_FOLDER = + (Application.dataPath.Replace("Assets", string.Empty) + AssetDatabase.GUIDToAssetPath(AssetDatabase.FindAssets("CodeGenerator")[0])) + .Replace("CodeGenerator.cs", string.Empty) + .Replace("/", "\\"); + + private static readonly string CLASS_NAME_PLACEHOLDER = "__classname__"; + private static readonly string ENTRIES_PLACEHOLDER = "__entries__"; + private static readonly string META_ENTRY_FORMAT = "metasByAttributeType[typeof({0})] = new {1}();" + Environment.NewLine; + private static readonly string DRAWER_ENTRY_FORMAT = "drawersByAttributeType[typeof({0})] = new {1}();" + Environment.NewLine; + private static readonly string GROUPER_ENTRY_FORMAT = "groupersByAttributeType[typeof({0})] = new {1}();" + Environment.NewLine; + private static readonly string VALIDATOR_ENTRY_FORMAT = "validatorsByAttributeType[typeof({0})] = new {1}();" + Environment.NewLine; + private static readonly string DRAW_CONDITION_ENTRY_FORMAT = "drawConditionsByAttributeType[typeof({0})] = new {1}();" + Environment.NewLine; + + //[UnityEditor.Callbacks.DidReloadScripts] + [MenuItem("Tools/NaughtyAttributes/Update Attributes Database")] + private static void GenerateCode() + { + GenerateScript("PropertyMetaDatabase", "PropertyMetaDatabaseTemplate", META_ENTRY_FORMAT); + GenerateScript("PropertyDrawerDatabase", "PropertyDrawerDatabaseTemplate", DRAWER_ENTRY_FORMAT); + GenerateScript("PropertyGrouperDatabase", "PropertyGrouperDatabaseTemplate", GROUPER_ENTRY_FORMAT); + GenerateScript("PropertyValidatorDatabase", "PropertyValidatorDatabaseTemplate", VALIDATOR_ENTRY_FORMAT); + GenerateScript("PropertyDrawConditionDatabase", "PropertyDrawConditionDatabaseTemplate", DRAW_CONDITION_ENTRY_FORMAT); + + GenerateScript("FieldDrawerDatabase", "FieldDrawerDatabaseTemplate", DRAWER_ENTRY_FORMAT); + GenerateScript("MethodDrawerDatabase", "MethodDrawerDatabaseTemplate", DRAWER_ENTRY_FORMAT); + GenerateScript("NativePropertyDrawerDatabase", "NativePropertyDrawerDbTemplate", DRAWER_ENTRY_FORMAT); + + AssetDatabase.Refresh(); + } + + private static void GenerateScript(string scriptName, string templateName, string entryFormat) + where TAttribute : IAttribute + { + string[] templateAssets = AssetDatabase.FindAssets(templateName); + if (templateAssets.Length == 0) + { + return; + } + + string templateGUID = templateAssets[0]; + string templateRelativePath = AssetDatabase.GUIDToAssetPath(templateGUID); + string templateFormat = (AssetDatabase.LoadAssetAtPath(templateRelativePath, typeof(TextAsset)) as TextAsset).ToString(); + //string templateFullPath = (Application.dataPath.Replace("Assets", string.Empty) + templateRelativePath).Replace("/", "\\"); + //string templateFormat = IOUtility.ReadFromFile(templateFullPath); + + StringBuilder entriesBuilder = new StringBuilder(); + List subTypes = GetAllSubTypes(typeof(TClass)); + + foreach (var subType in subTypes) + { + IAttribute[] attributes = (IAttribute[])subType.GetCustomAttributes(typeof(TAttribute), true); + if (attributes.Length > 0) + { + entriesBuilder.AppendFormat(entryFormat, attributes[0].TargetAttributeType.Name, subType.Name); + } + } + + string scriptContent = templateFormat + .Replace(CLASS_NAME_PLACEHOLDER, scriptName) + .Replace(ENTRIES_PLACEHOLDER, entriesBuilder.ToString()); + + scriptContent = Regex.Replace(scriptContent, @"\r\n|\n\r|\r|\n", Environment.NewLine); // Normalize line endings + + string scriptPath = GENERATED_CODE_TARGET_FOLDER + scriptName + ".cs"; + + IOUtility.WriteToFile(scriptPath, scriptContent); + } + + private static List GetAllSubTypes(Type baseClass) + { + var result = new List(); + Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); + + foreach (var assemly in assemblies) + { + Type[] types = assemly.GetTypes(); + foreach (var type in types) + { + if (type.IsSubclassOf(baseClass)) + { + result.Add(type); + } + } + } + + return result; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/CodeGenerator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/CodeGenerator.cs.meta new file mode 100644 index 0000000..2bbd870 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/CodeGenerator.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 990da0e1629b14049842bf2ac82cbff0 +timeCreated: 1508230160 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/FieldDrawerDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/FieldDrawerDatabase.cs new file mode 100644 index 0000000..a1e4692 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/FieldDrawerDatabase.cs @@ -0,0 +1,33 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class FieldDrawerDatabase + { + private static Dictionary drawersByAttributeType; + + static FieldDrawerDatabase() + { + drawersByAttributeType = new Dictionary(); + drawersByAttributeType[typeof(ShowNonSerializedFieldAttribute)] = new ShowNonSerializedFieldFieldDrawer(); + + } + + public static FieldDrawer GetDrawerForAttribute(Type attributeType) + { + FieldDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/FieldDrawerDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/FieldDrawerDatabase.cs.meta new file mode 100644 index 0000000..52c69e9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/FieldDrawerDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b2406e32d0ab1214ab4959f1cdc8a609 +timeCreated: 1508836346 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/MethodDrawerDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/MethodDrawerDatabase.cs new file mode 100644 index 0000000..832fb60 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/MethodDrawerDatabase.cs @@ -0,0 +1,33 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class MethodDrawerDatabase + { + private static Dictionary drawersByAttributeType; + + static MethodDrawerDatabase() + { + drawersByAttributeType = new Dictionary(); + drawersByAttributeType[typeof(ButtonAttribute)] = new ButtonMethodDrawer(); + + } + + public static MethodDrawer GetDrawerForAttribute(Type attributeType) + { + MethodDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/MethodDrawerDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/MethodDrawerDatabase.cs.meta new file mode 100644 index 0000000..82b0f85 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/MethodDrawerDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 40b81aa63ff76d34ea67277db99a6a25 +timeCreated: 1508592498 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/NativePropertyDrawerDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/NativePropertyDrawerDatabase.cs new file mode 100644 index 0000000..2844f95 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/NativePropertyDrawerDatabase.cs @@ -0,0 +1,33 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class NativePropertyDrawerDatabase + { + private static Dictionary drawersByAttributeType; + + static NativePropertyDrawerDatabase() + { + drawersByAttributeType = new Dictionary(); + drawersByAttributeType[typeof(ShowNativePropertyAttribute)] = new ShowNativePropertyNativePropertyDrawer(); + + } + + public static NativePropertyDrawer GetDrawerForAttribute(Type attributeType) + { + NativePropertyDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/NativePropertyDrawerDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/NativePropertyDrawerDatabase.cs.meta new file mode 100644 index 0000000..b86e8d3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/NativePropertyDrawerDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9fd2f82e21266a94ea967208610dda1e +timeCreated: 1510925645 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawConditionDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawConditionDatabase.cs new file mode 100644 index 0000000..2bf40b8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawConditionDatabase.cs @@ -0,0 +1,34 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyDrawConditionDatabase + { + private static Dictionary drawConditionsByAttributeType; + + static PropertyDrawConditionDatabase() + { + drawConditionsByAttributeType = new Dictionary(); + drawConditionsByAttributeType[typeof(HideIfAttribute)] = new HideIfPropertyDrawCondition(); +drawConditionsByAttributeType[typeof(ShowIfAttribute)] = new ShowIfPropertyDrawCondition(); + + } + + public static PropertyDrawCondition GetDrawConditionForAttribute(Type attributeType) + { + PropertyDrawCondition drawCondition; + if (drawConditionsByAttributeType.TryGetValue(attributeType, out drawCondition)) + { + return drawCondition; + } + else + { + return null; + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawConditionDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawConditionDatabase.cs.meta new file mode 100644 index 0000000..e4b5bff --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawConditionDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0b96dc9fe878bfc49865d28d601a7468 +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawerDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawerDatabase.cs new file mode 100644 index 0000000..ff6c213 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawerDatabase.cs @@ -0,0 +1,52 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyDrawerDatabase + { + private static Dictionary drawersByAttributeType; + + static PropertyDrawerDatabase() + { + drawersByAttributeType = new Dictionary(); + drawersByAttributeType[typeof(DisableIfAttribute)] = new DisableIfPropertyDrawer(); +drawersByAttributeType[typeof(DropdownAttribute)] = new DropdownPropertyDrawer(); +drawersByAttributeType[typeof(EnableIfAttribute)] = new EnableIfPropertyDrawer(); +drawersByAttributeType[typeof(LabelAttribute)] = new LabelPropertyDrawer(); +drawersByAttributeType[typeof(MinMaxSliderAttribute)] = new MinMaxSliderPropertyDrawer(); +drawersByAttributeType[typeof(ProgressBarAttribute)] = new ProgressBarPropertyDrawer(); +drawersByAttributeType[typeof(ReadOnlyAttribute)] = new ReadOnlyPropertyDrawer(); +drawersByAttributeType[typeof(ReorderableListAttribute)] = new ReorderableListPropertyDrawer(); +drawersByAttributeType[typeof(ResizableTextAreaAttribute)] = new ResizableTextAreaPropertyDrawer(); +drawersByAttributeType[typeof(ShowAssetPreviewAttribute)] = new ShowAssetPreviewPropertyDrawer(); +drawersByAttributeType[typeof(SliderAttribute)] = new SliderPropertyDrawer(); +drawersByAttributeType[typeof(TagAttribute)] = new TagPropertyDrawer(); + + } + + public static PropertyDrawer GetDrawerForAttribute(Type attributeType) + { + PropertyDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + + public static void ClearCache() + { + foreach (var kvp in drawersByAttributeType) + { + kvp.Value.ClearCache(); + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawerDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawerDatabase.cs.meta new file mode 100644 index 0000000..36c43db --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyDrawerDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 57bb89ab38f8da84db719a3fad7934d2 +timeCreated: 1508241644 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyGrouperDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyGrouperDatabase.cs new file mode 100644 index 0000000..d2d067e --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyGrouperDatabase.cs @@ -0,0 +1,33 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyGrouperDatabase + { + private static Dictionary groupersByAttributeType; + + static PropertyGrouperDatabase() + { + groupersByAttributeType = new Dictionary(); + groupersByAttributeType[typeof(BoxGroupAttribute)] = new BoxGroupPropertyGrouper(); + + } + + public static PropertyGrouper GetGrouperForAttribute(Type attributeType) + { + PropertyGrouper grouper; + if (groupersByAttributeType.TryGetValue(attributeType, out grouper)) + { + return grouper; + } + else + { + return null; + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyGrouperDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyGrouperDatabase.cs.meta new file mode 100644 index 0000000..bc0f34b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyGrouperDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0e5fed99fdc5f794291677a80073b4ba +timeCreated: 1508333008 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyMetaDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyMetaDatabase.cs new file mode 100644 index 0000000..45dfc00 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyMetaDatabase.cs @@ -0,0 +1,34 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyMetaDatabase + { + private static Dictionary metasByAttributeType; + + static PropertyMetaDatabase() + { + metasByAttributeType = new Dictionary(); + metasByAttributeType[typeof(InfoBoxAttribute)] = new InfoBoxPropertyMeta(); +metasByAttributeType[typeof(OnValueChangedAttribute)] = new OnValueChangedPropertyMeta(); + + } + + public static PropertyMeta GetMetaForAttribute(Type attributeType) + { + PropertyMeta meta; + if (metasByAttributeType.TryGetValue(attributeType, out meta)) + { + return meta; + } + else + { + return null; + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyMetaDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyMetaDatabase.cs.meta new file mode 100644 index 0000000..6a60430 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyMetaDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 57233c5ec1975024aa0723241b2f8210 +timeCreated: 1508497398 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyValidatorDatabase.cs b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyValidatorDatabase.cs new file mode 100644 index 0000000..c74ca91 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyValidatorDatabase.cs @@ -0,0 +1,36 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyValidatorDatabase + { + private static Dictionary validatorsByAttributeType; + + static PropertyValidatorDatabase() + { + validatorsByAttributeType = new Dictionary(); + validatorsByAttributeType[typeof(MaxValueAttribute)] = new MaxValuePropertyValidator(); +validatorsByAttributeType[typeof(MinValueAttribute)] = new MinValuePropertyValidator(); +validatorsByAttributeType[typeof(RequiredAttribute)] = new RequiredPropertyValidator(); +validatorsByAttributeType[typeof(ValidateInputAttribute)] = new ValidateInputPropertyValidator(); + + } + + public static PropertyValidator GetValidatorForAttribute(Type attributeType) + { + PropertyValidator validator; + if (validatorsByAttributeType.TryGetValue(attributeType, out validator)) + { + return validator; + } + else + { + return null; + } + } + } +} + diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyValidatorDatabase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyValidatorDatabase.cs.meta new file mode 100644 index 0000000..6d882da --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/PropertyValidatorDatabase.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 24e9da8a6b324374a9f655d3a867b284 +timeCreated: 1508241122 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates.meta new file mode 100644 index 0000000..5d830f1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7b15ea6695a69d74ab656006617d8d21 +folderAsset: yes +timeCreated: 1508230862 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/FieldDrawerDatabaseTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/FieldDrawerDatabaseTemplate.txt new file mode 100644 index 0000000..926a6d7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/FieldDrawerDatabaseTemplate.txt @@ -0,0 +1,31 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary drawersByAttributeType; + + static __classname__() + { + drawersByAttributeType = new Dictionary(); + __entries__ + } + + public static FieldDrawer GetDrawerForAttribute(Type attributeType) + { + FieldDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/FieldDrawerDatabaseTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/FieldDrawerDatabaseTemplate.txt.meta new file mode 100644 index 0000000..43e8f76 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/FieldDrawerDatabaseTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 943b4c41373856243996247275be2cd8 +timeCreated: 1508836344 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/MethodDrawerDatabaseTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/MethodDrawerDatabaseTemplate.txt new file mode 100644 index 0000000..d6efd8a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/MethodDrawerDatabaseTemplate.txt @@ -0,0 +1,31 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary drawersByAttributeType; + + static __classname__() + { + drawersByAttributeType = new Dictionary(); + __entries__ + } + + public static MethodDrawer GetDrawerForAttribute(Type attributeType) + { + MethodDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/MethodDrawerDatabaseTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/MethodDrawerDatabaseTemplate.txt.meta new file mode 100644 index 0000000..4531345 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/MethodDrawerDatabaseTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 52d15465eb3439f4a9b95963a21d19b7 +timeCreated: 1508592495 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/NativePropertyDrawerDbTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/NativePropertyDrawerDbTemplate.txt new file mode 100644 index 0000000..fe9cca1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/NativePropertyDrawerDbTemplate.txt @@ -0,0 +1,31 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary drawersByAttributeType; + + static __classname__() + { + drawersByAttributeType = new Dictionary(); + __entries__ + } + + public static NativePropertyDrawer GetDrawerForAttribute(Type attributeType) + { + NativePropertyDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/NativePropertyDrawerDbTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/NativePropertyDrawerDbTemplate.txt.meta new file mode 100644 index 0000000..4c16e8c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/NativePropertyDrawerDbTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b82f5f6bf1fd4314c93624a8bc8835fd +timeCreated: 1510924467 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawConditionDatabaseTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawConditionDatabaseTemplate.txt new file mode 100644 index 0000000..adc064a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawConditionDatabaseTemplate.txt @@ -0,0 +1,31 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary drawConditionsByAttributeType; + + static __classname__() + { + drawConditionsByAttributeType = new Dictionary(); + __entries__ + } + + public static PropertyDrawCondition GetDrawConditionForAttribute(Type attributeType) + { + PropertyDrawCondition drawCondition; + if (drawConditionsByAttributeType.TryGetValue(attributeType, out drawCondition)) + { + return drawCondition; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawConditionDatabaseTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawConditionDatabaseTemplate.txt.meta new file mode 100644 index 0000000..1d19d37 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawConditionDatabaseTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b36f5858330c2d140a697f19ba6cc36b +timeCreated: 1508414568 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawerDatabaseTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawerDatabaseTemplate.txt new file mode 100644 index 0000000..338dde4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawerDatabaseTemplate.txt @@ -0,0 +1,39 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary drawersByAttributeType; + + static __classname__() + { + drawersByAttributeType = new Dictionary(); + __entries__ + } + + public static PropertyDrawer GetDrawerForAttribute(Type attributeType) + { + PropertyDrawer drawer; + if (drawersByAttributeType.TryGetValue(attributeType, out drawer)) + { + return drawer; + } + else + { + return null; + } + } + + public static void ClearCache() + { + foreach (var kvp in drawersByAttributeType) + { + kvp.Value.ClearCache(); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawerDatabaseTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawerDatabaseTemplate.txt.meta new file mode 100644 index 0000000..26014c9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyDrawerDatabaseTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 136a96a904b577244b08be5d5542a77d +timeCreated: 1508241102 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyGrouperDatabaseTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyGrouperDatabaseTemplate.txt new file mode 100644 index 0000000..5065a45 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyGrouperDatabaseTemplate.txt @@ -0,0 +1,31 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary groupersByAttributeType; + + static __classname__() + { + groupersByAttributeType = new Dictionary(); + __entries__ + } + + public static PropertyGrouper GetGrouperForAttribute(Type attributeType) + { + PropertyGrouper grouper; + if (groupersByAttributeType.TryGetValue(attributeType, out grouper)) + { + return grouper; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyGrouperDatabaseTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyGrouperDatabaseTemplate.txt.meta new file mode 100644 index 0000000..1167151 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyGrouperDatabaseTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7fcc5bff99ecd4843b766f23cd585b55 +timeCreated: 1508332899 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyMetaDatabaseTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyMetaDatabaseTemplate.txt new file mode 100644 index 0000000..d88bea4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyMetaDatabaseTemplate.txt @@ -0,0 +1,31 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary metasByAttributeType; + + static __classname__() + { + metasByAttributeType = new Dictionary(); + __entries__ + } + + public static PropertyMeta GetMetaForAttribute(Type attributeType) + { + PropertyMeta meta; + if (metasByAttributeType.TryGetValue(attributeType, out meta)) + { + return meta; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyMetaDatabaseTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyMetaDatabaseTemplate.txt.meta new file mode 100644 index 0000000..849d247 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyMetaDatabaseTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fde25cf95f45b50469fcf4ee1e38993c +timeCreated: 1508497401 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyValidatorDatabaseTemplate.txt b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyValidatorDatabaseTemplate.txt new file mode 100644 index 0000000..2a63494 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyValidatorDatabaseTemplate.txt @@ -0,0 +1,31 @@ +// This class is auto generated + +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class __classname__ + { + private static Dictionary validatorsByAttributeType; + + static __classname__() + { + validatorsByAttributeType = new Dictionary(); + __entries__ + } + + public static PropertyValidator GetValidatorForAttribute(Type attributeType) + { + PropertyValidator validator; + if (validatorsByAttributeType.TryGetValue(attributeType, out validator)) + { + return validator; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyValidatorDatabaseTemplate.txt.meta b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyValidatorDatabaseTemplate.txt.meta new file mode 100644 index 0000000..c0c96d4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/CodeGeneration/Templates/PropertyValidatorDatabaseTemplate.txt.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a21c3d37c1492da4386198388150024c +timeCreated: 1508230862 +licenseType: Free +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Editors.meta b/Assets/NaughtyAttributes/Scripts/Editor/Editors.meta new file mode 100644 index 0000000..2c445db --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Editors.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4db73d2276d0e8144a206c5c2cd350de +folderAsset: yes +timeCreated: 1508055750 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Editors/InspectorEditor.cs b/Assets/NaughtyAttributes/Scripts/Editor/Editors/InspectorEditor.cs new file mode 100644 index 0000000..da91482 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Editors/InspectorEditor.cs @@ -0,0 +1,329 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(UnityEngine.Object), true)] + public class InspectorEditor : UnityEditor.Editor + { + private SerializedProperty script; + + private IEnumerable fields; + private HashSet groupedFields; + private Dictionary> groupedFieldsByGroupName; + private IEnumerable nonSerializedFields; + private IEnumerable nativeProperties; + private IEnumerable methods; + + private Dictionary serializedPropertiesByFieldName; + + private bool useDefaultInspector; + + private void OnEnable() + { + this.script = this.serializedObject.FindProperty("m_Script"); + + // Cache serialized fields + this.fields = ReflectionUtility.GetAllFields(this.target, f => this.serializedObject.FindProperty(f.Name) != null); + + // If there are no NaughtyAttributes use default inspector + if (this.fields.All(f => f.GetCustomAttributes(typeof(NaughtyAttribute), true).Length == 0)) + { + this.useDefaultInspector = true; + } + else + { + this.useDefaultInspector = false; + + // Cache grouped fields + this.groupedFields = new HashSet(this.fields.Where(f => f.GetCustomAttributes(typeof(GroupAttribute), true).Length > 0)); + + // Cache grouped fields by group name + this.groupedFieldsByGroupName = new Dictionary>(); + foreach (var groupedField in this.groupedFields) + { + string groupName = (groupedField.GetCustomAttributes(typeof(GroupAttribute), true)[0] as GroupAttribute).Name; + + if (this.groupedFieldsByGroupName.ContainsKey(groupName)) + { + this.groupedFieldsByGroupName[groupName].Add(groupedField); + } + else + { + this.groupedFieldsByGroupName[groupName] = new List() + { + groupedField + }; + } + } + + // Cache serialized properties by field name + this.serializedPropertiesByFieldName = new Dictionary(); + foreach (var field in this.fields) + { + this.serializedPropertiesByFieldName[field.Name] = this.serializedObject.FindProperty(field.Name); + } + } + + // Cache non-serialized fields + this.nonSerializedFields = ReflectionUtility.GetAllFields( + this.target, f => f.GetCustomAttributes(typeof(DrawerAttribute), true).Length > 0 && this.serializedObject.FindProperty(f.Name) == null); + + // Cache the native properties + this.nativeProperties = ReflectionUtility.GetAllProperties( + this.target, p => p.GetCustomAttributes(typeof(DrawerAttribute), true).Length > 0); + + // Cache methods with DrawerAttribute + this.methods = ReflectionUtility.GetAllMethods( + this.target, m => m.GetCustomAttributes(typeof(DrawerAttribute), true).Length > 0); + } + + private void OnDisable() + { + PropertyDrawerDatabase.ClearCache(); + } + + public override void OnInspectorGUI() + { + if (this.useDefaultInspector) + { + this.DrawDefaultInspector(); + } + else + { + this.serializedObject.Update(); + + if (this.script != null) + { + GUI.enabled = false; + EditorGUILayout.PropertyField(this.script); + GUI.enabled = true; + } + + // Draw fields + HashSet drawnGroups = new HashSet(); + foreach (var field in this.fields) + { + if (this.groupedFields.Contains(field)) + { + // Draw grouped fields + string groupName = (field.GetCustomAttributes(typeof(GroupAttribute), true)[0] as GroupAttribute).Name; + if (!drawnGroups.Contains(groupName)) + { + drawnGroups.Add(groupName); + + PropertyGrouper grouper = this.GetPropertyGrouperForField(field); + if (grouper != null) + { + grouper.BeginGroup(groupName); + + this.ValidateAndDrawFields(this.groupedFieldsByGroupName[groupName]); + + grouper.EndGroup(); + } + else + { + this.ValidateAndDrawFields(this.groupedFieldsByGroupName[groupName]); + } + } + } + else + { + // Draw non-grouped field + this.ValidateAndDrawField(field); + } + } + + this.serializedObject.ApplyModifiedProperties(); + } + + // Draw non-serialized fields + foreach (var field in this.nonSerializedFields) + { + DrawerAttribute drawerAttribute = (DrawerAttribute)field.GetCustomAttributes(typeof(DrawerAttribute), true)[0]; + FieldDrawer drawer = FieldDrawerDatabase.GetDrawerForAttribute(drawerAttribute.GetType()); + if (drawer != null) + { + drawer.DrawField(this.target, field); + } + } + + // Draw native properties + foreach (var property in this.nativeProperties) + { + DrawerAttribute drawerAttribute = (DrawerAttribute)property.GetCustomAttributes(typeof(DrawerAttribute), true)[0]; + NativePropertyDrawer drawer = NativePropertyDrawerDatabase.GetDrawerForAttribute(drawerAttribute.GetType()); + if (drawer != null) + { + drawer.DrawNativeProperty(this.target, property); + } + } + + // Draw methods + foreach (var method in this.methods) + { + DrawerAttribute drawerAttribute = (DrawerAttribute)method.GetCustomAttributes(typeof(DrawerAttribute), true)[0]; + MethodDrawer methodDrawer = MethodDrawerDatabase.GetDrawerForAttribute(drawerAttribute.GetType()); + if (methodDrawer != null) + { + methodDrawer.DrawMethod(this.target, method); + } + } + } + + private void ValidateAndDrawFields(IEnumerable fields) + { + foreach (var field in fields) + { + this.ValidateAndDrawField(field); + } + } + + private void ValidateAndDrawField(FieldInfo field) + { + if (!ShouldDrawField(field)) + { + return; + } + + this.ValidateField(field); + this.ApplyFieldMeta(field); + this.DrawField(field); + } + + private void ValidateField(FieldInfo field) + { + ValidatorAttribute[] validatorAttributes = (ValidatorAttribute[])field.GetCustomAttributes(typeof(ValidatorAttribute), true); + + foreach (var attribute in validatorAttributes) + { + PropertyValidator validator = PropertyValidatorDatabase.GetValidatorForAttribute(attribute.GetType()); + if (validator != null) + { + validator.ValidateProperty(this.serializedPropertiesByFieldName[field.Name]); + } + } + } + + private bool ShouldDrawField(FieldInfo field) + { + // Check if the field has draw conditions + PropertyDrawCondition drawCondition = this.GetPropertyDrawConditionForField(field); + if (drawCondition != null) + { + bool canDrawProperty = drawCondition.CanDrawProperty(this.serializedPropertiesByFieldName[field.Name]); + if (!canDrawProperty) + { + return false; + } + } + + // Check if the field has HideInInspectorAttribute + HideInInspector[] hideInInspectorAttributes = (HideInInspector[])field.GetCustomAttributes(typeof(HideInInspector), true); + if (hideInInspectorAttributes.Length > 0) + { + return false; + } + + return true; + } + + private void DrawField(FieldInfo field) + { + EditorGUI.BeginChangeCheck(); + PropertyDrawer drawer = this.GetPropertyDrawerForField(field); + if (drawer != null) + { + drawer.DrawProperty(this.serializedPropertiesByFieldName[field.Name]); + } + else + { + EditorDrawUtility.DrawPropertyField(this.serializedPropertiesByFieldName[field.Name]); + } + + if (EditorGUI.EndChangeCheck()) + { + OnValueChangedAttribute[] onValueChangedAttributes = (OnValueChangedAttribute[])field.GetCustomAttributes(typeof(OnValueChangedAttribute), true); + foreach (var onValueChangedAttribute in onValueChangedAttributes) + { + PropertyMeta meta = PropertyMetaDatabase.GetMetaForAttribute(onValueChangedAttribute.GetType()); + if (meta != null) + { + meta.ApplyPropertyMeta(this.serializedPropertiesByFieldName[field.Name], onValueChangedAttribute); + } + } + } + } + + private void ApplyFieldMeta(FieldInfo field) + { + // Apply custom meta attributes + MetaAttribute[] metaAttributes = field + .GetCustomAttributes(typeof(MetaAttribute), true) + .Where(attr => attr.GetType() != typeof(OnValueChangedAttribute)) + .Select(obj => obj as MetaAttribute) + .ToArray(); + + Array.Sort(metaAttributes, (x, y) => + { + return x.Order - y.Order; + }); + + foreach (var metaAttribute in metaAttributes) + { + PropertyMeta meta = PropertyMetaDatabase.GetMetaForAttribute(metaAttribute.GetType()); + if (meta != null) + { + meta.ApplyPropertyMeta(this.serializedPropertiesByFieldName[field.Name], metaAttribute); + } + } + } + + private PropertyDrawer GetPropertyDrawerForField(FieldInfo field) + { + DrawerAttribute[] drawerAttributes = (DrawerAttribute[])field.GetCustomAttributes(typeof(DrawerAttribute), true); + if (drawerAttributes.Length > 0) + { + PropertyDrawer drawer = PropertyDrawerDatabase.GetDrawerForAttribute(drawerAttributes[0].GetType()); + return drawer; + } + else + { + return null; + } + } + + private PropertyGrouper GetPropertyGrouperForField(FieldInfo field) + { + GroupAttribute[] groupAttributes = (GroupAttribute[])field.GetCustomAttributes(typeof(GroupAttribute), true); + if (groupAttributes.Length > 0) + { + PropertyGrouper grouper = PropertyGrouperDatabase.GetGrouperForAttribute(groupAttributes[0].GetType()); + return grouper; + } + else + { + return null; + } + } + + private PropertyDrawCondition GetPropertyDrawConditionForField(FieldInfo field) + { + DrawConditionAttribute[] drawConditionAttributes = (DrawConditionAttribute[])field.GetCustomAttributes(typeof(DrawConditionAttribute), true); + if (drawConditionAttributes.Length > 0) + { + PropertyDrawCondition drawCondition = PropertyDrawConditionDatabase.GetDrawConditionForAttribute(drawConditionAttributes[0].GetType()); + return drawCondition; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Editors/InspectorEditor.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Editors/InspectorEditor.cs.meta new file mode 100644 index 0000000..b623552 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Editors/InspectorEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9e82d6d6926a6c74688e2787b37630d1 +timeCreated: 1508055750 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers.meta b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers.meta new file mode 100644 index 0000000..ed81436 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 79b05858e72c1b0498eca7954843c802 +folderAsset: yes +timeCreated: 1508835721 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/FieldDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/FieldDrawer.cs new file mode 100644 index 0000000..805a064 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/FieldDrawer.cs @@ -0,0 +1,9 @@ +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + public abstract class FieldDrawer + { + public abstract void DrawField(UnityEngine.Object target, FieldInfo field); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/FieldDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/FieldDrawer.cs.meta new file mode 100644 index 0000000..789d479 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/FieldDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8949267118f232a4fbebd777de8ed6fe +timeCreated: 1508835721 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/ShowNonSerializedFieldFieldDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/ShowNonSerializedFieldFieldDrawer.cs new file mode 100644 index 0000000..efc3a39 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/ShowNonSerializedFieldFieldDrawer.cs @@ -0,0 +1,25 @@ +using System.Reflection; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [FieldDrawer(typeof(ShowNonSerializedFieldAttribute))] + public class ShowNonSerializedFieldFieldDrawer : FieldDrawer + { + public override void DrawField(UnityEngine.Object target, FieldInfo field) + { + object value = field.GetValue(target); + + if (value == null) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNonSerializedFieldFieldDrawer).Name, "Reference"); + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + else if (!EditorDrawUtility.DrawLayoutField(value, field.Name)) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNonSerializedFieldFieldDrawer).Name, field.FieldType.Name); + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/ShowNonSerializedFieldFieldDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/ShowNonSerializedFieldFieldDrawer.cs.meta new file mode 100644 index 0000000..fa3410c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/FieldDrawers/ShowNonSerializedFieldFieldDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8449d5c2158e97d479caaec24c61baec +timeCreated: 1508835721 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers.meta b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers.meta new file mode 100644 index 0000000..7e351e2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f95312994b1f8c746a402669cb1655eb +folderAsset: yes +timeCreated: 1508592494 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/ButtonMethodDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/ButtonMethodDrawer.cs new file mode 100644 index 0000000..a6e1f7b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/ButtonMethodDrawer.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [MethodDrawer(typeof(ButtonAttribute))] + public class ButtonMethodDrawer : MethodDrawer + { + public override void DrawMethod(UnityEngine.Object target, MethodInfo methodInfo) + { + if (methodInfo.GetParameters().Length == 0) + { + ButtonAttribute buttonAttribute = (ButtonAttribute)methodInfo.GetCustomAttributes(typeof(ButtonAttribute), true)[0]; + string buttonText = string.IsNullOrEmpty(buttonAttribute.Text) ? methodInfo.Name : buttonAttribute.Text; + + if (GUILayout.Button(buttonText)) + { + methodInfo.Invoke(target, null); + } + } + else + { + string warning = typeof(ButtonAttribute).Name + " works only on methods with no parameters"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/ButtonMethodDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/ButtonMethodDrawer.cs.meta new file mode 100644 index 0000000..cff17a7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/ButtonMethodDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ad01ec1a22422c6409f913d60ce39d61 +timeCreated: 1508592494 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/MethodDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/MethodDrawer.cs new file mode 100644 index 0000000..687688d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/MethodDrawer.cs @@ -0,0 +1,9 @@ +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + public abstract class MethodDrawer + { + public abstract void DrawMethod(UnityEngine.Object target, MethodInfo methodInfo); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/MethodDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/MethodDrawer.cs.meta new file mode 100644 index 0000000..22137e5 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/MethodDrawers/MethodDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a65a1addcdd323249b590f7a06110869 +timeCreated: 1508592494 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers.meta b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers.meta new file mode 100644 index 0000000..665bbfc --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ae67cc6bfa799f147968e9b0371a21fc +folderAsset: yes +timeCreated: 1510924467 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/NativePropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/NativePropertyDrawer.cs new file mode 100644 index 0000000..0fb0e6b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/NativePropertyDrawer.cs @@ -0,0 +1,9 @@ +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + public abstract class NativePropertyDrawer + { + public abstract void DrawNativeProperty(UnityEngine.Object target, PropertyInfo property); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/NativePropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/NativePropertyDrawer.cs.meta new file mode 100644 index 0000000..897323c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/NativePropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 715c5ada29663a245b0b35937c892377 +timeCreated: 1510924467 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/ShowNativePropertyNativePropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/ShowNativePropertyNativePropertyDrawer.cs new file mode 100644 index 0000000..326247e --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/ShowNativePropertyNativePropertyDrawer.cs @@ -0,0 +1,25 @@ +using System.Reflection; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [NativePropertyDrawer(typeof(ShowNativePropertyAttribute))] + public class ShowNativePropertyNativePropertyDrawer : NativePropertyDrawer + { + public override void DrawNativeProperty(UnityEngine.Object target, PropertyInfo property) + { + object value = property.GetValue(target, null); + + if (value == null) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNativePropertyNativePropertyDrawer).Name, "Reference"); + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + else if (!EditorDrawUtility.DrawLayoutField(value, property.Name)) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNativePropertyNativePropertyDrawer).Name, property.PropertyType.Name); + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/ShowNativePropertyNativePropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/ShowNativePropertyNativePropertyDrawer.cs.meta new file mode 100644 index 0000000..9b1f424 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NativePropertyDrawers/ShowNativePropertyNativePropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 518b0fde2a9d15d498bc17fd1d7062c7 +timeCreated: 1510926376 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef new file mode 100644 index 0000000..e1aafc2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "NaughtyAttributes.Editor", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta new file mode 100644 index 0000000..70dc9f2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f88fb04354076c646a4107a491394033 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions.meta new file mode 100644 index 0000000..6742dcd --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0ed2b7d432f0ad644b1f0752cf65aa9c +folderAsset: yes +timeCreated: 1508414568 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/HideIfPropertyDrawCondition.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/HideIfPropertyDrawCondition.cs new file mode 100644 index 0000000..84276db --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/HideIfPropertyDrawCondition.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawCondition(typeof(HideIfAttribute))] + public class HideIfPropertyDrawCondition : ShowIfPropertyDrawCondition + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/HideIfPropertyDrawCondition.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/HideIfPropertyDrawCondition.cs.meta new file mode 100644 index 0000000..2b7cd1d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/HideIfPropertyDrawCondition.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f7e60d80f0231654ab13cfb1178e6eb8 +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/PropertyDrawCondition.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/PropertyDrawCondition.cs new file mode 100644 index 0000000..2ea9f7a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/PropertyDrawCondition.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyDrawCondition + { + public abstract bool CanDrawProperty(SerializedProperty property); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/PropertyDrawCondition.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/PropertyDrawCondition.cs.meta new file mode 100644 index 0000000..f326b5d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/PropertyDrawCondition.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ce2d1d9afa04cae43a18bd01ec9447eb +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/ShowIfPropertyDrawCondition.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/ShowIfPropertyDrawCondition.cs new file mode 100644 index 0000000..3cd1a97 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/ShowIfPropertyDrawCondition.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawCondition(typeof(ShowIfAttribute))] + public class ShowIfPropertyDrawCondition : PropertyDrawCondition + { + public override bool CanDrawProperty(SerializedProperty property) + { + ShowIfAttribute showIfAttribute = PropertyUtility.GetAttribute(property); + UnityEngine.Object target = PropertyUtility.GetTargetObject(property); + + List conditionValues = new List(); + foreach (var condition in showIfAttribute.Conditions) + { + FieldInfo conditionField = ReflectionUtility.GetField(target, condition); + if (conditionField != null && + conditionField.FieldType == typeof(bool)) + { + conditionValues.Add((bool)conditionField.GetValue(target)); + } + + MethodInfo conditionMethod = ReflectionUtility.GetMethod(target, condition); + if (conditionMethod != null && + conditionMethod.ReturnType == typeof(bool) && + conditionMethod.GetParameters().Length == 0) + { + conditionValues.Add((bool)conditionMethod.Invoke(target, null)); + } + } + + if (conditionValues.Count > 0) + { + bool draw; + if (showIfAttribute.ConditionOperator == ConditionOperator.And) + { + draw = true; + foreach (var value in conditionValues) + { + draw = draw && value; + } + } + else + { + draw = false; + foreach (var value in conditionValues) + { + draw = draw || value; + } + } + + if (showIfAttribute.Reversed) + { + draw = !draw; + } + + return draw; + } + else + { + string warning = showIfAttribute.GetType().Name + " needs a valid boolean condition field or method name to work"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + + return true; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/ShowIfPropertyDrawCondition.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/ShowIfPropertyDrawCondition.cs.meta new file mode 100644 index 0000000..2e7a555 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawConditions/ShowIfPropertyDrawCondition.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: fce0c8241476ad94cbbcdd6faae90700 +timeCreated: 1508414568 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta new file mode 100644 index 0000000..7f3a245 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4327d74fca5deaa4c83c483fe468d274 +folderAsset: yes +timeCreated: 1508051576 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DisableIfPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DisableIfPropertyDrawer.cs new file mode 100644 index 0000000..ed27b41 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DisableIfPropertyDrawer.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(DisableIfAttribute))] + public class DisableIfPropertyDrawer : EnableIfPropertyDrawer + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DisableIfPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DisableIfPropertyDrawer.cs.meta new file mode 100644 index 0000000..579b0a4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DisableIfPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6093965e939dcd24687aed40741be04b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs new file mode 100644 index 0000000..f7ac834 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs @@ -0,0 +1,130 @@ +using UnityEngine; +using UnityEditor; +using System.Reflection; +using System.Collections; +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(DropdownAttribute))] + public class DropdownPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + EditorDrawUtility.DrawHeader(property); + + DropdownAttribute dropdownAttribute = PropertyUtility.GetAttribute(property); + UnityEngine.Object target = PropertyUtility.GetTargetObject(property); + + FieldInfo fieldInfo = ReflectionUtility.GetField(target, property.name); + FieldInfo valuesFieldInfo = ReflectionUtility.GetField(target, dropdownAttribute.ValuesFieldName); + + if (valuesFieldInfo == null) + { + this.DrawWarningBox(string.Format("{0} cannot find a values field with name \"{1}\"", dropdownAttribute.GetType().Name, dropdownAttribute.ValuesFieldName)); + EditorGUILayout.PropertyField(property, true); + } + else if (valuesFieldInfo.GetValue(target) is IList && + fieldInfo.FieldType == this.GetElementType(valuesFieldInfo)) + { + // Selected value + object selectedValue = fieldInfo.GetValue(target); + + // Values and display options + IList valuesList = (IList)valuesFieldInfo.GetValue(target); + object[] values = new object[valuesList.Count]; + string[] displayOptions = new string[valuesList.Count]; + + for (int i = 0; i < values.Length; i++) + { + object value = valuesList[i]; + values[i] = value; + displayOptions[i] = value.ToString(); + } + + // Selected value index + int selectedValueIndex = Array.IndexOf(values, selectedValue); + if (selectedValueIndex < 0) + { + selectedValueIndex = 0; + } + + // Draw the dropdown + this.DrawDropdown(target, fieldInfo, property.displayName, selectedValueIndex, values, displayOptions); + } + else if (valuesFieldInfo.GetValue(target) is IDropdownList) + { + // Current value + object selectedValue = fieldInfo.GetValue(target); + + // Current value index, values and display options + IDropdownList dropdown = (IDropdownList)valuesFieldInfo.GetValue(target); + IEnumerator> dropdownEnumerator = dropdown.GetEnumerator(); + + int index = -1; + int selectedValueIndex = -1; + List values = new List(); + List displayOptions = new List(); + + while (dropdownEnumerator.MoveNext()) + { + index++; + + KeyValuePair current = dropdownEnumerator.Current; + if (current.Value.Equals(selectedValue)) + { + selectedValueIndex = index; + } + + values.Add(current.Value); + displayOptions.Add(current.Key); + } + + if (selectedValueIndex < 0) + { + selectedValueIndex = 0; + } + + // Draw the dropdown + this.DrawDropdown(target, fieldInfo, property.displayName, selectedValueIndex, values.ToArray(), displayOptions.ToArray()); + } + else + { + this.DrawWarningBox(typeof(DropdownAttribute).Name + " works only when the type of the field is equal to the element type of the array"); + EditorGUILayout.PropertyField(property, true); + } + } + + private Type GetElementType(FieldInfo listFieldInfo) + { + if (listFieldInfo.FieldType.IsGenericType) + { + return listFieldInfo.FieldType.GetGenericArguments()[0]; + } + else + { + return listFieldInfo.FieldType.GetElementType(); + } + } + + private void DrawDropdown(UnityEngine.Object target, FieldInfo fieldInfo, string label, int selectedValueIndex, object[] values, string[] displayOptions) + { + EditorGUI.BeginChangeCheck(); + + int newIndex = EditorGUILayout.Popup(label, selectedValueIndex, displayOptions); + + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Dropdown"); + fieldInfo.SetValue(target, values[newIndex]); + } + } + + private void DrawWarningBox(string message) + { + EditorGUILayout.HelpBox(message, MessageType.Warning); + Debug.LogWarning(message); + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta new file mode 100644 index 0000000..eb68163 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 19d935f1205a5804c80c51c3ad95a271 +timeCreated: 1508753698 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnableIfPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnableIfPropertyDrawer.cs new file mode 100644 index 0000000..dfb8060 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnableIfPropertyDrawer.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(EnableIfAttribute))] + public class EnableIfPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + EnableIfAttribute enableIfAttribute = PropertyUtility.GetAttribute(property); + UnityEngine.Object target = PropertyUtility.GetTargetObject(property); + + List conditionValues = new List(); + foreach (var condition in enableIfAttribute.Conditions) + { + FieldInfo conditionField = ReflectionUtility.GetField(target, condition); + if (conditionField != null && + conditionField.FieldType == typeof(bool)) + { + conditionValues.Add((bool)conditionField.GetValue(target)); + } + + MethodInfo conditionMethod = ReflectionUtility.GetMethod(target, condition); + if (conditionMethod != null && + conditionMethod.ReturnType == typeof(bool) && + conditionMethod.GetParameters().Length == 0) + { + conditionValues.Add((bool)conditionMethod.Invoke(target, null)); + } + } + + if (conditionValues.Count > 0) + { + bool enabled; + if (enableIfAttribute.ConditionOperator == ConditionOperator.And) + { + enabled = true; + foreach (var value in conditionValues) + { + enabled = enabled && value; + } + } + else + { + enabled = false; + foreach (var value in conditionValues) + { + enabled = enabled || value; + } + } + + if (enableIfAttribute.Reversed) + { + enabled = !enabled; + } + + GUI.enabled = enabled; + EditorDrawUtility.DrawPropertyField(property); + GUI.enabled = true; + } + else + { + string warning = enableIfAttribute.GetType().Name + " needs a valid boolean condition field or method name to work"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnableIfPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnableIfPropertyDrawer.cs.meta new file mode 100644 index 0000000..9b1abe6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnableIfPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36d4c9f730abf4945814f7e205003836 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LabelPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LabelPropertyDrawer.cs new file mode 100644 index 0000000..301b48f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LabelPropertyDrawer.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(LabelAttribute))] + public class LabelPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + var labelAttribute = PropertyUtility.GetAttribute(property); + var guiContent = new GUIContent(labelAttribute.Label); + EditorGUILayout.PropertyField(property, guiContent, true); + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LabelPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LabelPropertyDrawer.cs.meta new file mode 100644 index 0000000..bfd5f26 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LabelPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efcf74639df2db34c8302355c0d29454 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs new file mode 100644 index 0000000..f902046 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs @@ -0,0 +1,76 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(MinMaxSliderAttribute))] + public class MinMaxSliderPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + EditorDrawUtility.DrawHeader(property); + + MinMaxSliderAttribute minMaxSliderAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Vector2) + { + Rect controlRect = EditorGUILayout.GetControlRect(); + float labelWidth = EditorGUIUtility.labelWidth; + float floatFieldWidth = EditorGUIUtility.fieldWidth; + float sliderWidth = controlRect.width - labelWidth - 2f * floatFieldWidth; + float sliderPadding = 5f; + + Rect labelRect = new Rect( + controlRect.x, + controlRect.y, + labelWidth, + controlRect.height); + + Rect sliderRect = new Rect( + controlRect.x + labelWidth + floatFieldWidth + sliderPadding, + controlRect.y, + sliderWidth - 2f * sliderPadding, + controlRect.height); + + Rect minFloatFieldRect = new Rect( + controlRect.x + labelWidth, + controlRect.y, + floatFieldWidth, + controlRect.height); + + Rect maxFloatFieldRect = new Rect( + controlRect.x + labelWidth + floatFieldWidth + sliderWidth, + controlRect.y, + floatFieldWidth, + controlRect.height); + + // Draw the label + EditorGUI.LabelField(labelRect, property.displayName); + + // Draw the slider + EditorGUI.BeginChangeCheck(); + + Vector2 sliderValue = property.vector2Value; + EditorGUI.MinMaxSlider(sliderRect, ref sliderValue.x, ref sliderValue.y, minMaxSliderAttribute.MinValue, minMaxSliderAttribute.MaxValue); + + sliderValue.x = EditorGUI.FloatField(minFloatFieldRect, sliderValue.x); + sliderValue.x = Mathf.Clamp(sliderValue.x, minMaxSliderAttribute.MinValue, Mathf.Min(minMaxSliderAttribute.MaxValue, sliderValue.y)); + + sliderValue.y = EditorGUI.FloatField(maxFloatFieldRect, sliderValue.y); + sliderValue.y = Mathf.Clamp(sliderValue.y, Mathf.Max(minMaxSliderAttribute.MinValue, sliderValue.x), minMaxSliderAttribute.MaxValue); + + if (EditorGUI.EndChangeCheck()) + { + property.vector2Value = sliderValue; + } + } + else + { + string warning = minMaxSliderAttribute.GetType().Name + " can be used only on Vector2 fields"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + + EditorDrawUtility.DrawPropertyField(property); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta new file mode 100644 index 0000000..ca0af07 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 27011af81554b5b4489b155f09275475 +timeCreated: 1508427131 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs new file mode 100644 index 0000000..582f2b1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs @@ -0,0 +1,96 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(ProgressBarAttribute))] + public class ProgressBarPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + EditorDrawUtility.DrawHeader(property); + + if (property.propertyType != SerializedPropertyType.Float && property.propertyType != SerializedPropertyType.Integer) + { + EditorGUILayout.HelpBox("Field " + property.name + " is not a number", MessageType.Warning); + return; + } + + var value = property.propertyType == SerializedPropertyType.Integer ? property.intValue : property.floatValue; + var valueFormatted = property.propertyType == SerializedPropertyType.Integer ? value.ToString() : String.Format("{0:0.00}", value); + + ProgressBarAttribute progressBarAttribute = PropertyUtility.GetAttribute(property); + var position = EditorGUILayout.GetControlRect(); + var maxValue = progressBarAttribute.MaxValue; + float lineHight = EditorGUIUtility.singleLineHeight; + float padding = EditorGUIUtility.standardVerticalSpacing; + var barPosition = new Rect(position.position.x, position.position.y, position.size.x, lineHight); + + var fillPercentage = value / maxValue; + var barLabel = (!string.IsNullOrEmpty(progressBarAttribute.Name) ? "[" + progressBarAttribute.Name + "] " : "") + valueFormatted + "/" + maxValue; + + var color = GetColor(progressBarAttribute.Color); + var color2 = Color.white; + DrawBar(barPosition, Mathf.Clamp01(fillPercentage), barLabel, color, color2); + } + + private void DrawBar(Rect position, float fillPercent, string label, Color barColor, Color labelColor) + { + if (Event.current.type != EventType.Repaint) + { + return; + } + + Color savedColor = GUI.color; + + var fillRect = new Rect(position.x, position.y, position.width * fillPercent, position.height); + + EditorGUI.DrawRect(position, new Color(0.13f, 0.13f, 0.13f)); + EditorGUI.DrawRect(fillRect, barColor); + + // set alignment and cache the default + var align = GUI.skin.label.alignment; + GUI.skin.label.alignment = TextAnchor.UpperCenter; + + // set the color and cache the default + var c = GUI.contentColor; + GUI.contentColor = labelColor; + + // calculate the position + var labelRect = new Rect(position.x, position.y - 2, position.width, position.height); + + // draw~ + EditorGUI.DropShadowLabel(labelRect, label); + + // reset color and alignment + GUI.contentColor = c; + GUI.skin.label.alignment = align; + } + + private Color GetColor(ProgressBarColor color) + { + switch (color) + { + case ProgressBarColor.Red: + return new Color32(255, 0, 63, 255); + case ProgressBarColor.Pink: + return new Color32(255, 152, 203, 255); + case ProgressBarColor.Orange: + return new Color32(255, 128, 0, 255); + case ProgressBarColor.Yellow: + return new Color32(255, 211, 0, 255); + case ProgressBarColor.Green: + return new Color32(102, 255, 0, 255); + case ProgressBarColor.Blue: + return new Color32(0, 135, 189, 255); + case ProgressBarColor.Indigo: + return new Color32(75, 0, 130, 255); + case ProgressBarColor.Violet: + return new Color32(127, 0, 255, 255); + default: + return Color.white; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta new file mode 100644 index 0000000..c7403f8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 47ba764aac86a4d488c8acd0af8f0d23 +timeCreated: 1518435237 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawer.cs new file mode 100644 index 0000000..762c30e --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawer.cs @@ -0,0 +1,14 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyDrawer + { + public abstract void DrawProperty(SerializedProperty property); + + public virtual void ClearCache() + { + + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawer.cs.meta new file mode 100644 index 0000000..276a963 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: fd2df67a49fb7bd4d8e3914c5a2cf4a8 +timeCreated: 1508051576 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs new file mode 100644 index 0000000..a255642 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs @@ -0,0 +1,16 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(ReadOnlyAttribute))] + public class ReadOnlyPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + GUI.enabled = false; + EditorDrawUtility.DrawPropertyField(property); + GUI.enabled = true; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs.meta new file mode 100644 index 0000000..aa80c05 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReadOnlyPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a392efb1d44b30744bb7bf76e479cfab +timeCreated: 1508862451 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReorderableListPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReorderableListPropertyDrawer.cs new file mode 100644 index 0000000..ae2d212 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReorderableListPropertyDrawer.cs @@ -0,0 +1,70 @@ +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(ReorderableListAttribute))] + public class ReorderableListPropertyDrawer : PropertyDrawer + { + private Dictionary reorderableListsByPropertyName = new Dictionary(); + + string GetPropertyKeyName(SerializedProperty property) + { + return property.serializedObject.targetObject.GetInstanceID() + "/" + property.name; + } + + public override void DrawProperty(SerializedProperty property) + { + EditorDrawUtility.DrawHeader(property); + + if (property.isArray) + { + var key = GetPropertyKeyName(property); + + if (!this.reorderableListsByPropertyName.ContainsKey(key)) + { + ReorderableList reorderableList = new ReorderableList(property.serializedObject, property, true, true, true, true) + { + drawHeaderCallback = (Rect rect) => + { + EditorGUI.LabelField(rect, string.Format("{0}: {1}", property.displayName, property.arraySize), EditorStyles.label); + }, + + drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => + { + var element = property.GetArrayElementAtIndex(index); + rect.y += 1.0f; + rect.x += 10.0f; + rect.width -= 10.0f; + + EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, 0.0f), element, true); + }, + + elementHeightCallback = (int index) => + { + return EditorGUI.GetPropertyHeight(property.GetArrayElementAtIndex(index)) + 4.0f; + } + }; + + this.reorderableListsByPropertyName[key] = reorderableList; + } + + this.reorderableListsByPropertyName[key].DoLayoutList(); + } + else + { + string warning = typeof(ReorderableListAttribute).Name + " can be used only on arrays or lists"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + + EditorDrawUtility.DrawPropertyField(property); + } + } + + public override void ClearCache() + { + this.reorderableListsByPropertyName.Clear(); + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReorderableListPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReorderableListPropertyDrawer.cs.meta new file mode 100644 index 0000000..c06f619 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ReorderableListPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6d5a6c66de03d1d4882f0c83b0e5f8f2 +timeCreated: 1508402303 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs new file mode 100644 index 0000000..e2fd1d8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs @@ -0,0 +1,35 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(ResizableTextAreaAttribute))] + public class ResizableTextAreaPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + EditorDrawUtility.DrawHeader(property); + + if (property.propertyType == SerializedPropertyType.String) + { + EditorGUILayout.LabelField(property.displayName); + + EditorGUI.BeginChangeCheck(); + + string textAreaValue = EditorGUILayout.TextArea(property.stringValue, GUILayout.MinHeight(EditorGUIUtility.singleLineHeight * 3f)); + + if (EditorGUI.EndChangeCheck()) + { + property.stringValue = textAreaValue; + } + } + else + { + string warning = PropertyUtility.GetAttribute(property).GetType().Name + " can only be used on string fields"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + + EditorDrawUtility.DrawPropertyField(property); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta new file mode 100644 index 0000000..898f9d2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 57848d4e847a8d445a53095abdbbb274 +timeCreated: 1508583167 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs new file mode 100644 index 0000000..f2e42b7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(ShowAssetPreviewAttribute))] + public class ShowAssetPreviewPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + EditorDrawUtility.DrawPropertyField(property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + if (property.objectReferenceValue != null) + { + Texture2D previewTexture = AssetPreview.GetAssetPreview(property.objectReferenceValue); + if (previewTexture != null) + { + ShowAssetPreviewAttribute showAssetPreviewAttribute = PropertyUtility.GetAttribute(property); + int width = Mathf.Clamp(showAssetPreviewAttribute.Width, 0, previewTexture.width); + int height = Mathf.Clamp(showAssetPreviewAttribute.Height, 0, previewTexture.height); + + GUILayout.Label(previewTexture, GUILayout.MaxWidth(width), GUILayout.MaxHeight(height)); + } + else + { + string warning = property.name + " doesn't have an asset preview"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + } + } + } + else + { + string warning = property.name + " doesn't have an asset preview"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta new file mode 100644 index 0000000..4c4b7c0 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6c461f4d7edd955419e5e6ce2c874599 +timeCreated: 1509089502 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SliderPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SliderPropertyDrawer.cs new file mode 100644 index 0000000..49280f0 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SliderPropertyDrawer.cs @@ -0,0 +1,31 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyDrawer(typeof(SliderAttribute))] + public class SliderPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + EditorDrawUtility.DrawHeader(property); + + SliderAttribute sliderAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Integer) + { + EditorGUILayout.IntSlider(property, (int)sliderAttribute.MinValue, (int)sliderAttribute.MaxValue); + } + else if (property.propertyType == SerializedPropertyType.Float) + { + EditorGUILayout.Slider(property, sliderAttribute.MinValue, sliderAttribute.MaxValue); + } + else + { + string warning = sliderAttribute.GetType().Name + " can be used only on int or float fields"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + + EditorDrawUtility.DrawPropertyField(property); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SliderPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SliderPropertyDrawer.cs.meta new file mode 100644 index 0000000..5aae3b0 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SliderPropertyDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ae129a284d179ae41b8ab20f506e5d99 +timeCreated: 1508422518 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs new file mode 100644 index 0000000..462a1f1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs @@ -0,0 +1,56 @@ +using UnityEditor; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + // Original by Dylan Engelman + // http://jupiterlighthousestudio.com/custom-inspectors-unity/ + // Altered by Brecht Lecluyse http://www.brechtos.com + // and Sichen Liu https://sichenn.github.io + [PropertyDrawer(typeof(TagAttribute))] + public class TagPropertyDrawer : PropertyDrawer + { + public override void DrawProperty(SerializedProperty property) + { + if (property.propertyType == SerializedPropertyType.String) + { + // generate the taglist + custom tags + List tagList = new List(); + tagList.Add("(None)"); + tagList.Add("Untagged"); + tagList.AddRange(UnityEditorInternal.InternalEditorUtility.tags); + + string propertyString = property.stringValue; + int index = 0; + // check if there is an entry that matches the entry and get the index + // we skip index 0 as that is a special custom case + for (int i = 1; i < tagList.Count; i++) + { + if (tagList[i] == propertyString) + { + index = i; + break; + } + } + + // Draw the popup box with the current selected index + index = EditorGUILayout.Popup(property.displayName, index, tagList.ToArray()); + + // Adjust the actual string value of the property based on the selection + if (index > 0) + { + property.stringValue = tagList[index]; + } + else + { + property.stringValue = string.Empty; + } + } + else + { + EditorGUILayout.HelpBox(property.type + " is not supported by TagAttribute\n" + + "Use string instead", MessageType.Warning); + } + } + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta new file mode 100644 index 0000000..7a841a8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f915ac324502a0e48990bfe775312665 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers.meta new file mode 100644 index 0000000..d850feb --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 35fed6de66b90ad418e2ca247a303b9b +folderAsset: yes +timeCreated: 1508331735 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/BoxGroupPropertyGrouper.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/BoxGroupPropertyGrouper.cs new file mode 100644 index 0000000..e84eaf3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/BoxGroupPropertyGrouper.cs @@ -0,0 +1,24 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [PropertyGrouper(typeof(BoxGroupAttribute))] + public class BoxGroupPropertyGrouper : PropertyGrouper + { + public override void BeginGroup(string label) + { + EditorGUILayout.BeginVertical(GUI.skin.box); + + if (!string.IsNullOrEmpty(label)) + { + EditorGUILayout.LabelField(label, EditorStyles.boldLabel); + } + } + + public override void EndGroup() + { + EditorGUILayout.EndVertical(); + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/BoxGroupPropertyGrouper.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/BoxGroupPropertyGrouper.cs.meta new file mode 100644 index 0000000..b11e43f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/BoxGroupPropertyGrouper.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 657c1fb836d709c4b964d04f07ddd047 +timeCreated: 1508332897 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/PropertyGrouper.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/PropertyGrouper.cs new file mode 100644 index 0000000..2e4492a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/PropertyGrouper.cs @@ -0,0 +1,11 @@ +using System; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyGrouper + { + public abstract void BeginGroup(string label); + + public abstract void EndGroup(); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/PropertyGrouper.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/PropertyGrouper.cs.meta new file mode 100644 index 0000000..1e2a88a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyGroupers/PropertyGrouper.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 207d6d654fe48184c97a1c946d0ad8a4 +timeCreated: 1508331735 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas.meta new file mode 100644 index 0000000..58792a1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 254c9f391295da84fb392b742e7fceae +folderAsset: yes +timeCreated: 1508497398 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/InfoBoxPropertyMeta.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/InfoBoxPropertyMeta.cs new file mode 100644 index 0000000..9d43e5c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/InfoBoxPropertyMeta.cs @@ -0,0 +1,68 @@ +using System.Reflection; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyMeta(typeof(InfoBoxAttribute))] + public class InfoBoxPropertyMeta : PropertyMeta + { + public override void ApplyPropertyMeta(SerializedProperty property, MetaAttribute metaAttribute) + { + InfoBoxAttribute infoBoxAttribute = (InfoBoxAttribute)metaAttribute; + UnityEngine.Object target = PropertyUtility.GetTargetObject(property); + + if (!string.IsNullOrEmpty(infoBoxAttribute.VisibleIf)) + { + FieldInfo conditionField = ReflectionUtility.GetField(target, infoBoxAttribute.VisibleIf); + if (conditionField != null && + conditionField.FieldType == typeof(bool)) + { + if ((bool)conditionField.GetValue(target)) + { + this.DrawInfoBox(infoBoxAttribute.Text, infoBoxAttribute.Type); + } + + return; + } + + MethodInfo conditionMethod = ReflectionUtility.GetMethod(target, infoBoxAttribute.VisibleIf); + if (conditionMethod != null && + conditionMethod.ReturnType == typeof(bool) && + conditionMethod.GetParameters().Length == 0) + { + if ((bool)conditionMethod.Invoke(target, null)) + { + this.DrawInfoBox(infoBoxAttribute.Text, infoBoxAttribute.Type); + } + + return; + } + + string warning = infoBoxAttribute.GetType().Name + " needs a valid boolean condition field or method name to work"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + } + else + { + this.DrawInfoBox(infoBoxAttribute.Text, infoBoxAttribute.Type); + } + } + + private void DrawInfoBox(string infoText, InfoBoxType infoBoxType) + { + switch (infoBoxType) + { + case InfoBoxType.Normal: + EditorGUILayout.HelpBox(infoText, MessageType.Info); + break; + + case InfoBoxType.Warning: + EditorGUILayout.HelpBox(infoText, MessageType.Warning); + break; + + case InfoBoxType.Error: + EditorGUILayout.HelpBox(infoText, MessageType.Error); + break; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/InfoBoxPropertyMeta.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/InfoBoxPropertyMeta.cs.meta new file mode 100644 index 0000000..bb4c001 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/InfoBoxPropertyMeta.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 998d996265069854eae8d1241df0c8aa +timeCreated: 1508607449 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/OnValueChangedPropertyMeta.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/OnValueChangedPropertyMeta.cs new file mode 100644 index 0000000..75303ce --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/OnValueChangedPropertyMeta.cs @@ -0,0 +1,31 @@ +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [PropertyMeta(typeof(OnValueChangedAttribute))] + public class OnValueChangedPropertyMeta : PropertyMeta + { + public override void ApplyPropertyMeta(SerializedProperty property, MetaAttribute metaAttribute) + { + OnValueChangedAttribute onValueChangedAttribute = (OnValueChangedAttribute)metaAttribute; + UnityEngine.Object target = PropertyUtility.GetTargetObject(property); + + MethodInfo callbackMethod = ReflectionUtility.GetMethod(target, onValueChangedAttribute.CallbackName); + if (callbackMethod != null && + callbackMethod.ReturnType == typeof(void) && + callbackMethod.GetParameters().Length == 0) + { + property.serializedObject.ApplyModifiedProperties(); // We must apply modifications so that the callback can be invoked with up-to-date data + + callbackMethod.Invoke(target, null); + } + else + { + string warning = onValueChangedAttribute.GetType().Name + " can invoke only action methods - with void return type and no parameters"; + Debug.LogWarning(warning, target); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/OnValueChangedPropertyMeta.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/OnValueChangedPropertyMeta.cs.meta new file mode 100644 index 0000000..4c29909 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/OnValueChangedPropertyMeta.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a55050bf047356c49b1598f431d277e9 +timeCreated: 1508612140 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/PropertyMeta.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/PropertyMeta.cs new file mode 100644 index 0000000..3d9b499 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/PropertyMeta.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyMeta + { + public abstract void ApplyPropertyMeta(SerializedProperty property, MetaAttribute metaAttribute); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/PropertyMeta.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/PropertyMeta.cs.meta new file mode 100644 index 0000000..831ab49 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyMetas/PropertyMeta.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 87cd72b1f8ad36840a07e1128f77ec5b +timeCreated: 1508497398 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta new file mode 100644 index 0000000..6713dc9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: efd539f7816167541ba63e633f2a9a7c +folderAsset: yes +timeCreated: 1508153828 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs new file mode 100644 index 0000000..454313f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs @@ -0,0 +1,33 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyValidator(typeof(MaxValueAttribute))] + public class MaxValuePropertyValidator : PropertyValidator + { + public override void ValidateProperty(SerializedProperty property) + { + MaxValueAttribute maxValueAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Integer) + { + if (property.intValue > maxValueAttribute.MaxValue) + { + property.intValue = (int)maxValueAttribute.MaxValue; + } + } + else if (property.propertyType == SerializedPropertyType.Float) + { + if (property.floatValue > maxValueAttribute.MaxValue) + { + property.floatValue = maxValueAttribute.MaxValue; + } + } + else + { + string warning = maxValueAttribute.GetType().Name + " can be used only on int or float fields"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta new file mode 100644 index 0000000..a11c91a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 84ddaea11c76b9c4f9a0b56dbab25b4c +timeCreated: 1508153828 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs new file mode 100644 index 0000000..30a80b1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs @@ -0,0 +1,33 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyValidator(typeof(MinValueAttribute))] + public class MinValuePropertyValidator : PropertyValidator + { + public override void ValidateProperty(SerializedProperty property) + { + MinValueAttribute minValueAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Integer) + { + if (property.intValue < minValueAttribute.MinValue) + { + property.intValue = (int)minValueAttribute.MinValue; + } + } + else if (property.propertyType == SerializedPropertyType.Float) + { + if (property.floatValue < minValueAttribute.MinValue) + { + property.floatValue = minValueAttribute.MinValue; + } + } + else + { + string warning = minValueAttribute.GetType().Name + " can be used only on int or float fields"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta new file mode 100644 index 0000000..929ac89 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 68add38e187dd154889b1e3b13247621 +timeCreated: 1508153828 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidator.cs new file mode 100644 index 0000000..c7380ea --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidator.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyValidator + { + public abstract void ValidateProperty(SerializedProperty property); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidator.cs.meta new file mode 100644 index 0000000..56aca33 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidator.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 73502d09058a2e344a1eb20859d29203 +timeCreated: 1508153828 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs new file mode 100644 index 0000000..5f16c6e --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs @@ -0,0 +1,32 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyValidator(typeof(RequiredAttribute))] + public class RequiredPropertyValidator : PropertyValidator + { + public override void ValidateProperty(SerializedProperty property) + { + RequiredAttribute requiredAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + if (property.objectReferenceValue == null) + { + string errorMessage = property.name + " is required"; + if (!string.IsNullOrEmpty(requiredAttribute.Message)) + { + errorMessage = requiredAttribute.Message; + } + + EditorDrawUtility.DrawHelpBox(errorMessage, MessageType.Error, context: PropertyUtility.GetTargetObject(property)); + } + } + else + { + string warning = requiredAttribute.GetType().Name + " works only on reference types"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: PropertyUtility.GetTargetObject(property)); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta new file mode 100644 index 0000000..239c36c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0675503782f800d4081737a5e41f9bf5 +timeCreated: 1508655546 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs new file mode 100644 index 0000000..1113ef1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs @@ -0,0 +1,55 @@ +using System; +using System.Reflection; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [PropertyValidator(typeof(ValidateInputAttribute))] + public class ValidateInputPropertyValidator : PropertyValidator + { + public override void ValidateProperty(SerializedProperty property) + { + ValidateInputAttribute validateInputAttribute = PropertyUtility.GetAttribute(property); + UnityEngine.Object target = PropertyUtility.GetTargetObject(property); + + MethodInfo validationCallback = ReflectionUtility.GetMethod(target, validateInputAttribute.CallbackName); + + if (validationCallback != null && + validationCallback.ReturnType == typeof(bool) && + validationCallback.GetParameters().Length == 1) + { + FieldInfo fieldInfo = ReflectionUtility.GetField(target, property.name); + Type fieldType = fieldInfo.FieldType; + Type parameterType = validationCallback.GetParameters()[0].ParameterType; + + if (fieldType == parameterType) + { + if (!(bool)validationCallback.Invoke(target, new object[] { fieldInfo.GetValue(target) })) + { + if (string.IsNullOrEmpty(validateInputAttribute.Message)) + { + EditorDrawUtility.DrawHelpBox(property.name + " is not valid", MessageType.Error, context: target); + } + else + { + EditorDrawUtility.DrawHelpBox(validateInputAttribute.Message, MessageType.Error, context: target); + } + } + } + else + { + string warning = "The field type is not the same as the callback's parameter type"; + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + } + else + { + string warning = + validateInputAttribute.GetType().Name + + " needs a callback with boolean return type and a single parameter of the same type as the field"; + + EditorDrawUtility.DrawHelpBox(warning, MessageType.Warning, context: target); + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta new file mode 100644 index 0000000..fb4a666 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9b7357cef1466544aac67a1976ad9a18 +timeCreated: 1508657795 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility.meta new file mode 100644 index 0000000..ed16edd --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: acb4475c71a3fe947a81ced84ab89c6d +folderAsset: yes +timeCreated: 1508062761 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/EditorDrawUtility.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/EditorDrawUtility.cs new file mode 100644 index 0000000..5532461 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/EditorDrawUtility.cs @@ -0,0 +1,123 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace NaughtyAttributes.Editor +{ + public static class EditorDrawUtility + { + public static void DrawHeader(string header) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField(header, EditorStyles.boldLabel); + } + + public static bool DrawHeader(SerializedProperty property) + { + HeaderAttribute headerAttr = PropertyUtility.GetAttribute(property); + if (headerAttr != null) + { + DrawHeader(headerAttr.header); + return true; + } + + return false; + } + + public static void DrawHelpBox(string message, MessageType type, UnityEngine.Object context = null, bool logToConsole = true) + { + EditorGUILayout.HelpBox(message, type); + + if (logToConsole) + { + switch (type) + { + case MessageType.None: + case MessageType.Info: + Debug.Log(message, context); + break; + case MessageType.Warning: + Debug.LogWarning(message, context); + break; + case MessageType.Error: + Debug.LogError(message, context); + break; + } + } + } + + public static void DrawPropertyField(SerializedProperty property, bool includeChildren = true) + { + EditorGUILayout.PropertyField(property, includeChildren); + } + + public static bool DrawLayoutField(object value, string label) + { + GUI.enabled = false; + + bool isDrawn = true; + Type valueType = value.GetType(); + + if (valueType == typeof(bool)) + { + EditorGUILayout.Toggle(label, (bool)value); + } + else if (valueType == typeof(int)) + { + EditorGUILayout.IntField(label, (int)value); + } + else if (valueType == typeof(long)) + { + EditorGUILayout.LongField(label, (long)value); + } + else if (valueType == typeof(float)) + { + EditorGUILayout.FloatField(label, (float)value); + } + else if (valueType == typeof(double)) + { + EditorGUILayout.DoubleField(label, (double)value); + } + else if (valueType == typeof(string)) + { + EditorGUILayout.TextField(label, (string)value); + } + else if (valueType == typeof(Vector2)) + { + EditorGUILayout.Vector2Field(label, (Vector2)value); + } + else if (valueType == typeof(Vector3)) + { + EditorGUILayout.Vector3Field(label, (Vector3)value); + } + else if (valueType == typeof(Vector4)) + { + EditorGUILayout.Vector4Field(label, (Vector4)value); + } + else if (valueType == typeof(Color)) + { + EditorGUILayout.ColorField(label, (Color)value); + } + else if (valueType == typeof(Bounds)) + { + EditorGUILayout.BoundsField(label, (Bounds)value); + } + else if (valueType == typeof(Rect)) + { + EditorGUILayout.RectField(label, (Rect)value); + } + else if (typeof(UnityEngine.Object).IsAssignableFrom(valueType)) + { + EditorGUILayout.ObjectField(label, (UnityEngine.Object)value, valueType, true); + } + else + { + isDrawn = false; + } + + GUI.enabled = true; + + return isDrawn; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/EditorDrawUtility.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/EditorDrawUtility.cs.meta new file mode 100644 index 0000000..704d3e5 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/EditorDrawUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6ff27ff7705d6064e935bb2159a1b453 +timeCreated: 1510926159 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/IOUtility.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/IOUtility.cs new file mode 100644 index 0000000..9872765 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/IOUtility.cs @@ -0,0 +1,49 @@ +using UnityEngine; +using System.IO; + +namespace NaughtyAttributes.Editor +{ + public static class IOUtility + { + public static string GetPersistentDataPath() + { + return Application.persistentDataPath + "/"; + } + + public static void WriteToFile(string filePath, string content) + { + using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) + { + using (StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.ASCII)) + { + streamWriter.WriteLine(content); + } + } + } + + public static string ReadFromFile(string filePath) + { + using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) + { + using (StreamReader streamReader = new StreamReader(fileStream, System.Text.Encoding.ASCII)) + { + string content = streamReader.ReadToEnd(); + return content; + } + } + } + + public static bool FileExists(string filePath) + { + return File.Exists(filePath); + } + + public static string GetPathRelativeToProjectFolder(string fullPath) + { + int indexOfAssetsWord = fullPath.IndexOf("\\Assets"); + string relativePath = fullPath.Substring(indexOfAssetsWord + 1); + + return relativePath; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/IOUtility.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/IOUtility.cs.meta new file mode 100644 index 0000000..e8ab56a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/IOUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: bf376371b2951274e823154c03f066e2 +timeCreated: 1508232215 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs new file mode 100644 index 0000000..fa8051c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs @@ -0,0 +1,27 @@ +using UnityEditor; +using System; +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyUtility + { + public static T GetAttribute(SerializedProperty property) where T : Attribute + { + T[] attributes = GetAttributes(property); + return attributes.Length > 0 ? attributes[0] : null; + } + + public static T[] GetAttributes(SerializedProperty property) where T : Attribute + { + FieldInfo fieldInfo = ReflectionUtility.GetField(GetTargetObject(property), property.name); + + return (T[])fieldInfo.GetCustomAttributes(typeof(T), true); + } + + public static UnityEngine.Object GetTargetObject(SerializedProperty property) + { + return property.serializedObject.targetObject; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta new file mode 100644 index 0000000..fad8d5b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e2d50a3c7c8a9754cb3936216494be66 +timeCreated: 1508153828 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs new file mode 100644 index 0000000..f1df8a4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + public static class ReflectionUtility + { + public static IEnumerable GetAllFields(object target, Func predicate) + { + List types = new List() + { + target.GetType() + }; + + while (types.Last().BaseType != null) + { + types.Add(types.Last().BaseType); + } + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable fieldInfos = types[i] + .GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var fieldInfo in fieldInfos) + { + yield return fieldInfo; + } + } + } + + public static IEnumerable GetAllProperties(object target, Func predicate) + { + List types = new List() + { + target.GetType() + }; + + while (types.Last().BaseType != null) + { + types.Add(types.Last().BaseType); + } + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable propertyInfos = types[i] + .GetProperties(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var propertyInfo in propertyInfos) + { + yield return propertyInfo; + } + } + } + + public static IEnumerable GetAllMethods(object target, Func predicate) + { + IEnumerable methodInfos = target.GetType() + .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public) + .Where(predicate); + + return methodInfos; + } + + public static FieldInfo GetField(object target, string fieldName) + { + return GetAllFields(target, f => f.Name.Equals(fieldName, StringComparison.InvariantCulture)).FirstOrDefault(); + } + + public static PropertyInfo GetProperty(object target, string propertyName) + { + return GetAllProperties(target, p => p.Name.Equals(propertyName, StringComparison.InvariantCulture)).FirstOrDefault(); + } + + public static MethodInfo GetMethod(object target, string methodName) + { + return GetAllMethods(target, m => m.Name.Equals(methodName, StringComparison.InvariantCulture)).FirstOrDefault(); + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta new file mode 100644 index 0000000..73b6ea9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1d86c581f02a55f458e36bf7e81e3084 +timeCreated: 1520258793 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test.meta b/Assets/NaughtyAttributes/Scripts/Test.meta new file mode 100644 index 0000000..6eca4f6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce2bd76b5676a434bb8a84254f67f1dc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/Buttons.cs b/Assets/NaughtyAttributes/Scripts/Test/Buttons.cs new file mode 100644 index 0000000..b53f8c8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Buttons.cs @@ -0,0 +1,17 @@ +using NaughtyAttributes; +using UnityEngine; + +public class Buttons : MonoBehaviour +{ + [Button] + public void MethodOne() + { + Debug.Log("MethodOne()"); + } + + [Button("Button Text")] + private void MethodTwo() + { + Debug.Log("MethodTwo()"); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/Buttons.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/Buttons.cs.meta new file mode 100644 index 0000000..1d7d58f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Buttons.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b592f12a9f69ac3408f6f870762232c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/Dropdowns.cs b/Assets/NaughtyAttributes/Scripts/Test/Dropdowns.cs new file mode 100644 index 0000000..cc35076 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Dropdowns.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using NaughtyAttributes; +using System.Collections.Generic; + +public class Dropdowns : MonoBehaviour +{ + [Dropdown("intValues")] + public int intValue; + + [Dropdown("stringValues")] + public string stringValue; + + [Dropdown("vectorValues")] + public Vector3 vectorValue; + +#pragma warning disable 414 + private int[] intValues = new int[] { 1, 2, 3 }; + + private List stringValues = new List() { "A", "B", "C" }; + + private DropdownList vectorValues = new DropdownList() + { + { "Right", Vector3.right }, + { "Up", Vector3.up }, + { "Forward", Vector3.forward } + }; +#pragma warning restore 414 +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/Dropdowns.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/Dropdowns.cs.meta new file mode 100644 index 0000000..ec7fa24 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Dropdowns.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3855e37cd6b01194e8166573c7c4b37d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/EnableDisableIf.cs b/Assets/NaughtyAttributes/Scripts/Test/EnableDisableIf.cs new file mode 100644 index 0000000..801d1ea --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/EnableDisableIf.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using NaughtyAttributes; + +public class EnableDisableIf : MonoBehaviour +{ + public bool enable1; + public bool enable2; + public bool disable1; + public bool disable2; + + [EnableIf(ConditionOperator.And, "enable1", "enable2")] + public int enableIfAll = 1; + + [EnableIf(ConditionOperator.Or, "enable1", "enable2")] + public int enableIfAny = 2; + + [DisableIf(ConditionOperator.And, "disable1", "disable2")] + public int disableIfAll = 1; + + [DisableIf(ConditionOperator.Or, "disable1", "disable2")] + public int disableIfAny = 2; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/EnableDisableIf.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/EnableDisableIf.cs.meta new file mode 100644 index 0000000..c22fe7b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/EnableDisableIf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bed506d8be3a10f45bec4bf2237bec87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/InfoBoxes.cs b/Assets/NaughtyAttributes/Scripts/Test/InfoBoxes.cs new file mode 100644 index 0000000..272914a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/InfoBoxes.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using NaughtyAttributes; + +public class InfoBoxes : MonoBehaviour +{ + [InfoBox("Normal", InfoBoxType.Normal)] + public int int1; + + [InfoBox("Warning", InfoBoxType.Warning)] + public int int2; + + [InfoBox("Error", InfoBoxType.Error)] + public int int3; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/InfoBoxes.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/InfoBoxes.cs.meta new file mode 100644 index 0000000..68dc824 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/InfoBoxes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0dcb08e489c17644e9eacaa1ec5fe781 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/Label.cs b/Assets/NaughtyAttributes/Scripts/Test/Label.cs new file mode 100644 index 0000000..ca0aa1c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Label.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using NaughtyAttributes; +using UnityEngine.AI; + +public class Label : MonoBehaviour +{ + [Label("A Short Name")] + public string aMoreSpecificName; + + [Label("RGB")] + public Vector3 vectorXYZ; + + [Label("Agent")] + public NavMeshAgent navMeshAgent; + + [Label("Ints")] + public int[] arrayOfInts; + + [Label("Custom Class")] + public MyClassExample myClass; + + [System.Serializable] + public class MyClassExample + { + public int aInt; + public string aString; + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/Label.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/Label.cs.meta new file mode 100644 index 0000000..114af72 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Label.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7488af014527ebf42af5c4fc4d5f4f5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef b/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef new file mode 100644 index 0000000..910f548 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef @@ -0,0 +1,14 @@ +{ + "name": "NaughtyAttributes.Test", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta b/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta new file mode 100644 index 0000000..c3d49e7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df1dea26b8503004d92d621e88aa9421 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/NaughtyComponent.cs b/Assets/NaughtyAttributes/Scripts/Test/NaughtyComponent.cs new file mode 100644 index 0000000..a68b78f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NaughtyComponent.cs @@ -0,0 +1,8 @@ +using NaughtyAttributes; +using UnityEngine; + +public class NaughtyComponent : MonoBehaviour +{ + [Tag] + public string tagField; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/NaughtyComponent.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/NaughtyComponent.cs.meta new file mode 100644 index 0000000..5702f19 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NaughtyComponent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9c928ea15ae74a44089beb2e534c1a35 +timeCreated: 1507996629 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/NaughtyScriptableObject.cs b/Assets/NaughtyAttributes/Scripts/Test/NaughtyScriptableObject.cs new file mode 100644 index 0000000..e1f9095 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NaughtyScriptableObject.cs @@ -0,0 +1,8 @@ +using UnityEngine; +using NaughtyAttributes; +using System.Collections.Generic; + +[CreateAssetMenu(fileName = "NaughtyScriptableObject", menuName = "NaughtyAttributes/NaughtyScriptableObject")] +public class NaughtyScriptableObject : ScriptableObject +{ +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/NaughtyScriptableObject.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/NaughtyScriptableObject.cs.meta new file mode 100644 index 0000000..eb5d253 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NaughtyScriptableObject.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 753bdb918c6038142acddbd7aae6958f +timeCreated: 1518639587 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/NonSerializedProperties.cs b/Assets/NaughtyAttributes/Scripts/Test/NonSerializedProperties.cs new file mode 100644 index 0000000..9cc5b94 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NonSerializedProperties.cs @@ -0,0 +1,25 @@ +using NaughtyAttributes; +using UnityEngine; + +public class NonSerializedProperties : MonoBehaviour +{ +#pragma warning disable 414 + [ShowNonSerializedField] + private int myInt = 10; + + [ShowNonSerializedField] + private const float PI = 3.14159f; + + [ShowNonSerializedField] + private static readonly Vector3 CONST_VECTOR = Vector3.one; +#pragma warning restore 414 + + [ShowNativeProperty] + public Transform Transform + { + get + { + return this.transform; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/NonSerializedProperties.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/NonSerializedProperties.cs.meta new file mode 100644 index 0000000..404ff1b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/NonSerializedProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 913d67a695253f744bdc776625b9b948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/OnValueChanged.cs b/Assets/NaughtyAttributes/Scripts/Test/OnValueChanged.cs new file mode 100644 index 0000000..1fe7261 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/OnValueChanged.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +public class OnValueChanged : MonoBehaviour +{ + [NaughtyAttributes.OnValueChanged("OnValueChangedMethod")] + public int onValueChanged; + + private void OnValueChangedMethod() + { + Debug.Log(this.onValueChanged); + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/OnValueChanged.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/OnValueChanged.cs.meta new file mode 100644 index 0000000..bfd1ab2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/OnValueChanged.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff1df679e5b32f64bb106752c63933fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/ProgressBar.cs b/Assets/NaughtyAttributes/Scripts/Test/ProgressBar.cs new file mode 100644 index 0000000..93d64bd --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ProgressBar.cs @@ -0,0 +1,7 @@ +using UnityEngine; + +public class ProgressBar : MonoBehaviour +{ + [NaughtyAttributes.ProgressBar("Health", 100, NaughtyAttributes.ProgressBarColor.Orange)] + public float health = 50; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/ProgressBar.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ProgressBar.cs.meta new file mode 100644 index 0000000..db88429 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ProgressBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96ca4c27fc649764b9d1625f1740cb9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/ReadOnly.cs b/Assets/NaughtyAttributes/Scripts/Test/ReadOnly.cs new file mode 100644 index 0000000..13052c9 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ReadOnly.cs @@ -0,0 +1,7 @@ +using UnityEngine; + +public class ReadOnly : MonoBehaviour +{ + [NaughtyAttributes.ReadOnly] + public int readOnlyInt = 5; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/ReadOnly.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ReadOnly.cs.meta new file mode 100644 index 0000000..d65c60c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ReadOnly.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5443d37a05e188846bda9b05b067184e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/ReorderableLists.cs b/Assets/NaughtyAttributes/Scripts/Test/ReorderableLists.cs new file mode 100644 index 0000000..fbc93f2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ReorderableLists.cs @@ -0,0 +1,26 @@ +using NaughtyAttributes; +using System.Collections.Generic; +using UnityEngine; + +[System.Serializable] +public struct SomeStruct +{ + public int Int; + public float Float; + public Vector3 Vector; +} + +public class ReorderableLists : MonoBehaviour +{ + [BoxGroup("Reorderable Lists")] + [ReorderableList] + public int[] intArray; + + [BoxGroup("Reorderable Lists")] + [ReorderableList] + public List vectorList; + + [BoxGroup("Reorderable Lists")] + [ReorderableList] + public List structList; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/ReorderableLists.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ReorderableLists.cs.meta new file mode 100644 index 0000000..b993018 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ReorderableLists.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c93fde7cd79390148ac576c3a159a77b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreview.cs b/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreview.cs new file mode 100644 index 0000000..879d99f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreview.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +public class ShowAssetPreview : MonoBehaviour +{ + [NaughtyAttributes.ShowAssetPreview] + public Sprite sprite; + + [NaughtyAttributes.ShowAssetPreview(96, 96)] + public GameObject prefab; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreview.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreview.cs.meta new file mode 100644 index 0000000..b636853 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreview.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 705c14aa9ecaa274289972381f471367 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowHideIf.cs b/Assets/NaughtyAttributes/Scripts/Test/ShowHideIf.cs new file mode 100644 index 0000000..ba246ef --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowHideIf.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using NaughtyAttributes; + +public class ShowHideIf : MonoBehaviour +{ + public bool show1; + public bool show2; + public bool hide1; + public bool hide2; + + [ShowIf("False")] + public int showIf = 0; + + [ShowIf(ConditionOperator.And, "show1", "show2")] + public int showIfAll = 1; + + [ShowIf(ConditionOperator.Or, "show1", "show2")] + public int showIfAny = 2; + + [HideIf("True")] + public int hideIf = 0; + + [HideIf(ConditionOperator.And, "hide1", "hide2")] + public int hideIfAll = 1; + + [HideIf(ConditionOperator.Or, "hide1", "hide2")] + public int hideIfAny = 2; + + private bool True() + { + return true; + } + + private bool False() + { + return false; + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowHideIf.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ShowHideIf.cs.meta new file mode 100644 index 0000000..749d05c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowHideIf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fdbfcfbf5b056a4bac491fe21569572 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/Sliders.cs b/Assets/NaughtyAttributes/Scripts/Test/Sliders.cs new file mode 100644 index 0000000..207b0ea --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Sliders.cs @@ -0,0 +1,17 @@ +using NaughtyAttributes; +using UnityEngine; + +public class Sliders : MonoBehaviour +{ + [BoxGroup("Sliders")] + [Slider(0, 10)] + public int intSlider; + + [BoxGroup("Sliders")] + [Slider(0.0f, 10.0f)] + public float floatSlider; + + [BoxGroup("Sliders")] + [MinMaxSlider(0.0f, 100.0f)] + public Vector2 minMaxSlider; +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/Sliders.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/Sliders.cs.meta new file mode 100644 index 0000000..7580a81 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Sliders.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd67fbde6acdd6a44944f12e507067c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/Tag.cs b/Assets/NaughtyAttributes/Scripts/Test/Tag.cs new file mode 100644 index 0000000..8e048ce --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Tag.cs @@ -0,0 +1,9 @@ +using UnityEngine; +using NaughtyAttributes; + +public class Tag : MonoBehaviour +{ + [Tag] + public string tagField; +} + diff --git a/Assets/NaughtyAttributes/Scripts/Test/Tag.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/Tag.cs.meta new file mode 100644 index 0000000..88ea5af --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Tag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bcc0d5613b48fb43bd36c9d37e99900 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/Validation.cs b/Assets/NaughtyAttributes/Scripts/Test/Validation.cs new file mode 100644 index 0000000..013f947 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Validation.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using NaughtyAttributes; + +public class Validation : MonoBehaviour +{ + [MinValue(0.0f), MaxValue(1.0f)] + public float minMaxValidated; + + [Required] + public Transform requiredTransform; + + [Required("Must not be null")] + public GameObject requiredGameObject; + + [ValidateInput("IsNotNull", "must not be null")] + public Sprite notNullSprite; + + private bool IsNotNull(Sprite sprite) + { + return sprite != null; + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/Validation.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/Validation.cs.meta new file mode 100644 index 0000000..84a1e9d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/Validation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d62ee2e0611a614f8ab3cb1f291b07b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus.meta b/Assets/Oculus.meta new file mode 100644 index 0000000..4779388 --- /dev/null +++ b/Assets/Oculus.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70af2106b4c98bb458130d6ece67e538 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/OculusProjectConfig.asset b/Assets/Oculus/OculusProjectConfig.asset new file mode 100644 index 0000000..9ea1747 --- /dev/null +++ b/Assets/Oculus/OculusProjectConfig.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 05d394ae2a81edd4cbc3c51917e766e3, type: 3} + m_Name: OculusProjectConfig + m_EditorClassIdentifier: + targetDeviceTypes: 00000000 + disableBackups: 1 + enableNSCConfig: 1 diff --git a/Assets/Oculus/OculusProjectConfig.asset.meta b/Assets/Oculus/OculusProjectConfig.asset.meta new file mode 100644 index 0000000..d42d678 --- /dev/null +++ b/Assets/Oculus/OculusProjectConfig.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b33aa4ca4aaaa2042a96e735b9d56f9f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform.meta b/Assets/Oculus/Platform.meta new file mode 100644 index 0000000..90f8ff1 --- /dev/null +++ b/Assets/Oculus/Platform.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 890baecac1dcff741be0f7f72a8a31b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor.meta b/Assets/Oculus/Platform/Editor.meta new file mode 100644 index 0000000..2ebd3c3 --- /dev/null +++ b/Assets/Oculus/Platform/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bc2e7261e2de40845b8fc649e6ec4dae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor/GUIHelper.cs b/Assets/Oculus/Platform/Editor/GUIHelper.cs new file mode 100644 index 0000000..b9349d3 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/GUIHelper.cs @@ -0,0 +1,45 @@ +namespace Oculus.Platform +{ + using UnityEditor; + using UnityEngine; + + class GUIHelper { + public delegate void Worker(); + + static void InOut(Worker begin, Worker body, Worker end) { + try { + begin(); + body(); + } finally { + end(); + } + } + + public static void HInset(int pixels, Worker worker) { + InOut( + () => { + GUILayout.BeginHorizontal(); + GUILayout.Space(pixels); + GUILayout.BeginVertical(); + }, + worker, + () => { + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + } + ); + } + + public delegate T ControlWorker(); + public static T MakeControlWithLabel(GUIContent label, ControlWorker worker) { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label); + + var result = worker(); + + EditorGUILayout.EndHorizontal(); + return result; + } + } + +} diff --git a/Assets/Oculus/Platform/Editor/GUIHelper.cs.meta b/Assets/Oculus/Platform/Editor/GUIHelper.cs.meta new file mode 100644 index 0000000..6f0656d --- /dev/null +++ b/Assets/Oculus/Platform/Editor/GUIHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 19bb2c637ba6e9c459e3db36b2ec10c3 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs new file mode 100644 index 0000000..48f8fdf --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs @@ -0,0 +1,448 @@ +namespace Oculus.Platform +{ + using System; + using System.IO; + using UnityEditor; + using UnityEngine; + using UnityEngine.Networking; + + // This classes implements a UI to edit the PlatformSettings class. + // The UI is accessible from a the menu bar via: Oculus Platform -> Edit Settings + [CustomEditor(typeof(PlatformSettings))] + public class OculusPlatformSettingsEditor : Editor + { + private bool isUnityEditorSettingsExpanded; + private bool isBuildSettingsExpanded; + + private UnityWebRequest getAccessTokenRequest; + + private void OnEnable() + { + isUnityEditorSettingsExpanded = true; + isBuildSettingsExpanded = true; + } + + [UnityEditor.MenuItem("Oculus/Platform/Edit Settings")] + public static void Edit() + { + UnityEditor.Selection.activeObject = PlatformSettings.Instance; + } + + public override void OnInspectorGUI() + { + // + // Application IDs section + // + EditorGUILayout.LabelField("Application ID:"); + GUIContent riftAppIDLabel = new GUIContent("Oculus Rift [?]", "This AppID will be used when building to the Windows target."); + GUIContent mobileAppIDLabel = new GUIContent("Oculus Go/Quest or Gear VR [?]", "This AppID will be used when building to the Android target"); + PlatformSettings.AppID = MakeTextBox(riftAppIDLabel, PlatformSettings.AppID); + PlatformSettings.MobileAppID = MakeTextBox(mobileAppIDLabel, PlatformSettings.MobileAppID); + + if (GUILayout.Button("Create / Find your app on https://dashboard.oculus.com")) + { + UnityEngine.Application.OpenURL("https://dashboard.oculus.com/"); + } + +#if UNITY_ANDROID + if (String.IsNullOrEmpty(PlatformSettings.MobileAppID)) + { + EditorGUILayout.HelpBox("Please enter a valid Oculus Go/Quest or Gear VR App ID.", MessageType.Error); + } + else + { + var msg = "Configured to connect with App ID " + PlatformSettings.MobileAppID; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } +#else + if (String.IsNullOrEmpty(PlatformSettings.AppID)) + { + EditorGUILayout.HelpBox("Please enter a valid Oculus Rift App ID.", MessageType.Error); + } + else + { + var msg = "Configured to connect with App ID " + PlatformSettings.AppID; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } +#endif + EditorGUILayout.Separator(); + + // + // Unity Editor Settings section + // + isUnityEditorSettingsExpanded = EditorGUILayout.Foldout(isUnityEditorSettingsExpanded, "Unity Editor Settings"); + if (isUnityEditorSettingsExpanded) + { + GUIHelper.HInset(6, () => + { + bool HasTestAccessToken = !String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserAccessToken); + if (PlatformSettings.UseStandalonePlatform) + { + if (!HasTestAccessToken && + (String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserEmail) || + String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserPassword))) + { + EditorGUILayout.HelpBox("Please enter a valid user credentials.", MessageType.Error); + } + else + { + var msg = "The Unity editor will use the supplied test user credentials and operate in standalone mode. Some user data will be mocked."; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } + } + else + { + var msg = "The Unity editor will use the user credentials from the Oculus application."; + EditorGUILayout.HelpBox(msg, MessageType.Info); + } + + var useStandaloneLabel = "Use Standalone Platform [?]"; + var useStandaloneHint = "If this is checked your app will use a debug platform with the User info below. " + + "Otherwise your app will connect to the Oculus Platform. This setting only applies to the Unity Editor"; + PlatformSettings.UseStandalonePlatform = + MakeToggle(new GUIContent(useStandaloneLabel, useStandaloneHint), PlatformSettings.UseStandalonePlatform); + + GUI.enabled = PlatformSettings.UseStandalonePlatform; + + if (!HasTestAccessToken) + { + var emailLabel = "Test User Email: "; + var emailHint = "Test users can be configured at " + + "https://dashboard.oculus.com/organizations//testusers " + + "however any valid Oculus account email may be used."; + StandalonePlatformSettings.OculusPlatformTestUserEmail = + MakeTextBox(new GUIContent(emailLabel, emailHint), StandalonePlatformSettings.OculusPlatformTestUserEmail); + + var passwdLabel = "Test User Password: "; + var passwdHint = "Password associated with the email address."; + StandalonePlatformSettings.OculusPlatformTestUserPassword = + MakePasswordBox(new GUIContent(passwdLabel, passwdHint), StandalonePlatformSettings.OculusPlatformTestUserPassword); + + var isLoggingIn = (getAccessTokenRequest != null); + var loginLabel = (!isLoggingIn) ? "Login" : "Logging in..."; + + GUI.enabled = !isLoggingIn; + if (GUILayout.Button(loginLabel)) + { + WWWForm form = new WWWForm(); + form.AddField("email", StandalonePlatformSettings.OculusPlatformTestUserEmail); + form.AddField("password", StandalonePlatformSettings.OculusPlatformTestUserPassword); + + // Start the WWW request to get the access token + getAccessTokenRequest = UnityWebRequest.Post("https://graph.oculus.com/login", form); + getAccessTokenRequest.SetRequestHeader("Authorization", "Bearer OC|1141595335965881|"); + getAccessTokenRequest.SendWebRequest(); + EditorApplication.update += GetAccessToken; + } + GUI.enabled = true; + } + else + { + var loggedInMsg = "Currently using the credentials associated with " + StandalonePlatformSettings.OculusPlatformTestUserEmail; + EditorGUILayout.HelpBox(loggedInMsg, MessageType.Info); + + var logoutLabel = "Clear Credentials"; + + if (GUILayout.Button(logoutLabel)) + { + StandalonePlatformSettings.OculusPlatformTestUserAccessToken = ""; + } + } + + GUI.enabled = true; + }); + } + EditorGUILayout.Separator(); + + // + // Build Settings section + // + isBuildSettingsExpanded = EditorGUILayout.Foldout(isBuildSettingsExpanded, "Build Settings"); + if (isBuildSettingsExpanded) + { + GUIHelper.HInset(6, () => { + if (!PlayerSettings.virtualRealitySupported) + { + EditorGUILayout.HelpBox("VR Support isn't enabled in the Player Settings", MessageType.Warning); + } + else + { + EditorGUILayout.HelpBox("VR Support is enabled", MessageType.Info); + } + + PlayerSettings.virtualRealitySupported = MakeToggle(new GUIContent("Virtual Reality Support"), PlayerSettings.virtualRealitySupported); + PlayerSettings.bundleVersion = MakeTextBox(new GUIContent("Bundle Version"), PlayerSettings.bundleVersion); +#if UNITY_5_3 || UNITY_5_4 || UNITY_5_5 + PlayerSettings.bundleIdentifier = MakeTextBox(new GUIContent("Bundle Identifier"), PlayerSettings.bundleIdentifier); +#else + BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; + PlayerSettings.SetApplicationIdentifier( + buildTargetGroup, + MakeTextBox( + new GUIContent("Bundle Identifier"), + PlayerSettings.GetApplicationIdentifier(buildTargetGroup))); +#endif + bool canEnableARM64Support = false; +#if UNITY_2018_1_OR_NEWER + canEnableARM64Support = true; +#endif + if (!canEnableARM64Support) + { + EditorGUILayout.HelpBox("ARM64 support requires Unity 2018.1.x or higher.", MessageType.Info); + if (PlatformSettings.EnableARM64Support) + { + PlatformSettings.EnableARM64Support = false; + DisablePluginPlatform(PluginPlatform.Android64); + } + } + + GUI.enabled = canEnableARM64Support; + + var enableARM64Label = "Enable ARM64 Support [?]"; + var enableARM64Hint = "[Experimental] If this is checked, Oculus Platform SDK support for ARM64 mobile devices will be enabled." + + " Support for ARM64 must also be correctly configured in the Unity Player Settings to use this feature. Requires Unity 2018.1.x or higher."; + bool prevEnableARM64Support = PlatformSettings.EnableARM64Support; + PlatformSettings.EnableARM64Support = + MakeToggle(new GUIContent(enableARM64Label, enableARM64Hint), PlatformSettings.EnableARM64Support); + + if (prevEnableARM64Support != PlatformSettings.EnableARM64Support) + { + if (PlatformSettings.EnableARM64Support) + { + EnablePluginPlatform(PluginPlatform.Android64); + } + else + { + DisablePluginPlatform(PluginPlatform.Android64); + } + } + + GUI.enabled = true; + }); + } + EditorGUILayout.Separator(); + } + + // Asyncronously fetch the access token with the given credentials + private void GetAccessToken() + { + if (getAccessTokenRequest != null && getAccessTokenRequest.isDone) + { + // Clear the password + StandalonePlatformSettings.OculusPlatformTestUserPassword = ""; + + if (String.IsNullOrEmpty(getAccessTokenRequest.error)) + { + var Response = JsonUtility.FromJson(getAccessTokenRequest.downloadHandler.text); + StandalonePlatformSettings.OculusPlatformTestUserAccessToken = Response.access_token; + } + + GUI.changed = true; + EditorApplication.update -= GetAccessToken; + getAccessTokenRequest.Dispose(); + getAccessTokenRequest = null; + } + } + + private string MakeTextBox(GUIContent label, string variable) + { + return GUIHelper.MakeControlWithLabel(label, () => { + GUI.changed = false; + var result = EditorGUILayout.TextField(variable); + SetDirtyOnGUIChange(); + return result; + }); + } + + private string MakePasswordBox(GUIContent label, string variable) + { + return GUIHelper.MakeControlWithLabel(label, () => { + GUI.changed = false; + var result = EditorGUILayout.PasswordField(variable); + SetDirtyOnGUIChange(); + return result; + }); + } + + private bool MakeToggle(GUIContent label, bool variable) + { + return GUIHelper.MakeControlWithLabel(label, () => { + GUI.changed = false; + var result = EditorGUILayout.Toggle(variable); + SetDirtyOnGUIChange(); + return result; + }); + } + + private void SetDirtyOnGUIChange() + { + if (GUI.changed) + { + EditorUtility.SetDirty(PlatformSettings.Instance); + GUI.changed = false; + } + } + + // TODO: Merge this with core utilities plugin updater functionality. Piggybacking here to avoid an orphaned delete in the future. + private const string PluginSubPathAndroid32 = @"/Plugins/Android32/libovrplatformloader.so"; + private const string PluginSubPathAndroid64 = @"/Plugins/Android64/libovrplatformloader.so"; + private const string PluginDisabledSuffix = @".disabled"; + + public enum PluginPlatform + { + Android32, + Android64 + } + + private static string GetCurrentProjectPath() + { + return Directory.GetParent(UnityEngine.Application.dataPath).FullName; + } + + private static string GetPlatformRootPath() + { + // use the path to OculusPluginUpdaterStub as a relative path anchor point + var so = ScriptableObject.CreateInstance(typeof(OculusPluginUpdaterStub)); + var script = MonoScript.FromScriptableObject(so); + string assetPath = AssetDatabase.GetAssetPath(script); + string editorDir = Directory.GetParent(assetPath).FullName; + string platformDir = Directory.GetParent(editorDir).FullName; + + return platformDir; + } + + private static string GetPlatformPluginPath(PluginPlatform platform) + { + string path = GetPlatformRootPath(); + switch (platform) + { + case PluginPlatform.Android32: + path += PluginSubPathAndroid32; + break; + case PluginPlatform.Android64: + path += PluginSubPathAndroid64; + break; + default: + throw new ArgumentException("Attempted to enable platform support for unsupported platform: " + platform); + } + + return path; + } + + //[UnityEditor.MenuItem("Oculus/Platform/EnforcePluginPlatformSettings")] + public static void EnforcePluginPlatformSettings() + { + EnforcePluginPlatformSettings(PluginPlatform.Android32); + EnforcePluginPlatformSettings(PluginPlatform.Android64); + } + + public static void EnforcePluginPlatformSettings(PluginPlatform platform) + { + string path = GetPlatformPluginPath(platform); + + if (!Directory.Exists(path) && !File.Exists(path)) + { + path += PluginDisabledSuffix; + } + + if ((Directory.Exists(path)) || (File.Exists(path))) + { + string basePath = GetCurrentProjectPath(); + string relPath = path.Substring(basePath.Length + 1); + + PluginImporter pi = PluginImporter.GetAtPath(relPath) as PluginImporter; + if (pi == null) + { + return; + } + + // Disable support for all platforms, then conditionally enable desired support below + pi.SetCompatibleWithEditor(false); + pi.SetCompatibleWithAnyPlatform(false); + pi.SetCompatibleWithPlatform(BuildTarget.Android, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneLinux, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneLinux64, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneLinuxUniversal, false); +#if UNITY_2017_3_OR_NEWER + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, false); +#else + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXUniversal, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, false); +#endif + + switch (platform) + { + case PluginPlatform.Android32: + pi.SetCompatibleWithPlatform(BuildTarget.Android, true); + pi.SetPlatformData(BuildTarget.Android, "CPU", "ARMv7"); + break; + case PluginPlatform.Android64: + pi.SetCompatibleWithPlatform(BuildTarget.Android, true); + pi.SetPlatformData(BuildTarget.Android, "CPU", "ARM64"); + break; + default: + throw new ArgumentException("Attempted to enable platform support for unsupported platform: " + platform); + } + + AssetDatabase.ImportAsset(relPath, ImportAssetOptions.ForceUpdate); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + AssetDatabase.SaveAssets(); + } + } + + public static void EnablePluginPlatform(PluginPlatform platform) + { + string path = GetPlatformPluginPath(platform); + string disabledPath = path + PluginDisabledSuffix; + + bool pathAlreadyExists = Directory.Exists(path) || File.Exists(path); + bool disabledPathDoesNotExist = !Directory.Exists(disabledPath) && !File.Exists(disabledPath); + + if (pathAlreadyExists || disabledPathDoesNotExist) + { + return; + } + + string basePath = GetCurrentProjectPath(); + string relPath = path.Substring(basePath.Length + 1); + string relDisabledPath = relPath + PluginDisabledSuffix; + + AssetDatabase.MoveAsset(relDisabledPath, relPath); + AssetDatabase.ImportAsset(relPath, ImportAssetOptions.ForceUpdate); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + AssetDatabase.SaveAssets(); + + // Force reserialization of platform settings meta data + EnforcePluginPlatformSettings(platform); + } + + public static void DisablePluginPlatform(PluginPlatform platform) + { + string path = GetPlatformPluginPath(platform); + string disabledPath = path + PluginDisabledSuffix; + + bool pathDoesNotExist = !Directory.Exists(path) && !File.Exists(path); + bool disabledPathAlreadyExists = Directory.Exists(disabledPath) || File.Exists(disabledPath); + + if (pathDoesNotExist || disabledPathAlreadyExists) + { + return; + } + + string basePath = GetCurrentProjectPath(); + string relPath = path.Substring(basePath.Length + 1); + string relDisabledPath = relPath + PluginDisabledSuffix; + + AssetDatabase.MoveAsset(relPath, relDisabledPath); + AssetDatabase.ImportAsset(relDisabledPath, ImportAssetOptions.ForceUpdate); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + AssetDatabase.SaveAssets(); + } + } +} diff --git a/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs.meta b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs.meta new file mode 100644 index 0000000..657e7f4 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusPlatformSettingsEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 03780432f190e734dba71a2337880cdb +timeCreated: 1523486796 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor/OculusPluginUpdaterStub.cs b/Assets/Oculus/Platform/Editor/OculusPluginUpdaterStub.cs new file mode 100644 index 0000000..e758c85 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusPluginUpdaterStub.cs @@ -0,0 +1,30 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +public class OculusPluginUpdaterStub : ScriptableObject +{ + // Stub helper class to locate script paths through Unity Editor API. + // Required to be a standalone class in a separate file or else MonoScript.FromScriptableObject() returns an empty string path. +} + diff --git a/Assets/Oculus/Platform/Editor/OculusPluginUpdaterStub.cs.meta b/Assets/Oculus/Platform/Editor/OculusPluginUpdaterStub.cs.meta new file mode 100644 index 0000000..d416105 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusPluginUpdaterStub.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af1b0142a3500574289a5ff8ae25dfa4 +timeCreated: 1543975087 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs new file mode 100644 index 0000000..e291079 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs @@ -0,0 +1,10 @@ +namespace Oculus.Platform +{ + using System; + + [Serializable] + public sealed class OculusStandalonePlatformResponse + { + public string access_token; + } +} diff --git a/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs.meta b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs.meta new file mode 100644 index 0000000..5c937b5 --- /dev/null +++ b/Assets/Oculus/Platform/Editor/OculusStandalonePlatformResponse.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 81f0418e197774a4e8d643b56923cb90 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins.meta b/Assets/Oculus/Platform/Plugins.meta new file mode 100644 index 0000000..a115cad --- /dev/null +++ b/Assets/Oculus/Platform/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bad8bd9bd589e7b4a9cc7718e7c9f370 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/Android32.meta b/Assets/Oculus/Platform/Plugins/Android32.meta new file mode 100644 index 0000000..76e6193 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/Android32.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69950baa739c75843a10007fa5625eac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so new file mode 100644 index 0000000..2f5bdfb Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so differ diff --git a/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so.meta b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so.meta new file mode 100644 index 0000000..892bdce --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/Android32/libovrplatformloader.so.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: 76a47dbf28c19ae419ef7f6a737d7e11 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/Android64.meta b/Assets/Oculus/Platform/Plugins/Android64.meta new file mode 100644 index 0000000..7c018c0 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/Android64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95e48a14a951b5f48aa93eab4eed9f2d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/Android64/libovrplatformloader.so.disabled b/Assets/Oculus/Platform/Plugins/Android64/libovrplatformloader.so.disabled new file mode 100644 index 0000000..315de50 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/Android64/libovrplatformloader.so.disabled differ diff --git a/Assets/Oculus/Platform/Plugins/Android64/libovrplatformloader.so.disabled.meta b/Assets/Oculus/Platform/Plugins/Android64/libovrplatformloader.so.disabled.meta new file mode 100644 index 0000000..5605de5 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/Android64/libovrplatformloader.so.disabled.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: 087b08fabbac0d549be78c67f8befad8 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX.meta b/Assets/Oculus/Platform/Plugins/MacOSX.meta new file mode 100644 index 0000000..dca93c1 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0eb5cc2ba6d8d254eb8201a73dc930c6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle.meta new file mode 100644 index 0000000..b2743a7 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: e74724ce19f5ffc439420e22a7aef8dc +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': OSXIntel + second: + enabled: 1 + settings: {} + - first: + '': OSXIntel64 + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents.meta new file mode 100644 index 0000000..4e25169 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e978d105528f9c4ab9ca31d469121d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist new file mode 100644 index 0000000..72e3999 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist differ diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist.meta new file mode 100644 index 0000000..2dda2e1 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Info.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 52bc96c3d8ec31242aa4556ba42e5c3f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..181c8aa --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64fc4c4c4ebbc4742ba349955706a4a0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform new file mode 100644 index 0000000..6388ea0 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform differ diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform.meta new file mode 100644 index 0000000..382e84a --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/MacOS/ovrplatform.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8f7efcbc88c05b45944fe8d19d7b18b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo new file mode 100644 index 0000000..9d5b594 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo @@ -0,0 +1 @@ +APPLWRUN diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo.meta new file mode 100644 index 0000000..4c84a9a --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/PkgInfo.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c451ff230c2c9254890a73df1d2f06db +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources.meta new file mode 100644 index 0000000..0cea739 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10a2ad3c44e535d40a80e431a20f8e4e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64.meta new file mode 100644 index 0000000..9a2fb60 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd6a4dff43722584894a07fb076aa99b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib new file mode 100644 index 0000000..1d455f4 Binary files /dev/null and b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib differ diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib.meta new file mode 100644 index 0000000..c0ac86e --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/Resources/darwin-x86_64/liboculus_p2p.dylib.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0f15a5d6dad76db4186ddb585521f379 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature.meta new file mode 100644 index 0000000..193b920 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a94950e99c1f0644a62dc5001f7627d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..e248164 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources @@ -0,0 +1,128 @@ + + + + + files + + Resources/darwin-x86_64/liboculus_p2p.dylib + + JKNLD2GjErCVA+jyjwiOflKeNFE= + + + files2 + + Resources/darwin-x86_64/liboculus_p2p.dylib + + hash2 + + 0Dix3PTkS51fqcK03xNszglO51JTVoPTad1LpFlSEzA= + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources.meta b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources.meta new file mode 100644 index 0000000..e743cc8 --- /dev/null +++ b/Assets/Oculus/Platform/Plugins/MacOSX/ovrplatform.bundle/Contents/_CodeSignature/CodeResources.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 71b8ea6ed9654514fb5a00867f5b157a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts.meta b/Assets/Oculus/Platform/Scripts.meta new file mode 100644 index 0000000..d4e0dc3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc8f6ea6b1886014095378af0d84243e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs new file mode 100644 index 0000000..f10c695 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs @@ -0,0 +1,37 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AbuseReportOptions { + + public AbuseReportOptions() { + Handle = CAPI.ovr_AbuseReportOptions_Create(); + } + + public void SetPreventPeopleChooser(bool value) { + CAPI.ovr_AbuseReportOptions_SetPreventPeopleChooser(Handle, value); + } + + public void SetReportType(AbuseReportType value) { + CAPI.ovr_AbuseReportOptions_SetReportType(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(AbuseReportOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~AbuseReportOptions() { + CAPI.ovr_AbuseReportOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs.meta b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs.meta new file mode 100644 index 0000000..c749f13 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0645da8344fc475469d13a6494437f8e +timeCreated: 1533910660 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportType.cs b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs new file mode 100644 index 0000000..ed582fa --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum AbuseReportType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("OBJECT")] + Object, + + [Description("USER")] + User, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/AbuseReportType.cs.meta b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs.meta new file mode 100644 index 0000000..0efc042 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AbuseReportType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c69cf9c4f527f9e4a8dc49125afacc7b +timeCreated: 1533910663 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AchievementType.cs b/Assets/Oculus/Platform/Scripts/AchievementType.cs new file mode 100644 index 0000000..23831c7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AchievementType.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum AchievementType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("SIMPLE")] + Simple, + + [Description("BITFIELD")] + Bitfield, + + [Description("COUNT")] + Count, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/AchievementType.cs.meta b/Assets/Oculus/Platform/Scripts/AchievementType.cs.meta new file mode 100644 index 0000000..3d7374e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AchievementType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 42d96355ad5dd4b4eab18452dbd62fa7 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs new file mode 100644 index 0000000..4572a9e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs @@ -0,0 +1,35 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System.Collections; + using System; + + public class AndroidPlatform + { + public bool Initialize(string appId) + { +#if UNITY_ANDROID + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + return CAPI.ovr_UnityInitWrapper(appId); +#else + return false; +#endif + } + + public Request AsyncInitialize(string appId) + { +#if UNITY_ANDROID + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + return new Request(CAPI.ovr_UnityInitWrapperAsynchronous(appId)); +#else + return new Request(0); +#endif + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs.meta b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs.meta new file mode 100644 index 0000000..06a50bb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/AndroidPlatform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7293b4a3c3806ad448e3b421baf984b1 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs new file mode 100644 index 0000000..9542bd8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class ApplicationOptions { + + public ApplicationOptions() { + Handle = CAPI.ovr_ApplicationOptions_Create(); + } + + public void SetDeeplinkMessage(string value) { + CAPI.ovr_ApplicationOptions_SetDeeplinkMessage(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(ApplicationOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~ApplicationOptions() { + CAPI.ovr_ApplicationOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs.meta b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs.meta new file mode 100644 index 0000000..5ebee06 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ApplicationOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d089d8a70f920a5469fca1917d5e5122 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs new file mode 100644 index 0000000..31fde02 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs @@ -0,0 +1,126 @@ +//#define VERBOSE_LOGGING +using UnityEngine; +using System.Collections; +using System; + +using Oculus.Platform; + +public class BufferedAudioStream { + const bool VerboseLogging = false; + AudioSource audio; + + float[] audioBuffer; + int writePos; + + const float bufferLengthSeconds = 0.25f; + const int sampleRate = 48000; + const int bufferSize = (int)(sampleRate * bufferLengthSeconds); + const float playbackDelayTimeSeconds = 0.05f; + + float playbackDelayRemaining; + float remainingBufferTime; + + public BufferedAudioStream(AudioSource audio) { + audioBuffer = new float[bufferSize]; + this.audio = audio; + + audio.loop = true; + audio.clip = AudioClip.Create("", bufferSize, 1, sampleRate, false); + + Stop(); + } + + public void Update () { + + if(remainingBufferTime > 0) + { +#if VERBOSE_LOGGING + Debug.Log(string.Format("current time: {0}, remainingBufferTime: {1}", Time.time, remainingBufferTime)); +#endif + + if (!audio.isPlaying && remainingBufferTime > playbackDelayTimeSeconds) + { + playbackDelayRemaining -= Time.deltaTime; + if (playbackDelayRemaining <= 0) + { +#if VERBOSE_LOGGING + Debug.Log("Starting playback"); +#endif + audio.Play(); + } + } + + if (audio.isPlaying) + { + remainingBufferTime -= Time.deltaTime; + if (remainingBufferTime < 0) + { + remainingBufferTime = 0; + } + } + } + + if (remainingBufferTime <= 0) + { + if (audio.isPlaying) + { + Debug.Log("Buffer empty, stopping " + DateTime.Now); + Stop(); + } + else + { + if (writePos != 0) + { + Debug.LogError("writePos non zero while not playing, how did this happen?"); + } + } + } + } + + void Stop() + { + audio.Stop(); + audio.time = 0; + writePos = 0; + playbackDelayRemaining = playbackDelayTimeSeconds; + } + + public void AddData(float[] samples) { + int remainingWriteLength = samples.Length; + + if(writePos > audioBuffer.Length) { + throw new Exception(); + } + + do { + int writeLength = remainingWriteLength; + int remainingSpace = audioBuffer.Length - writePos; + + if(writeLength > remainingSpace) { + writeLength = remainingSpace; + } + + Array.Copy(samples, 0, audioBuffer, writePos, writeLength); + + remainingWriteLength -= writeLength; + writePos += writeLength; + if(writePos > audioBuffer.Length) { + throw new Exception(); + } + if(writePos == audioBuffer.Length) { + writePos = 0; + } + } while(remainingWriteLength > 0); + +#if VERBOSE_LOGGING + float prev = remainingBufferTime; +#endif + remainingBufferTime += (float)samples.Length / sampleRate; +#if VERBOSE_LOGGING + Debug.Log(string.Format("previous remaining: {0}, new remaining: {1}, added {2} samples", prev, remainingBufferTime, samples.Length)); +#endif + audio.clip.SetData(audioBuffer, 0); + } + + +} diff --git a/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs.meta b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs.meta new file mode 100644 index 0000000..5180bf7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/BufferedAudioStream.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6d1f538558efdb42ae724d9bb36e538 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CAPI.cs b/Assets/Oculus/Platform/Scripts/CAPI.cs new file mode 100644 index 0000000..8545fec --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CAPI.cs @@ -0,0 +1,3273 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +#pragma warning disable 414 +namespace Oculus.Platform +{ + public class CAPI + { +#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN + #if UNITY_64 || UNITY_EDITOR_64 + public const string DLL_NAME = "LibOVRPlatform64_1"; + #else + public const string DLL_NAME = "LibOVRPlatform32_1"; + #endif +#elif UNITY_EDITOR || UNITY_EDITOR_64 + public const string DLL_NAME = "ovrplatform"; +#elif UNITY_ANDROID && OVR_STANDALONE_PLATFORM + public const string DLL_NAME = "ovrplatform_standalone"; +#else + public const string DLL_NAME = "ovrplatformloader"; +#endif + + private static UTF8Encoding nativeStringEncoding = new UTF8Encoding(false); + + [StructLayout(LayoutKind.Sequential)] + public struct ovrKeyValuePair { + public ovrKeyValuePair(string key, string value) { + key_ = key; + valueType_ = KeyValuePairType.String; + stringValue_ = value; + + intValue_ = 0; + doubleValue_ = 0.0; + } + + public ovrKeyValuePair(string key, int value) { + key_ = key; + valueType_ = KeyValuePairType.Int; + intValue_ = value; + + stringValue_ = null; + doubleValue_ = 0.0; + } + + public ovrKeyValuePair(string key, double value) { + key_ = key; + valueType_ = KeyValuePairType.Double; + doubleValue_ = value; + + stringValue_ = null; + intValue_ = 0; + } + + public string key_; + KeyValuePairType valueType_; + + public string stringValue_; + public int intValue_; + public double doubleValue_; + }; + + public static IntPtr ArrayOfStructsToIntPtr(Array ar) + { + int totalSize = 0; + for(int i=0; i dict) + { + if(dict == null || dict.Count == 0) + { + return null; + } + + var nativeCustomData = new CAPI.ovrKeyValuePair[dict.Count]; + + int i = 0; + foreach(var item in dict) + { + if(item.Value.GetType() == typeof(int)) + { + nativeCustomData[i] = new CAPI.ovrKeyValuePair(item.Key, (int)item.Value); + } + else if(item.Value.GetType() == typeof(string)) + { + nativeCustomData[i] = new CAPI.ovrKeyValuePair(item.Key, (string)item.Value); + } + else if(item.Value.GetType() == typeof(double)) + { + nativeCustomData[i] = new CAPI.ovrKeyValuePair(item.Key, (double)item.Value); + } + else + { + throw new Exception("Only int, double or string are allowed types in CustomQuery.data"); + } + i++; + } + return nativeCustomData; + } + + public static byte[] IntPtrToByteArray(IntPtr data, ulong size) + { + byte[] outArray = new byte[size]; + Marshal.Copy(data, outArray, 0, (int)size); + return outArray; + } + + [StructLayout(LayoutKind.Sequential)] + public struct ovrMatchmakingCriterion { + public ovrMatchmakingCriterion(string key, MatchmakingCriterionImportance importance) + { + key_ = key; + importance_ = importance; + + parameterArray = IntPtr.Zero; + parameterArrayCount = 0; + } + + public string key_; + public MatchmakingCriterionImportance importance_; + + public IntPtr parameterArray; + public uint parameterArrayCount; + }; + + [StructLayout(LayoutKind.Sequential)] + public struct ovrMatchmakingCustomQueryData { + public IntPtr dataArray; + public uint dataArrayCount; + + public IntPtr criterionArray; + public uint criterionArrayCount; + }; + + public static Dictionary DataStoreFromNative(IntPtr pointer) { + var d = new Dictionary(); + var size = (int)CAPI.ovr_DataStore_GetNumKeys(pointer); + for (var i = 0; i < size; i++) { + string key = CAPI.ovr_DataStore_GetKey(pointer, i); + d[key] = CAPI.ovr_DataStore_GetValue(pointer, key); + } + return d; + } + + public static string StringFromNative(IntPtr pointer) { + if (pointer == IntPtr.Zero) { + return null; + } + var l = GetNativeStringLengthNotIncludingNullTerminator(pointer); + var data = new byte[l]; + Marshal.Copy(pointer, data, 0, l); + return nativeStringEncoding.GetString(data); + } + + public static int GetNativeStringLengthNotIncludingNullTerminator(IntPtr pointer) { + var l = 0; + while (true) { + if (Marshal.ReadByte(pointer, l) == 0) { + return l; + } + l++; + } + } + + public static DateTime DateTimeFromNative(ulong seconds_since_the_one_true_epoch) { + var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0); + return dt.AddSeconds(seconds_since_the_one_true_epoch).ToLocalTime(); + } + + public static byte[] BlobFromNative(uint size, IntPtr pointer) { + var a = new byte[(int)size]; + for (int i = 0; i < (int)size; i++) { + a[i] = Marshal.ReadByte(pointer, i); + } + return a; + } + + public static byte[] FiledataFromNative(uint size, IntPtr pointer) { + var data = new byte[(int)size]; + Marshal.Copy(pointer, data, 0, (int)size); + return data; + } + + public static IntPtr StringToNative(string s) { + if (s == null) { + throw new Exception("StringFromNative: null argument"); + } + var l = nativeStringEncoding.GetByteCount(s); + var data = new byte[l + 1]; + nativeStringEncoding.GetBytes(s, 0, s.Length, data, 0); + var pointer = Marshal.AllocCoTaskMem(l + 1); + Marshal.Copy(data, 0, pointer, l + 1); + return pointer; + } + + // Initialization + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UnityInitWrapper(string appId); + + // Initializes just the global variables to use the Unity api without calling the init logic + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovr_UnityInitGlobals(IntPtr loggingCB); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_UnityInitWrapperAsynchronous(string appId); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UnityInitWrapperStandalone(string accessToken, IntPtr loggingCB); + + [StructLayout(LayoutKind.Sequential)] + public struct OculusInitParams + { + public int sType; + public string email; + public string password; + public UInt64 appId; + public string uriPrefixOverride; + } + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ovr_Platform_InitializeStandaloneOculus(ref OculusInitParams init); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ovr_PlatformInitializeWithAccessToken(UInt64 appId, string accessToken); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UnityInitWrapperWindows(string appId, IntPtr loggingCB); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_UnityInitWrapperWindowsAsynchronous(string appId, IntPtr loggingCB); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_SetDeveloperAccessToken(string accessToken); + + public static string ovr_GetLoggedInUserLocale() { + var result = StringFromNative(ovr_GetLoggedInUserLocale_Native()); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_GetLoggedInUserLocale")] + private static extern IntPtr ovr_GetLoggedInUserLocale_Native(); + + + // Message queue access + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_PopMessage(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_FreeMessage(IntPtr message); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_NetworkingPeer_GetSendPolicy(IntPtr networkingPeer); + + + // VOIP + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Voip_CreateEncoder(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_DestroyEncoder(IntPtr encoder); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Voip_CreateDecoder(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_DestroyDecoder(IntPtr decoder); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipDecoder_Decode(IntPtr obj, byte[] compressedData, ulong compressedSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Microphone_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_Destroy(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetSystemVoipPassthrough(bool passthrough); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetSystemVoipMicrophoneMuted(VoipMuteState muted); + + // Misc + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UnityResetTestPlatform(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_HTTP_GetWithMessageType(string url, int messageType); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_CrashApplication(); + + public const int VoipFilterBufferSize = 480; + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void FilterCallback([MarshalAs(UnmanagedType.LPArray, SizeConst = VoipFilterBufferSize), In, Out] short[] pcmData, UIntPtr pcmDataLength, int frequency, int numChannels); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetMicrophoneFilterCallback(FilterCallback cb); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetMicrophoneFilterCallbackWithFixedSizeBuffer(FilterCallback cb, UIntPtr bufferSizeElements); + + + // Logging + + public static void LogNewEvent(string eventName, Dictionary values) { + var eventNameNative = StringToNative(eventName); + + var count = values == null ? 0 : values.Count; + + IntPtr[] valuesNative = new IntPtr[count * 2]; + + if (count > 0) { + int i = 0; + foreach(var item in values) { + valuesNative[i * 2 + 0] = StringToNative(item.Key); + valuesNative[i * 2 + 1] = StringToNative(item.Value); + i++; + } + } + + ovr_Log_NewEvent(eventNameNative, valuesNative, (UIntPtr)count); + + Marshal.FreeCoTaskMem(eventNameNative); + foreach (var nativeItem in valuesNative) { + Marshal.FreeCoTaskMem(nativeItem); + } + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Log_NewEvent(IntPtr eventName, IntPtr[] values, UIntPtr length); + + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_ApplicationLifecycle_GetLaunchDetails(); + + public static ulong ovr_HTTP_StartTransfer(string url, ovrKeyValuePair[] headers) { + IntPtr url_native = StringToNative(url); + UIntPtr headers_length = (UIntPtr)headers.Length; + var result = (ovr_HTTP_StartTransfer_Native(url_native, headers, headers_length)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_StartTransfer")] + private static extern ulong ovr_HTTP_StartTransfer_Native(IntPtr url, ovrKeyValuePair[] headers, UIntPtr numItems); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_HTTP_Write(ulong transferId, byte[] bytes, UIntPtr length); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_HTTP_WriteEOM(ulong transferId); + + public static string ovr_Message_GetStringForJavascript(IntPtr message) { + var result = StringFromNative(ovr_Message_GetStringForJavascript_Native(message)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Message_GetStringForJavascript")] + private static extern IntPtr ovr_Message_GetStringForJavascript_Native(IntPtr message); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_Accept(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_AcceptForCurrentRoom(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_Close(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_CloseForCurrentRoom(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Net_Connect(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_IsConnected(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Net_Ping(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Net_ReadPacket(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_SendPacket(UInt64 userID, UIntPtr length, byte[] bytes, SendPolicy policy); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Net_SendPacketToCurrentRoom(UIntPtr length, byte[] bytes, SendPolicy policy); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Party_PluginGetSharedMemHandle(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipMuteState ovr_Party_PluginGetVoipMicrophoneMuted(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Party_PluginGetVoipPassthrough(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SystemVoipStatus ovr_Party_PluginGetVoipStatus(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_Accept(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipDtxState ovr_Voip_GetIsConnectionUsingDtx(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipBitrate ovr_Voip_GetLocalBitrate(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetOutputBufferMaxSize(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCM(UInt64 senderID, Int16[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMFloat(UInt64 senderID, float[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMSize(UInt64 senderID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMWithTimestamp(UInt64 senderID, Int16[] outputBuffer, UIntPtr outputBufferNumElements, UInt32[] timestamp); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Voip_GetPCMWithTimestampFloat(UInt64 senderID, float[] outputBuffer, UIntPtr outputBufferNumElements, UInt32[] timestamp); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipBitrate ovr_Voip_GetRemoteBitrate(UInt64 peerID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt32 ovr_Voip_GetSyncTimestamp(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern long ovr_Voip_GetSyncTimestampDifference(UInt32 lhs, UInt32 rhs); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipMuteState ovr_Voip_GetSystemVoipMicrophoneMuted(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SystemVoipStatus ovr_Voip_GetSystemVoipStatus(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetMicrophoneMuted(VoipMuteState state); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetNewConnectionOptions(IntPtr voipOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_SetOutputSampleRate(VoipSampleRate rate); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_Start(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Voip_Stop(UInt64 userID); + + public static ulong ovr_Achievements_AddCount(string name, ulong count) { + IntPtr name_native = StringToNative(name); + var result = (ovr_Achievements_AddCount_Native(name_native, count)); + Marshal.FreeCoTaskMem(name_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Achievements_AddCount")] + private static extern ulong ovr_Achievements_AddCount_Native(IntPtr name, ulong count); + + public static ulong ovr_Achievements_AddFields(string name, string fields) { + IntPtr name_native = StringToNative(name); + IntPtr fields_native = StringToNative(fields); + var result = (ovr_Achievements_AddFields_Native(name_native, fields_native)); + Marshal.FreeCoTaskMem(name_native); + Marshal.FreeCoTaskMem(fields_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Achievements_AddFields")] + private static extern ulong ovr_Achievements_AddFields_Native(IntPtr name, IntPtr fields); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetAllDefinitions(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetAllProgress(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetDefinitionsByName(string[] names, int count); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Achievements_GetProgressByName(string[] names, int count); + + public static ulong ovr_Achievements_Unlock(string name) { + IntPtr name_native = StringToNative(name); + var result = (ovr_Achievements_Unlock_Native(name_native)); + Marshal.FreeCoTaskMem(name_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Achievements_Unlock")] + private static extern ulong ovr_Achievements_Unlock_Native(IntPtr name); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_ExecuteCoordinatedLaunch(ulong appID, ulong roomID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_GetInstalledApplications(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_GetVersion(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Application_LaunchOtherApp(UInt64 appID, IntPtr deeplink_options); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_ApplicationLifecycle_GetRegisteredPIDs(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_ApplicationLifecycle_GetSessionKey(); + + public static ulong ovr_ApplicationLifecycle_RegisterSessionKey(string sessionKey) { + IntPtr sessionKey_native = StringToNative(sessionKey); + var result = (ovr_ApplicationLifecycle_RegisterSessionKey_Native(sessionKey_native)); + Marshal.FreeCoTaskMem(sessionKey_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationLifecycle_RegisterSessionKey")] + private static extern ulong ovr_ApplicationLifecycle_RegisterSessionKey_Native(IntPtr sessionKey); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_Delete(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DeleteById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_DeleteByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_DeleteByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_DeleteByName")] + private static extern ulong ovr_AssetFile_DeleteByName_Native(IntPtr assetFileName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_Download(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DownloadById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_DownloadByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_DownloadByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_DownloadByName")] + private static extern ulong ovr_AssetFile_DownloadByName_Native(IntPtr assetFileName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DownloadCancel(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_DownloadCancelById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_DownloadCancelByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_DownloadCancelByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_DownloadCancelByName")] + private static extern ulong ovr_AssetFile_DownloadCancelByName_Native(IntPtr assetFileName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_GetList(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_Status(UInt64 assetFileID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AssetFile_StatusById(UInt64 assetFileID); + + public static ulong ovr_AssetFile_StatusByName(string assetFileName) { + IntPtr assetFileName_native = StringToNative(assetFileName); + var result = (ovr_AssetFile_StatusByName_Native(assetFileName_native)); + Marshal.FreeCoTaskMem(assetFileName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFile_StatusByName")] + private static extern ulong ovr_AssetFile_StatusByName_Native(IntPtr assetFileName); + + public static ulong ovr_Avatar_UpdateMetaData(string avatarMetaData, string imageFilePath) { + IntPtr avatarMetaData_native = StringToNative(avatarMetaData); + IntPtr imageFilePath_native = StringToNative(imageFilePath); + var result = (ovr_Avatar_UpdateMetaData_Native(avatarMetaData_native, imageFilePath_native)); + Marshal.FreeCoTaskMem(avatarMetaData_native); + Marshal.FreeCoTaskMem(imageFilePath_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Avatar_UpdateMetaData")] + private static extern ulong ovr_Avatar_UpdateMetaData_Native(IntPtr avatarMetaData, IntPtr imageFilePath); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Cal_FinalizeApplication(UInt64 groupingObject, UInt64[] userIDs, int numUserIDs, UInt64 finalized_application_ID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Cal_GetSuggestedApplications(UInt64 groupingObject, UInt64[] userIDs, int numUserIDs); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Cal_ProposeApplication(UInt64 groupingObject, UInt64[] userIDs, int numUserIDs, UInt64 proposed_application_ID); + + public static ulong ovr_CloudStorage_Delete(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_Delete_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_Delete")] + private static extern ulong ovr_CloudStorage_Delete_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_Load(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_Load_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_Load")] + private static extern ulong ovr_CloudStorage_Load_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_LoadBucketMetadata(string bucket) { + IntPtr bucket_native = StringToNative(bucket); + var result = (ovr_CloudStorage_LoadBucketMetadata_Native(bucket_native)); + Marshal.FreeCoTaskMem(bucket_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadBucketMetadata")] + private static extern ulong ovr_CloudStorage_LoadBucketMetadata_Native(IntPtr bucket); + + public static ulong ovr_CloudStorage_LoadConflictMetadata(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_LoadConflictMetadata_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadConflictMetadata")] + private static extern ulong ovr_CloudStorage_LoadConflictMetadata_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_LoadHandle(string handle) { + IntPtr handle_native = StringToNative(handle); + var result = (ovr_CloudStorage_LoadHandle_Native(handle_native)); + Marshal.FreeCoTaskMem(handle_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadHandle")] + private static extern ulong ovr_CloudStorage_LoadHandle_Native(IntPtr handle); + + public static ulong ovr_CloudStorage_LoadMetadata(string bucket, string key) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + var result = (ovr_CloudStorage_LoadMetadata_Native(bucket_native, key_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_LoadMetadata")] + private static extern ulong ovr_CloudStorage_LoadMetadata_Native(IntPtr bucket, IntPtr key); + + public static ulong ovr_CloudStorage_ResolveKeepLocal(string bucket, string key, string remoteHandle) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + IntPtr remoteHandle_native = StringToNative(remoteHandle); + var result = (ovr_CloudStorage_ResolveKeepLocal_Native(bucket_native, key_native, remoteHandle_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(remoteHandle_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_ResolveKeepLocal")] + private static extern ulong ovr_CloudStorage_ResolveKeepLocal_Native(IntPtr bucket, IntPtr key, IntPtr remoteHandle); + + public static ulong ovr_CloudStorage_ResolveKeepRemote(string bucket, string key, string remoteHandle) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + IntPtr remoteHandle_native = StringToNative(remoteHandle); + var result = (ovr_CloudStorage_ResolveKeepRemote_Native(bucket_native, key_native, remoteHandle_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(remoteHandle_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_ResolveKeepRemote")] + private static extern ulong ovr_CloudStorage_ResolveKeepRemote_Native(IntPtr bucket, IntPtr key, IntPtr remoteHandle); + + public static ulong ovr_CloudStorage_Save(string bucket, string key, byte[] data, uint dataSize, long counter, string extraData) { + IntPtr bucket_native = StringToNative(bucket); + IntPtr key_native = StringToNative(key); + IntPtr extraData_native = StringToNative(extraData); + var result = (ovr_CloudStorage_Save_Native(bucket_native, key_native, data, dataSize, counter, extraData_native)); + Marshal.FreeCoTaskMem(bucket_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(extraData_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage_Save")] + private static extern ulong ovr_CloudStorage_Save_Native(IntPtr bucket, IntPtr key, byte[] data, uint dataSize, long counter, IntPtr extraData); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_CloudStorage2_GetUserDirectoryPath(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Colocation_GetCurrentMapUuid(); + + public static ulong ovr_Colocation_RequestMap(string uuid) { + IntPtr uuid_native = StringToNative(uuid); + var result = (ovr_Colocation_RequestMap_Native(uuid_native)); + Marshal.FreeCoTaskMem(uuid_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Colocation_RequestMap")] + private static extern ulong ovr_Colocation_RequestMap_Native(IntPtr uuid); + + public static ulong ovr_Colocation_ShareMap(string uuid) { + IntPtr uuid_native = StringToNative(uuid); + var result = (ovr_Colocation_ShareMap_Native(uuid_native)); + Marshal.FreeCoTaskMem(uuid_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Colocation_ShareMap")] + private static extern ulong ovr_Colocation_ShareMap_Native(IntPtr uuid); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Entitlement_GetIsViewerEntitled(); + + public static ulong ovr_GraphAPI_Get(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_GraphAPI_Get_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_GraphAPI_Get")] + private static extern ulong ovr_GraphAPI_Get_Native(IntPtr url); + + public static ulong ovr_GraphAPI_Post(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_GraphAPI_Post_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_GraphAPI_Post")] + private static extern ulong ovr_GraphAPI_Post_Native(IntPtr url); + + public static ulong ovr_HTTP_Get(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_HTTP_Get_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_Get")] + private static extern ulong ovr_HTTP_Get_Native(IntPtr url); + + public static ulong ovr_HTTP_GetToFile(string url, string diskFile) { + IntPtr url_native = StringToNative(url); + IntPtr diskFile_native = StringToNative(diskFile); + var result = (ovr_HTTP_GetToFile_Native(url_native, diskFile_native)); + Marshal.FreeCoTaskMem(url_native); + Marshal.FreeCoTaskMem(diskFile_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_GetToFile")] + private static extern ulong ovr_HTTP_GetToFile_Native(IntPtr url, IntPtr diskFile); + + public static ulong ovr_HTTP_MultiPartPost(string url, string filepath_param_name, string filepath, string access_token, ovrKeyValuePair[] post_params) { + IntPtr url_native = StringToNative(url); + IntPtr filepath_param_name_native = StringToNative(filepath_param_name); + IntPtr filepath_native = StringToNative(filepath); + IntPtr access_token_native = StringToNative(access_token); + UIntPtr post_params_length = (UIntPtr)post_params.Length; + var result = (ovr_HTTP_MultiPartPost_Native(url_native, filepath_param_name_native, filepath_native, access_token_native, post_params, post_params_length)); + Marshal.FreeCoTaskMem(url_native); + Marshal.FreeCoTaskMem(filepath_param_name_native); + Marshal.FreeCoTaskMem(filepath_native); + Marshal.FreeCoTaskMem(access_token_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_MultiPartPost")] + private static extern ulong ovr_HTTP_MultiPartPost_Native(IntPtr url, IntPtr filepath_param_name, IntPtr filepath, IntPtr access_token, ovrKeyValuePair[] post_params, UIntPtr numItems); + + public static ulong ovr_HTTP_Post(string url) { + IntPtr url_native = StringToNative(url); + var result = (ovr_HTTP_Post_Native(url_native)); + Marshal.FreeCoTaskMem(url_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_HTTP_Post")] + private static extern ulong ovr_HTTP_Post_Native(IntPtr url); + + public static ulong ovr_IAP_ConsumePurchase(string sku) { + IntPtr sku_native = StringToNative(sku); + var result = (ovr_IAP_ConsumePurchase_Native(sku_native)); + Marshal.FreeCoTaskMem(sku_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_IAP_ConsumePurchase")] + private static extern ulong ovr_IAP_ConsumePurchase_Native(IntPtr sku); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_IAP_GetProductsBySKU(string[] skus, int count); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_IAP_GetViewerPurchases(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_IAP_GetViewerPurchasesDurableCache(); + + public static ulong ovr_IAP_LaunchCheckoutFlow(string sku) { + IntPtr sku_native = StringToNative(sku); + var result = (ovr_IAP_LaunchCheckoutFlow_Native(sku_native)); + Marshal.FreeCoTaskMem(sku_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_IAP_LaunchCheckoutFlow")] + private static extern ulong ovr_IAP_LaunchCheckoutFlow_Native(IntPtr sku); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_LanguagePack_GetCurrent(); + + public static ulong ovr_LanguagePack_SetCurrent(string tag) { + IntPtr tag_native = StringToNative(tag); + var result = (ovr_LanguagePack_SetCurrent_Native(tag_native)); + Marshal.FreeCoTaskMem(tag_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LanguagePack_SetCurrent")] + private static extern ulong ovr_LanguagePack_SetCurrent_Native(IntPtr tag); + + public static ulong ovr_Leaderboard_GetEntries(string leaderboardName, int limit, LeaderboardFilterType filter, LeaderboardStartAt startAt) { + IntPtr leaderboardName_native = StringToNative(leaderboardName); + var result = (ovr_Leaderboard_GetEntries_Native(leaderboardName_native, limit, filter, startAt)); + Marshal.FreeCoTaskMem(leaderboardName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Leaderboard_GetEntries")] + private static extern ulong ovr_Leaderboard_GetEntries_Native(IntPtr leaderboardName, int limit, LeaderboardFilterType filter, LeaderboardStartAt startAt); + + public static ulong ovr_Leaderboard_GetEntriesAfterRank(string leaderboardName, int limit, ulong afterRank) { + IntPtr leaderboardName_native = StringToNative(leaderboardName); + var result = (ovr_Leaderboard_GetEntriesAfterRank_Native(leaderboardName_native, limit, afterRank)); + Marshal.FreeCoTaskMem(leaderboardName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Leaderboard_GetEntriesAfterRank")] + private static extern ulong ovr_Leaderboard_GetEntriesAfterRank_Native(IntPtr leaderboardName, int limit, ulong afterRank); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Leaderboard_GetNextEntries(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Leaderboard_GetPreviousEntries(IntPtr handle); + + public static ulong ovr_Leaderboard_WriteEntry(string leaderboardName, long score, byte[] extraData, uint extraDataLength, bool forceUpdate) { + IntPtr leaderboardName_native = StringToNative(leaderboardName); + var result = (ovr_Leaderboard_WriteEntry_Native(leaderboardName_native, score, extraData, extraDataLength, forceUpdate)); + Marshal.FreeCoTaskMem(leaderboardName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Leaderboard_WriteEntry")] + private static extern ulong ovr_Leaderboard_WriteEntry_Native(IntPtr leaderboardName, long score, byte[] extraData, uint extraDataLength, bool forceUpdate); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_GetStatus(); + + public static ulong ovr_Livestreaming_IsAllowedForApplication(string packageName) { + IntPtr packageName_native = StringToNative(packageName); + var result = (ovr_Livestreaming_IsAllowedForApplication_Native(packageName_native)); + Marshal.FreeCoTaskMem(packageName_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Livestreaming_IsAllowedForApplication")] + private static extern ulong ovr_Livestreaming_IsAllowedForApplication_Native(IntPtr packageName); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_PauseStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_ResumeStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StartPartyStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StartStream(LivestreamingAudience audience, LivestreamingMicrophoneStatus micStatus); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StopPartyStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_StopStream(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_UpdateCommentsOverlayVisibility(bool isVisible); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Livestreaming_UpdateMicStatus(LivestreamingMicrophoneStatus micStatus); + + public static ulong ovr_Matchmaking_Browse(string pool, IntPtr customQueryData) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Browse_Native(pool_native, customQueryData)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Browse")] + private static extern ulong ovr_Matchmaking_Browse_Native(IntPtr pool, IntPtr customQueryData); + + public static ulong ovr_Matchmaking_Browse2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Browse2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Browse2")] + private static extern ulong ovr_Matchmaking_Browse2_Native(IntPtr pool, IntPtr matchmakingOptions); + + public static ulong ovr_Matchmaking_Cancel(string pool, string requestHash) { + IntPtr pool_native = StringToNative(pool); + IntPtr requestHash_native = StringToNative(requestHash); + var result = (ovr_Matchmaking_Cancel_Native(pool_native, requestHash_native)); + Marshal.FreeCoTaskMem(pool_native); + Marshal.FreeCoTaskMem(requestHash_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Cancel")] + private static extern ulong ovr_Matchmaking_Cancel_Native(IntPtr pool, IntPtr requestHash); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_Cancel2(); + + public static ulong ovr_Matchmaking_CreateAndEnqueueRoom(string pool, uint maxUsers, bool subscribeToUpdates, IntPtr customQueryData) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateAndEnqueueRoom_Native(pool_native, maxUsers, subscribeToUpdates, customQueryData)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateAndEnqueueRoom")] + private static extern ulong ovr_Matchmaking_CreateAndEnqueueRoom_Native(IntPtr pool, uint maxUsers, bool subscribeToUpdates, IntPtr customQueryData); + + public static ulong ovr_Matchmaking_CreateAndEnqueueRoom2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateAndEnqueueRoom2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateAndEnqueueRoom2")] + private static extern ulong ovr_Matchmaking_CreateAndEnqueueRoom2_Native(IntPtr pool, IntPtr matchmakingOptions); + + public static ulong ovr_Matchmaking_CreateRoom(string pool, uint maxUsers, bool subscribeToUpdates) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateRoom_Native(pool_native, maxUsers, subscribeToUpdates)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateRoom")] + private static extern ulong ovr_Matchmaking_CreateRoom_Native(IntPtr pool, uint maxUsers, bool subscribeToUpdates); + + public static ulong ovr_Matchmaking_CreateRoom2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_CreateRoom2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_CreateRoom2")] + private static extern ulong ovr_Matchmaking_CreateRoom2_Native(IntPtr pool, IntPtr matchmakingOptions); + + public static ulong ovr_Matchmaking_Enqueue(string pool, IntPtr customQueryData) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Enqueue_Native(pool_native, customQueryData)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Enqueue")] + private static extern ulong ovr_Matchmaking_Enqueue_Native(IntPtr pool, IntPtr customQueryData); + + public static ulong ovr_Matchmaking_Enqueue2(string pool, IntPtr matchmakingOptions) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_Enqueue2_Native(pool_native, matchmakingOptions)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_Enqueue2")] + private static extern ulong ovr_Matchmaking_Enqueue2_Native(IntPtr pool, IntPtr matchmakingOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_EnqueueRoom(UInt64 roomID, IntPtr customQueryData); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_EnqueueRoom2(UInt64 roomID, IntPtr matchmakingOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_GetAdminSnapshot(); + + public static ulong ovr_Matchmaking_GetStats(string pool, uint maxLevel, MatchmakingStatApproach approach) { + IntPtr pool_native = StringToNative(pool); + var result = (ovr_Matchmaking_GetStats_Native(pool_native, maxLevel, approach)); + Marshal.FreeCoTaskMem(pool_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_GetStats")] + private static extern ulong ovr_Matchmaking_GetStats_Native(IntPtr pool, uint maxLevel, MatchmakingStatApproach approach); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_JoinRoom(UInt64 roomID, bool subscribeToUpdates); + + public static ulong ovr_Matchmaking_ReportResultInsecure(UInt64 roomID, ovrKeyValuePair[] data) { + UIntPtr data_length = (UIntPtr)data.Length; + var result = (ovr_Matchmaking_ReportResultInsecure_Native(roomID, data, data_length)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Matchmaking_ReportResultInsecure")] + private static extern ulong ovr_Matchmaking_ReportResultInsecure_Native(UInt64 roomID, ovrKeyValuePair[] data, UIntPtr numItems); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Matchmaking_StartMatch(UInt64 roomID); + + public static ulong ovr_Media_ShareToFacebook(string postTextSuggestion, string filePath, MediaContentType contentType) { + IntPtr postTextSuggestion_native = StringToNative(postTextSuggestion); + IntPtr filePath_native = StringToNative(filePath); + var result = (ovr_Media_ShareToFacebook_Native(postTextSuggestion_native, filePath_native, contentType)); + Marshal.FreeCoTaskMem(postTextSuggestion_native); + Marshal.FreeCoTaskMem(filePath_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Media_ShareToFacebook")] + private static extern ulong ovr_Media_ShareToFacebook_Native(IntPtr postTextSuggestion, IntPtr filePath, MediaContentType contentType); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Notification_GetRoomInvites(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Notification_MarkAsRead(UInt64 notificationID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_GatherInApplication(UInt64 partyID, UInt64 appID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Get(UInt64 partyID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_GetCurrent(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_GetCurrentForUser(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Invite(UInt64 partyID, UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Join(UInt64 partyID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Party_Leave(UInt64 partyID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_RichPresence_Clear(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_RichPresence_GetDestinations(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_RichPresence_Set(IntPtr richPresenceOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_CreateAndJoinPrivate(RoomJoinPolicy joinPolicy, uint maxUsers, bool subscribeToUpdates); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_CreateAndJoinPrivate2(RoomJoinPolicy joinPolicy, uint maxUsers, IntPtr roomOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Get(UInt64 roomID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetCurrent(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetCurrentForUser(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetInvitableUsers(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetInvitableUsers2(IntPtr roomOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetModeratedRooms(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_GetSocialRooms(UInt64 appID); + + public static ulong ovr_Room_InviteUser(UInt64 roomID, string inviteToken) { + IntPtr inviteToken_native = StringToNative(inviteToken); + var result = (ovr_Room_InviteUser_Native(roomID, inviteToken_native)); + Marshal.FreeCoTaskMem(inviteToken_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_InviteUser")] + private static extern ulong ovr_Room_InviteUser_Native(UInt64 roomID, IntPtr inviteToken); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Join(UInt64 roomID, bool subscribeToUpdates); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Join2(UInt64 roomID, IntPtr roomOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_KickUser(UInt64 roomID, UInt64 userID, int kickDurationSeconds); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_LaunchInvitableUserFlow(UInt64 roomID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_Leave(UInt64 roomID); + + public static ulong ovr_Room_SetDescription(UInt64 roomID, string description) { + IntPtr description_native = StringToNative(description); + var result = (ovr_Room_SetDescription_Native(roomID, description_native)); + Marshal.FreeCoTaskMem(description_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_SetDescription")] + private static extern ulong ovr_Room_SetDescription_Native(UInt64 roomID, IntPtr description); + + public static ulong ovr_Room_UpdateDataStore(UInt64 roomID, ovrKeyValuePair[] data) { + UIntPtr data_length = (UIntPtr)data.Length; + var result = (ovr_Room_UpdateDataStore_Native(roomID, data, data_length)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_UpdateDataStore")] + private static extern ulong ovr_Room_UpdateDataStore_Native(UInt64 roomID, ovrKeyValuePair[] data, UIntPtr numItems); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_UpdateMembershipLockStatus(UInt64 roomID, RoomMembershipLockStatus membershipLockStatus); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_UpdateOwner(UInt64 roomID, UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Room_UpdatePrivateRoomJoinPolicy(UInt64 roomID, RoomJoinPolicy newJoinPolicy); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_SystemPermissions_GetStatus(PermissionType permType); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_SystemPermissions_LaunchDeeplink(PermissionType permType); + + public static ulong ovr_User_CancelRecordingForReportFlow(string recordingUUID) { + IntPtr recordingUUID_native = StringToNative(recordingUUID); + var result = (ovr_User_CancelRecordingForReportFlow_Native(recordingUUID_native)); + Marshal.FreeCoTaskMem(recordingUUID_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_CancelRecordingForReportFlow")] + private static extern ulong ovr_User_CancelRecordingForReportFlow_Native(IntPtr recordingUUID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_Get(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetAccessToken(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLinkedAccounts(IntPtr userOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUser(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUserFriends(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUserFriendsAndRooms(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetLoggedInUserRecentlyMetUsersAndRooms(IntPtr userOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetOrgScopedID(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetSdkAccounts(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_GetUserProof(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchBlockFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchFriendRequestFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchProfile(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchReportFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchReportFlow2(UInt64 optionalUserID, IntPtr abuseReportOptions); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_LaunchUnblockFlow(UInt64 userID); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_NewEntitledTestUser(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_NewTestUser(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_NewTestUserFriends(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_User_StartRecordingForReportFlow(); + + public static ulong ovr_User_StopRecordingAndLaunchReportFlow(UInt64 optionalUserID, string optionalRecordingUUID) { + IntPtr optionalRecordingUUID_native = StringToNative(optionalRecordingUUID); + var result = (ovr_User_StopRecordingAndLaunchReportFlow_Native(optionalUserID, optionalRecordingUUID_native)); + Marshal.FreeCoTaskMem(optionalRecordingUUID_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_StopRecordingAndLaunchReportFlow")] + private static extern ulong ovr_User_StopRecordingAndLaunchReportFlow_Native(UInt64 optionalUserID, IntPtr optionalRecordingUUID); + + public static ulong ovr_User_StopRecordingAndLaunchReportFlow2(UInt64 optionalUserID, string optionalRecordingUUID, IntPtr abuseReportOptions) { + IntPtr optionalRecordingUUID_native = StringToNative(optionalRecordingUUID); + var result = (ovr_User_StopRecordingAndLaunchReportFlow2_Native(optionalUserID, optionalRecordingUUID_native, abuseReportOptions)); + Marshal.FreeCoTaskMem(optionalRecordingUUID_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_StopRecordingAndLaunchReportFlow2")] + private static extern ulong ovr_User_StopRecordingAndLaunchReportFlow2_Native(UInt64 optionalUserID, IntPtr optionalRecordingUUID, IntPtr abuseReportOptions); + + public static ulong ovr_User_TestUserCreateDeviceManifest(string deviceID, UInt64[] appIDs, int numAppIDs) { + IntPtr deviceID_native = StringToNative(deviceID); + var result = (ovr_User_TestUserCreateDeviceManifest_Native(deviceID_native, appIDs, numAppIDs)); + Marshal.FreeCoTaskMem(deviceID_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_TestUserCreateDeviceManifest")] + private static extern ulong ovr_User_TestUserCreateDeviceManifest_Native(IntPtr deviceID, UInt64[] appIDs, int numAppIDs); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Voip_SetSystemVoipSuppressed(bool suppressed); + + public static string ovr_AbuseReportRecording_GetRecordingUuid(IntPtr obj) { + var result = StringFromNative(ovr_AbuseReportRecording_GetRecordingUuid_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AbuseReportRecording_GetRecordingUuid")] + private static extern IntPtr ovr_AbuseReportRecording_GetRecordingUuid_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_AchievementDefinition_GetBitfieldLength(IntPtr obj); + + public static string ovr_AchievementDefinition_GetName(IntPtr obj) { + var result = StringFromNative(ovr_AchievementDefinition_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementDefinition_GetName")] + private static extern IntPtr ovr_AchievementDefinition_GetName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AchievementDefinition_GetTarget(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern AchievementType ovr_AchievementDefinition_GetType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AchievementDefinitionArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_AchievementDefinitionArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_AchievementDefinitionArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementDefinitionArray_GetNextUrl")] + private static extern IntPtr ovr_AchievementDefinitionArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_AchievementDefinitionArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementDefinitionArray_HasNextPage(IntPtr obj); + + public static string ovr_AchievementProgress_GetBitfield(IntPtr obj) { + var result = StringFromNative(ovr_AchievementProgress_GetBitfield_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgress_GetBitfield")] + private static extern IntPtr ovr_AchievementProgress_GetBitfield_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_AchievementProgress_GetCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementProgress_GetIsUnlocked(IntPtr obj); + + public static string ovr_AchievementProgress_GetName(IntPtr obj) { + var result = StringFromNative(ovr_AchievementProgress_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgress_GetName")] + private static extern IntPtr ovr_AchievementProgress_GetName_Native(IntPtr obj); + + public static DateTime ovr_AchievementProgress_GetUnlockTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_AchievementProgress_GetUnlockTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgress_GetUnlockTime")] + private static extern ulong ovr_AchievementProgress_GetUnlockTime_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AchievementProgressArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_AchievementProgressArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_AchievementProgressArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementProgressArray_GetNextUrl")] + private static extern IntPtr ovr_AchievementProgressArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_AchievementProgressArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementProgressArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AchievementUpdate_GetJustUnlocked(IntPtr obj); + + public static string ovr_AchievementUpdate_GetName(IntPtr obj) { + var result = StringFromNative(ovr_AchievementUpdate_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AchievementUpdate_GetName")] + private static extern IntPtr ovr_AchievementUpdate_GetName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Application_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_ApplicationVersion_GetCurrentCode(IntPtr obj); + + public static string ovr_ApplicationVersion_GetCurrentName(IntPtr obj) { + var result = StringFromNative(ovr_ApplicationVersion_GetCurrentName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationVersion_GetCurrentName")] + private static extern IntPtr ovr_ApplicationVersion_GetCurrentName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_ApplicationVersion_GetLatestCode(IntPtr obj); + + public static string ovr_ApplicationVersion_GetLatestName(IntPtr obj) { + var result = StringFromNative(ovr_ApplicationVersion_GetLatestName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationVersion_GetLatestName")] + private static extern IntPtr ovr_ApplicationVersion_GetLatestName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetDetails_GetAssetId(IntPtr obj); + + public static string ovr_AssetDetails_GetAssetType(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetAssetType_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetAssetType")] + private static extern IntPtr ovr_AssetDetails_GetAssetType_Native(IntPtr obj); + + public static string ovr_AssetDetails_GetDownloadStatus(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetDownloadStatus_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetDownloadStatus")] + private static extern IntPtr ovr_AssetDetails_GetDownloadStatus_Native(IntPtr obj); + + public static string ovr_AssetDetails_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetFilepath")] + private static extern IntPtr ovr_AssetDetails_GetFilepath_Native(IntPtr obj); + + public static string ovr_AssetDetails_GetIapStatus(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetIapStatus_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetIapStatus")] + private static extern IntPtr ovr_AssetDetails_GetIapStatus_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AssetDetails_GetLanguage(IntPtr obj); + + public static string ovr_AssetDetails_GetMetadata(IntPtr obj) { + var result = StringFromNative(ovr_AssetDetails_GetMetadata_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetDetails_GetMetadata")] + private static extern IntPtr ovr_AssetDetails_GetMetadata_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AssetDetailsArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_AssetDetailsArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDeleteResult_GetAssetFileId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDeleteResult_GetAssetId(IntPtr obj); + + public static string ovr_AssetFileDeleteResult_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetFileDeleteResult_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFileDeleteResult_GetFilepath")] + private static extern IntPtr ovr_AssetFileDeleteResult_GetFilepath_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AssetFileDeleteResult_GetSuccess(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadCancelResult_GetAssetFileId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadCancelResult_GetAssetId(IntPtr obj); + + public static string ovr_AssetFileDownloadCancelResult_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetFileDownloadCancelResult_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFileDownloadCancelResult_GetFilepath")] + private static extern IntPtr ovr_AssetFileDownloadCancelResult_GetFilepath_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AssetFileDownloadCancelResult_GetSuccess(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadResult_GetAssetId(IntPtr obj); + + public static string ovr_AssetFileDownloadResult_GetFilepath(IntPtr obj) { + var result = StringFromNative(ovr_AssetFileDownloadResult_GetFilepath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_AssetFileDownloadResult_GetFilepath")] + private static extern IntPtr ovr_AssetFileDownloadResult_GetFilepath_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadUpdate_GetAssetFileId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_AssetFileDownloadUpdate_GetAssetId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_AssetFileDownloadUpdate_GetBytesTotal(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_AssetFileDownloadUpdate_GetBytesTransferred(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_AssetFileDownloadUpdate_GetCompleted(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_CalApplicationFinalized_GetCountdownMS(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_CalApplicationFinalized_GetID(IntPtr obj); + + public static string ovr_CalApplicationFinalized_GetLaunchDetails(IntPtr obj) { + var result = StringFromNative(ovr_CalApplicationFinalized_GetLaunchDetails_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CalApplicationFinalized_GetLaunchDetails")] + private static extern IntPtr ovr_CalApplicationFinalized_GetLaunchDetails_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_CalApplicationProposed_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_CalApplicationSuggestion_GetID(IntPtr obj); + + public static string ovr_CalApplicationSuggestion_GetSocialContext(IntPtr obj) { + var result = StringFromNative(ovr_CalApplicationSuggestion_GetSocialContext_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CalApplicationSuggestion_GetSocialContext")] + private static extern IntPtr ovr_CalApplicationSuggestion_GetSocialContext_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_CalApplicationSuggestionArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_CalApplicationSuggestionArray_GetSize(IntPtr obj); + + public static string ovr_CloudStorage2UserDirectoryPathResponse_GetPath(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorage2UserDirectoryPathResponse_GetPath_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorage2UserDirectoryPathResponse_GetPath")] + private static extern IntPtr ovr_CloudStorage2UserDirectoryPathResponse_GetPath_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_CloudStorageConflictMetadata_GetLocal(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_CloudStorageConflictMetadata_GetRemote(IntPtr obj); + + public static string ovr_CloudStorageData_GetBucket(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageData_GetBucket_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageData_GetBucket")] + private static extern IntPtr ovr_CloudStorageData_GetBucket_Native(IntPtr obj); + + public static byte[] ovr_CloudStorageData_GetData(IntPtr obj) { + var result = FiledataFromNative(ovr_CloudStorageData_GetDataSize(obj), ovr_CloudStorageData_GetData_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageData_GetData")] + private static extern IntPtr ovr_CloudStorageData_GetData_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_CloudStorageData_GetDataSize(IntPtr obj); + + public static string ovr_CloudStorageData_GetKey(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageData_GetKey_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageData_GetKey")] + private static extern IntPtr ovr_CloudStorageData_GetKey_Native(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetBucket(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetBucket_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetBucket")] + private static extern IntPtr ovr_CloudStorageMetadata_GetBucket_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern long ovr_CloudStorageMetadata_GetCounter(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_CloudStorageMetadata_GetDataSize(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetExtraData(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetExtraData_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetExtraData")] + private static extern IntPtr ovr_CloudStorageMetadata_GetExtraData_Native(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetKey(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetKey_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetKey")] + private static extern IntPtr ovr_CloudStorageMetadata_GetKey_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_CloudStorageMetadata_GetSaveTime(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern CloudStorageDataStatus ovr_CloudStorageMetadata_GetStatus(IntPtr obj); + + public static string ovr_CloudStorageMetadata_GetVersionHandle(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadata_GetVersionHandle_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadata_GetVersionHandle")] + private static extern IntPtr ovr_CloudStorageMetadata_GetVersionHandle_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_CloudStorageMetadataArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_CloudStorageMetadataArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageMetadataArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageMetadataArray_GetNextUrl")] + private static extern IntPtr ovr_CloudStorageMetadataArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_CloudStorageMetadataArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_CloudStorageMetadataArray_HasNextPage(IntPtr obj); + + public static string ovr_CloudStorageUpdateResponse_GetBucket(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageUpdateResponse_GetBucket_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageUpdateResponse_GetBucket")] + private static extern IntPtr ovr_CloudStorageUpdateResponse_GetBucket_Native(IntPtr obj); + + public static string ovr_CloudStorageUpdateResponse_GetKey(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageUpdateResponse_GetKey_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageUpdateResponse_GetKey")] + private static extern IntPtr ovr_CloudStorageUpdateResponse_GetKey_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern CloudStorageUpdateStatus ovr_CloudStorageUpdateResponse_GetStatus(IntPtr obj); + + public static string ovr_CloudStorageUpdateResponse_GetVersionHandle(IntPtr obj) { + var result = StringFromNative(ovr_CloudStorageUpdateResponse_GetVersionHandle_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_CloudStorageUpdateResponse_GetVersionHandle")] + private static extern IntPtr ovr_CloudStorageUpdateResponse_GetVersionHandle_Native(IntPtr obj); + + public static uint ovr_DataStore_Contains(IntPtr obj, string key) { + IntPtr key_native = StringToNative(key); + var result = (ovr_DataStore_Contains_Native(obj, key_native)); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_DataStore_Contains")] + private static extern uint ovr_DataStore_Contains_Native(IntPtr obj, IntPtr key); + + public static string ovr_DataStore_GetKey(IntPtr obj, int index) { + var result = StringFromNative(ovr_DataStore_GetKey_Native(obj, index)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_DataStore_GetKey")] + private static extern IntPtr ovr_DataStore_GetKey_Native(IntPtr obj, int index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_DataStore_GetNumKeys(IntPtr obj); + + public static string ovr_DataStore_GetValue(IntPtr obj, string key) { + IntPtr key_native = StringToNative(key); + var result = StringFromNative(ovr_DataStore_GetValue_Native(obj, key_native)); + Marshal.FreeCoTaskMem(key_native); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_DataStore_GetValue")] + private static extern IntPtr ovr_DataStore_GetValue_Native(IntPtr obj, IntPtr key); + + public static string ovr_Destination_GetApiName(IntPtr obj) { + var result = StringFromNative(ovr_Destination_GetApiName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Destination_GetApiName")] + private static extern IntPtr ovr_Destination_GetApiName_Native(IntPtr obj); + + public static string ovr_Destination_GetDeeplinkMessage(IntPtr obj) { + var result = StringFromNative(ovr_Destination_GetDeeplinkMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Destination_GetDeeplinkMessage")] + private static extern IntPtr ovr_Destination_GetDeeplinkMessage_Native(IntPtr obj); + + public static string ovr_Destination_GetDisplayName(IntPtr obj) { + var result = StringFromNative(ovr_Destination_GetDisplayName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Destination_GetDisplayName")] + private static extern IntPtr ovr_Destination_GetDisplayName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_DestinationArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_DestinationArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_DestinationArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_DestinationArray_GetNextUrl")] + private static extern IntPtr ovr_DestinationArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_DestinationArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_DestinationArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Error_GetCode(IntPtr obj); + + public static string ovr_Error_GetDisplayableMessage(IntPtr obj) { + var result = StringFromNative(ovr_Error_GetDisplayableMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Error_GetDisplayableMessage")] + private static extern IntPtr ovr_Error_GetDisplayableMessage_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Error_GetHttpCode(IntPtr obj); + + public static string ovr_Error_GetMessage(IntPtr obj) { + var result = StringFromNative(ovr_Error_GetMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Error_GetMessage")] + private static extern IntPtr ovr_Error_GetMessage_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_HttpTransferUpdate_GetBytes(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_HttpTransferUpdate_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_HttpTransferUpdate_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_HttpTransferUpdate_IsCompleted(IntPtr obj); + + public static string ovr_InstalledApplication_GetApplicationId(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetApplicationId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetApplicationId")] + private static extern IntPtr ovr_InstalledApplication_GetApplicationId_Native(IntPtr obj); + + public static string ovr_InstalledApplication_GetPackageName(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetPackageName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetPackageName")] + private static extern IntPtr ovr_InstalledApplication_GetPackageName_Native(IntPtr obj); + + public static string ovr_InstalledApplication_GetStatus(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetStatus_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetStatus")] + private static extern IntPtr ovr_InstalledApplication_GetStatus_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_InstalledApplication_GetVersionCode(IntPtr obj); + + public static string ovr_InstalledApplication_GetVersionName(IntPtr obj) { + var result = StringFromNative(ovr_InstalledApplication_GetVersionName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_InstalledApplication_GetVersionName")] + private static extern IntPtr ovr_InstalledApplication_GetVersionName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_InstalledApplicationArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_InstalledApplicationArray_GetSize(IntPtr obj); + + public static string ovr_LanguagePackInfo_GetEnglishName(IntPtr obj) { + var result = StringFromNative(ovr_LanguagePackInfo_GetEnglishName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LanguagePackInfo_GetEnglishName")] + private static extern IntPtr ovr_LanguagePackInfo_GetEnglishName_Native(IntPtr obj); + + public static string ovr_LanguagePackInfo_GetNativeName(IntPtr obj) { + var result = StringFromNative(ovr_LanguagePackInfo_GetNativeName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LanguagePackInfo_GetNativeName")] + private static extern IntPtr ovr_LanguagePackInfo_GetNativeName_Native(IntPtr obj); + + public static string ovr_LanguagePackInfo_GetTag(IntPtr obj) { + var result = StringFromNative(ovr_LanguagePackInfo_GetTag_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LanguagePackInfo_GetTag")] + private static extern IntPtr ovr_LanguagePackInfo_GetTag_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchBlockFlowResult_GetDidBlock(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchBlockFlowResult_GetDidCancel(IntPtr obj); + + public static string ovr_LaunchDetails_GetDeeplinkMessage(IntPtr obj) { + var result = StringFromNative(ovr_LaunchDetails_GetDeeplinkMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LaunchDetails_GetDeeplinkMessage")] + private static extern IntPtr ovr_LaunchDetails_GetDeeplinkMessage_Native(IntPtr obj); + + public static string ovr_LaunchDetails_GetLaunchSource(IntPtr obj) { + var result = StringFromNative(ovr_LaunchDetails_GetLaunchSource_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LaunchDetails_GetLaunchSource")] + private static extern IntPtr ovr_LaunchDetails_GetLaunchSource_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern LaunchType ovr_LaunchDetails_GetLaunchType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_LaunchDetails_GetRoomID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LaunchDetails_GetUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchFriendRequestFlowResult_GetDidCancel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchFriendRequestFlowResult_GetDidSendRequest(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchReportFlowResult_GetDidCancel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_LaunchReportFlowResult_GetUserReportId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchUnblockFlowResult_GetDidCancel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LaunchUnblockFlowResult_GetDidUnblock(IntPtr obj); + + public static byte[] ovr_LeaderboardEntry_GetExtraData(IntPtr obj) { + var result = BlobFromNative(ovr_LeaderboardEntry_GetExtraDataLength(obj), ovr_LeaderboardEntry_GetExtraData_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntry_GetExtraData")] + private static extern IntPtr ovr_LeaderboardEntry_GetExtraData_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_LeaderboardEntry_GetExtraDataLength(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LeaderboardEntry_GetRank(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern long ovr_LeaderboardEntry_GetScore(IntPtr obj); + + public static DateTime ovr_LeaderboardEntry_GetTimestamp(IntPtr obj) { + var result = DateTimeFromNative(ovr_LeaderboardEntry_GetTimestamp_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntry_GetTimestamp")] + private static extern ulong ovr_LeaderboardEntry_GetTimestamp_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LeaderboardEntry_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LeaderboardEntryArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_LeaderboardEntryArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_LeaderboardEntryArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntryArray_GetNextUrl")] + private static extern IntPtr ovr_LeaderboardEntryArray_GetNextUrl_Native(IntPtr obj); + + public static string ovr_LeaderboardEntryArray_GetPreviousUrl(IntPtr obj) { + var result = StringFromNative(ovr_LeaderboardEntryArray_GetPreviousUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LeaderboardEntryArray_GetPreviousUrl")] + private static extern IntPtr ovr_LeaderboardEntryArray_GetPreviousUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_LeaderboardEntryArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_LeaderboardEntryArray_GetTotalCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LeaderboardEntryArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LeaderboardEntryArray_HasPreviousPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LeaderboardUpdateStatus_GetDidUpdate(IntPtr obj); + + public static string ovr_LinkedAccount_GetAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_LinkedAccount_GetAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LinkedAccount_GetAccessToken")] + private static extern IntPtr ovr_LinkedAccount_GetAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ServiceProvider ovr_LinkedAccount_GetServiceProvider(IntPtr obj); + + public static string ovr_LinkedAccount_GetUserId(IntPtr obj) { + var result = StringFromNative(ovr_LinkedAccount_GetUserId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LinkedAccount_GetUserId")] + private static extern IntPtr ovr_LinkedAccount_GetUserId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_LinkedAccountArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_LinkedAccountArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingApplicationStatus_GetStreamingEnabled(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern LivestreamingStartStatus ovr_LivestreamingStartResult_GetStreamingResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetCommentsVisible(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetIsPaused(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetLivestreamingEnabled(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LivestreamingStatus_GetLivestreamingType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_LivestreamingStatus_GetMicEnabled(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LivestreamingVideoStats_GetCommentCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_LivestreamingVideoStats_GetReactionCount(IntPtr obj); + + public static string ovr_LivestreamingVideoStats_GetTotalViews(IntPtr obj) { + var result = StringFromNative(ovr_LivestreamingVideoStats_GetTotalViews_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_LivestreamingVideoStats_GetTotalViews")] + private static extern IntPtr ovr_LivestreamingVideoStats_GetTotalViews_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingAdminSnapshot_GetCandidates(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshot_GetMyCurrentThreshold(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_MatchmakingAdminSnapshotCandidate_GetCanMatch(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshotCandidate_GetMyTotalScore(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshotCandidate_GetTheirCurrentThreshold(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingAdminSnapshotCandidate_GetTheirTotalScore(IntPtr obj); + + public static string ovr_MatchmakingAdminSnapshotCandidate_GetTraceId(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingAdminSnapshotCandidate_GetTraceId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingAdminSnapshotCandidate_GetTraceId")] + private static extern IntPtr ovr_MatchmakingAdminSnapshotCandidate_GetTraceId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingAdminSnapshotCandidateArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingAdminSnapshotCandidateArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingBrowseResult_GetEnqueueResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingBrowseResult_GetRooms(IntPtr obj); + + public static string ovr_MatchmakingCandidate_GetEntryHash(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingCandidate_GetEntryHash_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingCandidate_GetEntryHash")] + private static extern IntPtr ovr_MatchmakingCandidate_GetEntryHash_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_MatchmakingCandidate_GetUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingCandidateArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_MatchmakingCandidateArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingCandidateArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingCandidateArray_GetNextUrl")] + private static extern IntPtr ovr_MatchmakingCandidateArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingCandidateArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_MatchmakingCandidateArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueueResult_GetAdminSnapshot(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetAverageWait(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetMatchesInLastHourCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetMaxExpectedWait(IntPtr obj); + + public static string ovr_MatchmakingEnqueueResult_GetPool(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingEnqueueResult_GetPool_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingEnqueueResult_GetPool")] + private static extern IntPtr ovr_MatchmakingEnqueueResult_GetPool_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueueResult_GetRecentMatchPercentage(IntPtr obj); + + public static string ovr_MatchmakingEnqueueResult_GetRequestHash(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingEnqueueResult_GetRequestHash_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingEnqueueResult_GetRequestHash")] + private static extern IntPtr ovr_MatchmakingEnqueueResult_GetRequestHash_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueueResultAndRoom_GetMatchmakingEnqueueResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueueResultAndRoom_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_MatchmakingEnqueuedUser_GetAdditionalUserID(IntPtr obj, uint index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingEnqueuedUser_GetAdditionalUserIDsSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueuedUser_GetCustomData(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueuedUser_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingEnqueuedUserArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingEnqueuedUserArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_MatchmakingNotification_GetAddedByUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingNotification_GetRoom(IntPtr obj); + + public static string ovr_MatchmakingNotification_GetTraceId(IntPtr obj) { + var result = StringFromNative(ovr_MatchmakingNotification_GetTraceId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingNotification_GetTraceId")] + private static extern IntPtr ovr_MatchmakingNotification_GetTraceId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingRoom_GetPingTime(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingRoom_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_MatchmakingRoom_HasPingTime(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingRoomArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_MatchmakingRoomArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetDrawCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetLossCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetSkillLevel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingStats_GetSkillMean(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern double ovr_MatchmakingStats_GetSkillStandardDeviation(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_MatchmakingStats_GetWinCount(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAbuseReportRecording(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAchievementDefinitionArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAchievementProgressArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAchievementUpdate(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetApplicationVersion(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetDetails(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetDetailsArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDeleteResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDownloadCancelResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDownloadResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetAssetFileDownloadUpdate(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCalApplicationFinalized(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCalApplicationProposed(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCalApplicationSuggestionArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageConflictMetadata(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageData(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageMetadata(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageMetadataArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetCloudStorageUpdateResponse(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetDestinationArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetError(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetHttpTransferUpdate(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetInstalledApplicationArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLaunchBlockFlowResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLaunchFriendRequestFlowResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLaunchReportFlowResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLaunchUnblockFlowResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLeaderboardEntryArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLeaderboardUpdateStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLinkedAccountArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingApplicationStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingStartResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetLivestreamingVideoStats(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingAdminSnapshot(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingBrowseResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingEnqueueResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingEnqueueResultAndRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingRoomArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetMatchmakingStats(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetNativeMessage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetNetworkingPeer(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetOrgScopedID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetParty(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPartyID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPartyUpdateNotification(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPidArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPingResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPlatformInitialize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetProductArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPurchase(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetPurchaseArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_Message_GetRequestID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoomArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoomInviteNotification(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetRoomInviteNotificationArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetSdkAccountArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetShareMediaResult(IntPtr obj); + + public static string ovr_Message_GetString(IntPtr obj) { + var result = StringFromNative(ovr_Message_GetString_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Message_GetString")] + private static extern IntPtr ovr_Message_GetString_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetSystemPermission(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetSystemVoipState(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern Message.MessageType ovr_Message_GetType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserAndRoomArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserProof(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Message_GetUserReportID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Message_IsError(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetNumSamplesAvailable(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetOutputBufferMaxSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetPCM(IntPtr obj, Int16[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_GetPCMFloat(IntPtr obj, float[] outputBuffer, UIntPtr outputBufferNumElements); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Microphone_ReadData(IntPtr obj, float[] outputBuffer, UIntPtr outputBufferSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_SetAcceptableRecordingDelayHint(IntPtr obj, UIntPtr delayMs); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_Start(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Microphone_Stop(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_NetworkingPeer_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern PeerConnectionState ovr_NetworkingPeer_GetState(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_OrgScopedID_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_Packet_Free(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Packet_GetBytes(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SendPolicy ovr_Packet_GetSendPolicy(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Packet_GetSenderID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_Packet_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Party_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetInvitedUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetLeader(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Party_GetUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_PartyID_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern PartyUpdateAction ovr_PartyUpdateNotification_GetAction(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_PartyUpdateNotification_GetPartyId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_PartyUpdateNotification_GetSenderId(IntPtr obj); + + public static string ovr_PartyUpdateNotification_GetUpdateTimestamp(IntPtr obj) { + var result = StringFromNative(ovr_PartyUpdateNotification_GetUpdateTimestamp_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_PartyUpdateNotification_GetUpdateTimestamp")] + private static extern IntPtr ovr_PartyUpdateNotification_GetUpdateTimestamp_Native(IntPtr obj); + + public static string ovr_PartyUpdateNotification_GetUserAlias(IntPtr obj) { + var result = StringFromNative(ovr_PartyUpdateNotification_GetUserAlias_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_PartyUpdateNotification_GetUserAlias")] + private static extern IntPtr ovr_PartyUpdateNotification_GetUserAlias_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_PartyUpdateNotification_GetUserId(IntPtr obj); + + public static string ovr_PartyUpdateNotification_GetUserName(IntPtr obj) { + var result = StringFromNative(ovr_PartyUpdateNotification_GetUserName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_PartyUpdateNotification_GetUserName")] + private static extern IntPtr ovr_PartyUpdateNotification_GetUserName_Native(IntPtr obj); + + public static string ovr_Pid_GetId(IntPtr obj) { + var result = StringFromNative(ovr_Pid_GetId_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Pid_GetId")] + private static extern IntPtr ovr_Pid_GetId_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_PidArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_PidArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_PingResult_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ulong ovr_PingResult_GetPingTimeUsec(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_PingResult_IsTimeout(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern PlatformInitializeResult ovr_PlatformInitialize_GetResult(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_Price_GetAmountInHundredths(IntPtr obj); + + public static string ovr_Price_GetCurrency(IntPtr obj) { + var result = StringFromNative(ovr_Price_GetCurrency_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Price_GetCurrency")] + private static extern IntPtr ovr_Price_GetCurrency_Native(IntPtr obj); + + public static string ovr_Price_GetFormatted(IntPtr obj) { + var result = StringFromNative(ovr_Price_GetFormatted_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Price_GetFormatted")] + private static extern IntPtr ovr_Price_GetFormatted_Native(IntPtr obj); + + public static string ovr_Product_GetDescription(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetDescription_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetDescription")] + private static extern IntPtr ovr_Product_GetDescription_Native(IntPtr obj); + + public static string ovr_Product_GetFormattedPrice(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetFormattedPrice_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetFormattedPrice")] + private static extern IntPtr ovr_Product_GetFormattedPrice_Native(IntPtr obj); + + public static string ovr_Product_GetName(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetName")] + private static extern IntPtr ovr_Product_GetName_Native(IntPtr obj); + + public static string ovr_Product_GetSKU(IntPtr obj) { + var result = StringFromNative(ovr_Product_GetSKU_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Product_GetSKU")] + private static extern IntPtr ovr_Product_GetSKU_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_ProductArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_ProductArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_ProductArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ProductArray_GetNextUrl")] + private static extern IntPtr ovr_ProductArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_ProductArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_ProductArray_HasNextPage(IntPtr obj); + + public static DateTime ovr_Purchase_GetExpirationTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_Purchase_GetExpirationTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Purchase_GetExpirationTime")] + private static extern ulong ovr_Purchase_GetExpirationTime_Native(IntPtr obj); + + public static DateTime ovr_Purchase_GetGrantTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_Purchase_GetGrantTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Purchase_GetGrantTime")] + private static extern ulong ovr_Purchase_GetGrantTime_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Purchase_GetPurchaseID(IntPtr obj); + + public static string ovr_Purchase_GetSKU(IntPtr obj) { + var result = StringFromNative(ovr_Purchase_GetSKU_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Purchase_GetSKU")] + private static extern IntPtr ovr_Purchase_GetSKU_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_PurchaseArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_PurchaseArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_PurchaseArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_PurchaseArray_GetNextUrl")] + private static extern IntPtr ovr_PurchaseArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_PurchaseArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_PurchaseArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Room_GetApplicationID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetDataStore(IntPtr obj); + + public static string ovr_Room_GetDescription(IntPtr obj) { + var result = StringFromNative(ovr_Room_GetDescription_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_GetDescription")] + private static extern IntPtr ovr_Room_GetDescription_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_Room_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetInvitedUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_Room_GetIsMembershipLocked(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern RoomJoinPolicy ovr_Room_GetJoinPolicy(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern RoomJoinability ovr_Room_GetJoinability(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetMatchedUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_Room_GetMaxUsers(IntPtr obj); + + public static string ovr_Room_GetName(IntPtr obj) { + var result = StringFromNative(ovr_Room_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Room_GetName")] + private static extern IntPtr ovr_Room_GetName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetOwner(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetTeams(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern RoomType ovr_Room_GetType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Room_GetUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern uint ovr_Room_GetVersion(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_RoomArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_RoomArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_RoomArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomArray_GetNextUrl")] + private static extern IntPtr ovr_RoomArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_RoomArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_RoomArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_RoomInviteNotification_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_RoomInviteNotification_GetRoomID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_RoomInviteNotification_GetSenderID(IntPtr obj); + + public static DateTime ovr_RoomInviteNotification_GetSentTime(IntPtr obj) { + var result = DateTimeFromNative(ovr_RoomInviteNotification_GetSentTime_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomInviteNotification_GetSentTime")] + private static extern ulong ovr_RoomInviteNotification_GetSentTime_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_RoomInviteNotificationArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_RoomInviteNotificationArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_RoomInviteNotificationArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomInviteNotificationArray_GetNextUrl")] + private static extern IntPtr ovr_RoomInviteNotificationArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_RoomInviteNotificationArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_RoomInviteNotificationArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SdkAccountType ovr_SdkAccount_GetAccountType(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_SdkAccount_GetUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_SdkAccountArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_SdkAccountArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern ShareMediaStatus ovr_ShareMediaResult_GetStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_SystemPermission_GetHasPermission(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern PermissionGrantStatus ovr_SystemPermission_GetPermissionGrantStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern VoipMuteState ovr_SystemVoipState_GetMicrophoneMuted(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern SystemVoipStatus ovr_SystemVoipState_GetStatus(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_Team_GetAssignedUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Team_GetMaxUsers(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern int ovr_Team_GetMinUsers(IntPtr obj); + + public static string ovr_Team_GetName(IntPtr obj) { + var result = StringFromNative(ovr_Team_GetName_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_Team_GetName")] + private static extern IntPtr ovr_Team_GetName_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TeamArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_TeamArray_GetSize(IntPtr obj); + + public static string ovr_TestUser_GetAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_TestUser_GetAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUser_GetAccessToken")] + private static extern IntPtr ovr_TestUser_GetAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUser_GetAppAccessArray(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUser_GetFbAppAccessArray(IntPtr obj); + + public static string ovr_TestUser_GetFriendAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_TestUser_GetFriendAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUser_GetFriendAccessToken")] + private static extern IntPtr ovr_TestUser_GetFriendAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUser_GetFriendAppAccessArray(IntPtr obj); + + public static string ovr_TestUser_GetUserAlias(IntPtr obj) { + var result = StringFromNative(ovr_TestUser_GetUserAlias_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUser_GetUserAlias")] + private static extern IntPtr ovr_TestUser_GetUserAlias_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_TestUser_GetUserFbid(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_TestUser_GetUserId(IntPtr obj); + + public static string ovr_TestUserAppAccess_GetAccessToken(IntPtr obj) { + var result = StringFromNative(ovr_TestUserAppAccess_GetAccessToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_TestUserAppAccess_GetAccessToken")] + private static extern IntPtr ovr_TestUserAppAccess_GetAccessToken_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_TestUserAppAccess_GetAppId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_TestUserAppAccess_GetUserId(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_TestUserAppAccessArray_GetElement(IntPtr obj, UIntPtr index); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_TestUserAppAccessArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_User_GetID(IntPtr obj); + + public static string ovr_User_GetImageUrl(IntPtr obj) { + var result = StringFromNative(ovr_User_GetImageUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetImageUrl")] + private static extern IntPtr ovr_User_GetImageUrl_Native(IntPtr obj); + + public static string ovr_User_GetInviteToken(IntPtr obj) { + var result = StringFromNative(ovr_User_GetInviteToken_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetInviteToken")] + private static extern IntPtr ovr_User_GetInviteToken_Native(IntPtr obj); + + public static string ovr_User_GetOculusID(IntPtr obj) { + var result = StringFromNative(ovr_User_GetOculusID_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetOculusID")] + private static extern IntPtr ovr_User_GetOculusID_Native(IntPtr obj); + + public static string ovr_User_GetPresence(IntPtr obj) { + var result = StringFromNative(ovr_User_GetPresence_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetPresence")] + private static extern IntPtr ovr_User_GetPresence_Native(IntPtr obj); + + public static string ovr_User_GetPresenceDeeplinkMessage(IntPtr obj) { + var result = StringFromNative(ovr_User_GetPresenceDeeplinkMessage_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetPresenceDeeplinkMessage")] + private static extern IntPtr ovr_User_GetPresenceDeeplinkMessage_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UserPresenceStatus ovr_User_GetPresenceStatus(IntPtr obj); + + public static string ovr_User_GetSmallImageUrl(IntPtr obj) { + var result = StringFromNative(ovr_User_GetSmallImageUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_User_GetSmallImageUrl")] + private static extern IntPtr ovr_User_GetSmallImageUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserAndRoom_GetRoom(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserAndRoom_GetUser(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserAndRoomArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_UserAndRoomArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_UserAndRoomArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_UserAndRoomArray_GetNextUrl")] + private static extern IntPtr ovr_UserAndRoomArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_UserAndRoomArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UserAndRoomArray_HasNextPage(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserArray_GetElement(IntPtr obj, UIntPtr index); + + public static string ovr_UserArray_GetNextUrl(IntPtr obj) { + var result = StringFromNative(ovr_UserArray_GetNextUrl_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_UserArray_GetNextUrl")] + private static extern IntPtr ovr_UserArray_GetNextUrl_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_UserArray_GetSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UserArray_HasNextPage(IntPtr obj); + + public static string ovr_UserProof_GetNonce(IntPtr obj) { + var result = StringFromNative(ovr_UserProof_GetNonce_Native(obj)); + return result; + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_UserProof_GetNonce")] + private static extern IntPtr ovr_UserProof_GetNonce_Native(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern bool ovr_UserReportID_GetDidCancel(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UInt64 ovr_UserReportID_GetID(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipDecoder_Decode(IntPtr obj, byte[] compressedData, UIntPtr compressedSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_VoipDecoder_GetDecodedPCM(IntPtr obj, float[] outputBuffer, UIntPtr outputBufferSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipEncoder_AddPCM(IntPtr obj, float[] inputData, uint inputSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_VoipEncoder_GetCompressedData(IntPtr obj, byte[] outputBuffer, UIntPtr intputSize); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern UIntPtr ovr_VoipEncoder_GetCompressedDataSize(IntPtr obj); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_AbuseReportOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_AbuseReportOptions_Destroy(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_AbuseReportOptions_SetPreventPeopleChooser(IntPtr handle, bool value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_AbuseReportOptions_SetReportType(IntPtr handle, AbuseReportType value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_ApplicationOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_ApplicationOptions_Destroy(IntPtr handle); + + public static void ovr_ApplicationOptions_SetDeeplinkMessage(IntPtr handle, string value) { + IntPtr value_native = StringToNative(value); + ovr_ApplicationOptions_SetDeeplinkMessage_Native(handle, value_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_ApplicationOptions_SetDeeplinkMessage")] + private static extern void ovr_ApplicationOptions_SetDeeplinkMessage_Native(IntPtr handle, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_MatchmakingOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_Destroy(IntPtr handle); + + public static void ovr_MatchmakingOptions_SetCreateRoomDataStoreString(IntPtr handle, string key, string value) { + IntPtr key_native = StringToNative(key); + IntPtr value_native = StringToNative(value); + ovr_MatchmakingOptions_SetCreateRoomDataStoreString_Native(handle, key_native, value_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetCreateRoomDataStoreString")] + private static extern void ovr_MatchmakingOptions_SetCreateRoomDataStoreString_Native(IntPtr handle, IntPtr key, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_ClearCreateRoomDataStore(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_SetCreateRoomJoinPolicy(IntPtr handle, RoomJoinPolicy value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_SetCreateRoomMaxUsers(IntPtr handle, uint value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_AddEnqueueAdditionalUser(IntPtr handle, UInt64 value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_ClearEnqueueAdditionalUsers(IntPtr handle); + + public static void ovr_MatchmakingOptions_SetEnqueueDataSettingsInt(IntPtr handle, string key, int value) { + IntPtr key_native = StringToNative(key); + ovr_MatchmakingOptions_SetEnqueueDataSettingsInt_Native(handle, key_native, value); + Marshal.FreeCoTaskMem(key_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueDataSettingsInt")] + private static extern void ovr_MatchmakingOptions_SetEnqueueDataSettingsInt_Native(IntPtr handle, IntPtr key, int value); + + public static void ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble(IntPtr handle, string key, double value) { + IntPtr key_native = StringToNative(key); + ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble_Native(handle, key_native, value); + Marshal.FreeCoTaskMem(key_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble")] + private static extern void ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble_Native(IntPtr handle, IntPtr key, double value); + + public static void ovr_MatchmakingOptions_SetEnqueueDataSettingsString(IntPtr handle, string key, string value) { + IntPtr key_native = StringToNative(key); + IntPtr value_native = StringToNative(value); + ovr_MatchmakingOptions_SetEnqueueDataSettingsString_Native(handle, key_native, value_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueDataSettingsString")] + private static extern void ovr_MatchmakingOptions_SetEnqueueDataSettingsString_Native(IntPtr handle, IntPtr key, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_ClearEnqueueDataSettings(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_MatchmakingOptions_SetEnqueueIsDebug(IntPtr handle, bool value); + + public static void ovr_MatchmakingOptions_SetEnqueueQueryKey(IntPtr handle, string value) { + IntPtr value_native = StringToNative(value); + ovr_MatchmakingOptions_SetEnqueueQueryKey_Native(handle, value_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_MatchmakingOptions_SetEnqueueQueryKey")] + private static extern void ovr_MatchmakingOptions_SetEnqueueQueryKey_Native(IntPtr handle, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_RichPresenceOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_Destroy(IntPtr handle); + + public static void ovr_RichPresenceOptions_SetApiName(IntPtr handle, string value) { + IntPtr value_native = StringToNative(value); + ovr_RichPresenceOptions_SetApiName_Native(handle, value_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RichPresenceOptions_SetApiName")] + private static extern void ovr_RichPresenceOptions_SetApiName_Native(IntPtr handle, IntPtr value); + + public static void ovr_RichPresenceOptions_SetArgsString(IntPtr handle, string key, string value) { + IntPtr key_native = StringToNative(key); + IntPtr value_native = StringToNative(value); + ovr_RichPresenceOptions_SetArgsString_Native(handle, key_native, value_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RichPresenceOptions_SetArgsString")] + private static extern void ovr_RichPresenceOptions_SetArgsString_Native(IntPtr handle, IntPtr key, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_ClearArgs(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_SetCurrentCapacity(IntPtr handle, uint value); + + public static void ovr_RichPresenceOptions_SetDeeplinkMessageOverride(IntPtr handle, string value) { + IntPtr value_native = StringToNative(value); + ovr_RichPresenceOptions_SetDeeplinkMessageOverride_Native(handle, value_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RichPresenceOptions_SetDeeplinkMessageOverride")] + private static extern void ovr_RichPresenceOptions_SetDeeplinkMessageOverride_Native(IntPtr handle, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_SetEndTime(IntPtr handle, DateTime value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_SetExtraContext(IntPtr handle, RichPresenceExtraContext value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_SetIsIdle(IntPtr handle, bool value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_SetIsJoinable(IntPtr handle, bool value); + + public static void ovr_RichPresenceOptions_SetJoinableId(IntPtr handle, string value) { + IntPtr value_native = StringToNative(value); + ovr_RichPresenceOptions_SetJoinableId_Native(handle, value_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RichPresenceOptions_SetJoinableId")] + private static extern void ovr_RichPresenceOptions_SetJoinableId_Native(IntPtr handle, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_SetMaxCapacity(IntPtr handle, uint value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RichPresenceOptions_SetStartTime(IntPtr handle, DateTime value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_RoomOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_Destroy(IntPtr handle); + + public static void ovr_RoomOptions_SetDataStoreString(IntPtr handle, string key, string value) { + IntPtr key_native = StringToNative(key); + IntPtr value_native = StringToNative(value); + ovr_RoomOptions_SetDataStoreString_Native(handle, key_native, value_native); + Marshal.FreeCoTaskMem(key_native); + Marshal.FreeCoTaskMem(value_native); + } + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint="ovr_RoomOptions_SetDataStoreString")] + private static extern void ovr_RoomOptions_SetDataStoreString_Native(IntPtr handle, IntPtr key, IntPtr value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_ClearDataStore(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetExcludeRecentlyMet(IntPtr handle, bool value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetMaxUserResults(IntPtr handle, uint value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetOrdering(IntPtr handle, UserOrdering value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetRecentlyMetTimeWindow(IntPtr handle, TimeWindow value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetRoomId(IntPtr handle, UInt64 value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_RoomOptions_SetTurnOffUpdates(IntPtr handle, bool value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_UserOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_Destroy(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_SetMaxUsers(IntPtr handle, uint value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_AddServiceProvider(IntPtr handle, ServiceProvider value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_ClearServiceProviders(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_UserOptions_SetTimeWindow(IntPtr handle, TimeWindow value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr ovr_VoipOptions_Create(); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipOptions_Destroy(IntPtr handle); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipOptions_SetBitrateForNewConnections(IntPtr handle, VoipBitrate value); + + [DllImport(DLL_NAME, CallingConvention=CallingConvention.Cdecl)] + public static extern void ovr_VoipOptions_SetCreateNewConnectionUseDtx(IntPtr handle, VoipDtxState value); + } +} diff --git a/Assets/Oculus/Platform/Scripts/CAPI.cs.meta b/Assets/Oculus/Platform/Scripts/CAPI.cs.meta new file mode 100644 index 0000000..2c08f36 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CAPI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 34df728904a3e304b84b2facc7fac233 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Callback.cs b/Assets/Oculus/Platform/Scripts/Callback.cs new file mode 100644 index 0000000..e0c682f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Callback.cs @@ -0,0 +1,165 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections.Generic; + + public static class Callback + { + #region Notification Callbacks: Exposed through Oculus.Platform.Platform + + internal static void SetNotificationCallback(Message.MessageType type, Message.Callback callback) + { + if (callback == null) { + throw new Exception ("Cannot provide a null notification callback."); + } + + notificationCallbacks[type] = new RequestCallback(callback); + + if (type == Message.MessageType.Notification_Room_InviteAccepted) + { + FlushRoomInviteNotificationQueue(); + } + } + + internal static void SetNotificationCallback(Message.MessageType type, Message.Callback callback) + { + if (callback == null) { + throw new Exception ("Cannot provide a null notification callback."); + } + + notificationCallbacks[type] = new RequestCallback(callback); + } + #endregion + + #region Adding and running request handlers + internal static void AddRequest(Request request) { + requestIDsToRequests[request.RequestID] = request; + } + + internal static void RunCallbacks() + { + while (true) + { + var msg = Platform.Message.PopMessage(); + if (msg == null) + { + break; + } + + HandleMessage(msg); + } + + } + + internal static void RunLimitedCallbacks(uint limit) + { + for (var i = 0; i < limit; ++i) + { + var msg = Platform.Message.PopMessage(); + if (msg == null) + { + break; + } + + HandleMessage(msg); + } + } + + internal static void OnApplicationQuit() + { + // Clear out all outstanding callbacks + requestIDsToRequests.Clear(); + notificationCallbacks.Clear(); + } + + #endregion + + #region Callback Internals + private static Dictionary requestIDsToRequests = new Dictionary(); + private static Dictionary notificationCallbacks = new Dictionary(); + + private static bool hasRegisteredRoomInviteNotificationHandler = false; + private static List pendingRoomInviteNotifications = new List(); + private static void FlushRoomInviteNotificationQueue() { + hasRegisteredRoomInviteNotificationHandler = true; + foreach (Message msg in pendingRoomInviteNotifications) { + HandleMessage(msg); + } + pendingRoomInviteNotifications.Clear(); + } + + private class RequestCallback + { + private Message.Callback messageCallback; + + public RequestCallback() { } + + public RequestCallback(Message.Callback callback) + { + this.messageCallback = callback; + } + + public virtual void HandleMessage(Message msg) + { + if (messageCallback != null) + { + messageCallback(msg); + } + } + } + + private sealed class RequestCallback : RequestCallback + { + private Message.Callback callback; + public RequestCallback(Message.Callback callback) + { + this.callback = callback; + } + + public override void HandleMessage(Message msg) + { + if (callback != null) + { + + // We need to queue up GameInvites because the callback runner will be called before a handler has beeen set. + if (!hasRegisteredRoomInviteNotificationHandler && msg.Type == Message.MessageType.Notification_Room_InviteAccepted) + { + pendingRoomInviteNotifications.Add(msg); + return; + } + + if (msg is Message) + { + callback((Message)msg); + } + else + { + Debug.LogError("Unable to handle message: " + msg.GetType()); + } + } + } + } + + internal static void HandleMessage(Message msg) + { + Request request; + if (requestIDsToRequests.TryGetValue(msg.RequestID, out request)) { + try { + request.HandleMessage(msg); + } finally { + requestIDsToRequests.Remove(msg.RequestID); + } + return; + } + + RequestCallback callbackHolder; + if (notificationCallbacks.TryGetValue(msg.Type, out callbackHolder)) + { + callbackHolder.HandleMessage(msg); + } + } + + #endregion + } +} diff --git a/Assets/Oculus/Platform/Scripts/Callback.cs.meta b/Assets/Oculus/Platform/Scripts/Callback.cs.meta new file mode 100644 index 0000000..f314744 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Callback.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41d3953e2b7bcb44d91f97e274f9f64d +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CallbackRunner.cs b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs new file mode 100644 index 0000000..cb211e8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs @@ -0,0 +1,43 @@ +using System.Runtime.InteropServices; +using UnityEngine; + +namespace Oculus.Platform +{ + public class CallbackRunner : MonoBehaviour + { + [DllImport(CAPI.DLL_NAME)] + static extern void ovr_UnityResetTestPlatform(); + + public bool IsPersistantBetweenSceneLoads = true; + + void Awake() + { + var existingCallbackRunner = FindObjectOfType(); + if (existingCallbackRunner != this) + { + Debug.LogWarning("You only need one instance of CallbackRunner"); + } + if (IsPersistantBetweenSceneLoads) + { + DontDestroyOnLoad(gameObject); + } + } + + void Update() + { + Request.RunCallbacks(); + } + + void OnDestroy() + { +#if UNITY_EDITOR + ovr_UnityResetTestPlatform(); +#endif + } + + void OnApplicationQuit() + { + Callback.OnApplicationQuit(); + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/CallbackRunner.cs.meta b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs.meta new file mode 100644 index 0000000..df4e8c1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CallbackRunner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f2caa5c6ad39b6742a7ddc2c273976c7 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs new file mode 100644 index 0000000..44536c7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum CloudStorageDataStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("IN_SYNC")] + InSync, + + [Description("NEEDS_DOWNLOAD")] + NeedsDownload, + + [Description("REMOTE_DOWNLOADING")] + RemoteDownloading, + + [Description("NEEDS_UPLOAD")] + NeedsUpload, + + [Description("LOCAL_UPLOADING")] + LocalUploading, + + [Description("IN_CONFLICT")] + InConflict, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs.meta b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs.meta new file mode 100644 index 0000000..986db3d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageDataStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4708b605fe779fe4384e9166eb21b85c +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs new file mode 100644 index 0000000..94b0e8b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum CloudStorageUpdateStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("OK")] + Ok, + + [Description("BETTER_VERSION_STORED")] + BetterVersionStored, + + [Description("MANUAL_MERGE_REQUIRED")] + ManualMergeRequired, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs.meta b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs.meta new file mode 100644 index 0000000..0891f8b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/CloudStorageUpdateStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b620ce00fa534d4f8f006da66d05d35 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Decoder.cs b/Assets/Oculus/Platform/Scripts/Decoder.cs new file mode 100644 index 0000000..b17accb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Decoder.cs @@ -0,0 +1,45 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer3.oculus.com/documentation/platform/latest/concepts/dg-core-content/#dg-cc-voip +#if false +using UnityEngine; +using System.Collections; +using System; + +namespace Oculus.Platform { + + public class Decoder : IDisposable { + + IntPtr dec; + float[] decodedScratchBuffer; + + public Decoder() { + dec = CAPI.ovr_Voip_CreateDecoder(); + decodedScratchBuffer = new float[480 * 10]; + } + + public void Dispose() + { + if (dec != IntPtr.Zero) + { + CAPI.ovr_Voip_DestroyEncoder(dec); + dec = IntPtr.Zero; + } + } + + public float[] Decode(byte[] data) { + CAPI.ovr_VoipDecoder_Decode(dec, data, (uint)data.Length); + + ulong gotSize = (ulong)CAPI.ovr_VoipDecoder_GetDecodedPCM(dec, decodedScratchBuffer, (UIntPtr)decodedScratchBuffer.Length); + + if (gotSize > 0) + { + float[] pcm = new float[gotSize]; + Array.Copy(decodedScratchBuffer, pcm, (int)gotSize); + return pcm; + } + + return null; + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/Decoder.cs.meta b/Assets/Oculus/Platform/Scripts/Decoder.cs.meta new file mode 100644 index 0000000..26a297b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Decoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 731601605a2facb4b8f3f211411a4693 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Encoder.cs b/Assets/Oculus/Platform/Scripts/Encoder.cs new file mode 100644 index 0000000..2b95017 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Encoder.cs @@ -0,0 +1,45 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer3.oculus.com/documentation/platform/latest/concepts/dg-core-content/#dg-cc-voip +#if false +using UnityEngine; +using System.Collections; +using System; + + +namespace Oculus.Platform { + +public class Encoder : IDisposable { + IntPtr enc; + + public Encoder() { + enc = CAPI.ovr_Voip_CreateEncoder(); + } + + public void Dispose() + { + if (enc != IntPtr.Zero) + { + CAPI.ovr_Voip_DestroyEncoder(enc); + enc = IntPtr.Zero; + } + } + + public byte[] Encode(float[] samples) { + CAPI.ovr_VoipEncoder_AddPCM(enc, samples, (uint)samples.Length); + + ulong size = (ulong)CAPI.ovr_VoipEncoder_GetCompressedDataSize(enc); + if(size > 0) { + byte[] compressedData = new byte[size]; //TODO 10376403 - pool this + ulong sizeRead = (ulong)CAPI.ovr_VoipEncoder_GetCompressedData(enc, compressedData, (UIntPtr)size); + + if (sizeRead != size) + { + throw new Exception("Read size differed from reported size"); + } + return compressedData; + } + return null; + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/Encoder.cs.meta b/Assets/Oculus/Platform/Scripts/Encoder.cs.meta new file mode 100644 index 0000000..ee45065 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Encoder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6ac5c6788e50aa4f9ce8e07d8605023 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/IMicrophone.cs b/Assets/Oculus/Platform/Scripts/IMicrophone.cs new file mode 100644 index 0000000..73685b7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IMicrophone.cs @@ -0,0 +1,15 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Oculus.Platform +{ + public interface IMicrophone + { + void Start(); + + void Stop(); + + float[] Update(); + } +} diff --git a/Assets/Oculus/Platform/Scripts/IMicrophone.cs.meta b/Assets/Oculus/Platform/Scripts/IMicrophone.cs.meta new file mode 100644 index 0000000..7ab65d7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IMicrophone.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3bd3a2d44aa26f148bb61b2735a67028 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs new file mode 100644 index 0000000..df82d8c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs @@ -0,0 +1,13 @@ +namespace Oculus.Platform +{ + public interface IVoipPCMSource + { + int GetPCM(float[] dest, int length); + + void SetSenderID(ulong senderID); + + void Update(); + + int PeekSizeElements(); + } +} diff --git a/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs.meta b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs.meta new file mode 100644 index 0000000..1afbaa3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/IVoipPCMSource.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0dd741d18ee018045936b0f2f9c9b2f7 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs new file mode 100644 index 0000000..f4464e7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum KeyValuePairType : int + { + [Description("STRING")] + String, + + [Description("INTEGER")] + Int, + + [Description("DOUBLE")] + Double, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs.meta b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs.meta new file mode 100644 index 0000000..60de33a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/KeyValuePairType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 652351552fa9f694690760ab0f94c90a +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LaunchType.cs b/Assets/Oculus/Platform/Scripts/LaunchType.cs new file mode 100644 index 0000000..71a9509 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LaunchType.cs @@ -0,0 +1,27 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LaunchType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("NORMAL")] + Normal, + + [Description("INVITE")] + Invite, + + [Description("COORDINATED")] + Coordinated, + + [Description("DEEPLINK")] + Deeplink, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LaunchType.cs.meta b/Assets/Oculus/Platform/Scripts/LaunchType.cs.meta new file mode 100644 index 0000000..62a3244 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LaunchType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 19914a3b196ab06439965a325ac1da12 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs new file mode 100644 index 0000000..f8b4a8b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LeaderboardFilterType : int + { + [Description("NONE")] + None, + + [Description("FRIENDS")] + Friends, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs.meta b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs.meta new file mode 100644 index 0000000..b1b170e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardFilterType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb882419e00a3424b83ba7ff72a0d3fd +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs new file mode 100644 index 0000000..7e3db18 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LeaderboardStartAt : int + { + [Description("TOP")] + Top, + + [Description("CENTERED_ON_VIEWER")] + CenteredOnViewer, + + [Description("CENTERED_ON_VIEWER_OR_TOP")] + CenteredOnViewerOrTop, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs.meta b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs.meta new file mode 100644 index 0000000..c109fda --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LeaderboardStartAt.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8e8523caca9803145a3e871dca67c0e5 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs new file mode 100644 index 0000000..10b7dc1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LivestreamingAudience : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("PUBLIC")] + Public, + + [Description("FRIENDS")] + Friends, + + [Description("ONLY_ME")] + OnlyMe, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs.meta b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs.meta new file mode 100644 index 0000000..1d5b54a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingAudience.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73f525341669b334cb7179690b1545fd +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs new file mode 100644 index 0000000..45039a0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LivestreamingMicrophoneStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MICROPHONE_ON")] + MicrophoneOn, + + [Description("MICROPHONE_OFF")] + MicrophoneOff, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs.meta b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs.meta new file mode 100644 index 0000000..1ba597d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 200430e18cf27164c95796b4c3456b1f +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs new file mode 100644 index 0000000..67647ad --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum LivestreamingStartStatus : int + { + [Description("SUCCESS")] + Success = 1, + + [Description("UNKNOWN")] + Unknown = 0, + + [Description("NO_PACKAGE_SET")] + NoPackageSet = -1, + + [Description("NO_FB_CONNECT")] + NoFbConnect = -2, + + [Description("NO_SESSION_ID")] + NoSessionId = -3, + + [Description("MISSING_PARAMETERS")] + MissingParameters = -4, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs.meta b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs.meta new file mode 100644 index 0000000..053b99b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/LivestreamingStartStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 278e551ec7e02bf419ea10f24a330083 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs new file mode 100644 index 0000000..dafb89f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs @@ -0,0 +1,27 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum MatchmakingCriterionImportance : int + { + [Description("REQUIRED")] + Required, + + [Description("HIGH")] + High, + + [Description("MEDIUM")] + Medium, + + [Description("LOW")] + Low, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs.meta b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs.meta new file mode 100644 index 0000000..0bde2e3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingCriterionImportance.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 030eb76e37b12924e96e8b450291a220 +timeCreated: 1523486796 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs new file mode 100644 index 0000000..2888e89 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs @@ -0,0 +1,77 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingOptions { + + public MatchmakingOptions() { + Handle = CAPI.ovr_MatchmakingOptions_Create(); + } + + public void SetCreateRoomDataStore(string key, string value) { + CAPI.ovr_MatchmakingOptions_SetCreateRoomDataStoreString(Handle, key, value); + } + + public void ClearCreateRoomDataStore() { + CAPI.ovr_MatchmakingOptions_ClearCreateRoomDataStore(Handle); + } + + public void SetCreateRoomJoinPolicy(RoomJoinPolicy value) { + CAPI.ovr_MatchmakingOptions_SetCreateRoomJoinPolicy(Handle, value); + } + + public void SetCreateRoomMaxUsers(uint value) { + CAPI.ovr_MatchmakingOptions_SetCreateRoomMaxUsers(Handle, value); + } + + public void AddEnqueueAdditionalUser(UInt64 userID) { + CAPI.ovr_MatchmakingOptions_AddEnqueueAdditionalUser(Handle, userID); + } + + public void ClearEnqueueAdditionalUsers() { + CAPI.ovr_MatchmakingOptions_ClearEnqueueAdditionalUsers(Handle); + } + + public void SetEnqueueDataSettings(string key, int value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueDataSettingsInt(Handle, key, value); + } + + public void SetEnqueueDataSettings(string key, double value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueDataSettingsDouble(Handle, key, value); + } + + public void SetEnqueueDataSettings(string key, string value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueDataSettingsString(Handle, key, value); + } + + public void ClearEnqueueDataSettings() { + CAPI.ovr_MatchmakingOptions_ClearEnqueueDataSettings(Handle); + } + + public void SetEnqueueIsDebug(bool value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueIsDebug(Handle, value); + } + + public void SetEnqueueQueryKey(string value) { + CAPI.ovr_MatchmakingOptions_SetEnqueueQueryKey(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(MatchmakingOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~MatchmakingOptions() { + CAPI.ovr_MatchmakingOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs.meta b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs.meta new file mode 100644 index 0000000..5a9d233 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f9b3e7ffb96e6594ea296771b88d7243 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs new file mode 100644 index 0000000..b23bf91 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum MatchmakingStatApproach : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("TRAILING")] + Trailing, + + [Description("SWINGY")] + Swingy, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs.meta b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs.meta new file mode 100644 index 0000000..cfbb39d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MatchmakingStatApproach.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 03cfe1746fc38ae468f5a6a910bf0379 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MediaContentType.cs b/Assets/Oculus/Platform/Scripts/MediaContentType.cs new file mode 100644 index 0000000..cf5df2b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MediaContentType.cs @@ -0,0 +1,18 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum MediaContentType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("PHOTO")] + Photo, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/MediaContentType.cs.meta b/Assets/Oculus/Platform/Scripts/MediaContentType.cs.meta new file mode 100644 index 0000000..2212d64 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MediaContentType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4a27c72682442f94abd98f97d87f9cad +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Message.cs b/Assets/Oculus/Platform/Scripts/Message.cs new file mode 100644 index 0000000..1af0b0d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Message.cs @@ -0,0 +1,1505 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + using Oculus.Platform.Models; + + public abstract class Message : Message + { + public new delegate void Callback(Message message); + public Message(IntPtr c_message) : base(c_message) { + if (!IsError) + { + data = GetDataFromMessage(c_message); + } + } + + public T Data { get { return data; } } + protected abstract T GetDataFromMessage(IntPtr c_message); + private T data; + } + + public class Message + { + public delegate void Callback(Message message); + public Message(IntPtr c_message) + { + type = (MessageType)CAPI.ovr_Message_GetType(c_message); + var isError = CAPI.ovr_Message_IsError(c_message); + requestID = CAPI.ovr_Message_GetRequestID(c_message); + + if (isError) + { + IntPtr errorHandle = CAPI.ovr_Message_GetError(c_message); + error = new Error( + CAPI.ovr_Error_GetCode(errorHandle), + CAPI.ovr_Error_GetMessage(errorHandle), + CAPI.ovr_Error_GetHttpCode(errorHandle)); + } + else if (Core.LogMessages) + { + var message = CAPI.ovr_Message_GetString(c_message); + if (message != null) + { + Debug.Log(message); + } + else + { + Debug.Log(string.Format("null message string {0}", c_message)); + } + } + } + + ~Message() + { + } + + // Keep this enum in sync with ovrMessageType in OVR_Platform.h + public enum MessageType : uint + { //TODO - rename this to type; it's already in Message class + Unknown, + + Achievements_AddCount = 0x03E76231, + Achievements_AddFields = 0x14AA2129, + Achievements_GetAllDefinitions = 0x03D3458D, + Achievements_GetAllProgress = 0x4F9FDE1D, + Achievements_GetDefinitionsByName = 0x629101BC, + Achievements_GetNextAchievementDefinitionArrayPage = 0x2A7DD255, + Achievements_GetNextAchievementProgressArrayPage = 0x2F42E727, + Achievements_GetProgressByName = 0x152663B1, + Achievements_Unlock = 0x593CCBDD, + ApplicationLifecycle_GetRegisteredPIDs = 0x04E5CF62, + ApplicationLifecycle_GetSessionKey = 0x3AAF591D, + ApplicationLifecycle_RegisterSessionKey = 0x4DB6AFF8, + Application_GetVersion = 0x68670A0E, + Application_LaunchOtherApp = 0x54E2D1F8, + AssetFile_Delete = 0x6D5D7886, + AssetFile_DeleteById = 0x5AE8CD52, + AssetFile_DeleteByName = 0x420AC1CF, + AssetFile_Download = 0x11449FC5, + AssetFile_DownloadById = 0x2D008992, + AssetFile_DownloadByName = 0x6336CEFA, + AssetFile_DownloadCancel = 0x080AD3C7, + AssetFile_DownloadCancelById = 0x51659514, + AssetFile_DownloadCancelByName = 0x446AECFA, + AssetFile_GetList = 0x4AFC6F74, + AssetFile_Status = 0x02D32F60, + AssetFile_StatusById = 0x5D955D38, + AssetFile_StatusByName = 0x41CFDA50, + CloudStorage2_GetUserDirectoryPath = 0x76A42EEE, + CloudStorage_Delete = 0x28DA456D, + CloudStorage_GetNextCloudStorageMetadataArrayPage = 0x5C07A2EF, + CloudStorage_Load = 0x40846B41, + CloudStorage_LoadBucketMetadata = 0x7327A50D, + CloudStorage_LoadConflictMetadata = 0x445A52F2, + CloudStorage_LoadHandle = 0x326ADA36, + CloudStorage_LoadMetadata = 0x03E6A292, + CloudStorage_ResolveKeepLocal = 0x30588D05, + CloudStorage_ResolveKeepRemote = 0x7525A306, + CloudStorage_Save = 0x4BBB5C2E, + Entitlement_GetIsViewerEntitled = 0x186B58B1, + IAP_ConsumePurchase = 0x1FBB72D9, + IAP_GetNextProductArrayPage = 0x1BD94AAF, + IAP_GetNextPurchaseArrayPage = 0x47570A95, + IAP_GetProductsBySKU = 0x7E9ACAF5, + IAP_GetViewerPurchases = 0x3A0F8419, + IAP_GetViewerPurchasesDurableCache = 0x63599E2B, + IAP_LaunchCheckoutFlow = 0x3F9B0D0D, + LanguagePack_GetCurrent = 0x1F90F0D5, + LanguagePack_SetCurrent = 0x5B4FBBE0, + Leaderboard_GetEntries = 0x5DB3474C, + Leaderboard_GetEntriesAfterRank = 0x18378BEF, + Leaderboard_GetNextEntries = 0x4E207CD9, + Leaderboard_GetPreviousEntries = 0x4901DAC0, + Leaderboard_WriteEntry = 0x117FC8FE, + Livestreaming_GetStatus = 0x489A6995, + Livestreaming_PauseStream = 0x369C7683, + Livestreaming_ResumeStream = 0x22526D8F, + Matchmaking_Browse = 0x1E6532C8, + Matchmaking_Browse2 = 0x66429E5B, + Matchmaking_Cancel = 0x206849AF, + Matchmaking_Cancel2 = 0x10FE8DD4, + Matchmaking_CreateAndEnqueueRoom = 0x604C5DC8, + Matchmaking_CreateAndEnqueueRoom2 = 0x295BEADB, + Matchmaking_CreateRoom = 0x033B132A, + Matchmaking_CreateRoom2 = 0x496DA384, + Matchmaking_Enqueue = 0x40C16C71, + Matchmaking_Enqueue2 = 0x121212B5, + Matchmaking_EnqueueRoom = 0x708A4064, + Matchmaking_EnqueueRoom2 = 0x5528DBA4, + Matchmaking_GetAdminSnapshot = 0x3C215F94, + Matchmaking_GetStats = 0x42FC9438, + Matchmaking_JoinRoom = 0x4D32D7FD, + Matchmaking_ReportResultInsecure = 0x1A36D18D, + Matchmaking_StartMatch = 0x44D40945, + Media_ShareToFacebook = 0x00E38AEF, + Notification_GetNextRoomInviteNotificationArrayPage = 0x0621FB77, + Notification_GetRoomInvites = 0x6F916B92, + Notification_MarkAsRead = 0x717259E3, + Party_GetCurrent = 0x47933760, + RichPresence_Clear = 0x57B752B3, + RichPresence_GetDestinations = 0x586F2D14, + RichPresence_GetNextDestinationArrayPage = 0x67367F45, + RichPresence_Set = 0x3C147509, + Room_CreateAndJoinPrivate = 0x75D6E377, + Room_CreateAndJoinPrivate2 = 0x5A3A6243, + Room_Get = 0x659A8FB8, + Room_GetCurrent = 0x09A6A504, + Room_GetCurrentForUser = 0x0E0017E5, + Room_GetInvitableUsers = 0x1E325792, + Room_GetInvitableUsers2 = 0x4F53E8B0, + Room_GetModeratedRooms = 0x0983FD77, + Room_GetNextRoomArrayPage = 0x4E8379C6, + Room_InviteUser = 0x4129EC13, + Room_Join = 0x16CA8F09, + Room_Join2 = 0x4DAB1C42, + Room_KickUser = 0x49835736, + Room_LaunchInvitableUserFlow = 0x323FE273, + Room_Leave = 0x72382475, + Room_SetDescription = 0x3044852F, + Room_UpdateDataStore = 0x026E4028, + Room_UpdateMembershipLockStatus = 0x370BB7AC, + Room_UpdateOwner = 0x32B63D1D, + Room_UpdatePrivateRoomJoinPolicy = 0x1141029B, + User_Get = 0x6BCF9E47, + User_GetAccessToken = 0x06A85ABE, + User_GetLoggedInUser = 0x436F345D, + User_GetLoggedInUserFriends = 0x587C2A8D, + User_GetLoggedInUserFriendsAndRooms = 0x5E870B87, + User_GetLoggedInUserRecentlyMetUsersAndRooms = 0x295FBA30, + User_GetNextUserAndRoomArrayPage = 0x7FBDD2DF, + User_GetNextUserArrayPage = 0x267CF743, + User_GetOrgScopedID = 0x18F0B01B, + User_GetSdkAccounts = 0x67526A83, + User_GetUserProof = 0x22810483, + User_LaunchFriendRequestFlow = 0x0904B598, + User_LaunchProfile = 0x0A397297, + Voip_SetSystemVoipSuppressed = 0x453FC9AA, + + /// Sent when a launch intent is received (for both cold and warm starts). The + /// payload is the type of the intent. ApplicationLifecycle.GetLaunchDetails() + /// should be called to get the other details. + Notification_ApplicationLifecycle_LaunchIntentChanged = 0x04B34CA3, + + /// Sent to indicate download progress for asset files. + Notification_AssetFile_DownloadUpdate = 0x2FDD0CCD, + + /// Result of a leader picking an application for CAL launch. + Notification_Cal_FinalizeApplication = 0x750C5099, + + /// Application that the group leader has proposed for a CAL launch. + Notification_Cal_ProposeApplication = 0x2E7451F5, + + /// Sent to indicate that more data has been read or an error occured. + Notification_HTTP_Transfer = 0x7DD46E2F, + + /// Indicates that the livestreaming session has been updated. You can use this + /// information to throttle your game performance or increase CPU/GPU + /// performance. Use Message.GetLivestreamingStatus() to extract the updated + /// livestreaming status. + Notification_Livestreaming_StatusChange = 0x2247596E, + + /// Indicates that a match has been found, for example after calling + /// Matchmaking.Enqueue(). Use Message.GetRoom() to extract the matchmaking + /// room. + Notification_Matchmaking_MatchFound = 0x0BC3FCD7, + + /// Indicates that a connection has been established or there's been an error. + /// Use NetworkingPeer.GetState() to get the result; as above, + /// NetworkingPeer.GetID() returns the ID of the peer this message is for. + Notification_Networking_ConnectionStateChange = 0x5E02D49A, + + /// Indicates that another user is attempting to establish a P2P connection + /// with us. Use NetworkingPeer.GetID() to extract the ID of the peer. + Notification_Networking_PeerConnectRequest = 0x4D31E2CF, + + /// Generated in response to Net.Ping(). Either contains ping time in + /// microseconds or indicates that there was a timeout. + Notification_Networking_PingResult = 0x51153012, + + /// Indicates that party has been updated + Notification_Party_PartyUpdate = 0x1D118AB2, + + /// Indicates that the user has accepted an invitation, for example in Oculus + /// Home. Use Message.GetString() to extract the ID of the room that the user + /// has been inivted to as a string. Then call ovrID_FromString() to parse it + /// into an ovrID. + /// + /// Note that you must call Rooms.Join() if you want to actually join the room. + Notification_Room_InviteAccepted = 0x6D1071B1, + + /// Handle this to notify the user when they've received an invitation to join + /// a room in your game. You can use this in lieu of, or in addition to, + /// polling for room invitations via + /// Notifications.GetRoomInviteNotifications(). + Notification_Room_InviteReceived = 0x6A499D54, + + /// Indicates that the current room has been updated. Use Message.GetRoom() to + /// extract the updated room. + Notification_Room_RoomUpdate = 0x60EC3C2F, + + /// Sent when another user is attempting to establish a VoIP connection. Use + /// Message.GetNetworkingPeer() to extract information about the user, and + /// Voip.Accept() to accept the connection. + Notification_Voip_ConnectRequest = 0x36243816, + + /// Sent to indicate that the state of the VoIP connection changed. Use + /// Message.GetNetworkingPeer() and NetworkingPeer.GetState() to extract the + /// current state. + Notification_Voip_StateChange = 0x34EFA660, + + /// Sent to indicate that some part of the overall state of SystemVoip has + /// changed. Use Message.GetSystemVoipState() and the properties of + /// SystemVoipState to extract the state that triggered the notification. + /// + /// Note that the state may have changed further since the notification was + /// generated, and that you may call the `GetSystemVoip...()` family of + /// functions at any time to get the current state directly. + Notification_Voip_SystemVoipState = 0x58D254A5, + + + Platform_InitializeWithAccessToken = 0x35692F2B, + Platform_InitializeStandaloneOculus = 0x51F8CE0C, + Platform_InitializeAndroidAsynchronous = 0x1AD307B4, + Platform_InitializeWindowsAsynchronous = 0x6DA7BA8F, + }; + + public MessageType Type { get { return type; } } + public bool IsError { get { return error != null; } } + public ulong RequestID { get { return requestID; } } + + private MessageType type; + private ulong requestID; + private Error error; + + public virtual Error GetError() { return error; } + public virtual PingResult GetPingResult() { return null; } + public virtual NetworkingPeer GetNetworkingPeer() { return null; } + public virtual HttpTransferUpdate GetHttpTransferUpdate() { return null; } + + public virtual PlatformInitialize GetPlatformInitialize() { return null; } + + public virtual AbuseReportRecording GetAbuseReportRecording() { return null; } + public virtual AchievementDefinitionList GetAchievementDefinitions() { return null; } + public virtual AchievementProgressList GetAchievementProgressList() { return null; } + public virtual AchievementUpdate GetAchievementUpdate() { return null; } + public virtual ApplicationVersion GetApplicationVersion() { return null; } + public virtual AssetDetails GetAssetDetails() { return null; } + public virtual AssetDetailsList GetAssetDetailsList() { return null; } + public virtual AssetFileDeleteResult GetAssetFileDeleteResult() { return null; } + public virtual AssetFileDownloadCancelResult GetAssetFileDownloadCancelResult() { return null; } + public virtual AssetFileDownloadResult GetAssetFileDownloadResult() { return null; } + public virtual AssetFileDownloadUpdate GetAssetFileDownloadUpdate() { return null; } + public virtual CalApplicationFinalized GetCalApplicationFinalized() { return null; } + public virtual CalApplicationProposed GetCalApplicationProposed() { return null; } + public virtual CalApplicationSuggestionList GetCalApplicationSuggestionList() { return null; } + public virtual CloudStorageConflictMetadata GetCloudStorageConflictMetadata() { return null; } + public virtual CloudStorageData GetCloudStorageData() { return null; } + public virtual CloudStorageMetadata GetCloudStorageMetadata() { return null; } + public virtual CloudStorageMetadataList GetCloudStorageMetadataList() { return null; } + public virtual CloudStorageUpdateResponse GetCloudStorageUpdateResponse() { return null; } + public virtual DestinationList GetDestinationList() { return null; } + public virtual InstalledApplicationList GetInstalledApplicationList() { return null; } + public virtual LaunchBlockFlowResult GetLaunchBlockFlowResult() { return null; } + public virtual LaunchFriendRequestFlowResult GetLaunchFriendRequestFlowResult() { return null; } + public virtual LaunchReportFlowResult GetLaunchReportFlowResult() { return null; } + public virtual LaunchUnblockFlowResult GetLaunchUnblockFlowResult() { return null; } + public virtual bool GetLeaderboardDidUpdate() { return false; } + public virtual LeaderboardEntryList GetLeaderboardEntryList() { return null; } + public virtual LinkedAccountList GetLinkedAccountList() { return null; } + public virtual LivestreamingApplicationStatus GetLivestreamingApplicationStatus() { return null; } + public virtual LivestreamingStartResult GetLivestreamingStartResult() { return null; } + public virtual LivestreamingStatus GetLivestreamingStatus() { return null; } + public virtual LivestreamingVideoStats GetLivestreamingVideoStats() { return null; } + public virtual MatchmakingAdminSnapshot GetMatchmakingAdminSnapshot() { return null; } + public virtual MatchmakingBrowseResult GetMatchmakingBrowseResult() { return null; } + public virtual MatchmakingEnqueueResult GetMatchmakingEnqueueResult() { return null; } + public virtual MatchmakingEnqueueResultAndRoom GetMatchmakingEnqueueResultAndRoom() { return null; } + public virtual MatchmakingStats GetMatchmakingStats() { return null; } + public virtual OrgScopedID GetOrgScopedID() { return null; } + public virtual Party GetParty() { return null; } + public virtual PartyID GetPartyID() { return null; } + public virtual PartyUpdateNotification GetPartyUpdateNotification() { return null; } + public virtual PidList GetPidList() { return null; } + public virtual ProductList GetProductList() { return null; } + public virtual Purchase GetPurchase() { return null; } + public virtual PurchaseList GetPurchaseList() { return null; } + public virtual Room GetRoom() { return null; } + public virtual RoomInviteNotification GetRoomInviteNotification() { return null; } + public virtual RoomInviteNotificationList GetRoomInviteNotificationList() { return null; } + public virtual RoomList GetRoomList() { return null; } + public virtual SdkAccountList GetSdkAccountList() { return null; } + public virtual ShareMediaResult GetShareMediaResult() { return null; } + public virtual string GetString() { return null; } + public virtual SystemPermission GetSystemPermission() { return null; } + public virtual SystemVoipState GetSystemVoipState() { return null; } + public virtual User GetUser() { return null; } + public virtual UserAndRoomList GetUserAndRoomList() { return null; } + public virtual UserList GetUserList() { return null; } + public virtual UserProof GetUserProof() { return null; } + public virtual UserReportID GetUserReportID() { return null; } + + internal static Message ParseMessageHandle(IntPtr messageHandle) + { + if (messageHandle.ToInt64() == 0) + { + return null; + } + + Message message = null; + Message.MessageType message_type = (Message.MessageType)CAPI.ovr_Message_GetType(messageHandle); + + switch(message_type) { + // OVR_MESSAGE_TYPE_START + case Message.MessageType.Achievements_GetAllDefinitions: + case Message.MessageType.Achievements_GetDefinitionsByName: + case Message.MessageType.Achievements_GetNextAchievementDefinitionArrayPage: + message = new MessageWithAchievementDefinitions(messageHandle); + break; + + case Message.MessageType.Achievements_GetAllProgress: + case Message.MessageType.Achievements_GetNextAchievementProgressArrayPage: + case Message.MessageType.Achievements_GetProgressByName: + message = new MessageWithAchievementProgressList(messageHandle); + break; + + case Message.MessageType.Achievements_AddCount: + case Message.MessageType.Achievements_AddFields: + case Message.MessageType.Achievements_Unlock: + message = new MessageWithAchievementUpdate(messageHandle); + break; + + case Message.MessageType.Application_GetVersion: + message = new MessageWithApplicationVersion(messageHandle); + break; + + case Message.MessageType.AssetFile_Status: + case Message.MessageType.AssetFile_StatusById: + case Message.MessageType.AssetFile_StatusByName: + case Message.MessageType.LanguagePack_GetCurrent: + message = new MessageWithAssetDetails(messageHandle); + break; + + case Message.MessageType.AssetFile_GetList: + message = new MessageWithAssetDetailsList(messageHandle); + break; + + case Message.MessageType.AssetFile_Delete: + case Message.MessageType.AssetFile_DeleteById: + case Message.MessageType.AssetFile_DeleteByName: + message = new MessageWithAssetFileDeleteResult(messageHandle); + break; + + case Message.MessageType.AssetFile_DownloadCancel: + case Message.MessageType.AssetFile_DownloadCancelById: + case Message.MessageType.AssetFile_DownloadCancelByName: + message = new MessageWithAssetFileDownloadCancelResult(messageHandle); + break; + + case Message.MessageType.AssetFile_Download: + case Message.MessageType.AssetFile_DownloadById: + case Message.MessageType.AssetFile_DownloadByName: + case Message.MessageType.LanguagePack_SetCurrent: + message = new MessageWithAssetFileDownloadResult(messageHandle); + break; + + case Message.MessageType.Notification_AssetFile_DownloadUpdate: + message = new MessageWithAssetFileDownloadUpdate(messageHandle); + break; + + case Message.MessageType.Notification_Cal_FinalizeApplication: + message = new MessageWithCalApplicationFinalized(messageHandle); + break; + + case Message.MessageType.Notification_Cal_ProposeApplication: + message = new MessageWithCalApplicationProposed(messageHandle); + break; + + case Message.MessageType.CloudStorage_LoadConflictMetadata: + message = new MessageWithCloudStorageConflictMetadata(messageHandle); + break; + + case Message.MessageType.CloudStorage_Load: + case Message.MessageType.CloudStorage_LoadHandle: + message = new MessageWithCloudStorageData(messageHandle); + break; + + case Message.MessageType.CloudStorage_LoadMetadata: + message = new MessageWithCloudStorageMetadataUnderLocal(messageHandle); + break; + + case Message.MessageType.CloudStorage_GetNextCloudStorageMetadataArrayPage: + case Message.MessageType.CloudStorage_LoadBucketMetadata: + message = new MessageWithCloudStorageMetadataList(messageHandle); + break; + + case Message.MessageType.CloudStorage_Delete: + case Message.MessageType.CloudStorage_ResolveKeepLocal: + case Message.MessageType.CloudStorage_ResolveKeepRemote: + case Message.MessageType.CloudStorage_Save: + message = new MessageWithCloudStorageUpdateResponse(messageHandle); + break; + + case Message.MessageType.RichPresence_GetDestinations: + case Message.MessageType.RichPresence_GetNextDestinationArrayPage: + message = new MessageWithDestinationList(messageHandle); + break; + + case Message.MessageType.ApplicationLifecycle_RegisterSessionKey: + case Message.MessageType.Entitlement_GetIsViewerEntitled: + case Message.MessageType.IAP_ConsumePurchase: + case Message.MessageType.Matchmaking_Cancel: + case Message.MessageType.Matchmaking_Cancel2: + case Message.MessageType.Matchmaking_ReportResultInsecure: + case Message.MessageType.Matchmaking_StartMatch: + case Message.MessageType.Notification_MarkAsRead: + case Message.MessageType.RichPresence_Clear: + case Message.MessageType.RichPresence_Set: + case Message.MessageType.Room_LaunchInvitableUserFlow: + case Message.MessageType.Room_UpdateOwner: + case Message.MessageType.User_LaunchProfile: + message = new Message(messageHandle); + break; + + case Message.MessageType.User_LaunchFriendRequestFlow: + message = new MessageWithLaunchFriendRequestFlowResult(messageHandle); + break; + + case Message.MessageType.Leaderboard_GetEntries: + case Message.MessageType.Leaderboard_GetEntriesAfterRank: + case Message.MessageType.Leaderboard_GetNextEntries: + case Message.MessageType.Leaderboard_GetPreviousEntries: + message = new MessageWithLeaderboardEntryList(messageHandle); + break; + + case Message.MessageType.Leaderboard_WriteEntry: + message = new MessageWithLeaderboardDidUpdate(messageHandle); + break; + + case Message.MessageType.Livestreaming_GetStatus: + case Message.MessageType.Livestreaming_PauseStream: + case Message.MessageType.Livestreaming_ResumeStream: + case Message.MessageType.Notification_Livestreaming_StatusChange: + message = new MessageWithLivestreamingStatus(messageHandle); + break; + + case Message.MessageType.Matchmaking_GetAdminSnapshot: + message = new MessageWithMatchmakingAdminSnapshot(messageHandle); + break; + + case Message.MessageType.Matchmaking_Browse: + case Message.MessageType.Matchmaking_Browse2: + message = new MessageWithMatchmakingBrowseResult(messageHandle); + break; + + case Message.MessageType.Matchmaking_Enqueue: + case Message.MessageType.Matchmaking_Enqueue2: + case Message.MessageType.Matchmaking_EnqueueRoom: + case Message.MessageType.Matchmaking_EnqueueRoom2: + message = new MessageWithMatchmakingEnqueueResult(messageHandle); + break; + + case Message.MessageType.Matchmaking_CreateAndEnqueueRoom: + case Message.MessageType.Matchmaking_CreateAndEnqueueRoom2: + message = new MessageWithMatchmakingEnqueueResultAndRoom(messageHandle); + break; + + case Message.MessageType.Matchmaking_GetStats: + message = new MessageWithMatchmakingStatsUnderMatchmakingStats(messageHandle); + break; + + case Message.MessageType.User_GetOrgScopedID: + message = new MessageWithOrgScopedID(messageHandle); + break; + + case Message.MessageType.Party_GetCurrent: + message = new MessageWithPartyUnderCurrentParty(messageHandle); + break; + + case Message.MessageType.Notification_Party_PartyUpdate: + message = new MessageWithPartyUpdateNotification(messageHandle); + break; + + case Message.MessageType.ApplicationLifecycle_GetRegisteredPIDs: + message = new MessageWithPidList(messageHandle); + break; + + case Message.MessageType.IAP_GetNextProductArrayPage: + case Message.MessageType.IAP_GetProductsBySKU: + message = new MessageWithProductList(messageHandle); + break; + + case Message.MessageType.IAP_LaunchCheckoutFlow: + message = new MessageWithPurchase(messageHandle); + break; + + case Message.MessageType.IAP_GetNextPurchaseArrayPage: + case Message.MessageType.IAP_GetViewerPurchases: + case Message.MessageType.IAP_GetViewerPurchasesDurableCache: + message = new MessageWithPurchaseList(messageHandle); + break; + + case Message.MessageType.Room_Get: + message = new MessageWithRoom(messageHandle); + break; + + case Message.MessageType.Room_GetCurrent: + case Message.MessageType.Room_GetCurrentForUser: + message = new MessageWithRoomUnderCurrentRoom(messageHandle); + break; + + case Message.MessageType.Matchmaking_CreateRoom: + case Message.MessageType.Matchmaking_CreateRoom2: + case Message.MessageType.Matchmaking_JoinRoom: + case Message.MessageType.Notification_Room_RoomUpdate: + case Message.MessageType.Room_CreateAndJoinPrivate: + case Message.MessageType.Room_CreateAndJoinPrivate2: + case Message.MessageType.Room_InviteUser: + case Message.MessageType.Room_Join: + case Message.MessageType.Room_Join2: + case Message.MessageType.Room_KickUser: + case Message.MessageType.Room_Leave: + case Message.MessageType.Room_SetDescription: + case Message.MessageType.Room_UpdateDataStore: + case Message.MessageType.Room_UpdateMembershipLockStatus: + case Message.MessageType.Room_UpdatePrivateRoomJoinPolicy: + message = new MessageWithRoomUnderViewerRoom(messageHandle); + break; + + case Message.MessageType.Room_GetModeratedRooms: + case Message.MessageType.Room_GetNextRoomArrayPage: + message = new MessageWithRoomList(messageHandle); + break; + + case Message.MessageType.Notification_Room_InviteReceived: + message = new MessageWithRoomInviteNotification(messageHandle); + break; + + case Message.MessageType.Notification_GetNextRoomInviteNotificationArrayPage: + case Message.MessageType.Notification_GetRoomInvites: + message = new MessageWithRoomInviteNotificationList(messageHandle); + break; + + case Message.MessageType.User_GetSdkAccounts: + message = new MessageWithSdkAccountList(messageHandle); + break; + + case Message.MessageType.Media_ShareToFacebook: + message = new MessageWithShareMediaResult(messageHandle); + break; + + case Message.MessageType.ApplicationLifecycle_GetSessionKey: + case Message.MessageType.Application_LaunchOtherApp: + case Message.MessageType.CloudStorage2_GetUserDirectoryPath: + case Message.MessageType.Notification_ApplicationLifecycle_LaunchIntentChanged: + case Message.MessageType.Notification_Room_InviteAccepted: + case Message.MessageType.User_GetAccessToken: + message = new MessageWithString(messageHandle); + break; + + case Message.MessageType.Voip_SetSystemVoipSuppressed: + message = new MessageWithSystemVoipState(messageHandle); + break; + + case Message.MessageType.User_Get: + case Message.MessageType.User_GetLoggedInUser: + message = new MessageWithUser(messageHandle); + break; + + case Message.MessageType.User_GetLoggedInUserFriendsAndRooms: + case Message.MessageType.User_GetLoggedInUserRecentlyMetUsersAndRooms: + case Message.MessageType.User_GetNextUserAndRoomArrayPage: + message = new MessageWithUserAndRoomList(messageHandle); + break; + + case Message.MessageType.Room_GetInvitableUsers: + case Message.MessageType.Room_GetInvitableUsers2: + case Message.MessageType.User_GetLoggedInUserFriends: + case Message.MessageType.User_GetNextUserArrayPage: + message = new MessageWithUserList(messageHandle); + break; + + case Message.MessageType.User_GetUserProof: + message = new MessageWithUserProof(messageHandle); + break; + + case Message.MessageType.Notification_Networking_ConnectionStateChange: + case Message.MessageType.Notification_Networking_PeerConnectRequest: + message = new MessageWithNetworkingPeer(messageHandle); + break; + + case Message.MessageType.Notification_Networking_PingResult: + message = new MessageWithPingResult(messageHandle); + break; + + case Message.MessageType.Notification_Matchmaking_MatchFound: + message = new MessageWithMatchmakingNotification(messageHandle); + break; + + case Message.MessageType.Notification_Voip_ConnectRequest: + case Message.MessageType.Notification_Voip_StateChange: + message = new MessageWithNetworkingPeer(messageHandle); + break; + + case Message.MessageType.Notification_Voip_SystemVoipState: + message = new MessageWithSystemVoipState(messageHandle); + break; + + case Message.MessageType.Notification_HTTP_Transfer: + message = new MessageWithHttpTransferUpdate(messageHandle); + break; + + case Message.MessageType.Platform_InitializeWithAccessToken: + case Message.MessageType.Platform_InitializeStandaloneOculus: + case Message.MessageType.Platform_InitializeAndroidAsynchronous: + case Message.MessageType.Platform_InitializeWindowsAsynchronous: + message = new MessageWithPlatformInitialize(messageHandle); + break; + + default: + message = PlatformInternal.ParseMessageHandle(messageHandle, message_type); + if (message == null) + { + Debug.LogError(string.Format("Unrecognized message type {0}\n", message_type)); + } + break; + // OVR_MESSAGE_TYPE_END + } + + return message; + } + + public static Message PopMessage() + { + if (!Core.IsInitialized()) + { + return null; + } + + var messageHandle = CAPI.ovr_PopMessage(); + + Message message = ParseMessageHandle(messageHandle); + + CAPI.ovr_FreeMessage(messageHandle); + return message; + } + + internal delegate Message ExtraMessageTypesHandler(IntPtr messageHandle, Message.MessageType message_type); + internal static ExtraMessageTypesHandler HandleExtraMessageTypes { set; private get; } + } + + public class MessageWithAbuseReportRecording : Message + { + public MessageWithAbuseReportRecording(IntPtr c_message) : base(c_message) { } + public override AbuseReportRecording GetAbuseReportRecording() { return Data; } + protected override AbuseReportRecording GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAbuseReportRecording(msg); + return new AbuseReportRecording(obj); + } + + } + public class MessageWithAchievementDefinitions : Message + { + public MessageWithAchievementDefinitions(IntPtr c_message) : base(c_message) { } + public override AchievementDefinitionList GetAchievementDefinitions() { return Data; } + protected override AchievementDefinitionList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAchievementDefinitionArray(msg); + return new AchievementDefinitionList(obj); + } + + } + public class MessageWithAchievementProgressList : Message + { + public MessageWithAchievementProgressList(IntPtr c_message) : base(c_message) { } + public override AchievementProgressList GetAchievementProgressList() { return Data; } + protected override AchievementProgressList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAchievementProgressArray(msg); + return new AchievementProgressList(obj); + } + + } + public class MessageWithAchievementUpdate : Message + { + public MessageWithAchievementUpdate(IntPtr c_message) : base(c_message) { } + public override AchievementUpdate GetAchievementUpdate() { return Data; } + protected override AchievementUpdate GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAchievementUpdate(msg); + return new AchievementUpdate(obj); + } + + } + public class MessageWithApplicationVersion : Message + { + public MessageWithApplicationVersion(IntPtr c_message) : base(c_message) { } + public override ApplicationVersion GetApplicationVersion() { return Data; } + protected override ApplicationVersion GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetApplicationVersion(msg); + return new ApplicationVersion(obj); + } + + } + public class MessageWithAssetDetails : Message + { + public MessageWithAssetDetails(IntPtr c_message) : base(c_message) { } + public override AssetDetails GetAssetDetails() { return Data; } + protected override AssetDetails GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetDetails(msg); + return new AssetDetails(obj); + } + + } + public class MessageWithAssetDetailsList : Message + { + public MessageWithAssetDetailsList(IntPtr c_message) : base(c_message) { } + public override AssetDetailsList GetAssetDetailsList() { return Data; } + protected override AssetDetailsList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetDetailsArray(msg); + return new AssetDetailsList(obj); + } + + } + public class MessageWithAssetFileDeleteResult : Message + { + public MessageWithAssetFileDeleteResult(IntPtr c_message) : base(c_message) { } + public override AssetFileDeleteResult GetAssetFileDeleteResult() { return Data; } + protected override AssetFileDeleteResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDeleteResult(msg); + return new AssetFileDeleteResult(obj); + } + + } + public class MessageWithAssetFileDownloadCancelResult : Message + { + public MessageWithAssetFileDownloadCancelResult(IntPtr c_message) : base(c_message) { } + public override AssetFileDownloadCancelResult GetAssetFileDownloadCancelResult() { return Data; } + protected override AssetFileDownloadCancelResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDownloadCancelResult(msg); + return new AssetFileDownloadCancelResult(obj); + } + + } + public class MessageWithAssetFileDownloadResult : Message + { + public MessageWithAssetFileDownloadResult(IntPtr c_message) : base(c_message) { } + public override AssetFileDownloadResult GetAssetFileDownloadResult() { return Data; } + protected override AssetFileDownloadResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDownloadResult(msg); + return new AssetFileDownloadResult(obj); + } + + } + public class MessageWithAssetFileDownloadUpdate : Message + { + public MessageWithAssetFileDownloadUpdate(IntPtr c_message) : base(c_message) { } + public override AssetFileDownloadUpdate GetAssetFileDownloadUpdate() { return Data; } + protected override AssetFileDownloadUpdate GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetAssetFileDownloadUpdate(msg); + return new AssetFileDownloadUpdate(obj); + } + + } + public class MessageWithCalApplicationFinalized : Message + { + public MessageWithCalApplicationFinalized(IntPtr c_message) : base(c_message) { } + public override CalApplicationFinalized GetCalApplicationFinalized() { return Data; } + protected override CalApplicationFinalized GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCalApplicationFinalized(msg); + return new CalApplicationFinalized(obj); + } + + } + public class MessageWithCalApplicationProposed : Message + { + public MessageWithCalApplicationProposed(IntPtr c_message) : base(c_message) { } + public override CalApplicationProposed GetCalApplicationProposed() { return Data; } + protected override CalApplicationProposed GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCalApplicationProposed(msg); + return new CalApplicationProposed(obj); + } + + } + public class MessageWithCalApplicationSuggestionList : Message + { + public MessageWithCalApplicationSuggestionList(IntPtr c_message) : base(c_message) { } + public override CalApplicationSuggestionList GetCalApplicationSuggestionList() { return Data; } + protected override CalApplicationSuggestionList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCalApplicationSuggestionArray(msg); + return new CalApplicationSuggestionList(obj); + } + + } + public class MessageWithCloudStorageConflictMetadata : Message + { + public MessageWithCloudStorageConflictMetadata(IntPtr c_message) : base(c_message) { } + public override CloudStorageConflictMetadata GetCloudStorageConflictMetadata() { return Data; } + protected override CloudStorageConflictMetadata GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageConflictMetadata(msg); + return new CloudStorageConflictMetadata(obj); + } + + } + public class MessageWithCloudStorageData : Message + { + public MessageWithCloudStorageData(IntPtr c_message) : base(c_message) { } + public override CloudStorageData GetCloudStorageData() { return Data; } + protected override CloudStorageData GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageData(msg); + return new CloudStorageData(obj); + } + + } + public class MessageWithCloudStorageMetadataUnderLocal : Message + { + public MessageWithCloudStorageMetadataUnderLocal(IntPtr c_message) : base(c_message) { } + public override CloudStorageMetadata GetCloudStorageMetadata() { return Data; } + protected override CloudStorageMetadata GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageMetadata(msg); + return new CloudStorageMetadata(obj); + } + + } + public class MessageWithCloudStorageMetadataList : Message + { + public MessageWithCloudStorageMetadataList(IntPtr c_message) : base(c_message) { } + public override CloudStorageMetadataList GetCloudStorageMetadataList() { return Data; } + protected override CloudStorageMetadataList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageMetadataArray(msg); + return new CloudStorageMetadataList(obj); + } + + } + public class MessageWithCloudStorageUpdateResponse : Message + { + public MessageWithCloudStorageUpdateResponse(IntPtr c_message) : base(c_message) { } + public override CloudStorageUpdateResponse GetCloudStorageUpdateResponse() { return Data; } + protected override CloudStorageUpdateResponse GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetCloudStorageUpdateResponse(msg); + return new CloudStorageUpdateResponse(obj); + } + + } + public class MessageWithDestinationList : Message + { + public MessageWithDestinationList(IntPtr c_message) : base(c_message) { } + public override DestinationList GetDestinationList() { return Data; } + protected override DestinationList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetDestinationArray(msg); + return new DestinationList(obj); + } + + } + public class MessageWithInstalledApplicationList : Message + { + public MessageWithInstalledApplicationList(IntPtr c_message) : base(c_message) { } + public override InstalledApplicationList GetInstalledApplicationList() { return Data; } + protected override InstalledApplicationList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetInstalledApplicationArray(msg); + return new InstalledApplicationList(obj); + } + + } + public class MessageWithLaunchBlockFlowResult : Message + { + public MessageWithLaunchBlockFlowResult(IntPtr c_message) : base(c_message) { } + public override LaunchBlockFlowResult GetLaunchBlockFlowResult() { return Data; } + protected override LaunchBlockFlowResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLaunchBlockFlowResult(msg); + return new LaunchBlockFlowResult(obj); + } + + } + public class MessageWithLaunchFriendRequestFlowResult : Message + { + public MessageWithLaunchFriendRequestFlowResult(IntPtr c_message) : base(c_message) { } + public override LaunchFriendRequestFlowResult GetLaunchFriendRequestFlowResult() { return Data; } + protected override LaunchFriendRequestFlowResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLaunchFriendRequestFlowResult(msg); + return new LaunchFriendRequestFlowResult(obj); + } + + } + public class MessageWithLaunchReportFlowResult : Message + { + public MessageWithLaunchReportFlowResult(IntPtr c_message) : base(c_message) { } + public override LaunchReportFlowResult GetLaunchReportFlowResult() { return Data; } + protected override LaunchReportFlowResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLaunchReportFlowResult(msg); + return new LaunchReportFlowResult(obj); + } + + } + public class MessageWithLaunchUnblockFlowResult : Message + { + public MessageWithLaunchUnblockFlowResult(IntPtr c_message) : base(c_message) { } + public override LaunchUnblockFlowResult GetLaunchUnblockFlowResult() { return Data; } + protected override LaunchUnblockFlowResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLaunchUnblockFlowResult(msg); + return new LaunchUnblockFlowResult(obj); + } + + } + public class MessageWithLeaderboardEntryList : Message + { + public MessageWithLeaderboardEntryList(IntPtr c_message) : base(c_message) { } + public override LeaderboardEntryList GetLeaderboardEntryList() { return Data; } + protected override LeaderboardEntryList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLeaderboardEntryArray(msg); + return new LeaderboardEntryList(obj); + } + + } + public class MessageWithLinkedAccountList : Message + { + public MessageWithLinkedAccountList(IntPtr c_message) : base(c_message) { } + public override LinkedAccountList GetLinkedAccountList() { return Data; } + protected override LinkedAccountList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLinkedAccountArray(msg); + return new LinkedAccountList(obj); + } + + } + public class MessageWithLivestreamingApplicationStatus : Message + { + public MessageWithLivestreamingApplicationStatus(IntPtr c_message) : base(c_message) { } + public override LivestreamingApplicationStatus GetLivestreamingApplicationStatus() { return Data; } + protected override LivestreamingApplicationStatus GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingApplicationStatus(msg); + return new LivestreamingApplicationStatus(obj); + } + + } + public class MessageWithLivestreamingStartResult : Message + { + public MessageWithLivestreamingStartResult(IntPtr c_message) : base(c_message) { } + public override LivestreamingStartResult GetLivestreamingStartResult() { return Data; } + protected override LivestreamingStartResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingStartResult(msg); + return new LivestreamingStartResult(obj); + } + + } + public class MessageWithLivestreamingStatus : Message + { + public MessageWithLivestreamingStatus(IntPtr c_message) : base(c_message) { } + public override LivestreamingStatus GetLivestreamingStatus() { return Data; } + protected override LivestreamingStatus GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingStatus(msg); + return new LivestreamingStatus(obj); + } + + } + public class MessageWithLivestreamingVideoStats : Message + { + public MessageWithLivestreamingVideoStats(IntPtr c_message) : base(c_message) { } + public override LivestreamingVideoStats GetLivestreamingVideoStats() { return Data; } + protected override LivestreamingVideoStats GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLivestreamingVideoStats(msg); + return new LivestreamingVideoStats(obj); + } + + } + public class MessageWithMatchmakingAdminSnapshot : Message + { + public MessageWithMatchmakingAdminSnapshot(IntPtr c_message) : base(c_message) { } + public override MatchmakingAdminSnapshot GetMatchmakingAdminSnapshot() { return Data; } + protected override MatchmakingAdminSnapshot GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingAdminSnapshot(msg); + return new MatchmakingAdminSnapshot(obj); + } + + } + public class MessageWithMatchmakingEnqueueResult : Message + { + public MessageWithMatchmakingEnqueueResult(IntPtr c_message) : base(c_message) { } + public override MatchmakingEnqueueResult GetMatchmakingEnqueueResult() { return Data; } + protected override MatchmakingEnqueueResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingEnqueueResult(msg); + return new MatchmakingEnqueueResult(obj); + } + + } + public class MessageWithMatchmakingEnqueueResultAndRoom : Message + { + public MessageWithMatchmakingEnqueueResultAndRoom(IntPtr c_message) : base(c_message) { } + public override MatchmakingEnqueueResultAndRoom GetMatchmakingEnqueueResultAndRoom() { return Data; } + protected override MatchmakingEnqueueResultAndRoom GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingEnqueueResultAndRoom(msg); + return new MatchmakingEnqueueResultAndRoom(obj); + } + + } + public class MessageWithMatchmakingStatsUnderMatchmakingStats : Message + { + public MessageWithMatchmakingStatsUnderMatchmakingStats(IntPtr c_message) : base(c_message) { } + public override MatchmakingStats GetMatchmakingStats() { return Data; } + protected override MatchmakingStats GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingStats(msg); + return new MatchmakingStats(obj); + } + + } + public class MessageWithOrgScopedID : Message + { + public MessageWithOrgScopedID(IntPtr c_message) : base(c_message) { } + public override OrgScopedID GetOrgScopedID() { return Data; } + protected override OrgScopedID GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetOrgScopedID(msg); + return new OrgScopedID(obj); + } + + } + public class MessageWithParty : Message + { + public MessageWithParty(IntPtr c_message) : base(c_message) { } + public override Party GetParty() { return Data; } + protected override Party GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetParty(msg); + return new Party(obj); + } + + } + public class MessageWithPartyUnderCurrentParty : Message + { + public MessageWithPartyUnderCurrentParty(IntPtr c_message) : base(c_message) { } + public override Party GetParty() { return Data; } + protected override Party GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetParty(msg); + return new Party(obj); + } + + } + public class MessageWithPartyID : Message + { + public MessageWithPartyID(IntPtr c_message) : base(c_message) { } + public override PartyID GetPartyID() { return Data; } + protected override PartyID GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPartyID(msg); + return new PartyID(obj); + } + + } + public class MessageWithPartyUpdateNotification : Message + { + public MessageWithPartyUpdateNotification(IntPtr c_message) : base(c_message) { } + public override PartyUpdateNotification GetPartyUpdateNotification() { return Data; } + protected override PartyUpdateNotification GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPartyUpdateNotification(msg); + return new PartyUpdateNotification(obj); + } + + } + public class MessageWithPidList : Message + { + public MessageWithPidList(IntPtr c_message) : base(c_message) { } + public override PidList GetPidList() { return Data; } + protected override PidList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPidArray(msg); + return new PidList(obj); + } + + } + public class MessageWithProductList : Message + { + public MessageWithProductList(IntPtr c_message) : base(c_message) { } + public override ProductList GetProductList() { return Data; } + protected override ProductList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetProductArray(msg); + return new ProductList(obj); + } + + } + public class MessageWithPurchase : Message + { + public MessageWithPurchase(IntPtr c_message) : base(c_message) { } + public override Purchase GetPurchase() { return Data; } + protected override Purchase GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPurchase(msg); + return new Purchase(obj); + } + + } + public class MessageWithPurchaseList : Message + { + public MessageWithPurchaseList(IntPtr c_message) : base(c_message) { } + public override PurchaseList GetPurchaseList() { return Data; } + protected override PurchaseList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPurchaseArray(msg); + return new PurchaseList(obj); + } + + } + public class MessageWithRoom : Message + { + public MessageWithRoom(IntPtr c_message) : base(c_message) { } + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + + } + public class MessageWithRoomUnderCurrentRoom : Message + { + public MessageWithRoomUnderCurrentRoom(IntPtr c_message) : base(c_message) { } + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + + } + public class MessageWithRoomUnderViewerRoom : Message + { + public MessageWithRoomUnderViewerRoom(IntPtr c_message) : base(c_message) { } + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + + } + public class MessageWithRoomList : Message + { + public MessageWithRoomList(IntPtr c_message) : base(c_message) { } + public override RoomList GetRoomList() { return Data; } + protected override RoomList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoomArray(msg); + return new RoomList(obj); + } + + } + public class MessageWithRoomInviteNotification : Message + { + public MessageWithRoomInviteNotification(IntPtr c_message) : base(c_message) { } + public override RoomInviteNotification GetRoomInviteNotification() { return Data; } + protected override RoomInviteNotification GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoomInviteNotification(msg); + return new RoomInviteNotification(obj); + } + + } + public class MessageWithRoomInviteNotificationList : Message + { + public MessageWithRoomInviteNotificationList(IntPtr c_message) : base(c_message) { } + public override RoomInviteNotificationList GetRoomInviteNotificationList() { return Data; } + protected override RoomInviteNotificationList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoomInviteNotificationArray(msg); + return new RoomInviteNotificationList(obj); + } + + } + public class MessageWithSdkAccountList : Message + { + public MessageWithSdkAccountList(IntPtr c_message) : base(c_message) { } + public override SdkAccountList GetSdkAccountList() { return Data; } + protected override SdkAccountList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetSdkAccountArray(msg); + return new SdkAccountList(obj); + } + + } + public class MessageWithShareMediaResult : Message + { + public MessageWithShareMediaResult(IntPtr c_message) : base(c_message) { } + public override ShareMediaResult GetShareMediaResult() { return Data; } + protected override ShareMediaResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetShareMediaResult(msg); + return new ShareMediaResult(obj); + } + + } + public class MessageWithString : Message + { + public MessageWithString(IntPtr c_message) : base(c_message) { } + public override string GetString() { return Data; } + protected override string GetDataFromMessage(IntPtr c_message) + { + return CAPI.ovr_Message_GetString(c_message); + } + } + public class MessageWithSystemPermission : Message + { + public MessageWithSystemPermission(IntPtr c_message) : base(c_message) { } + public override SystemPermission GetSystemPermission() { return Data; } + protected override SystemPermission GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetSystemPermission(msg); + return new SystemPermission(obj); + } + + } + public class MessageWithSystemVoipState : Message + { + public MessageWithSystemVoipState(IntPtr c_message) : base(c_message) { } + public override SystemVoipState GetSystemVoipState() { return Data; } + protected override SystemVoipState GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetSystemVoipState(msg); + return new SystemVoipState(obj); + } + + } + public class MessageWithUser : Message + { + public MessageWithUser(IntPtr c_message) : base(c_message) { } + public override User GetUser() { return Data; } + protected override User GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUser(msg); + return new User(obj); + } + + } + public class MessageWithUserAndRoomList : Message + { + public MessageWithUserAndRoomList(IntPtr c_message) : base(c_message) { } + public override UserAndRoomList GetUserAndRoomList() { return Data; } + protected override UserAndRoomList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserAndRoomArray(msg); + return new UserAndRoomList(obj); + } + + } + public class MessageWithUserList : Message + { + public MessageWithUserList(IntPtr c_message) : base(c_message) { } + public override UserList GetUserList() { return Data; } + protected override UserList GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserArray(msg); + return new UserList(obj); + } + + } + public class MessageWithUserProof : Message + { + public MessageWithUserProof(IntPtr c_message) : base(c_message) { } + public override UserProof GetUserProof() { return Data; } + protected override UserProof GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserProof(msg); + return new UserProof(obj); + } + + } + public class MessageWithUserReportID : Message + { + public MessageWithUserReportID(IntPtr c_message) : base(c_message) { } + public override UserReportID GetUserReportID() { return Data; } + protected override UserReportID GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetUserReportID(msg); + return new UserReportID(obj); + } + + } + + public class MessageWithNetworkingPeer : Message + { + public MessageWithNetworkingPeer(IntPtr c_message) : base(c_message) { } + public override NetworkingPeer GetNetworkingPeer() { return Data; } + protected override NetworkingPeer GetDataFromMessage(IntPtr c_message) + { + var peer = CAPI.ovr_Message_GetNetworkingPeer(c_message); + return new NetworkingPeer( + CAPI.ovr_NetworkingPeer_GetID(peer), + CAPI.ovr_NetworkingPeer_GetState(peer) + ); + } + } + + public class MessageWithPingResult : Message + { + public MessageWithPingResult(IntPtr c_message) : base(c_message) { } + public override PingResult GetPingResult() { return Data; } + protected override PingResult GetDataFromMessage(IntPtr c_message) + { + var ping = CAPI.ovr_Message_GetPingResult(c_message); + bool is_timeout = CAPI.ovr_PingResult_IsTimeout(ping); + return new PingResult( + CAPI.ovr_PingResult_GetID(ping), + is_timeout ? (UInt64?)null : CAPI.ovr_PingResult_GetPingTimeUsec(ping) + ); + } + } + + public class MessageWithLeaderboardDidUpdate : Message + { + public MessageWithLeaderboardDidUpdate(IntPtr c_message) : base(c_message) { } + public override bool GetLeaderboardDidUpdate() { return Data; } + protected override bool GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetLeaderboardUpdateStatus(msg); + return CAPI.ovr_LeaderboardUpdateStatus_GetDidUpdate(obj); + } + } + + public class MessageWithMatchmakingNotification : Message + { + public MessageWithMatchmakingNotification(IntPtr c_message) : base(c_message) {} + public override Room GetRoom() { return Data; } + protected override Room GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetRoom(msg); + return new Room(obj); + } + } + + public class MessageWithMatchmakingBrowseResult : Message + { + public MessageWithMatchmakingBrowseResult(IntPtr c_message) : base(c_message) {} + + public override MatchmakingEnqueueResult GetMatchmakingEnqueueResult() { return Data.EnqueueResult; } + public override RoomList GetRoomList() { return Data.Rooms; } + + protected override MatchmakingBrowseResult GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetMatchmakingBrowseResult(msg); + return new MatchmakingBrowseResult(obj); + } + } + + public class MessageWithHttpTransferUpdate : Message + { + public MessageWithHttpTransferUpdate(IntPtr c_message) : base(c_message) {} + public override HttpTransferUpdate GetHttpTransferUpdate() { return Data; } + protected override HttpTransferUpdate GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetHttpTransferUpdate(msg); + return new HttpTransferUpdate(obj); + } + } + + public class MessageWithPlatformInitialize : Message + { + public MessageWithPlatformInitialize(IntPtr c_message) : base(c_message) {} + public override PlatformInitialize GetPlatformInitialize() { return Data; } + protected override PlatformInitialize GetDataFromMessage(IntPtr c_message) + { + var msg = CAPI.ovr_Message_GetNativeMessage(c_message); + var obj = CAPI.ovr_Message_GetPlatformInitialize(msg); + return new PlatformInitialize(obj); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Message.cs.meta b/Assets/Oculus/Platform/Scripts/Message.cs.meta new file mode 100644 index 0000000..7f06c3e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Message.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 09dafd74c8e70094d891a1ec896c3e95 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs new file mode 100644 index 0000000..e310f4a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs @@ -0,0 +1,73 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/ +// +// NOTE for android developers: The existence of UnityEngine.Microphone causes Unity to insert the +// android.permission.RECORD_AUDIO permission into the AndroidManifest.xml generated at build time + +#if OVR_PLATFORM_USE_MICROPHONE +using UnityEngine; +using System.Collections.Generic; + +namespace Oculus.Platform +{ + + public class MicrophoneInput : IMicrophone + { + AudioClip microphoneClip; + int lastMicrophoneSample; + int micBufferSizeSamples; + + private Dictionary micSampleBuffers; + + public MicrophoneInput() + { + int bufferLenSeconds = 1; //minimum size unity allows + int inputFreq = 48000; //this frequency is fixed throughout the voip system atm + microphoneClip = Microphone.Start(null, true, bufferLenSeconds, inputFreq); + micBufferSizeSamples = bufferLenSeconds * inputFreq; + + micSampleBuffers = new Dictionary(); + } + + public void Start() + { + + } + + public void Stop() + { + } + + public float[] Update() + { + int pos = Microphone.GetPosition(null); + int copySize = 0; + if (pos < lastMicrophoneSample) + { + int endOfBufferSize = micBufferSizeSamples - lastMicrophoneSample; + copySize = endOfBufferSize + pos; + } + else + { + copySize = pos - lastMicrophoneSample; + } + + if (copySize == 0) { + return null; + } + + float[] samples; + if (!micSampleBuffers.TryGetValue(copySize, out samples)) + { + samples = new float[copySize]; + micSampleBuffers[copySize] = samples; + } + + microphoneClip.GetData(samples, lastMicrophoneSample); + lastMicrophoneSample = pos; + return samples; + + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs.meta b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs.meta new file mode 100644 index 0000000..9017fdb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2775d34a6e394754e897a9af26acdef3 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs new file mode 100644 index 0000000..23a1bf9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs @@ -0,0 +1,58 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/ + +#if OVR_PLATFORM_USE_MICROPHONE +using UnityEngine; +using System; +using System.Collections.Generic; + +namespace Oculus.Platform +{ + public class MicrophoneInputNative : IMicrophone + { + IntPtr mic; + + int tempBufferSize = 960 * 10; + float[] tempBuffer; + + private Dictionary micSampleBuffers; + + public MicrophoneInputNative() + { + mic = CAPI.ovr_Microphone_Create(); + CAPI.ovr_Microphone_Start(mic); + tempBuffer = new float[tempBufferSize]; + + micSampleBuffers = new Dictionary(); + } + + public float[] Update() + { + ulong readSize = (ulong)CAPI.ovr_Microphone_ReadData(mic, tempBuffer, (UIntPtr)tempBufferSize); + if (readSize > 0) + { + float[] samples; + if (!micSampleBuffers.TryGetValue((int)readSize, out samples)) + { + samples = new float[readSize]; + micSampleBuffers[(int)readSize] = samples; + } + Array.Copy(tempBuffer, samples, (int)readSize); + return samples; + } + return null; + } + + public void Start() + { + + } + + public void Stop() + { + CAPI.ovr_Microphone_Stop(mic); + CAPI.ovr_Microphone_Destroy(mic); + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs.meta b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs.meta new file mode 100644 index 0000000..796c646 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a5cd1f4154602cb48a4a554d20e6d40c +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models.meta b/Assets/Oculus/Platform/Scripts/Models.meta new file mode 100644 index 0000000..9019dde --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab7f8fd2f5021294691bdf0172884bbf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs new file mode 100644 index 0000000..e1793d4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AbuseReportRecording + { + public readonly string RecordingUuid; + + + public AbuseReportRecording(IntPtr o) + { + RecordingUuid = CAPI.ovr_AbuseReportRecording_GetRecordingUuid(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs.meta new file mode 100644 index 0000000..99bc964 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AbuseReportRecording.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0c2b12af41eef9f4786416f70fc1959c +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs new file mode 100644 index 0000000..c88d850 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AchievementDefinition + { + public readonly AchievementType Type; + public readonly string Name; + public readonly uint BitfieldLength; + public readonly ulong Target; + + + public AchievementDefinition(IntPtr o) + { + Type = CAPI.ovr_AchievementDefinition_GetType(o); + Name = CAPI.ovr_AchievementDefinition_GetName(o); + BitfieldLength = CAPI.ovr_AchievementDefinition_GetBitfieldLength(o); + Target = CAPI.ovr_AchievementDefinition_GetTarget(o); + } + } + + public class AchievementDefinitionList : DeserializableList { + public AchievementDefinitionList(IntPtr a) { + var count = (int)CAPI.ovr_AchievementDefinitionArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new AchievementDefinition(CAPI.ovr_AchievementDefinitionArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_AchievementDefinitionArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs.meta new file mode 100644 index 0000000..60b91bb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementDefinition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7d2e372fad07698479f27fd72c13489e +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs new file mode 100644 index 0000000..df41f02 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs @@ -0,0 +1,42 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AchievementProgress + { + public readonly string Bitfield; + public readonly ulong Count; + public readonly bool IsUnlocked; + public readonly string Name; + public readonly DateTime UnlockTime; + + + public AchievementProgress(IntPtr o) + { + Bitfield = CAPI.ovr_AchievementProgress_GetBitfield(o); + Count = CAPI.ovr_AchievementProgress_GetCount(o); + IsUnlocked = CAPI.ovr_AchievementProgress_GetIsUnlocked(o); + Name = CAPI.ovr_AchievementProgress_GetName(o); + UnlockTime = CAPI.ovr_AchievementProgress_GetUnlockTime(o); + } + } + + public class AchievementProgressList : DeserializableList { + public AchievementProgressList(IntPtr a) { + var count = (int)CAPI.ovr_AchievementProgressArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new AchievementProgress(CAPI.ovr_AchievementProgressArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_AchievementProgressArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs.meta new file mode 100644 index 0000000..21d22af --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementProgress.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d4a4ff6827774599abd0efe12f341fa +timeCreated: 1462489664 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs new file mode 100644 index 0000000..33f87bf --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AchievementUpdate + { + public readonly bool JustUnlocked; + public readonly string Name; + + + public AchievementUpdate(IntPtr o) + { + JustUnlocked = CAPI.ovr_AchievementUpdate_GetJustUnlocked(o); + Name = CAPI.ovr_AchievementUpdate_GetName(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs.meta new file mode 100644 index 0000000..3444192 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AchievementUpdate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a49cc0ca1bcdd99409f7658b336e2d06 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs new file mode 100644 index 0000000..ebc578e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class ApplicationVersion + { + public readonly int CurrentCode; + public readonly string CurrentName; + public readonly int LatestCode; + public readonly string LatestName; + + + public ApplicationVersion(IntPtr o) + { + CurrentCode = CAPI.ovr_ApplicationVersion_GetCurrentCode(o); + CurrentName = CAPI.ovr_ApplicationVersion_GetCurrentName(o); + LatestCode = CAPI.ovr_ApplicationVersion_GetLatestCode(o); + LatestName = CAPI.ovr_ApplicationVersion_GetLatestName(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs.meta b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs.meta new file mode 100644 index 0000000..528e482 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ApplicationVersion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b5b714bc152876d4eaa2f638d2927cd8 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs new file mode 100644 index 0000000..f2a6796 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs @@ -0,0 +1,58 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetDetails + { + public readonly UInt64 AssetId; + public readonly string AssetType; + public readonly string DownloadStatus; + public readonly string Filepath; + public readonly string IapStatus; + // May be null. Check before using. + public readonly LanguagePackInfo LanguageOptional; + [Obsolete("Deprecated in favor of LanguageOptional")] + public readonly LanguagePackInfo Language; + public readonly string Metadata; + + + public AssetDetails(IntPtr o) + { + AssetId = CAPI.ovr_AssetDetails_GetAssetId(o); + AssetType = CAPI.ovr_AssetDetails_GetAssetType(o); + DownloadStatus = CAPI.ovr_AssetDetails_GetDownloadStatus(o); + Filepath = CAPI.ovr_AssetDetails_GetFilepath(o); + IapStatus = CAPI.ovr_AssetDetails_GetIapStatus(o); + { + var pointer = CAPI.ovr_AssetDetails_GetLanguage(o); + Language = new LanguagePackInfo(pointer); + if (pointer == IntPtr.Zero) { + LanguageOptional = null; + } else { + LanguageOptional = Language; + } + } + Metadata = CAPI.ovr_AssetDetails_GetMetadata(o); + } + } + + public class AssetDetailsList : DeserializableList { + public AssetDetailsList(IntPtr a) { + var count = (int)CAPI.ovr_AssetDetailsArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new AssetDetails(CAPI.ovr_AssetDetailsArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs.meta new file mode 100644 index 0000000..9ea5fac --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetDetails.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 77b2c21c8a5705c4f95aa9a8507a3541 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs new file mode 100644 index 0000000..2c2f848 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDeleteResult + { + public readonly UInt64 AssetFileId; + public readonly UInt64 AssetId; + public readonly string Filepath; + public readonly bool Success; + + + public AssetFileDeleteResult(IntPtr o) + { + AssetFileId = CAPI.ovr_AssetFileDeleteResult_GetAssetFileId(o); + AssetId = CAPI.ovr_AssetFileDeleteResult_GetAssetId(o); + Filepath = CAPI.ovr_AssetFileDeleteResult_GetFilepath(o); + Success = CAPI.ovr_AssetFileDeleteResult_GetSuccess(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs.meta new file mode 100644 index 0000000..e82f442 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDeleteResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a64ebca65bbe4334394aa3648ff7733f +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs new file mode 100644 index 0000000..2cb8f20 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDownloadCancelResult + { + public readonly UInt64 AssetFileId; + public readonly UInt64 AssetId; + public readonly string Filepath; + public readonly bool Success; + + + public AssetFileDownloadCancelResult(IntPtr o) + { + AssetFileId = CAPI.ovr_AssetFileDownloadCancelResult_GetAssetFileId(o); + AssetId = CAPI.ovr_AssetFileDownloadCancelResult_GetAssetId(o); + Filepath = CAPI.ovr_AssetFileDownloadCancelResult_GetFilepath(o); + Success = CAPI.ovr_AssetFileDownloadCancelResult_GetSuccess(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs.meta new file mode 100644 index 0000000..330b599 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadCancelResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80090c9e4db0f2a46bd1ff95e4c6407f +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs new file mode 100644 index 0000000..7560d19 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDownloadResult + { + public readonly UInt64 AssetId; + public readonly string Filepath; + + + public AssetFileDownloadResult(IntPtr o) + { + AssetId = CAPI.ovr_AssetFileDownloadResult_GetAssetId(o); + Filepath = CAPI.ovr_AssetFileDownloadResult_GetFilepath(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs.meta new file mode 100644 index 0000000..945ca3a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0bfd5c2464df297499ad81e22be1e7b1 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs new file mode 100644 index 0000000..583e6bb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class AssetFileDownloadUpdate + { + public readonly UInt64 AssetFileId; + public readonly UInt64 AssetId; + public readonly uint BytesTotal; + public readonly int BytesTransferred; + public readonly bool Completed; + + + public AssetFileDownloadUpdate(IntPtr o) + { + AssetFileId = CAPI.ovr_AssetFileDownloadUpdate_GetAssetFileId(o); + AssetId = CAPI.ovr_AssetFileDownloadUpdate_GetAssetId(o); + BytesTotal = CAPI.ovr_AssetFileDownloadUpdate_GetBytesTotal(o); + BytesTransferred = CAPI.ovr_AssetFileDownloadUpdate_GetBytesTransferred(o); + Completed = CAPI.ovr_AssetFileDownloadUpdate_GetCompleted(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs.meta new file mode 100644 index 0000000..9bbbec3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/AssetFileDownloadUpdate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f219cac005ed9fc4b87b7cdb7285f23b +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CalApplicationFinalized.cs b/Assets/Oculus/Platform/Scripts/Models/CalApplicationFinalized.cs new file mode 100644 index 0000000..fbfbc2b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CalApplicationFinalized.cs @@ -0,0 +1,26 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CalApplicationFinalized + { + public readonly int CountdownMS; + public readonly UInt64 ID; + public readonly string LaunchDetails; + + + public CalApplicationFinalized(IntPtr o) + { + CountdownMS = CAPI.ovr_CalApplicationFinalized_GetCountdownMS(o); + ID = CAPI.ovr_CalApplicationFinalized_GetID(o); + LaunchDetails = CAPI.ovr_CalApplicationFinalized_GetLaunchDetails(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CalApplicationFinalized.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CalApplicationFinalized.cs.meta new file mode 100644 index 0000000..e630f12 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CalApplicationFinalized.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b380c9d8a3128734d9377d59e8817d41 +timeCreated: 1536102210 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CalApplicationProposed.cs b/Assets/Oculus/Platform/Scripts/Models/CalApplicationProposed.cs new file mode 100644 index 0000000..431df10 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CalApplicationProposed.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CalApplicationProposed + { + public readonly UInt64 ID; + + + public CalApplicationProposed(IntPtr o) + { + ID = CAPI.ovr_CalApplicationProposed_GetID(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CalApplicationProposed.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CalApplicationProposed.cs.meta new file mode 100644 index 0000000..361eb60 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CalApplicationProposed.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aed900a5fb08459449f04b930e21e089 +timeCreated: 1536102210 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CalApplicationSuggestion.cs b/Assets/Oculus/Platform/Scripts/Models/CalApplicationSuggestion.cs new file mode 100644 index 0000000..d0e5aa6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CalApplicationSuggestion.cs @@ -0,0 +1,35 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CalApplicationSuggestion + { + public readonly UInt64 ID; + public readonly string SocialContext; + + + public CalApplicationSuggestion(IntPtr o) + { + ID = CAPI.ovr_CalApplicationSuggestion_GetID(o); + SocialContext = CAPI.ovr_CalApplicationSuggestion_GetSocialContext(o); + } + } + + public class CalApplicationSuggestionList : DeserializableList { + public CalApplicationSuggestionList(IntPtr a) { + var count = (int)CAPI.ovr_CalApplicationSuggestionArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new CalApplicationSuggestion(CAPI.ovr_CalApplicationSuggestionArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CalApplicationSuggestion.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CalApplicationSuggestion.cs.meta new file mode 100644 index 0000000..9df9a3b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CalApplicationSuggestion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9ffd34bbf11316d4b8782e4f4cec658e +timeCreated: 1536102210 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs new file mode 100644 index 0000000..f5d96af --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageConflictMetadata + { + public readonly CloudStorageMetadata Local; + public readonly CloudStorageMetadata Remote; + + + public CloudStorageConflictMetadata(IntPtr o) + { + Local = new CloudStorageMetadata(CAPI.ovr_CloudStorageConflictMetadata_GetLocal(o)); + Remote = new CloudStorageMetadata(CAPI.ovr_CloudStorageConflictMetadata_GetRemote(o)); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs.meta new file mode 100644 index 0000000..7793a26 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageConflictMetadata.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4529c5ae12f84c44899a5ca599b6ecd +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs new file mode 100644 index 0000000..373da07 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageData + { + public readonly string Bucket; + public readonly byte[] Data; + public readonly uint DataSize; + public readonly string Key; + + + public CloudStorageData(IntPtr o) + { + Bucket = CAPI.ovr_CloudStorageData_GetBucket(o); + Data = CAPI.ovr_CloudStorageData_GetData(o); + DataSize = CAPI.ovr_CloudStorageData_GetDataSize(o); + Key = CAPI.ovr_CloudStorageData_GetKey(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs.meta new file mode 100644 index 0000000..f042662 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0e17b833610a92c4bbf4b67edb7ec116 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs new file mode 100644 index 0000000..6cb4986 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs @@ -0,0 +1,48 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageMetadata + { + public readonly string Bucket; + public readonly long Counter; + public readonly uint DataSize; + public readonly string ExtraData; + public readonly string Key; + public readonly ulong SaveTime; + public readonly CloudStorageDataStatus Status; + public readonly string VersionHandle; + + + public CloudStorageMetadata(IntPtr o) + { + Bucket = CAPI.ovr_CloudStorageMetadata_GetBucket(o); + Counter = CAPI.ovr_CloudStorageMetadata_GetCounter(o); + DataSize = CAPI.ovr_CloudStorageMetadata_GetDataSize(o); + ExtraData = CAPI.ovr_CloudStorageMetadata_GetExtraData(o); + Key = CAPI.ovr_CloudStorageMetadata_GetKey(o); + SaveTime = CAPI.ovr_CloudStorageMetadata_GetSaveTime(o); + Status = CAPI.ovr_CloudStorageMetadata_GetStatus(o); + VersionHandle = CAPI.ovr_CloudStorageMetadata_GetVersionHandle(o); + } + } + + public class CloudStorageMetadataList : DeserializableList { + public CloudStorageMetadataList(IntPtr a) { + var count = (int)CAPI.ovr_CloudStorageMetadataArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new CloudStorageMetadata(CAPI.ovr_CloudStorageMetadataArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_CloudStorageMetadataArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs.meta new file mode 100644 index 0000000..59266b9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageMetadata.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1a6ff0d9eb067d74e87a166ab86cc0dd +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs new file mode 100644 index 0000000..c08f13e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs @@ -0,0 +1,28 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class CloudStorageUpdateResponse + { + public readonly string Bucket; + public readonly string Key; + public readonly CloudStorageUpdateStatus Status; + public readonly string VersionHandle; + + + public CloudStorageUpdateResponse(IntPtr o) + { + Bucket = CAPI.ovr_CloudStorageUpdateResponse_GetBucket(o); + Key = CAPI.ovr_CloudStorageUpdateResponse_GetKey(o); + Status = CAPI.ovr_CloudStorageUpdateResponse_GetStatus(o); + VersionHandle = CAPI.ovr_CloudStorageUpdateResponse_GetVersionHandle(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs.meta b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs.meta new file mode 100644 index 0000000..ec8b8da --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/CloudStorageUpdateResponse.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f75c382fd9dda5b4b90d083821a4c4ab +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs new file mode 100644 index 0000000..9561998 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs @@ -0,0 +1,54 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System.Collections; + using System.Collections.Generic; + using Oculus.Platform.Models; + + public class DeserializableList : IList + { + + //IList + public int Count { get {return _Data.Count;} } + bool ICollection.IsReadOnly { get {return ((IList)_Data).IsReadOnly;} } //if you insist in getting it... + public int IndexOf(T obj) {return _Data.IndexOf(obj);} + public T this[int index] { get{return _Data[index];} set{_Data[index] = value;} } + + public void Add(T item) {_Data.Add(item);} + public void Clear() {_Data.Clear();} + public bool Contains(T item) {return _Data.Contains(item);} + public void CopyTo(T[] array, int arrayIndex) {_Data.CopyTo(array, arrayIndex);} + public IEnumerator GetEnumerator() {return _Data.GetEnumerator();} + public void Insert(int index, T item) {_Data.Insert(index, item);} + public bool Remove(T item) {return _Data.Remove(item);} + public void RemoveAt(int index) {_Data.RemoveAt(index);} + + // taken from examples here: https://msdn.microsoft.com/en-us/library/s793z9y2(v=vs.110).aspx + private IEnumerator GetEnumerator1() + { + return this.GetEnumerator(); + } + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator1(); + } + + // Internals and getters + + // Seems like Obsolete properties are broken in this version of Mono. + // Anyway, don't use this. + [System.Obsolete("Use IList interface on the DeserializableList object instead.", false)] + public List Data { + get {return _Data;} + } + + protected List _Data; + protected string _NextUrl; + protected string _PreviousUrl; + + public bool HasNextPage { get { return !System.String.IsNullOrEmpty(NextUrl); } } + public bool HasPreviousPage { get { return !System.String.IsNullOrEmpty(PreviousUrl); } } + public string NextUrl { get { return _NextUrl; } } + public string PreviousUrl { get { return _PreviousUrl; } } + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs.meta b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs.meta new file mode 100644 index 0000000..a3b6400 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/DeserializeableList.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cd282a12ba188d842b81149d5b787daf +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Destination.cs b/Assets/Oculus/Platform/Scripts/Models/Destination.cs new file mode 100644 index 0000000..a970bb3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Destination.cs @@ -0,0 +1,38 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Destination + { + public readonly string ApiName; + public readonly string DeeplinkMessage; + public readonly string DisplayName; + + + public Destination(IntPtr o) + { + ApiName = CAPI.ovr_Destination_GetApiName(o); + DeeplinkMessage = CAPI.ovr_Destination_GetDeeplinkMessage(o); + DisplayName = CAPI.ovr_Destination_GetDisplayName(o); + } + } + + public class DestinationList : DeserializableList { + public DestinationList(IntPtr a) { + var count = (int)CAPI.ovr_DestinationArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Destination(CAPI.ovr_DestinationArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_DestinationArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Destination.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Destination.cs.meta new file mode 100644 index 0000000..d3e415d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Destination.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a6e55add6550334495a27eb42f64900 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Error.cs b/Assets/Oculus/Platform/Scripts/Models/Error.cs new file mode 100644 index 0000000..3a786a3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Error.cs @@ -0,0 +1,21 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + + public class Error + { + public Error(int code, string message, int httpCode) + { + Message = message; + Code = code; + HttpCode = httpCode; + } + + public readonly int Code; + public readonly int HttpCode; + public readonly string Message; + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Error.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Error.cs.meta new file mode 100644 index 0000000..ddd79e5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Error.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af96c3f14f761724db9f93a693fbad2e +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs new file mode 100644 index 0000000..2e6841b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs @@ -0,0 +1,28 @@ +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + using Oculus.Platform.Models; + using UnityEngine; + + public class HttpTransferUpdate + { + public readonly UInt64 ID; + public readonly byte[] Payload; + public readonly bool IsCompleted; + + public HttpTransferUpdate(IntPtr o) + { + ID = CAPI.ovr_HttpTransferUpdate_GetID(o); + IsCompleted = CAPI.ovr_HttpTransferUpdate_IsCompleted(o); + + long size = (long) CAPI.ovr_HttpTransferUpdate_GetSize(o); + + Payload = new byte[size]; + Marshal.Copy(CAPI.ovr_Packet_GetBytes(o), Payload, 0, (int) size); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs.meta new file mode 100644 index 0000000..e60c28d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/HttpTransferUpdate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcab648a59429684a9860794d256d230 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs new file mode 100644 index 0000000..38470cc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs @@ -0,0 +1,41 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class InstalledApplication + { + public readonly string ApplicationId; + public readonly string PackageName; + public readonly string Status; + public readonly int VersionCode; + public readonly string VersionName; + + + public InstalledApplication(IntPtr o) + { + ApplicationId = CAPI.ovr_InstalledApplication_GetApplicationId(o); + PackageName = CAPI.ovr_InstalledApplication_GetPackageName(o); + Status = CAPI.ovr_InstalledApplication_GetStatus(o); + VersionCode = CAPI.ovr_InstalledApplication_GetVersionCode(o); + VersionName = CAPI.ovr_InstalledApplication_GetVersionName(o); + } + } + + public class InstalledApplicationList : DeserializableList { + public InstalledApplicationList(IntPtr a) { + var count = (int)CAPI.ovr_InstalledApplicationArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new InstalledApplication(CAPI.ovr_InstalledApplicationArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs.meta b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs.meta new file mode 100644 index 0000000..f8faf61 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/InstalledApplication.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1cb03b282dd6fc440830b2c7224a1135 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs new file mode 100644 index 0000000..cdc3844 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs @@ -0,0 +1,26 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LanguagePackInfo + { + public readonly string EnglishName; + public readonly string NativeName; + public readonly string Tag; + + + public LanguagePackInfo(IntPtr o) + { + EnglishName = CAPI.ovr_LanguagePackInfo_GetEnglishName(o); + NativeName = CAPI.ovr_LanguagePackInfo_GetNativeName(o); + Tag = CAPI.ovr_LanguagePackInfo_GetTag(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs.meta new file mode 100644 index 0000000..5b6e79d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LanguagePackInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2d77f72bf241d8f48b3570ac0c0cab4b +timeCreated: 1533910661 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs new file mode 100644 index 0000000..e23fa53 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchBlockFlowResult + { + public readonly bool DidBlock; + public readonly bool DidCancel; + + + public LaunchBlockFlowResult(IntPtr o) + { + DidBlock = CAPI.ovr_LaunchBlockFlowResult_GetDidBlock(o); + DidCancel = CAPI.ovr_LaunchBlockFlowResult_GetDidCancel(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs.meta new file mode 100644 index 0000000..fe41ffa --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchBlockFlowResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 33b0e76fc377f0c47801c3e36866ef66 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs new file mode 100644 index 0000000..b825ec4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs @@ -0,0 +1,43 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchDetails + { + public readonly string DeeplinkMessage; + public readonly string LaunchSource; + public readonly LaunchType LaunchType; + public readonly UInt64 RoomID; + // May be null. Check before using. + public readonly UserList UsersOptional; + [Obsolete("Deprecated in favor of UsersOptional")] + public readonly UserList Users; + + + public LaunchDetails(IntPtr o) + { + DeeplinkMessage = CAPI.ovr_LaunchDetails_GetDeeplinkMessage(o); + LaunchSource = CAPI.ovr_LaunchDetails_GetLaunchSource(o); + LaunchType = CAPI.ovr_LaunchDetails_GetLaunchType(o); + RoomID = CAPI.ovr_LaunchDetails_GetRoomID(o); + { + var pointer = CAPI.ovr_LaunchDetails_GetUsers(o); + Users = new UserList(pointer); + if (pointer == IntPtr.Zero) { + UsersOptional = null; + } else { + UsersOptional = Users; + } + } + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs.meta new file mode 100644 index 0000000..29cc8e0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchDetails.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 03ab56c36f18cf14fbeea9ce668871a7 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs new file mode 100644 index 0000000..b4274ab --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchFriendRequestFlowResult + { + public readonly bool DidCancel; + public readonly bool DidSendRequest; + + + public LaunchFriendRequestFlowResult(IntPtr o) + { + DidCancel = CAPI.ovr_LaunchFriendRequestFlowResult_GetDidCancel(o); + DidSendRequest = CAPI.ovr_LaunchFriendRequestFlowResult_GetDidSendRequest(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs.meta new file mode 100644 index 0000000..da69982 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchFriendRequestFlowResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4bb9ba5d0bd6a6c44917eead28ad71f3 +timeCreated: 1533910661 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchReportFlowResult.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchReportFlowResult.cs new file mode 100644 index 0000000..f1948ed --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchReportFlowResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchReportFlowResult + { + public readonly bool DidCancel; + public readonly UInt64 UserReportId; + + + public LaunchReportFlowResult(IntPtr o) + { + DidCancel = CAPI.ovr_LaunchReportFlowResult_GetDidCancel(o); + UserReportId = CAPI.ovr_LaunchReportFlowResult_GetUserReportId(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchReportFlowResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchReportFlowResult.cs.meta new file mode 100644 index 0000000..6f63abb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchReportFlowResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dd39534aa19eea849a28ea4da4aac464 +timeCreated: 1536102211 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs new file mode 100644 index 0000000..eadf972 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LaunchUnblockFlowResult + { + public readonly bool DidCancel; + public readonly bool DidUnblock; + + + public LaunchUnblockFlowResult(IntPtr o) + { + DidCancel = CAPI.ovr_LaunchUnblockFlowResult_GetDidCancel(o); + DidUnblock = CAPI.ovr_LaunchUnblockFlowResult_GetDidUnblock(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs.meta new file mode 100644 index 0000000..3694fd9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LaunchUnblockFlowResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6eeff2263c546f042946cdc4bcf72f98 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs new file mode 100644 index 0000000..bebd0fc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs @@ -0,0 +1,45 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LeaderboardEntry + { + public readonly byte[] ExtraData; + public readonly int Rank; + public readonly long Score; + public readonly DateTime Timestamp; + public readonly User User; + + + public LeaderboardEntry(IntPtr o) + { + ExtraData = CAPI.ovr_LeaderboardEntry_GetExtraData(o); + Rank = CAPI.ovr_LeaderboardEntry_GetRank(o); + Score = CAPI.ovr_LeaderboardEntry_GetScore(o); + Timestamp = CAPI.ovr_LeaderboardEntry_GetTimestamp(o); + User = new User(CAPI.ovr_LeaderboardEntry_GetUser(o)); + } + } + + public class LeaderboardEntryList : DeserializableList { + public LeaderboardEntryList(IntPtr a) { + var count = (int)CAPI.ovr_LeaderboardEntryArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new LeaderboardEntry(CAPI.ovr_LeaderboardEntryArray_GetElement(a, (UIntPtr)i))); + } + + TotalCount = CAPI.ovr_LeaderboardEntryArray_GetTotalCount(a); + _PreviousUrl = CAPI.ovr_LeaderboardEntryArray_GetPreviousUrl(a); + _NextUrl = CAPI.ovr_LeaderboardEntryArray_GetNextUrl(a); + } + + public readonly ulong TotalCount; + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs.meta new file mode 100644 index 0000000..3699cd0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LeaderboardEntry.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c6c8aaec7b9e7f7438413bbc91a4fe0b +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs new file mode 100644 index 0000000..545fa09 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs @@ -0,0 +1,37 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LinkedAccount + { + public readonly string AccessToken; + public readonly ServiceProvider ServiceProvider; + public readonly string UserId; + + + public LinkedAccount(IntPtr o) + { + AccessToken = CAPI.ovr_LinkedAccount_GetAccessToken(o); + ServiceProvider = CAPI.ovr_LinkedAccount_GetServiceProvider(o); + UserId = CAPI.ovr_LinkedAccount_GetUserId(o); + } + } + + public class LinkedAccountList : DeserializableList { + public LinkedAccountList(IntPtr a) { + var count = (int)CAPI.ovr_LinkedAccountArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new LinkedAccount(CAPI.ovr_LinkedAccountArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs.meta new file mode 100644 index 0000000..5e00ec6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LinkedAccount.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e353eb0df55137e43a2bf9e54864c76f +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs new file mode 100644 index 0000000..0011524 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingApplicationStatus + { + public readonly bool StreamingEnabled; + + + public LivestreamingApplicationStatus(IntPtr o) + { + StreamingEnabled = CAPI.ovr_LivestreamingApplicationStatus_GetStreamingEnabled(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs.meta new file mode 100644 index 0000000..f24daad --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingApplicationStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 706d607bb299def4d9e99e5fe89d0d0d +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs new file mode 100644 index 0000000..c4aeecf --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingStartResult + { + public readonly LivestreamingStartStatus StreamingResult; + + + public LivestreamingStartResult(IntPtr o) + { + StreamingResult = CAPI.ovr_LivestreamingStartResult_GetStreamingResult(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs.meta new file mode 100644 index 0000000..aa3ff0d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStartResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 18a920985ce51294787433880f509191 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs new file mode 100644 index 0000000..4ebbbb9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingStatus + { + public readonly bool CommentsVisible; + public readonly bool IsPaused; + public readonly bool LivestreamingEnabled; + public readonly int LivestreamingType; + public readonly bool MicEnabled; + + + public LivestreamingStatus(IntPtr o) + { + CommentsVisible = CAPI.ovr_LivestreamingStatus_GetCommentsVisible(o); + IsPaused = CAPI.ovr_LivestreamingStatus_GetIsPaused(o); + LivestreamingEnabled = CAPI.ovr_LivestreamingStatus_GetLivestreamingEnabled(o); + LivestreamingType = CAPI.ovr_LivestreamingStatus_GetLivestreamingType(o); + MicEnabled = CAPI.ovr_LivestreamingStatus_GetMicEnabled(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs.meta new file mode 100644 index 0000000..a06da12 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1d2064e758a11864cade929d95d92ebe +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs new file mode 100644 index 0000000..9c4efa5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs @@ -0,0 +1,26 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class LivestreamingVideoStats + { + public readonly int CommentCount; + public readonly int ReactionCount; + public readonly string TotalViews; + + + public LivestreamingVideoStats(IntPtr o) + { + CommentCount = CAPI.ovr_LivestreamingVideoStats_GetCommentCount(o); + ReactionCount = CAPI.ovr_LivestreamingVideoStats_GetReactionCount(o); + TotalViews = CAPI.ovr_LivestreamingVideoStats_GetTotalViews(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs.meta b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs.meta new file mode 100644 index 0000000..dee0898 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/LivestreamingVideoStats.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3f7d781612e6d584782a9c0275cb1331 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs new file mode 100644 index 0000000..0e207cc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingAdminSnapshot + { + public readonly MatchmakingAdminSnapshotCandidateList Candidates; + public readonly double MyCurrentThreshold; + + + public MatchmakingAdminSnapshot(IntPtr o) + { + Candidates = new MatchmakingAdminSnapshotCandidateList(CAPI.ovr_MatchmakingAdminSnapshot_GetCandidates(o)); + MyCurrentThreshold = CAPI.ovr_MatchmakingAdminSnapshot_GetMyCurrentThreshold(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs.meta new file mode 100644 index 0000000..7ce847d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshot.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 13c216d6d7d951e4c8e4e74e380d6bb5 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs new file mode 100644 index 0000000..d9eb28c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs @@ -0,0 +1,41 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingAdminSnapshotCandidate + { + public readonly bool CanMatch; + public readonly double MyTotalScore; + public readonly double TheirCurrentThreshold; + public readonly double TheirTotalScore; + public readonly string TraceId; + + + public MatchmakingAdminSnapshotCandidate(IntPtr o) + { + CanMatch = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetCanMatch(o); + MyTotalScore = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetMyTotalScore(o); + TheirCurrentThreshold = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetTheirCurrentThreshold(o); + TheirTotalScore = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetTheirTotalScore(o); + TraceId = CAPI.ovr_MatchmakingAdminSnapshotCandidate_GetTraceId(o); + } + } + + public class MatchmakingAdminSnapshotCandidateList : DeserializableList { + public MatchmakingAdminSnapshotCandidateList(IntPtr a) { + var count = (int)CAPI.ovr_MatchmakingAdminSnapshotCandidateArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new MatchmakingAdminSnapshotCandidate(CAPI.ovr_MatchmakingAdminSnapshotCandidateArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs.meta new file mode 100644 index 0000000..08ab376 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingAdminSnapshotCandidate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 02b97f80c9b7ef846baac4c18b572b6e +timeCreated: 1523486796 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs new file mode 100644 index 0000000..9643e55 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingBrowseResult + { + public readonly MatchmakingEnqueueResult EnqueueResult; + public readonly RoomList Rooms; + + + public MatchmakingBrowseResult(IntPtr o) + { + EnqueueResult = new MatchmakingEnqueueResult(CAPI.ovr_MatchmakingBrowseResult_GetEnqueueResult(o)); + Rooms = new RoomList(CAPI.ovr_MatchmakingBrowseResult_GetRooms(o)); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs.meta new file mode 100644 index 0000000..bb77e9a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingBrowseResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5802e9ca200ef2b42b6ecaad0ca71f6f +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs new file mode 100644 index 0000000..0daa36a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs @@ -0,0 +1,47 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingEnqueueResult + { + // May be null. Check before using. + public readonly MatchmakingAdminSnapshot AdminSnapshotOptional; + [Obsolete("Deprecated in favor of AdminSnapshotOptional")] + public readonly MatchmakingAdminSnapshot AdminSnapshot; + public readonly uint AverageWait; + public readonly uint MatchesInLastHourCount; + public readonly uint MaxExpectedWait; + public readonly string Pool; + public readonly uint RecentMatchPercentage; + public readonly string RequestHash; + + + public MatchmakingEnqueueResult(IntPtr o) + { + { + var pointer = CAPI.ovr_MatchmakingEnqueueResult_GetAdminSnapshot(o); + AdminSnapshot = new MatchmakingAdminSnapshot(pointer); + if (pointer == IntPtr.Zero) { + AdminSnapshotOptional = null; + } else { + AdminSnapshotOptional = AdminSnapshot; + } + } + AverageWait = CAPI.ovr_MatchmakingEnqueueResult_GetAverageWait(o); + MatchesInLastHourCount = CAPI.ovr_MatchmakingEnqueueResult_GetMatchesInLastHourCount(o); + MaxExpectedWait = CAPI.ovr_MatchmakingEnqueueResult_GetMaxExpectedWait(o); + Pool = CAPI.ovr_MatchmakingEnqueueResult_GetPool(o); + RecentMatchPercentage = CAPI.ovr_MatchmakingEnqueueResult_GetRecentMatchPercentage(o); + RequestHash = CAPI.ovr_MatchmakingEnqueueResult_GetRequestHash(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs.meta new file mode 100644 index 0000000..124f529 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5635c7d33a0525448a73c31a900fcb2a +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs new file mode 100644 index 0000000..14aa59a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingEnqueueResultAndRoom + { + public readonly MatchmakingEnqueueResult MatchmakingEnqueueResult; + public readonly Room Room; + + + public MatchmakingEnqueueResultAndRoom(IntPtr o) + { + MatchmakingEnqueueResult = new MatchmakingEnqueueResult(CAPI.ovr_MatchmakingEnqueueResultAndRoom_GetMatchmakingEnqueueResult(o)); + Room = new Room(CAPI.ovr_MatchmakingEnqueueResultAndRoom_GetRoom(o)); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs.meta new file mode 100644 index 0000000..ad38966 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueueResultAndRoom.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 27627f3a1bc9da84d82880eb12ab2753 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs new file mode 100644 index 0000000..48909bb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs @@ -0,0 +1,48 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingEnqueuedUser + { + public readonly Dictionary CustomData; + // May be null. Check before using. + public readonly User UserOptional; + [Obsolete("Deprecated in favor of UserOptional")] + public readonly User User; + + + public MatchmakingEnqueuedUser(IntPtr o) + { + CustomData = CAPI.DataStoreFromNative(CAPI.ovr_MatchmakingEnqueuedUser_GetCustomData(o)); + { + var pointer = CAPI.ovr_MatchmakingEnqueuedUser_GetUser(o); + User = new User(pointer); + if (pointer == IntPtr.Zero) { + UserOptional = null; + } else { + UserOptional = User; + } + } + } + } + + public class MatchmakingEnqueuedUserList : DeserializableList { + public MatchmakingEnqueuedUserList(IntPtr a) { + var count = (int)CAPI.ovr_MatchmakingEnqueuedUserArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new MatchmakingEnqueuedUser(CAPI.ovr_MatchmakingEnqueuedUserArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs.meta new file mode 100644 index 0000000..1729dc5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingEnqueuedUser.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e91e0cd389745ab47bb862cb9fe2298b +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs new file mode 100644 index 0000000..1f63c8b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs @@ -0,0 +1,32 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class MatchmakingStats + { + public readonly uint DrawCount; + public readonly uint LossCount; + public readonly uint SkillLevel; + public readonly double SkillMean; + public readonly double SkillStandardDeviation; + public readonly uint WinCount; + + + public MatchmakingStats(IntPtr o) + { + DrawCount = CAPI.ovr_MatchmakingStats_GetDrawCount(o); + LossCount = CAPI.ovr_MatchmakingStats_GetLossCount(o); + SkillLevel = CAPI.ovr_MatchmakingStats_GetSkillLevel(o); + SkillMean = CAPI.ovr_MatchmakingStats_GetSkillMean(o); + SkillStandardDeviation = CAPI.ovr_MatchmakingStats_GetSkillStandardDeviation(o); + WinCount = CAPI.ovr_MatchmakingStats_GetWinCount(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs.meta b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs.meta new file mode 100644 index 0000000..ccacd5e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/MatchmakingStats.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2530879c952eeb340a395ad908e3d20a +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs new file mode 100644 index 0000000..37d43b4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs @@ -0,0 +1,17 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System; + using System.ComponentModel; + + public class NetworkingPeer + { + public NetworkingPeer(UInt64 id, PeerConnectionState state) { + ID = id; + State = state; + } + + public UInt64 ID { get; private set; } + public PeerConnectionState State { get; private set; } + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs.meta b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs.meta new file mode 100644 index 0000000..8efb531 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/NetworkingPeer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88e2e0a11ed7e054da26c78d6bd1283f +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs new file mode 100644 index 0000000..402e981 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class OrgScopedID + { + public readonly UInt64 ID; + + + public OrgScopedID(IntPtr o) + { + ID = CAPI.ovr_OrgScopedID_GetID(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs.meta b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs.meta new file mode 100644 index 0000000..f327f5b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/OrgScopedID.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb83ca4346878f54e9edb14cbfb92dad +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Party.cs b/Assets/Oculus/Platform/Scripts/Models/Party.cs new file mode 100644 index 0000000..51043e2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Party.cs @@ -0,0 +1,76 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Party + { + public readonly UInt64 ID; + // May be null. Check before using. + public readonly UserList InvitedUsersOptional; + [Obsolete("Deprecated in favor of InvitedUsersOptional")] + public readonly UserList InvitedUsers; + // May be null. Check before using. + public readonly User LeaderOptional; + [Obsolete("Deprecated in favor of LeaderOptional")] + public readonly User Leader; + // May be null. Check before using. + public readonly Room RoomOptional; + [Obsolete("Deprecated in favor of RoomOptional")] + public readonly Room Room; + // May be null. Check before using. + public readonly UserList UsersOptional; + [Obsolete("Deprecated in favor of UsersOptional")] + public readonly UserList Users; + + + public Party(IntPtr o) + { + ID = CAPI.ovr_Party_GetID(o); + { + var pointer = CAPI.ovr_Party_GetInvitedUsers(o); + InvitedUsers = new UserList(pointer); + if (pointer == IntPtr.Zero) { + InvitedUsersOptional = null; + } else { + InvitedUsersOptional = InvitedUsers; + } + } + { + var pointer = CAPI.ovr_Party_GetLeader(o); + Leader = new User(pointer); + if (pointer == IntPtr.Zero) { + LeaderOptional = null; + } else { + LeaderOptional = Leader; + } + } + { + var pointer = CAPI.ovr_Party_GetRoom(o); + Room = new Room(pointer); + if (pointer == IntPtr.Zero) { + RoomOptional = null; + } else { + RoomOptional = Room; + } + } + { + var pointer = CAPI.ovr_Party_GetUsers(o); + Users = new UserList(pointer); + if (pointer == IntPtr.Zero) { + UsersOptional = null; + } else { + UsersOptional = Users; + } + } + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Party.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Party.cs.meta new file mode 100644 index 0000000..31db4c5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Party.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 75e7bda4c90b91a4fb8a49cff91522da +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/PartyID.cs b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs new file mode 100644 index 0000000..841b01d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class PartyID + { + public readonly UInt64 ID; + + + public PartyID(IntPtr o) + { + ID = CAPI.ovr_PartyID_GetID(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/PartyID.cs.meta b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs.meta new file mode 100644 index 0000000..6d75bdf --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PartyID.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3a95381b7ca8c0c4b80b5cd5bd00b203 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/PartyUpdateNotification.cs b/Assets/Oculus/Platform/Scripts/Models/PartyUpdateNotification.cs new file mode 100644 index 0000000..a1c468f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PartyUpdateNotification.cs @@ -0,0 +1,34 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class PartyUpdateNotification + { + public readonly PartyUpdateAction Action; + public readonly UInt64 PartyId; + public readonly UInt64 SenderId; + public readonly string UpdateTimestamp; + public readonly string UserAlias; + public readonly UInt64 UserId; + public readonly string UserName; + + + public PartyUpdateNotification(IntPtr o) + { + Action = CAPI.ovr_PartyUpdateNotification_GetAction(o); + PartyId = CAPI.ovr_PartyUpdateNotification_GetPartyId(o); + SenderId = CAPI.ovr_PartyUpdateNotification_GetSenderId(o); + UpdateTimestamp = CAPI.ovr_PartyUpdateNotification_GetUpdateTimestamp(o); + UserAlias = CAPI.ovr_PartyUpdateNotification_GetUserAlias(o); + UserId = CAPI.ovr_PartyUpdateNotification_GetUserId(o); + UserName = CAPI.ovr_PartyUpdateNotification_GetUserName(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/PartyUpdateNotification.cs.meta b/Assets/Oculus/Platform/Scripts/Models/PartyUpdateNotification.cs.meta new file mode 100644 index 0000000..3ba5d24 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PartyUpdateNotification.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bc9e141e55c077449998f434cca9e8a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Pid.cs b/Assets/Oculus/Platform/Scripts/Models/Pid.cs new file mode 100644 index 0000000..c42632b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Pid.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Pid + { + public readonly string Id; + + + public Pid(IntPtr o) + { + Id = CAPI.ovr_Pid_GetId(o); + } + } + + public class PidList : DeserializableList { + public PidList(IntPtr a) { + var count = (int)CAPI.ovr_PidArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Pid(CAPI.ovr_PidArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Pid.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Pid.cs.meta new file mode 100644 index 0000000..e36680a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Pid.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f5a809bffe673614799d0d8d63f3dd3f +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/PingResult.cs b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs new file mode 100644 index 0000000..cc47d99 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs @@ -0,0 +1,28 @@ +namespace Oculus.Platform.Models +{ + using UnityEngine; + using System; + using System.ComponentModel; + + public class PingResult + { + public PingResult(UInt64 id, UInt64? pingTimeUsec) { + this.ID = id; + this.pingTimeUsec = pingTimeUsec; + } + + public UInt64 ID { get; private set; } + public UInt64 PingTimeUsec { + get { + return pingTimeUsec.HasValue ? pingTimeUsec.Value : 0; + } + } + public bool IsTimeout { + get { + return !pingTimeUsec.HasValue; + } + } + + private UInt64? pingTimeUsec; + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/PingResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs.meta new file mode 100644 index 0000000..51a8184 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PingResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0320c45213f79b443bb412b5f3d89e4d +timeCreated: 1523486796 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs new file mode 100644 index 0000000..bf7cfc0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class PlatformInitialize + { + public readonly PlatformInitializeResult Result; + + + public PlatformInitialize(IntPtr o) + { + Result = CAPI.ovr_PlatformInitialize_GetResult(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs.meta b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs.meta new file mode 100644 index 0000000..2a87eed --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/PlatformInitialize.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41ea71d90b07889469fbe488e7f7a62c +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Product.cs b/Assets/Oculus/Platform/Scripts/Models/Product.cs new file mode 100644 index 0000000..eeafc27 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Product.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Product + { + public readonly string Description; + public readonly string FormattedPrice; + public readonly string Name; + public readonly string Sku; + + + public Product(IntPtr o) + { + Description = CAPI.ovr_Product_GetDescription(o); + FormattedPrice = CAPI.ovr_Product_GetFormattedPrice(o); + Name = CAPI.ovr_Product_GetName(o); + Sku = CAPI.ovr_Product_GetSKU(o); + } + } + + public class ProductList : DeserializableList { + public ProductList(IntPtr a) { + var count = (int)CAPI.ovr_ProductArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Product(CAPI.ovr_ProductArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_ProductArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Product.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Product.cs.meta new file mode 100644 index 0000000..5758d90 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Product.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 26c0296fda5f75541b0c1c757efa1cbd +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Purchase.cs b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs new file mode 100644 index 0000000..fa9ba7e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Purchase + { + public readonly DateTime ExpirationTime; + public readonly DateTime GrantTime; + public readonly UInt64 ID; + public readonly string Sku; + + + public Purchase(IntPtr o) + { + ExpirationTime = CAPI.ovr_Purchase_GetExpirationTime(o); + GrantTime = CAPI.ovr_Purchase_GetGrantTime(o); + ID = CAPI.ovr_Purchase_GetPurchaseID(o); + Sku = CAPI.ovr_Purchase_GetSKU(o); + } + } + + public class PurchaseList : DeserializableList { + public PurchaseList(IntPtr a) { + var count = (int)CAPI.ovr_PurchaseArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Purchase(CAPI.ovr_PurchaseArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_PurchaseArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Purchase.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs.meta new file mode 100644 index 0000000..e146c8d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Purchase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bbc306c37ea31f045b98ea0008ddf1d3 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Room.cs b/Assets/Oculus/Platform/Scripts/Models/Room.cs new file mode 100644 index 0000000..3918b01 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Room.cs @@ -0,0 +1,121 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Room + { + public readonly UInt64 ApplicationID; + public readonly Dictionary DataStore; + public readonly string Description; + public readonly UInt64 ID; + // May be null. Check before using. + public readonly UserList InvitedUsersOptional; + [Obsolete("Deprecated in favor of InvitedUsersOptional")] + public readonly UserList InvitedUsers; + public readonly bool IsMembershipLocked; + public readonly RoomJoinPolicy JoinPolicy; + public readonly RoomJoinability Joinability; + // May be null. Check before using. + public readonly MatchmakingEnqueuedUserList MatchedUsersOptional; + [Obsolete("Deprecated in favor of MatchedUsersOptional")] + public readonly MatchmakingEnqueuedUserList MatchedUsers; + public readonly uint MaxUsers; + public readonly string Name; + // May be null. Check before using. + public readonly User OwnerOptional; + [Obsolete("Deprecated in favor of OwnerOptional")] + public readonly User Owner; + // May be null. Check before using. + public readonly TeamList TeamsOptional; + [Obsolete("Deprecated in favor of TeamsOptional")] + public readonly TeamList Teams; + public readonly RoomType Type; + // May be null. Check before using. + public readonly UserList UsersOptional; + [Obsolete("Deprecated in favor of UsersOptional")] + public readonly UserList Users; + public readonly uint Version; + + + public Room(IntPtr o) + { + ApplicationID = CAPI.ovr_Room_GetApplicationID(o); + DataStore = CAPI.DataStoreFromNative(CAPI.ovr_Room_GetDataStore(o)); + Description = CAPI.ovr_Room_GetDescription(o); + ID = CAPI.ovr_Room_GetID(o); + { + var pointer = CAPI.ovr_Room_GetInvitedUsers(o); + InvitedUsers = new UserList(pointer); + if (pointer == IntPtr.Zero) { + InvitedUsersOptional = null; + } else { + InvitedUsersOptional = InvitedUsers; + } + } + IsMembershipLocked = CAPI.ovr_Room_GetIsMembershipLocked(o); + JoinPolicy = CAPI.ovr_Room_GetJoinPolicy(o); + Joinability = CAPI.ovr_Room_GetJoinability(o); + { + var pointer = CAPI.ovr_Room_GetMatchedUsers(o); + MatchedUsers = new MatchmakingEnqueuedUserList(pointer); + if (pointer == IntPtr.Zero) { + MatchedUsersOptional = null; + } else { + MatchedUsersOptional = MatchedUsers; + } + } + MaxUsers = CAPI.ovr_Room_GetMaxUsers(o); + Name = CAPI.ovr_Room_GetName(o); + { + var pointer = CAPI.ovr_Room_GetOwner(o); + Owner = new User(pointer); + if (pointer == IntPtr.Zero) { + OwnerOptional = null; + } else { + OwnerOptional = Owner; + } + } + { + var pointer = CAPI.ovr_Room_GetTeams(o); + Teams = new TeamList(pointer); + if (pointer == IntPtr.Zero) { + TeamsOptional = null; + } else { + TeamsOptional = Teams; + } + } + Type = CAPI.ovr_Room_GetType(o); + { + var pointer = CAPI.ovr_Room_GetUsers(o); + Users = new UserList(pointer); + if (pointer == IntPtr.Zero) { + UsersOptional = null; + } else { + UsersOptional = Users; + } + } + Version = CAPI.ovr_Room_GetVersion(o); + } + } + + public class RoomList : DeserializableList { + public RoomList(IntPtr a) { + var count = (int)CAPI.ovr_RoomArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Room(CAPI.ovr_RoomArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_RoomArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Room.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Room.cs.meta new file mode 100644 index 0000000..ba7739d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Room.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2343d804eee03c8449c527e47f540246 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs new file mode 100644 index 0000000..de0265d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs @@ -0,0 +1,40 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class RoomInviteNotification + { + public readonly UInt64 ID; + public readonly UInt64 RoomID; + public readonly UInt64 SenderID; + public readonly DateTime SentTime; + + + public RoomInviteNotification(IntPtr o) + { + ID = CAPI.ovr_RoomInviteNotification_GetID(o); + RoomID = CAPI.ovr_RoomInviteNotification_GetRoomID(o); + SenderID = CAPI.ovr_RoomInviteNotification_GetSenderID(o); + SentTime = CAPI.ovr_RoomInviteNotification_GetSentTime(o); + } + } + + public class RoomInviteNotificationList : DeserializableList { + public RoomInviteNotificationList(IntPtr a) { + var count = (int)CAPI.ovr_RoomInviteNotificationArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new RoomInviteNotification(CAPI.ovr_RoomInviteNotificationArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_RoomInviteNotificationArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs.meta b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs.meta new file mode 100644 index 0000000..dc02c9a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/RoomInviteNotification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71804edb58eb8d14b95bdcf4e86ceb16 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs new file mode 100644 index 0000000..276150f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs @@ -0,0 +1,35 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class SdkAccount + { + public readonly SdkAccountType AccountType; + public readonly UInt64 UserId; + + + public SdkAccount(IntPtr o) + { + AccountType = CAPI.ovr_SdkAccount_GetAccountType(o); + UserId = CAPI.ovr_SdkAccount_GetUserId(o); + } + } + + public class SdkAccountList : DeserializableList { + public SdkAccountList(IntPtr a) { + var count = (int)CAPI.ovr_SdkAccountArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new SdkAccount(CAPI.ovr_SdkAccountArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs.meta b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs.meta new file mode 100644 index 0000000..f5d607f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SdkAccount.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1c2ffbfe79b26bc4cb0155394995dfe2 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs new file mode 100644 index 0000000..39222a3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class ShareMediaResult + { + public readonly ShareMediaStatus Status; + + + public ShareMediaResult(IntPtr o) + { + Status = CAPI.ovr_ShareMediaResult_GetStatus(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs.meta b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs.meta new file mode 100644 index 0000000..2999431 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/ShareMediaResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 476ce514abed4e2469094f659dfbb253 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs new file mode 100644 index 0000000..5a5d4e1 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class SystemPermission + { + public readonly bool HasPermission; + public readonly PermissionGrantStatus PermissionGrantStatus; + + + public SystemPermission(IntPtr o) + { + HasPermission = CAPI.ovr_SystemPermission_GetHasPermission(o); + PermissionGrantStatus = CAPI.ovr_SystemPermission_GetPermissionGrantStatus(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs.meta b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs.meta new file mode 100644 index 0000000..03549ea --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemPermission.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 50ebb7b3edee04e44a14fc3f900860fd +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs new file mode 100644 index 0000000..cffae6f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class SystemVoipState + { + public readonly VoipMuteState MicrophoneMuted; + public readonly SystemVoipStatus Status; + + + public SystemVoipState(IntPtr o) + { + MicrophoneMuted = CAPI.ovr_SystemVoipState_GetMicrophoneMuted(o); + Status = CAPI.ovr_SystemVoipState_GetStatus(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs.meta b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs.meta new file mode 100644 index 0000000..d165cf6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/SystemVoipState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6393103106f621e4cb6b8819417de993 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/Team.cs b/Assets/Oculus/Platform/Scripts/Models/Team.cs new file mode 100644 index 0000000..8c77b57 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Team.cs @@ -0,0 +1,39 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class Team + { + public readonly UserList AssignedUsers; + public readonly int MaxUsers; + public readonly int MinUsers; + public readonly string Name; + + + public Team(IntPtr o) + { + AssignedUsers = new UserList(CAPI.ovr_Team_GetAssignedUsers(o)); + MaxUsers = CAPI.ovr_Team_GetMaxUsers(o); + MinUsers = CAPI.ovr_Team_GetMinUsers(o); + Name = CAPI.ovr_Team_GetName(o); + } + } + + public class TeamList : DeserializableList { + public TeamList(IntPtr a) { + var count = (int)CAPI.ovr_TeamArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new Team(CAPI.ovr_TeamArray_GetElement(a, (UIntPtr)i))); + } + + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/Team.cs.meta b/Assets/Oculus/Platform/Scripts/Models/Team.cs.meta new file mode 100644 index 0000000..4431710 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/Team.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 606cd14e795f5884ead651fbe36a7579 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/User.cs b/Assets/Oculus/Platform/Scripts/Models/User.cs new file mode 100644 index 0000000..c75c53d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/User.cs @@ -0,0 +1,48 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class User + { + public readonly UInt64 ID; + public readonly string ImageURL; + public readonly string InviteToken; + public readonly string OculusID; + public readonly string Presence; + public readonly string PresenceDeeplinkMessage; + public readonly UserPresenceStatus PresenceStatus; + public readonly string SmallImageUrl; + + + public User(IntPtr o) + { + ID = CAPI.ovr_User_GetID(o); + ImageURL = CAPI.ovr_User_GetImageUrl(o); + InviteToken = CAPI.ovr_User_GetInviteToken(o); + OculusID = CAPI.ovr_User_GetOculusID(o); + Presence = CAPI.ovr_User_GetPresence(o); + PresenceDeeplinkMessage = CAPI.ovr_User_GetPresenceDeeplinkMessage(o); + PresenceStatus = CAPI.ovr_User_GetPresenceStatus(o); + SmallImageUrl = CAPI.ovr_User_GetSmallImageUrl(o); + } + } + + public class UserList : DeserializableList { + public UserList(IntPtr a) { + var count = (int)CAPI.ovr_UserArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new User(CAPI.ovr_UserArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_UserArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/User.cs.meta b/Assets/Oculus/Platform/Scripts/Models/User.cs.meta new file mode 100644 index 0000000..90f17a2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/User.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e924972a6fae3564ea6936d99f9b81f1 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs new file mode 100644 index 0000000..56ead5c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs @@ -0,0 +1,49 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +#pragma warning disable 0618 + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserAndRoom + { + // May be null. Check before using. + public readonly Room RoomOptional; + [Obsolete("Deprecated in favor of RoomOptional")] + public readonly Room Room; + public readonly User User; + + + public UserAndRoom(IntPtr o) + { + { + var pointer = CAPI.ovr_UserAndRoom_GetRoom(o); + Room = new Room(pointer); + if (pointer == IntPtr.Zero) { + RoomOptional = null; + } else { + RoomOptional = Room; + } + } + User = new User(CAPI.ovr_UserAndRoom_GetUser(o)); + } + } + + public class UserAndRoomList : DeserializableList { + public UserAndRoomList(IntPtr a) { + var count = (int)CAPI.ovr_UserAndRoomArray_GetSize(a); + _Data = new List(count); + for (int i = 0; i < count; i++) { + _Data.Add(new UserAndRoom(CAPI.ovr_UserAndRoomArray_GetElement(a, (UIntPtr)i))); + } + + _NextUrl = CAPI.ovr_UserAndRoomArray_GetNextUrl(a); + } + + } +} diff --git a/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs.meta b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs.meta new file mode 100644 index 0000000..e4a8d16 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserAndRoom.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a13e8fdc4c1263e43a7f56781529a4cc +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/UserProof.cs b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs new file mode 100644 index 0000000..fe426ca --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs @@ -0,0 +1,22 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserProof + { + public readonly string Value; + + + public UserProof(IntPtr o) + { + Value = CAPI.ovr_UserProof_GetNonce(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/UserProof.cs.meta b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs.meta new file mode 100644 index 0000000..7260c09 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserProof.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9cfd1e7885b01dd47adcab5c9c72ed26 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs new file mode 100644 index 0000000..3601940 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform.Models +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserReportID + { + public readonly bool DidCancel; + public readonly UInt64 ID; + + + public UserReportID(IntPtr o) + { + DidCancel = CAPI.ovr_UserReportID_GetDidCancel(o); + ID = CAPI.ovr_UserReportID_GetID(o); + } + } + +} diff --git a/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs.meta b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs.meta new file mode 100644 index 0000000..b10f760 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Models/UserReportID.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3c9566020c8239548b2efa1583525ffe +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Packet.cs b/Assets/Oculus/Platform/Scripts/Packet.cs new file mode 100644 index 0000000..8200225 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Packet.cs @@ -0,0 +1,63 @@ +namespace Oculus.Platform +{ + using System; + using System.Runtime.InteropServices; + + public sealed class Packet : IDisposable + { + private readonly ulong size; + private readonly IntPtr packetHandle; + + public Packet(IntPtr packetHandle) + { + this.packetHandle = packetHandle; + size = (ulong) CAPI.ovr_Packet_GetSize(packetHandle); + } + + /** + * Copies all the bytes in the payload into byte[] destination. ex: + * Package package ... + * byte[] destination = new byte[package.Size]; + * package.ReadBytes(destination); + */ + public ulong ReadBytes(byte[] destination) + { + if ((ulong) destination.LongLength < size) + { + throw new System.ArgumentException(String.Format("Destination array was not big enough to hold {0} bytes", size)); + } + Marshal.Copy(CAPI.ovr_Packet_GetBytes(packetHandle), destination, 0, (int) size); + return size; + } + + public UInt64 SenderID + { + get { return CAPI.ovr_Packet_GetSenderID(packetHandle); } + } + + public ulong Size + { + get { return size; } + } + + public SendPolicy Policy + { + get { return (SendPolicy)CAPI.ovr_Packet_GetSendPolicy(packetHandle); } + } + + #region IDisposable + + ~Packet() + { + Dispose(); + } + + public void Dispose() + { + CAPI.ovr_Packet_Free(packetHandle); + GC.SuppressFinalize(this); + } + + #endregion + } +} diff --git a/Assets/Oculus/Platform/Scripts/Packet.cs.meta b/Assets/Oculus/Platform/Scripts/Packet.cs.meta new file mode 100644 index 0000000..165be36 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Packet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f384e82f5031ccd488f47fa837e5d7e5 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PartyUpdateAction.cs b/Assets/Oculus/Platform/Scripts/PartyUpdateAction.cs new file mode 100644 index 0000000..3fdb392 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PartyUpdateAction.cs @@ -0,0 +1,27 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PartyUpdateAction : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("Join")] + Join, + + [Description("Leave")] + Leave, + + [Description("Invite")] + Invite, + + [Description("Uninvite")] + Uninvite, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PartyUpdateAction.cs.meta b/Assets/Oculus/Platform/Scripts/PartyUpdateAction.cs.meta new file mode 100644 index 0000000..50478d3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PartyUpdateAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 86c52315f0c6b204e9267aa17ff65551 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs new file mode 100644 index 0000000..c6b4935 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs @@ -0,0 +1,31 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PeerConnectionState : int + { + [Description("UNKNOWN")] + Unknown, + + /// Connection to the peer is established. + [Description("CONNECTED")] + Connected, + + /// A timeout expired while attempting to (re)establish a connection. This can + /// happen if peer is unreachable or rejected the connection. + [Description("TIMEOUT")] + Timeout, + + /// Connection to the peer is closed. A connection transitions into this state + /// when it is explicitly closed by either the local or remote peer calling + /// Net.Close(). It also enters this state if the remote peer no longer + /// responds to our keep-alive probes. + [Description("CLOSED")] + Closed, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs.meta b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs.meta new file mode 100644 index 0000000..8b7f0aa --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PeerConnectionState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bda0ab1d901c7a444a8a78a509c6b3e9 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs new file mode 100644 index 0000000..508158a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PermissionGrantStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("GRANTED")] + Granted, + + [Description("DENIED")] + Denied, + + [Description("BLOCKED")] + Blocked, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs.meta b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs.meta new file mode 100644 index 0000000..fd1100b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionGrantStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6ffd2b886b53fde48943449fa2c36140 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PermissionType.cs b/Assets/Oculus/Platform/Scripts/PermissionType.cs new file mode 100644 index 0000000..c19a7b9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PermissionType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MICROPHONE")] + Microphone, + + [Description("WRITE_EXTERNAL_STORAGE")] + WriteExternalStorage, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PermissionType.cs.meta b/Assets/Oculus/Platform/Scripts/PermissionType.cs.meta new file mode 100644 index 0000000..0926e42 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PermissionType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 509fa63399714ee47b26b41370f9154d +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Platform.cs b/Assets/Oculus/Platform/Scripts/Platform.cs new file mode 100644 index 0000000..875b427 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Platform.cs @@ -0,0 +1,2596 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Assembly-CSharp-Editor")] + +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + + public sealed class Core { + private static bool IsPlatformInitialized = false; + public static bool IsInitialized() + { + return IsPlatformInitialized; + } + + // If LogMessages is true, then the contents of each request response + // will be printed using Debug.Log. This allocates a lot of heap memory, + // and so should not be called outside of testing and debugging. + public static bool LogMessages = false; + + internal static void ForceInitialized() + { + IsPlatformInitialized = true; + } + + private static string getAppID(string appId = null) { + string configAppID = GetAppIDFromConfig(); + if (String.IsNullOrEmpty(appId)) + { + if (String.IsNullOrEmpty(configAppID)) + { + throw new UnityException("Update your app id by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + appId = configAppID; + } + else + { + if (!String.IsNullOrEmpty(configAppID)) + { + Debug.LogWarningFormat("The 'Oculus App Id ({0})' field in 'Oculus Platform/Edit Settings' is being overridden by the App Id ({1}) that you passed in to Platform.Core.Initialize. You should only specify this in one place. We recommend the menu location.", configAppID, appId); + } + } + return appId; + } + + // Asynchronously Initialize Platform SDK. The result will be put on the message + // queue with the message type: ovrMessage_PlatformInitializeAndroidAsynchronous + // + // While the platform is in an initializing state, it's not fully functional. + // [Requests]: will queue up and run once platform is initialized. + // For example: ovr_User_GetLoggedInUser() can be called immediately after + // asynchronous init and once platform is initialized, this request will run + // [Synchronous Methods]: will return the default value; + // For example: ovr_GetLoggedInUserID() will return 0 until platform is + // fully initialized + public static Request AsyncInitialize(string appId = null) { + appId = getAppID(appId); + + Request request; + if (UnityEngine.Application.isEditor && PlatformSettings.UseStandalonePlatform) { + var platform = new StandalonePlatform(); + request = platform.InitializeInEditor(); + } + else if (UnityEngine.Application.platform == RuntimePlatform.WindowsEditor || + UnityEngine.Application.platform == RuntimePlatform.WindowsPlayer) { + var platform = new WindowsPlatform(); + request = platform.AsyncInitialize(appId); + } + else if (UnityEngine.Application.platform == RuntimePlatform.Android) { + var platform = new AndroidPlatform(); + request = platform.AsyncInitialize(appId); + } + else { + throw new NotImplementedException("Oculus platform is not implemented on this platform yet."); + } + + IsPlatformInitialized = (request != null); + + if (!IsPlatformInitialized) + { + throw new UnityException("Oculus Platform failed to initialize."); + } + + if (LogMessages) { + Debug.LogWarning("Oculus.Platform.Core.LogMessages is set to true. This will cause extra heap allocations, and should not be used outside of testing and debugging."); + } + + // Create the GameObject that will run the callbacks + (new GameObject("Oculus.Platform.CallbackRunner")).AddComponent(); + return request; + } + + + public static void Initialize(string appId = null) + { + appId = getAppID(appId); + + if (UnityEngine.Application.isEditor && PlatformSettings.UseStandalonePlatform) { + var platform = new StandalonePlatform(); + IsPlatformInitialized = platform.InitializeInEditor() != null; + } + else if (UnityEngine.Application.platform == RuntimePlatform.WindowsEditor || + UnityEngine.Application.platform == RuntimePlatform.WindowsPlayer) { + var platform = new WindowsPlatform(); + IsPlatformInitialized = platform.Initialize(appId); + } + else if (UnityEngine.Application.platform == RuntimePlatform.Android) { + var platform = new AndroidPlatform(); + IsPlatformInitialized = platform.Initialize(appId); + } + else { + throw new NotImplementedException("Oculus platform is not implemented on this platform yet."); + } + + if (!IsPlatformInitialized) + { + throw new UnityException("Oculus Platform failed to initialize."); + } + + if (LogMessages) { + Debug.LogWarning("Oculus.Platform.Core.LogMessages is set to true. This will cause extra heap allocations, and should not be used outside of testing and debugging."); + } + + // Create the GameObject that will run the callbacks + (new GameObject("Oculus.Platform.CallbackRunner")).AddComponent(); + } + + private static string GetAppIDFromConfig() + { + if (UnityEngine.Application.platform == RuntimePlatform.Android) + { + return PlatformSettings.MobileAppID; + } + else + { + return PlatformSettings.AppID; + } + } + } + + public static partial class ApplicationLifecycle + { + public static Models.LaunchDetails GetLaunchDetails() { + return new Models.LaunchDetails(CAPI.ovr_ApplicationLifecycle_GetLaunchDetails()); + } + } + + public static partial class Rooms + { + + public static Request UpdateDataStore(UInt64 roomID, Dictionary data) + { + if (Core.IsInitialized()) + { + CAPI.ovrKeyValuePair[] kvps = new CAPI.ovrKeyValuePair[data.Count]; + int i=0; + foreach(var item in data) + { + kvps[i++] = new CAPI.ovrKeyValuePair(item.Key, item.Value); + } + + return new Request(CAPI.ovr_Room_UpdateDataStore(roomID, kvps)); + } + return null; + } + + [Obsolete("Deprecated in favor of SetRoomInviteAcceptedNotificationCallback")] + public static void SetRoomInviteNotificationCallback(Message.Callback callback) + { + SetRoomInviteAcceptedNotificationCallback(callback); + } + + } + + public static partial class Matchmaking + { + public class CustomQuery + { + public Dictionary data; + public Criterion[] criteria; + + public struct Criterion + { + public Criterion(string key_, MatchmakingCriterionImportance importance_) + { + key = key_; + importance = importance_; + + parameters = null; + } + + public string key; + public MatchmakingCriterionImportance importance; + public Dictionary parameters; + } + + public IntPtr ToUnmanaged() + { + var customQueryUnmanaged = new CAPI.ovrMatchmakingCustomQueryData(); + + if(criteria != null && criteria.Length > 0) + { + customQueryUnmanaged.criterionArrayCount = (uint)criteria.Length; + var temp = new CAPI.ovrMatchmakingCriterion[criteria.Length]; + + for(int i=0; i 0) + { + temp[i].parameterArrayCount = (uint)criteria[i].parameters.Count; + temp[i].parameterArray = CAPI.ArrayOfStructsToIntPtr(CAPI.DictionaryToOVRKeyValuePairs(criteria[i].parameters)); + } + else + { + temp[i].parameterArrayCount = 0; + temp[i].parameterArray = IntPtr.Zero; + } + } + + customQueryUnmanaged.criterionArray = CAPI.ArrayOfStructsToIntPtr(temp); + } + else + { + customQueryUnmanaged.criterionArrayCount = 0; + customQueryUnmanaged.criterionArray = IntPtr.Zero; + } + + + if(data != null && data.Count > 0) + { + customQueryUnmanaged.dataArrayCount = (uint)data.Count; + customQueryUnmanaged.dataArray = CAPI.ArrayOfStructsToIntPtr(CAPI.DictionaryToOVRKeyValuePairs(data)); + } + else + { + customQueryUnmanaged.dataArrayCount = 0; + customQueryUnmanaged.dataArray = IntPtr.Zero; + } + + IntPtr res = Marshal.AllocHGlobal(Marshal.SizeOf(customQueryUnmanaged)); + Marshal.StructureToPtr(customQueryUnmanaged, res, true); + return res; + } + } + + public static Request ReportResultsInsecure(UInt64 roomID, Dictionary data) + { + if(Core.IsInitialized()) + { + CAPI.ovrKeyValuePair[] kvps = new CAPI.ovrKeyValuePair[data.Count]; + int i=0; + foreach(var item in data) + { + kvps[i++] = new CAPI.ovrKeyValuePair(item.Key, item.Value); + } + + return new Request(CAPI.ovr_Matchmaking_ReportResultInsecure(roomID, kvps)); + } + + return null; + } + + public static Request GetStats(string pool, uint maxLevel, MatchmakingStatApproach approach = MatchmakingStatApproach.Trailing) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_GetStats(pool, maxLevel, approach)); + } + + return null; + } + } + + public static partial class Net + { + public static Packet ReadPacket() + { + if (!Core.IsInitialized()) + { + return null; + } + + var packetHandle = CAPI.ovr_Net_ReadPacket(); + + if(packetHandle == IntPtr.Zero) + { + return null; + } + + return new Packet(packetHandle); + } + + public static bool SendPacket(UInt64 userID, byte[] bytes, SendPolicy policy) + { + if(Core.IsInitialized()) + { + return CAPI.ovr_Net_SendPacket(userID, (UIntPtr)bytes.Length, bytes, policy); + } + + return false; + } + + public static void Connect(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Net_Connect(userID); + } + } + + public static void Accept(UInt64 userID) + { + if(Core.IsInitialized()) + { + CAPI.ovr_Net_Accept(userID); + } + } + + public static void Close(UInt64 userID) + { + if(Core.IsInitialized()) + { + CAPI.ovr_Net_Close(userID); + } + } + + public static bool IsConnected(UInt64 userID) + { + return Core.IsInitialized() && CAPI.ovr_Net_IsConnected(userID); + } + + public static bool SendPacketToCurrentRoom(byte[] bytes, SendPolicy policy) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Net_SendPacketToCurrentRoom((UIntPtr)bytes.Length, bytes, policy); + } + + return false; + } + + public static bool AcceptForCurrentRoom() + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Net_AcceptForCurrentRoom(); + } + + return false; + } + + public static void CloseForCurrentRoom() + { + if (Core.IsInitialized()) + { + CAPI.ovr_Net_CloseForCurrentRoom(); + } + } + + public static Request Ping(UInt64 userID) + { + if(Core.IsInitialized()) + { + return new Request(CAPI.ovr_Net_Ping(userID)); + } + + return null; + } + } + + public static partial class Leaderboards + { + public static Request GetNextEntries(Models.LeaderboardEntryList list) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_HTTP_GetWithMessageType(list.NextUrl, (int)Message.MessageType.Leaderboard_GetNextEntries)); + } + + return null; + } + + public static Request GetPreviousEntries(Models.LeaderboardEntryList list) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_HTTP_GetWithMessageType(list.PreviousUrl, (int)Message.MessageType.Leaderboard_GetPreviousEntries)); + } + + return null; + } + } + + public static partial class Voip + { + public static void Start(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_Start(userID); + } + } + + public static void Accept(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_Accept(userID); + } + } + + public static void Stop(UInt64 userID) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_Stop(userID); + } + } + + public static void SetMicrophoneFilterCallback(CAPI.FilterCallback callback) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_SetMicrophoneFilterCallbackWithFixedSizeBuffer(callback, (UIntPtr)CAPI.VoipFilterBufferSize); + } + } + + public static void SetMicrophoneMuted(VoipMuteState state) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_SetMicrophoneMuted(state); + } + } + + public static VoipMuteState GetSystemVoipMicrophoneMuted() + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetSystemVoipMicrophoneMuted(); + } + return VoipMuteState.Unknown; + } + + public static SystemVoipStatus GetSystemVoipStatus() + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetSystemVoipStatus(); + } + return SystemVoipStatus.Unknown; + } + + public static Oculus.Platform.VoipDtxState GetIsConnectionUsingDtx(UInt64 peerID) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetIsConnectionUsingDtx(peerID); + } + return Oculus.Platform.VoipDtxState.Unknown; + } + + public static Oculus.Platform.VoipBitrate GetLocalBitrate(UInt64 peerID) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetLocalBitrate(peerID); + } + return Oculus.Platform.VoipBitrate.Unknown; + } + + public static Oculus.Platform.VoipBitrate GetRemoteBitrate(UInt64 peerID) + { + if (Core.IsInitialized()) + { + return CAPI.ovr_Voip_GetRemoteBitrate(peerID); + } + return Oculus.Platform.VoipBitrate.Unknown; + } + + public static void SetNewConnectionOptions(VoipOptions voipOptions) + { + if (Core.IsInitialized()) + { + CAPI.ovr_Voip_SetNewConnectionOptions((IntPtr)voipOptions); + } + } + } + + public static partial class Achievements + { + /// Add 'count' to the achievement with the given name. This must be a COUNT + /// achievement. The largest number that is supported by this method is the max + /// value of a signed 64-bit integer. If the number is larger than that, it is + /// clamped to that max value before being passed to the servers. + /// + public static Request AddCount(string name, ulong count) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_AddCount(name, count)); + } + + return null; + } + + /// Unlock fields of a BITFIELD achievement. + /// \param name The name of the achievement to unlock + /// \param fields A string containing either '0' or '1' characters. Every '1' will unlock the field in the corresponding position. + /// + public static Request AddFields(string name, string fields) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_AddFields(name, fields)); + } + + return null; + } + + /// Request all achievement definitions for the app. + /// + public static Request GetAllDefinitions() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetAllDefinitions()); + } + + return null; + } + + /// Request the progress for the user on all achievements in the app. + /// + public static Request GetAllProgress() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetAllProgress()); + } + + return null; + } + + /// Request the achievement definitions that match the specified names. + /// + public static Request GetDefinitionsByName(string[] names) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetDefinitionsByName(names, (names != null ? names.Length : 0))); + } + + return null; + } + + /// Request the user's progress on the specified achievements. + /// + public static Request GetProgressByName(string[] names) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_GetProgressByName(names, (names != null ? names.Length : 0))); + } + + return null; + } + + /// Unlock the achievement with the given name. This can be of any achievement + /// type. + /// + public static Request Unlock(string name) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Achievements_Unlock(name)); + } + + return null; + } + + } + + public static partial class Application + { + /// Requests version information, including the currently installed and latest + /// available version name and version code. + /// + public static Request GetVersion() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Application_GetVersion()); + } + + return null; + } + + /// Launches a different application in the user's library. If the user does + /// not have that application installed, they will be taken to that app's page + /// in the Oculus Store + /// \param appID The ID of the app to launch + /// \param deeplink_options Additional configuration for this requests. Optional. + /// + public static Request LaunchOtherApp(UInt64 appID, ApplicationOptions deeplink_options = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Application_LaunchOtherApp(appID, (IntPtr)deeplink_options)); + } + + return null; + } + + } + + public static partial class ApplicationLifecycle + { + /// Sent when a launch intent is received (for both cold and warm starts). The + /// payload is the type of the intent. ApplicationLifecycle.GetLaunchDetails() + /// should be called to get the other details. + /// + public static void SetLaunchIntentChangedNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_ApplicationLifecycle_LaunchIntentChanged, + callback + ); + } + + } + + public static partial class AssetFile + { + /// DEPRECATED. Use AssetFile.DeleteById() + /// + public static Request Delete(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_Delete(assetFileID)); + } + + return null; + } + + /// Removes an previously installed asset file from the device by its ID. + /// Returns an object containing the asset ID and file name, and a success + /// flag. + /// \param assetFileID The asset file ID + /// + public static Request DeleteById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DeleteById(assetFileID)); + } + + return null; + } + + /// Removes an previously installed asset file from the device by its name. + /// Returns an object containing the asset ID and file name, and a success + /// flag. + /// \param assetFileName The asset file name + /// + public static Request DeleteByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DeleteByName(assetFileName)); + } + + return null; + } + + /// DEPRECATED. Use AssetFile.DownloadById() + /// + public static Request Download(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_Download(assetFileID)); + } + + return null; + } + + /// Downloads an asset file by its ID on demand. Returns an object containing + /// the asset ID and filepath. Sends periodic + /// MessageType.Notification_AssetFile_DownloadUpdate to track the downloads. + /// \param assetFileID The asset file ID + /// + public static Request DownloadById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadById(assetFileID)); + } + + return null; + } + + /// Downloads an asset file by its name on demand. Returns an object containing + /// the asset ID and filepath. Sends periodic + /// {notifications.asset_file.download_update}} to track the downloads. + /// \param assetFileName The asset file name + /// + public static Request DownloadByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadByName(assetFileName)); + } + + return null; + } + + /// DEPRECATED. Use AssetFile.DownloadCancelById() + /// + public static Request DownloadCancel(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadCancel(assetFileID)); + } + + return null; + } + + /// Cancels a previously spawned download request for an asset file by its ID. + /// Returns an object containing the asset ID and file path, and a success + /// flag. + /// \param assetFileID The asset file ID + /// + public static Request DownloadCancelById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadCancelById(assetFileID)); + } + + return null; + } + + /// Cancels a previously spawned download request for an asset file by its + /// name. Returns an object containing the asset ID and file path, and a + /// success flag. + /// \param assetFileName The asset file name + /// + public static Request DownloadCancelByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_DownloadCancelByName(assetFileName)); + } + + return null; + } + + /// Returns an array of objects with asset file names and their associated IDs, + /// and and whether it's currently installed. + /// + public static Request GetList() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_GetList()); + } + + return null; + } + + /// DEPRECATED. Use AssetFile.StatusById() + /// + public static Request Status(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_Status(assetFileID)); + } + + return null; + } + + /// Returns the details on a single asset: ID, file name, and whether it's + /// currently installed + /// \param assetFileID The asset file ID + /// + public static Request StatusById(UInt64 assetFileID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_StatusById(assetFileID)); + } + + return null; + } + + /// Returns the details on a single asset: ID, file name, and whether it's + /// currently installed + /// \param assetFileName The asset file name + /// + public static Request StatusByName(string assetFileName) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_AssetFile_StatusByName(assetFileName)); + } + + return null; + } + + /// Sent to indicate download progress for asset files. + /// + public static void SetDownloadUpdateNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_AssetFile_DownloadUpdate, + callback + ); + } + + } + + public static partial class Avatar + { + } + + public static partial class Cal + { + } + + public static partial class CloudStorage + { + /// Deletes the specified save data buffer. Conflicts are handled just like + /// Saves. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// + public static Request Delete(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_Delete(bucket, key)); + } + + return null; + } + + /// Loads the saved entry for the specified bucket and key. If a conflict + /// exists with the key then an error message is returned. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// + public static Request Load(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_Load(bucket, key)); + } + + return null; + } + + /// Loads all the metadata for the saves in the specified bucket, including + /// conflicts. + /// \param bucket The name of the storage bucket. + /// + public static Request LoadBucketMetadata(string bucket) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadBucketMetadata(bucket)); + } + + return null; + } + + /// Loads the metadata for this bucket-key combination that need to be manually + /// resolved. + /// \param bucket The name of the storage bucket + /// \param key The key for this saved data. + /// + public static Request LoadConflictMetadata(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadConflictMetadata(bucket, key)); + } + + return null; + } + + /// Loads the data specified by the storage handle. + /// + public static Request LoadHandle(string handle) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadHandle(handle)); + } + + return null; + } + + /// load the metadata for the specified key + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// + public static Request LoadMetadata(string bucket, string key) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_LoadMetadata(bucket, key)); + } + + return null; + } + + /// Selects the local save for manual conflict resolution. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// \param remoteHandle The handle of the remote that the local file was resolved against. + /// + public static Request ResolveKeepLocal(string bucket, string key, string remoteHandle) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_ResolveKeepLocal(bucket, key, remoteHandle)); + } + + return null; + } + + /// Selects the remote save for manual conflict resolution. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// \param remoteHandle The handle of the remote. + /// + public static Request ResolveKeepRemote(string bucket, string key, string remoteHandle) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_ResolveKeepRemote(bucket, key, remoteHandle)); + } + + return null; + } + + /// Note: Cloud Storage is only available for Rift apps. + /// + /// Send a save data buffer to the platform. CloudStorage.Save() passes a + /// pointer to your data in an async call. You need to maintain the save data + /// until you receive the message indicating that the save was successful. + /// + /// If the data is destroyed or modified prior to receiving that message the + /// data will not be saved. + /// \param bucket The name of the storage bucket. + /// \param key The name for this saved data. + /// \param data Start of the data block. + /// \param counter Optional. Counter used for user data or auto-deconfliction. + /// \param extraData Optional. String data that isn't used by the platform. + /// + /// Error codes + /// - \b 100: The stored version has a later timestamp than the data provided. This cloud storage bucket's conflict resolution policy is configured to use the latest timestamp, which is configurable in the developer dashboard. + /// + public static Request Save(string bucket, string key, byte[] data, long counter, string extraData) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage_Save(bucket, key, data, (uint)(data != null ? data.Length : 0), counter, extraData)); + } + + return null; + } + + } + + public static partial class CloudStorage2 + { + /// Get the directory path for the current user/app pair that will be used + /// during cloud storage synchronization + /// + public static Request GetUserDirectoryPath() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_CloudStorage2_GetUserDirectoryPath()); + } + + return null; + } + + } + + public static partial class Colocation + { + } + + public static partial class Entitlements + { + /// Returns whether the current user is entitled to the current app. + /// + public static Request IsUserEntitledToApplication() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Entitlement_GetIsViewerEntitled()); + } + + return null; + } + + } + + public static partial class GraphAPI + { + } + + public static partial class HTTP + { + } + + public static partial class IAP + { + /// Allow the consumable IAP product to be purchased again. Conceptually, this + /// indicates that the item was used or consumed. + /// + public static Request ConsumePurchase(string sku) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_IAP_ConsumePurchase(sku)); + } + + return null; + } + + /// Retrieve a list of IAP products that can be purchased. + /// \param skus The SKUs of the products to retrieve. + /// + public static Request GetProductsBySKU(string[] skus) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_IAP_GetProductsBySKU(skus, (skus != null ? skus.Length : 0))); + } + + return null; + } + + /// Retrieve a list of Purchase that the Logged-In-User has made. This list + /// will also contain consumable purchases that have not been consumed. + /// + public static Request GetViewerPurchases() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_IAP_GetViewerPurchases()); + } + + return null; + } + + /// Retrieve a list of Purchase that the Logged-In-User has made. This list + /// will only contain durable purchase (non-consumable) and is populated from a + /// device cache. It is recommended in all cases to use + /// ovr_User_GetViewerPurchases first and only check the cache if that fails. + /// + public static Request GetViewerPurchasesDurableCache() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_IAP_GetViewerPurchasesDurableCache()); + } + + return null; + } + + /// Launch the checkout flow to purchase the existing product. Oculus Home + /// tries handle and fix as many errors as possible. Home returns the + /// appropriate error message and how to resolveit, if possible. Returns a + /// purchase on success, empty purchase on cancel, and an error on error. + /// \param sku IAP sku for the item the user wishes to purchase. + /// + public static Request LaunchCheckoutFlow(string sku) + { + if (Core.IsInitialized()) + { + if (UnityEngine.Application.isEditor) { + throw new NotImplementedException("LaunchCheckoutFlow() is not implemented in the editor yet."); + } + + return new Request(CAPI.ovr_IAP_LaunchCheckoutFlow(sku)); + } + + return null; + } + + } + + public static partial class LanguagePack + { + /// Returns currently installed and selected language pack for an app in the + /// view of the `asset_details`. Use `language` field to extract neeeded + /// language info. A particular language can be download and installed by a + /// user from the Oculus app on the application page. + /// + public static Request GetCurrent() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_LanguagePack_GetCurrent()); + } + + return null; + } + + /// Sets the current language to specified. The parameter is the BCP47 language + /// tag. If a language pack is not downloaded yet, spawns automatically the + /// AssetFile.DownloadByName() request, and sends periodic + /// MessageType.Notification_AssetFile_DownloadUpdate to track the downloads. + /// Once the language asset file is downloaded, call LanguagePack.GetCurrent() + /// to retrive the data, and use the language at runtime. + /// \param tag BCP47 language tag + /// + public static Request SetCurrent(string tag) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_LanguagePack_SetCurrent(tag)); + } + + return null; + } + + } + + public static partial class Leaderboards + { + /// Requests a block of Leaderboard Entries. + /// \param leaderboardName The name of the leaderboard whose entries to return. + /// \param limit Defines the maximum number of entries to return. + /// \param filter Allows you to restrict the returned values by friends. + /// \param startAt Defines whether to center the query on the user or start at the top of the leaderboard. + /// + /// Error codes + /// - \b 12074: You're not yet ranked on this leaderboard. + /// + public static Request GetEntries(string leaderboardName, int limit, LeaderboardFilterType filter, LeaderboardStartAt startAt) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Leaderboard_GetEntries(leaderboardName, limit, filter, startAt)); + } + + return null; + } + + /// Requests a block of leaderboard Entries. + /// \param leaderboardName The name of the leaderboard. + /// \param limit The maximum number of entries to return. + /// \param afterRank The position after which to start. For example, 10 returns leaderboard results starting with the 11th user. + /// + public static Request GetEntriesAfterRank(string leaderboardName, int limit, ulong afterRank) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Leaderboard_GetEntriesAfterRank(leaderboardName, limit, afterRank)); + } + + return null; + } + + /// Writes a single entry to a leaderboard. + /// \param leaderboardName The leaderboard for which to write the entry. + /// \param score The score to write. + /// \param extraData A 2KB custom data field that is associated with the leaderboard entry. This can be a game replay or anything that provides more detail about the entry to the viewer. + /// \param forceUpdate If true, the score always updates. This happens even if it is not the user's best score. + /// + /// Error codes + /// - \b 100: Parameter {parameter}: invalid user id: {user_id} + /// + public static Request WriteEntry(string leaderboardName, long score, byte[] extraData = null, bool forceUpdate = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Leaderboard_WriteEntry(leaderboardName, score, extraData, (uint)(extraData != null ? extraData.Length : 0), forceUpdate)); + } + + return null; + } + + } + + public static partial class Livestreaming + { + /// Return the status of the current livestreaming session if there is one. + /// + public static Request GetStatus() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Livestreaming_GetStatus()); + } + + return null; + } + + /// Pauses the livestreaming session if there is one. NOTE: this function is + /// safe to call if no session is active. + /// + public static Request PauseStream() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Livestreaming_PauseStream()); + } + + return null; + } + + /// Resumes the livestreaming session if there is one. NOTE: this function is + /// safe to call if no session is active. + /// + public static Request ResumeStream() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Livestreaming_ResumeStream()); + } + + return null; + } + + /// Indicates that the livestreaming session has been updated. You can use this + /// information to throttle your game performance or increase CPU/GPU + /// performance. Use Message.GetLivestreamingStatus() to extract the updated + /// livestreaming status. + /// + public static void SetStatusUpdateNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Livestreaming_StatusChange, + callback + ); + } + + } + + public static partial class Matchmaking + { + /// DEPRECATED. Use Browse2. + /// \param pool A BROWSE type matchmaking pool. + /// \param customQueryData Optional. Custom query data. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Browse(string pool, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Browse(pool, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: BROWSE + /// + /// See overview documentation above. + /// + /// Return a list of matchmaking rooms in the current pool filtered by skill + /// and ping (if enabled). This also enqueues the user in the matchmaking + /// queue. When the user has made a selection, call Rooms.Join2() on one of the + /// rooms that was returned. If the user stops browsing, call + /// Matchmaking.Cancel(). + /// + /// In addition to the list of rooms, enqueue results are also returned. Call + /// MatchmakingBrowseResult.GetEnqueueResult() to obtain them. See + /// OVR_MatchmakingEnqueueResult.h for details. + /// \param pool A BROWSE type matchmaking pool. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Browse2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Browse2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Use Cancel2. + /// \param pool The pool in question. + /// \param requestHash Used to find your entry in a queue. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// + public static Request Cancel(string pool, string requestHash) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Cancel(pool, requestHash)); + } + + return null; + } + + /// Modes: QUICKMATCH, BROWSE + /// + /// Makes a best effort to cancel a previous Enqueue request before a match + /// occurs. Typically triggered when a user gives up waiting. For BROWSE mode, + /// call this when a user gives up looking through the room list or when the + /// host of a room wants to stop receiving new users. If you don't cancel but + /// the user goes offline, the user/room will be timed out of the queue within + /// 30 seconds. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// + public static Request Cancel() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Cancel2()); + } + + return null; + } + + /// DEPRECATED. Use CreateAndEnqueueRoom2. + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param maxUsers Overrides the Max Users value, which is configured in pool settings of the Developer Dashboard. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when the room data changes, such as when users join or leave. + /// \param customQueryData Optional. See "Custom criteria" section above. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12089: You have asked to enqueue {num_users} users together, but this must be less than the maximum number of users in a room, {max_users}. + /// + public static Request CreateAndEnqueueRoom(string pool, uint maxUsers, bool subscribeToUpdates = false, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateAndEnqueueRoom(pool, maxUsers, subscribeToUpdates, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: BROWSE, QUICKMATCH (Advanced; Can Users Create Rooms = true) + /// + /// See overview documentation above. + /// + /// Create a matchmaking room, join it, and enqueue it. This is the preferred + /// method. But, if you do not wish to automatically enqueue the room, you can + /// call CreateRoom2 instead. + /// + /// Visit https://dashboard.oculus.com/application/[YOUR_APP_ID]/matchmaking to + /// set up pools and queries + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12089: You have asked to enqueue {num_users} users together, but this must be less than the maximum number of users in a room, {max_users}. + /// + public static Request CreateAndEnqueueRoom2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateAndEnqueueRoom2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Use CreateRoom2. + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param maxUsers Overrides the Max Users value, which is configured in pool settings of the Developer Dashboard. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + public static Request CreateRoom(string pool, uint maxUsers, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateRoom(pool, maxUsers, subscribeToUpdates)); + } + + return null; + } + + /// Create a matchmaking room and join it, but do not enqueue the room. After + /// creation, you can call EnqueueRoom2. However, Oculus recommends using + /// CreateAndEnqueueRoom2 instead. + /// + /// Modes: BROWSE, QUICKMATCH (Advanced; Can Users Create Rooms = true) + /// + /// Create a matchmaking room and join it, but do not enqueue the room. After + /// creation, you can call EnqueueRoom. Consider using CreateAndEnqueueRoom + /// instead. + /// + /// Visit https://dashboard.oculus.com/application/[YOUR_APP_ID]/matchmaking to + /// set up pools and queries + /// \param pool The matchmaking pool to use, which is defined for the app. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + public static Request CreateRoom2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_CreateRoom2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Use Enqueue2. + /// \param pool The pool to enqueue in. + /// \param customQueryData Optional. See "Custom criteria" section above. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Enqueue(string pool, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Enqueue(pool, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: QUICKMATCH + /// + /// See overview documentation above. + /// + /// Enqueue yourself to await an available matchmaking room. The platform + /// returns a MessageType.Notification_Matchmaking_MatchFound message when a + /// match is found. Call Rooms.Join2() on the returned room. The response + /// contains useful information to display to the user to set expectations for + /// how long it will take to get a match. + /// + /// If the user stops waiting, call Matchmaking.Cancel(). + /// \param pool The pool to enqueue in. + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 100: Pool {pool_key} does not contain custom data key {key}. You can configure matchmaking custom data at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// - \b 12072: Unknown pool: {pool_key}. You can configure matchmaking pools at https://dashboard.oculus.com/application/<app_id>/matchmaking + /// + public static Request Enqueue2(string pool, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_Enqueue2(pool, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// DEPRECATED. Please use Matchmaking.EnqueueRoom2() instead. + /// \param roomID Returned either from MessageType.Notification_Matchmaking_MatchFound or from Matchmaking.CreateRoom(). + /// \param customQueryData Optional. See the "Custom criteria" section above. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// + public static Request EnqueueRoom(UInt64 roomID, CustomQuery customQueryData = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_EnqueueRoom(roomID, customQueryData != null ? customQueryData.ToUnmanaged() : IntPtr.Zero)); + } + + return null; + } + + /// Modes: BROWSE (for Rooms only), ROOM + /// + /// See the overview documentation above. Enqueue yourself to await an + /// available matchmaking room. MessageType.Notification_Matchmaking_MatchFound + /// gets enqueued when a match is found. + /// + /// The response contains useful information to display to the user to set + /// expectations for how long it will take to get a match. + /// + /// If the user stops waiting, call Matchmaking.Cancel(). + /// \param roomID Returned either from MessageType.Notification_Matchmaking_MatchFound or from Matchmaking.CreateRoom(). + /// \param matchmakingOptions Additional matchmaking configuration for this request. Optional. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 12051: Pool '{pool_key}' is configured for Quickmatch mode. In Quickmatch mode, rooms are created on users' behalf when a match is found. Specify Advanced Quickmatch or Browse mode to use this feature. + /// + public static Request EnqueueRoom2(UInt64 roomID, MatchmakingOptions matchmakingOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_EnqueueRoom2(roomID, (IntPtr)matchmakingOptions)); + } + + return null; + } + + /// Modes: QUICKMATCH, BROWSE + /// + /// Used to debug the state of the current matchmaking pool queue. This is not + /// intended to be used in production. + /// + public static Request GetAdminSnapshot() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_GetAdminSnapshot()); + } + + return null; + } + + /// DEPRECATED. Use ovr_Room_Join2. + /// \param roomID ID of a room previously returned from MessageType.Notification_Matchmaking_MatchFound or Matchmaking.Browse(). + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + public static Request JoinRoom(UInt64 roomID, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_JoinRoom(roomID, subscribeToUpdates)); + } + + return null; + } + + /// Modes: QUICKMATCH, BROWSE (+ Skill Pool) + /// + /// For pools with skill-based matching. See overview documentation above. + /// + /// Call after calling Rooms.Join2() when the players are present to begin a + /// rated match for which you plan to report the results (using + /// Matchmaking.ReportResultInsecure()). + /// + /// Error codes + /// - \b 100: There is no active match associated with the room {room_id}. + /// - \b 100: You can only start matches, report matches, and track skill ratings in matchmaking rooms. {room_id} is a room, but it is not a matchmaking room. + /// + public static Request StartMatch(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Matchmaking_StartMatch(roomID)); + } + + return null; + } + + /// Indicates that a match has been found, for example after calling + /// Matchmaking.Enqueue(). Use Message.GetRoom() to extract the matchmaking + /// room. + /// + public static void SetMatchFoundNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Matchmaking_MatchFound, + callback + ); + } + + } + + public static partial class Media + { + /// Launch the Share to Facebook modal via a deeplink to Home on Gear VR, + /// allowing users to share local media files to Facebook. Accepts a + /// postTextSuggestion string for the default text of the Facebook post. + /// Requires a filePath string as the path to the image to be shared to + /// Facebook. This image should be located in your app's internal storage + /// directory. Requires a contentType indicating the type of media to be shared + /// (only 'photo' is currently supported.) + /// \param postTextSuggestion this text will prepopulate the facebook status text-input box within the share modal + /// \param filePath path to the file to be shared to facebook + /// \param contentType content type of the media to be shared + /// + public static Request ShareToFacebook(string postTextSuggestion, string filePath, MediaContentType contentType) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Media_ShareToFacebook(postTextSuggestion, filePath, contentType)); + } + + return null; + } + + } + + public static partial class Net + { + /// Indicates that a connection has been established or there's been an error. + /// Use NetworkingPeer.GetState() to get the result; as above, + /// NetworkingPeer.GetID() returns the ID of the peer this message is for. + /// + public static void SetConnectionStateChangedCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Networking_ConnectionStateChange, + callback + ); + } + + /// Indicates that another user is attempting to establish a P2P connection + /// with us. Use NetworkingPeer.GetID() to extract the ID of the peer. + /// + public static void SetPeerConnectRequestCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Networking_PeerConnectRequest, + callback + ); + } + + /// Generated in response to Net.Ping(). Either contains ping time in + /// microseconds or indicates that there was a timeout. + /// + public static void SetPingResultNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Networking_PingResult, + callback + ); + } + + } + + public static partial class Notifications + { + /// Retrieve a list of all pending room invites for your application (for + /// example, notifications that may have been sent before the user launched + /// your game). You can also get push notifications with + /// MessageType.Notification_Room_InviteReceived. + /// + public static Request GetRoomInviteNotifications() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Notification_GetRoomInvites()); + } + + return null; + } + + /// Mark a notification as read. This causes it to disappear from the Universal + /// Menu, the Oculus App, Oculus Home, and in-app retrieval. + /// + public static Request MarkAsRead(UInt64 notificationID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Notification_MarkAsRead(notificationID)); + } + + return null; + } + + } + + public static partial class Parties + { + /// Load the party the current user is in. + /// + public static Request GetCurrent() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Party_GetCurrent()); + } + + return null; + } + + /// Indicates that party has been updated + /// + public static void SetPartyUpdateNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Party_PartyUpdate, + callback + ); + } + + } + + public static partial class RichPresence + { + /// Clear rich presence for running app + /// + public static Request Clear() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_RichPresence_Clear()); + } + + return null; + } + + /// Gets all the destinations that the presence can be set to + /// + public static Request GetDestinations() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_RichPresence_GetDestinations()); + } + + return null; + } + + /// Set rich presence for running app + /// + public static Request Set(RichPresenceOptions richPresenceOptions) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_RichPresence_Set((IntPtr)richPresenceOptions)); + } + + return null; + } + + } + + public static partial class Rooms + { + /// DEPRECATED. Use CreateAndJoinPrivate2. + /// \param joinPolicy Specifies who can join the room without an invite. + /// \param maxUsers The maximum number of users allowed in the room, including the creator. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + public static Request CreateAndJoinPrivate(RoomJoinPolicy joinPolicy, uint maxUsers, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_CreateAndJoinPrivate(joinPolicy, maxUsers, subscribeToUpdates)); + } + + return null; + } + + /// Creates a new private (client controlled) room and adds the caller to it. + /// This type of room is good for matches where the user wants to play with + /// friends, as they're primarially discoverable by examining which rooms your + /// friends are in. + /// \param joinPolicy Specifies who can join the room without an invite. + /// \param maxUsers The maximum number of users allowed in the room, including the creator. + /// \param roomOptions Additional room configuration for this request. Optional. + /// + public static Request CreateAndJoinPrivate2(RoomJoinPolicy joinPolicy, uint maxUsers, RoomOptions roomOptions) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_CreateAndJoinPrivate2(joinPolicy, maxUsers, (IntPtr)roomOptions)); + } + + return null; + } + + /// Allows arbitrary rooms for the application to be loaded. + /// \param roomID The room to load. + /// + public static Request Get(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Get(roomID)); + } + + return null; + } + + /// Easy loading of the room you're currently in. If you don't want live + /// updates on your current room (by using subscribeToUpdates), you can use + /// this to refresh the data. + /// + public static Request GetCurrent() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetCurrent()); + } + + return null; + } + + /// Allows the current room for a given user to be loaded. Remember that the + /// user's privacy settings may not allow their room to be loaded. Because of + /// this, it's often possible to load the users in a room, but not to take + /// those users and load their room. + /// \param userID ID of the user for which to load the room. + /// + public static Request GetCurrentForUser(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetCurrentForUser(userID)); + } + + return null; + } + + /// DEPRECATED. Use GetInvitableUsers2. + /// + public static Request GetInvitableUsers() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetInvitableUsers()); + } + + return null; + } + + /// Loads a list of users you can invite to a room. These are pulled from your + /// friends list and recently met lists and filtered for relevance and + /// interest. If the room cannot be joined, this list will be empty. By + /// default, the invitable users returned will be for the user's current room. + /// + /// If your application grouping was created after September 9 2017, recently + /// met users will be included by default. If your application grouping was + /// created before then, you can go to edit the setting in the "Rooms and + /// Matchmaking" section of Platform Services at dashboard.oculus.com + /// + /// Customization can be done via RoomOptions. Create this object with + /// RoomOptions(). The params that could be used are: + /// + /// 1. RoomOptions.SetRoomId()- will return the invitable users for this room + /// (instead of the current room). + /// + /// 2. RoomOptions.SetOrdering() - returns the list of users in the provided + /// ordering (see UserOrdering enum). + /// + /// 3. RoomOptions.SetRecentlyMetTimeWindow() - how long long ago should we + /// include users you've recently met in the results? + /// + /// 4. RoomOptions.SetMaxUserResults() - we will limit the number of results + /// returned. By default, the number is unlimited, but the server may choose to + /// limit results for performance reasons. + /// + /// 5. RoomOptions.SetExcludeRecentlyMet() - Don't include users recently in + /// rooms with this user in the result. Also, see the above comment. + /// + /// Example custom C++ usage: + /// + /// auto roomOptions = ovr_RoomOptions_Create(); + /// ovr_RoomOptions_SetOrdering(roomOptions, ovrUserOrdering_PresenceAlphabetical); + /// ovr_RoomOptions_SetRoomId(roomOptions, roomID); + /// ovr_Room_GetInvitableUsers2(roomOptions); + /// ovr_RoomOptions_Destroy(roomOptions); + /// \param roomOptions Additional configuration for this request. Optional. + /// + public static Request GetInvitableUsers2(RoomOptions roomOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetInvitableUsers2((IntPtr)roomOptions)); + } + + return null; + } + + /// Fetches the list of moderated rooms created for the application. + /// + public static Request GetModeratedRooms() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_GetModeratedRooms()); + } + + return null; + } + + /// Invites a user to the specified room. They will receive a notification via + /// MessageType.Notification_Room_InviteReceived if they are in your game, + /// and/or they can poll for room invites using + /// Notifications.GetRoomInviteNotifications(). + /// \param roomID The ID of your current room. + /// \param inviteToken A user's invite token, returned by Rooms.GetInvitableUsers(). + /// + /// Error codes + /// - \b 100: The invite token has expired, the user will need to be reinvited to the room. + /// - \b 100: The target user cannot join you in your current experience + /// - \b 100: You cannot send an invite to a room you are not in + /// + public static Request InviteUser(UInt64 roomID, string inviteToken) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_InviteUser(roomID, inviteToken)); + } + + return null; + } + + /// Joins the target room (leaving the one you're currently in). + /// \param roomID The room to join. + /// \param subscribeToUpdates If true, sends a message with type MessageType.Notification_Room_RoomUpdate when room data changes, such as when users join or leave. + /// + /// Error codes + /// - \b 10: The room you're attempting to join is currently locked. Please try again later. + /// - \b 10: You don't have permission to enter this room. You may need to be invited first. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 100: The room you're attempting to join is full. Please try again later. + /// - \b 100: This game isn't available. If it already started or was canceled, you can host a new game at any point. + /// + public static Request Join(UInt64 roomID, bool subscribeToUpdates = false) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Join(roomID, subscribeToUpdates)); + } + + return null; + } + + /// Joins the target room (leaving the one you're currently in). + /// \param roomID The room to join. + /// \param roomOptions Additional room configuration for this request. Optional. + /// + /// Error codes + /// - \b 10: The room you're attempting to join is currently locked. Please try again later. + /// - \b 10: You don't have permission to enter this room. You may need to be invited first. + /// - \b 100: Invalid room_id: {room_id}. Either the ID is not a valid room or the user does not have permission to see or act on the room. + /// - \b 100: The room you're attempting to join is full. Please try again later. + /// - \b 100: This game isn't available. If it already started or was canceled, you can host a new game at any point. + /// + public static Request Join2(UInt64 roomID, RoomOptions roomOptions) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Join2(roomID, (IntPtr)roomOptions)); + } + + return null; + } + + /// Allows the room owner to kick a user out of the current room. + /// \param roomID The room that you currently own (check Room.GetOwner()). + /// \param userID The user to be kicked (cannot be yourself). + /// \param kickDurationSeconds Length of the ban, in seconds. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// - \b 100: You cannot remove yourself from room {room_id} + /// + public static Request KickUser(UInt64 roomID, UInt64 userID, int kickDurationSeconds) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_KickUser(roomID, userID, kickDurationSeconds)); + } + + return null; + } + + /// Launch the invitable user flow to invite to the logged in user's current + /// room. This is intended to be a nice shortcut for developers not wanting to + /// build out their own Invite UI although it has the same rules as if you + /// build it yourself. + /// + public static Request LaunchInvitableUserFlow(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_LaunchInvitableUserFlow(roomID)); + } + + return null; + } + + /// Removes you from your current room. Returns the solo room you are now in if + /// it succeeds + /// \param roomID The room you're currently in. + /// + public static Request Leave(UInt64 roomID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_Leave(roomID)); + } + + return null; + } + + /// Allows the room owner to set the description of their room. + /// \param roomID The room that you currently own (check Room.GetOwner()). + /// \param description The new name of the room. + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// + public static Request SetDescription(UInt64 roomID, string description) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_SetDescription(roomID, description)); + } + + return null; + } + + /// Disallow new members from being able to join the room. This will prevent + /// joins from Rooms.Join(), invites, 'Join From Home', etc. Users that are in + /// the room at the time of lockdown WILL be able to rejoin. + /// \param roomID The room whose membership you want to lock or unlock. + /// \param membershipLockStatus The new LockStatus for the room + /// + /// Error codes + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is currently in another room (perhaps on another device), and thus is no longer in this room. Users can only be in one room at a time. If they are active on two different devices at once, there will be undefined behavior. + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not in the room (or any room). Perhaps they already left, or they stopped heartbeating. If this is a test environment, make sure you are not using the deprecated initialization methods ovr_PlatformInitializeStandaloneAccessToken (C++)/StandalonePlatform.Initialize(accessToken) (C#). + /// - \b 10: Room {room_id}: The user does not have permission to {cannot_action} because the user is not the owner of the room. + /// + public static Request UpdateMembershipLockStatus(UInt64 roomID, RoomMembershipLockStatus membershipLockStatus) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_UpdateMembershipLockStatus(roomID, membershipLockStatus)); + } + + return null; + } + + /// Allows the room owner to transfer ownership to someone else. + /// \param roomID The room that the user owns (check Room.GetOwner()). + /// \param userID The new user to make an owner; the user must be in the room. + /// + public static Request UpdateOwner(UInt64 roomID, UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_UpdateOwner(roomID, userID)); + } + + return null; + } + + /// Sets the join policy of the user's private room. + /// \param roomID The room ID that the user owns (check Room.GetOwner()). + /// \param newJoinPolicy The new join policy for the room. + /// + public static Request UpdatePrivateRoomJoinPolicy(UInt64 roomID, RoomJoinPolicy newJoinPolicy) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Room_UpdatePrivateRoomJoinPolicy(roomID, newJoinPolicy)); + } + + return null; + } + + /// Indicates that the user has accepted an invitation, for example in Oculus + /// Home. Use Message.GetString() to extract the ID of the room that the user + /// has been inivted to as a string. Then call ovrID_FromString() to parse it + /// into an ovrID. + /// + /// Note that you must call Rooms.Join() if you want to actually join the room. + /// + public static void SetRoomInviteAcceptedNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Room_InviteAccepted, + callback + ); + } + + /// Handle this to notify the user when they've received an invitation to join + /// a room in your game. You can use this in lieu of, or in addition to, + /// polling for room invitations via + /// Notifications.GetRoomInviteNotifications(). + /// + public static void SetRoomInviteReceivedNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Room_InviteReceived, + callback + ); + } + + /// Indicates that the current room has been updated. Use Message.GetRoom() to + /// extract the updated room. + /// + public static void SetUpdateNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Room_RoomUpdate, + callback + ); + } + + } + + public static partial class Users + { + /// Retrieve the user with the given ID. This might fail if the ID is invalid + /// or the user is blocked. + /// + /// NOTE: Users will have a unique ID per application. + /// \param userID User ID retrieved with this application. + /// + public static Request Get(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_Get(userID)); + } + + return null; + } + + /// Return an access token for this user, suitable for making REST calls + /// against graph.oculus.com. + /// + public static Request GetAccessToken() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetAccessToken()); + } + + return null; + } + + /// Retrieve the currently signed in user. This call is available offline. + /// + /// NOTE: This will not return the user's presence as it should always be + /// 'online' in your application. + /// + /// NOTE: Users will have a unique ID per application. + /// + public static Request GetLoggedInUser() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUser()); + } + + return null; + } + + /// Retrieve a list of the logged in user's friends. + /// + public static Request GetLoggedInUserFriends() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUserFriends()); + } + + return null; + } + + /// Retrieve a list of the logged in user's friends and any rooms they might be + /// in. + /// + public static Request GetLoggedInUserFriendsAndRooms() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUserFriendsAndRooms()); + } + + return null; + } + + /// Returns a list of users that the logged in user was in a room with + /// recently, sorted by relevance, along with any rooms they might be in. All + /// you need to do to use this method is to use our Rooms API, and we will + /// track the number of times users are together, their most recent encounter, + /// and the amount of time they spend together. + /// + /// Customization can be done via UserOptions. Create this object with + /// UserOptions(). The params that could be used are: + /// + /// 1. UserOptions.SetTimeWindow() - how recently should the users have played? + /// The default is TimeWindow.ThirtyDays. + /// + /// 2. UserOptions.SetMaxUsers() - we will limit the number of results + /// returned. By default, the number is unlimited, but the server may choose to + /// limit results for performance reasons. + /// \param userOptions Additional configuration for this request. Optional. + /// + public static Request GetLoggedInUserRecentlyMetUsersAndRooms(UserOptions userOptions = null) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetLoggedInUserRecentlyMetUsersAndRooms((IntPtr)userOptions)); + } + + return null; + } + + /// returns an ovrID which is unique per org. allows different apps within the + /// same org to identify the user. + /// \param userID to load the org scoped id of + /// + public static Request GetOrgScopedID(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetOrgScopedID(userID)); + } + + return null; + } + + /// Returns all accounts belonging to this user. Accounts are the Oculus user + /// and x-users that are linked to this user. + /// + public static Request GetSdkAccounts() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetSdkAccounts()); + } + + return null; + } + + /// Part of the scheme to confirm the identity of a particular user in your + /// backend. You can pass the result of Users.GetUserProof() and a user ID from + /// Users.Get() to your your backend. Your server can then use our api to + /// verify identity. 'https://graph.oculus.com/user_nonce_validate?nonce=USER_P + /// ROOF&user_id=USER_ID&access_token=ACCESS_TOKEN' + /// + /// NOTE: The nonce is only good for one check and then it is invalidated. + /// + public static Request GetUserProof() + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_GetUserProof()); + } + + return null; + } + + /// Launch the flow for sending a friend request to a user. + /// \param userID User ID of user to send a friend request to + /// + public static Request LaunchFriendRequestFlow(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_LaunchFriendRequestFlow(userID)); + } + + return null; + } + + /// Launch the profile of the given user. The profile surfaces information + /// about the user and supports relevant actions that the viewer may take on + /// that user, e.g. sending a friend request. + /// \param userID User ID for profile being viewed + /// + public static Request LaunchProfile(UInt64 userID) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_User_LaunchProfile(userID)); + } + + return null; + } + + } + + public static partial class Voip + { + /// Sets whether SystemVoip should be suppressed so that this app's Voip can + /// use the mic and play incoming Voip audio. + /// + public static Request SetSystemVoipSuppressed(bool suppressed) + { + if (Core.IsInitialized()) + { + return new Request(CAPI.ovr_Voip_SetSystemVoipSuppressed(suppressed)); + } + + return null; + } + + /// Sent when another user is attempting to establish a VoIP connection. Use + /// Message.GetNetworkingPeer() to extract information about the user, and + /// Voip.Accept() to accept the connection. + /// + public static void SetVoipConnectRequestCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Voip_ConnectRequest, + callback + ); + } + + /// Sent to indicate that the state of the VoIP connection changed. Use + /// Message.GetNetworkingPeer() and NetworkingPeer.GetState() to extract the + /// current state. + /// + public static void SetVoipStateChangeCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Voip_StateChange, + callback + ); + } + + /// Sent to indicate that some part of the overall state of SystemVoip has + /// changed. Use Message.GetSystemVoipState() and the properties of + /// SystemVoipState to extract the state that triggered the notification. + /// + /// Note that the state may have changed further since the notification was + /// generated, and that you may call the `GetSystemVoip...()` family of + /// functions at any time to get the current state directly. + /// + public static void SetSystemVoipStateNotificationCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_Voip_SystemVoipState, + callback + ); + } + + } + + + public static partial class Achievements { + public static Request GetNextAchievementDefinitionListPage(Models.AchievementDefinitionList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextAchievementDefinitionListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Achievements_GetNextAchievementDefinitionArrayPage + ) + ); + } + + return null; + } + + public static Request GetNextAchievementProgressListPage(Models.AchievementProgressList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextAchievementProgressListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Achievements_GetNextAchievementProgressArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class CloudStorage { + public static Request GetNextCloudStorageMetadataListPage(Models.CloudStorageMetadataList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextCloudStorageMetadataListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.CloudStorage_GetNextCloudStorageMetadataArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class IAP { + public static Request GetNextProductListPage(Models.ProductList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextProductListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.IAP_GetNextProductArrayPage + ) + ); + } + + return null; + } + + public static Request GetNextPurchaseListPage(Models.PurchaseList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextPurchaseListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.IAP_GetNextPurchaseArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class Notifications { + public static Request GetNextRoomInviteNotificationListPage(Models.RoomInviteNotificationList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextRoomInviteNotificationListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Notification_GetNextRoomInviteNotificationArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class RichPresence { + public static Request GetNextDestinationListPage(Models.DestinationList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextDestinationListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.RichPresence_GetNextDestinationArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class Rooms { + public static Request GetNextRoomListPage(Models.RoomList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextRoomListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.Room_GetNextRoomArrayPage + ) + ); + } + + return null; + } + + } + + public static partial class Users { + public static Request GetNextUserAndRoomListPage(Models.UserAndRoomList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextUserAndRoomListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.User_GetNextUserAndRoomArrayPage + ) + ); + } + + return null; + } + + public static Request GetNextUserListPage(Models.UserList list) { + if (!list.HasNextPage) + { + Debug.LogWarning("Oculus.Platform.GetNextUserListPage: List has no next page"); + return null; + } + + if (Core.IsInitialized()) + { + return new Request( + CAPI.ovr_HTTP_GetWithMessageType( + list.NextUrl, + (int)Message.MessageType.User_GetNextUserArrayPage + ) + ); + } + + return null; + } + + } + + +} diff --git a/Assets/Oculus/Platform/Scripts/Platform.cs.meta b/Assets/Oculus/Platform/Scripts/Platform.cs.meta new file mode 100644 index 0000000..f19ec28 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Platform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d0b0b5b4a405b7841a989262b769afe8 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs new file mode 100644 index 0000000..3af3b36 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs @@ -0,0 +1,42 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum PlatformInitializeResult : int + { + [Description("SUCCESS")] + Success = 0, + + [Description("UNINITIALIZED")] + Uninitialized = -1, + + [Description("PRE_LOADED")] + PreLoaded = -2, + + [Description("FILE_INVALID")] + FileInvalid = -3, + + [Description("SIGNATURE_INVALID")] + SignatureInvalid = -4, + + [Description("UNABLE_TO_VERIFY")] + UnableToVerify = -5, + + [Description("VERSION_MISMATCH")] + VersionMismatch = -6, + + [Description("UNKNOWN")] + Unknown = -7, + + [Description("INVALID_CREDENTIALS")] + InvalidCredentials = -8, + + [Description("NOT_ENTITLED")] + NotEntitled = -9, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs.meta b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs.meta new file mode 100644 index 0000000..1f13111 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInitializeResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 32fdc6a414d00e443b9ac1c973395ca8 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PlatformInternal.cs b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs new file mode 100644 index 0000000..948b877 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs @@ -0,0 +1,235 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Assembly-CSharp-Editor")] + +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Collections.Generic; + + public static class PlatformInternal + { + // Keep this enum in sync with ovrMessageTypeInternal in OVR_Platform_Internal.h + public enum MessageTypeInternal : uint { //TODO - rename this to type; it's already in Message class + Application_ExecuteCoordinatedLaunch = 0x267DB4F4, + Application_GetInstalledApplications = 0x520F744C, + Avatar_UpdateMetaData = 0x7BCFD98E, + Cal_FinalizeApplication = 0x1DA9CBD5, + Cal_GetSuggestedApplications = 0x56707015, + Cal_ProposeApplication = 0x4E83F2DD, + Colocation_GetCurrentMapUuid = 0x34557EB2, + Colocation_RequestMap = 0x3215666D, + Colocation_ShareMap = 0x186DC4DD, + GraphAPI_Get = 0x30FF006E, + GraphAPI_Post = 0x76A5A7C4, + HTTP_Get = 0x6FB63223, + HTTP_GetToFile = 0x4E81DC59, + HTTP_MultiPartPost = 0x5842D210, + HTTP_Post = 0x6B36A54F, + Livestreaming_IsAllowedForApplication = 0x0B6D8D76, + Livestreaming_StartPartyStream = 0x7B2F5CDC, + Livestreaming_StartStream = 0x501AC7BE, + Livestreaming_StopPartyStream = 0x27670F58, + Livestreaming_StopStream = 0x44E40DCA, + Livestreaming_UpdateCommentsOverlayVisibility = 0x1F7D8034, + Livestreaming_UpdateMicStatus = 0x1C577D87, + Party_Create = 0x1AD31B4F, + Party_GatherInApplication = 0x7287C183, + Party_Get = 0x5E8953BD, + Party_GetCurrentForUser = 0x58CBFF2A, + Party_Invite = 0x35B5C4E3, + Party_Join = 0x68027C73, + Party_Leave = 0x329206D1, + Room_CreateOrUpdateAndJoinNamed = 0x7C8E0A91, + Room_GetNamedRooms = 0x077D6E8C, + Room_GetSocialRooms = 0x61881D76, + SystemPermissions_GetStatus = 0x1D6A2C09, + SystemPermissions_LaunchDeeplink = 0x1A5A8431, + User_CancelRecordingForReportFlow = 0x03E0D149, + User_GetLinkedAccounts = 0x5793F456, + User_LaunchBlockFlow = 0x6FD62528, + User_LaunchReportFlow = 0x5662A011, + User_LaunchReportFlow2 = 0x7F835863, + User_LaunchUnblockFlow = 0x14A22A97, + User_NewEntitledTestUser = 0x11741F03, + User_NewTestUser = 0x36E84F8C, + User_NewTestUserFriends = 0x1ED726C7, + User_StartRecordingForReportFlow = 0x6C6E33E3, + User_StopRecordingAndLaunchReportFlow = 0x60788C8B, + User_StopRecordingAndLaunchReportFlow2 = 0x19C2B32B, + User_TestUserCreateDeviceManifest = 0x6570B2BD + }; + + public static void CrashApplication() { + CAPI.ovr_CrashApplication(); + } + + internal static Message ParseMessageHandle(IntPtr messageHandle, Message.MessageType messageType) + { + Message message = null; + switch ((PlatformInternal.MessageTypeInternal)messageType) + { + case MessageTypeInternal.User_StartRecordingForReportFlow: + message = new MessageWithAbuseReportRecording(messageHandle); + break; + + case MessageTypeInternal.Cal_FinalizeApplication: + message = new MessageWithCalApplicationFinalized(messageHandle); + break; + + case MessageTypeInternal.Cal_GetSuggestedApplications: + message = new MessageWithCalApplicationSuggestionList(messageHandle); + break; + + case MessageTypeInternal.Application_ExecuteCoordinatedLaunch: + case MessageTypeInternal.Cal_ProposeApplication: + case MessageTypeInternal.Colocation_RequestMap: + case MessageTypeInternal.Colocation_ShareMap: + case MessageTypeInternal.Livestreaming_StopPartyStream: + case MessageTypeInternal.Livestreaming_UpdateMicStatus: + case MessageTypeInternal.Party_Leave: + case MessageTypeInternal.User_CancelRecordingForReportFlow: + case MessageTypeInternal.User_TestUserCreateDeviceManifest: + message = new Message(messageHandle); + break; + + case MessageTypeInternal.Application_GetInstalledApplications: + message = new MessageWithInstalledApplicationList(messageHandle); + break; + + case MessageTypeInternal.User_LaunchBlockFlow: + message = new MessageWithLaunchBlockFlowResult(messageHandle); + break; + + case MessageTypeInternal.User_LaunchReportFlow2: + message = new MessageWithLaunchReportFlowResult(messageHandle); + break; + + case MessageTypeInternal.User_LaunchUnblockFlow: + message = new MessageWithLaunchUnblockFlowResult(messageHandle); + break; + + case MessageTypeInternal.User_GetLinkedAccounts: + message = new MessageWithLinkedAccountList(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_IsAllowedForApplication: + message = new MessageWithLivestreamingApplicationStatus(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_StartPartyStream: + case MessageTypeInternal.Livestreaming_StartStream: + message = new MessageWithLivestreamingStartResult(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_UpdateCommentsOverlayVisibility: + message = new MessageWithLivestreamingStatus(messageHandle); + break; + + case MessageTypeInternal.Livestreaming_StopStream: + message = new MessageWithLivestreamingVideoStats(messageHandle); + break; + + case MessageTypeInternal.Party_Get: + message = new MessageWithParty(messageHandle); + break; + + case MessageTypeInternal.Party_GetCurrentForUser: + message = new MessageWithPartyUnderCurrentParty(messageHandle); + break; + + case MessageTypeInternal.Party_Create: + case MessageTypeInternal.Party_GatherInApplication: + case MessageTypeInternal.Party_Invite: + case MessageTypeInternal.Party_Join: + message = new MessageWithPartyID(messageHandle); + break; + + case MessageTypeInternal.Room_CreateOrUpdateAndJoinNamed: + message = new MessageWithRoomUnderViewerRoom(messageHandle); + break; + + case MessageTypeInternal.Room_GetNamedRooms: + case MessageTypeInternal.Room_GetSocialRooms: + message = new MessageWithRoomList(messageHandle); + break; + + case MessageTypeInternal.Avatar_UpdateMetaData: + case MessageTypeInternal.Colocation_GetCurrentMapUuid: + case MessageTypeInternal.GraphAPI_Get: + case MessageTypeInternal.GraphAPI_Post: + case MessageTypeInternal.HTTP_Get: + case MessageTypeInternal.HTTP_GetToFile: + case MessageTypeInternal.HTTP_MultiPartPost: + case MessageTypeInternal.HTTP_Post: + case MessageTypeInternal.User_NewEntitledTestUser: + case MessageTypeInternal.User_NewTestUser: + case MessageTypeInternal.User_NewTestUserFriends: + message = new MessageWithString(messageHandle); + break; + + case MessageTypeInternal.SystemPermissions_GetStatus: + case MessageTypeInternal.SystemPermissions_LaunchDeeplink: + message = new MessageWithSystemPermission(messageHandle); + break; + + case MessageTypeInternal.User_LaunchReportFlow: + case MessageTypeInternal.User_StopRecordingAndLaunchReportFlow: + case MessageTypeInternal.User_StopRecordingAndLaunchReportFlow2: + message = new MessageWithUserReportID(messageHandle); + break; + + } + return message; + } + + public static class HTTP + { + public static void SetHttpTransferUpdateCallback(Message.Callback callback) + { + Callback.SetNotificationCallback( + Message.MessageType.Notification_HTTP_Transfer, + callback + ); + } + } + + public static Request InitializeStandaloneAsync(ulong appID, string accessToken) + { + var platform = new StandalonePlatform(); + var initRequest = platform.AsyncInitialize(appID, accessToken); + + if (initRequest == null) + { + throw new UnityException("Oculus Platform failed to initialize."); + } + + // This function is not named well. Actually means that we have called platform init. + // Async initialization may not have finished at this point. + Platform.Core.ForceInitialized(); + (new GameObject("Oculus.Platform.CallbackRunner")).AddComponent(); + return initRequest; + } + + public static class Users + { + public static Request GetLinkedAccounts(ServiceProvider[] providers) + { + if (Core.IsInitialized()) + { + UserOptions userOpts = new UserOptions(); + foreach (ServiceProvider provider in providers) + { + userOpts.AddServiceProvider(provider); + } + return new Request(CAPI.ovr_User_GetLinkedAccounts((IntPtr)userOpts)); + } + + return null; + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/PlatformInternal.cs.meta b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs.meta new file mode 100644 index 0000000..7f11c7b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformInternal.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9d9c8cba9a20e0c46b07b73e895db7bd +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/PlatformSettings.cs b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs new file mode 100644 index 0000000..57ba5e8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs @@ -0,0 +1,93 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System.Collections; + +#if UNITY_EDITOR + [UnityEditor.InitializeOnLoad] +#endif + public sealed class PlatformSettings : ScriptableObject + { + public static string AppID + { + get { return Instance.ovrAppID; } + set { Instance.ovrAppID = value; } + } + + public static string MobileAppID + { + get { return Instance.ovrMobileAppID; } + set { Instance.ovrMobileAppID = value; } + } + + public static bool UseStandalonePlatform + { + get { return Instance.ovrUseStandalonePlatform; } + set { Instance.ovrUseStandalonePlatform = value; } + } + + public static bool EnableARM64Support + { + get { return Instance.ovrEnableARM64Support; } + set { Instance.ovrEnableARM64Support = value; } + } + + [SerializeField] + private string ovrAppID = ""; + + [SerializeField] + private string ovrMobileAppID = ""; + +#if UNITY_EDITOR_WIN + [SerializeField] + private bool ovrUseStandalonePlatform = false; +#else + [SerializeField] + private bool ovrUseStandalonePlatform = true; +#endif + + [SerializeField] + private bool ovrEnableARM64Support = false; + + private static PlatformSettings instance; + public static PlatformSettings Instance + { + get + { + if (instance == null) + { + instance = Resources.Load("OculusPlatformSettings"); + + // This can happen if the developer never input their App Id into the Unity Editor + // and therefore never created the OculusPlatformSettings.asset file + // Use a dummy object with defaults for the getters so we don't have a null pointer exception + if (instance == null) + { + instance = ScriptableObject.CreateInstance(); + +#if UNITY_EDITOR + // Only in the editor should we save it to disk + string properPath = System.IO.Path.Combine(UnityEngine.Application.dataPath, "Resources"); + if (!System.IO.Directory.Exists(properPath)) + { + UnityEditor.AssetDatabase.CreateFolder("Assets", "Resources"); + } + + string fullPath = System.IO.Path.Combine( + System.IO.Path.Combine("Assets", "Resources"), + "OculusPlatformSettings.asset" + ); + UnityEditor.AssetDatabase.CreateAsset(instance, fullPath); +#endif + } + } + return instance; + } + + set + { + instance = value; + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/PlatformSettings.cs.meta b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs.meta new file mode 100644 index 0000000..88b5fd8 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/PlatformSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3d881e962d099f4a8eb492ef7e9a8c0 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/Request.cs b/Assets/Oculus/Platform/Scripts/Request.cs new file mode 100644 index 0000000..62062d7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Request.cs @@ -0,0 +1,138 @@ +#if OVR_PLATFORM_ASYNC_MESSAGES +using System.Threading.Tasks; +#endif +using UnityEngine; + +namespace Oculus.Platform +{ + public sealed class Request : Request + { +#if OVR_PLATFORM_ASYNC_MESSAGES + private TaskCompletionSource> tcs_ = null; +#endif + private Message.Callback callback_ = null; + + public Request(ulong requestID) : base (requestID) { } + + public Request OnComplete(Message.Callback callback) + { + if (callback_ != null) + { + throw new UnityException("Attempted to attach multiple handlers to a Request. This is not allowed."); + } + +#if OVR_PLATFORM_ASYNC_MESSAGES + if (tcs_ != null) + { + throw new UnityException("Attempted to attach multiple handlers to a Request. This is not allowed."); + } +#endif + + callback_ = callback; + Callback.AddRequest(this); + return this; + } + +#if OVR_PLATFORM_ASYNC_MESSAGES + new public async Task> Gen() + { + if (callback_ != null || tcs_ != null) + { + throw new UnityException("Attempted to attach multiple handlers to a Request. This is not allowed."); + } + + tcs_ = new TaskCompletionSource>(); + Callback.AddRequest(this); + return await tcs_.Task; + } +#endif + + override public void HandleMessage(Message msg) + { + if (! (msg is Message)) + { + Debug.LogError("Unable to handle message: " + msg.GetType()); + return; + } + +#if OVR_PLATFORM_ASYNC_MESSAGES + if (tcs_ != null) + { + tcs_.SetResult( (Message)msg); + return; + } +#endif + + if (callback_ != null) + { + callback_( (Message)msg); + return; + } + + throw new UnityException("Request with no handler. This should never happen."); + } + } + + public class Request + { +#if OVR_PLATFORM_ASYNC_MESSAGES + private TaskCompletionSource tcs_; +#endif + private Message.Callback callback_; + + public Request(ulong requestID) {this.RequestID = requestID;} + public ulong RequestID {get; set;} + + public Request OnComplete(Message.Callback callback) + { + callback_ = callback; + Callback.AddRequest(this); + return this; + } + +#if OVR_PLATFORM_ASYNC_MESSAGES + public async Task Gen() { + tcs_ = new TaskCompletionSource(); + Callback.AddRequest(this); + return await tcs_.Task; + } +#endif + + virtual public void HandleMessage(Message msg) + { +#if OVR_PLATFORM_ASYNC_MESSAGES + if (tcs_ != null) + { + tcs_.SetResult(msg); + return; + } +#endif + + if (callback_ != null) + { + callback_(msg); + return; + } + + throw new UnityException("Request with no handler. This should never happen."); + } + + /** + * This will run callbacks on all messages that returned from the server. + * If too many message are coming back at once, then a limit can be passed in + * as an arg to limit the number of messages to run callbacks on at a time + */ + public static void RunCallbacks(uint limit = 0) + { + // default of 0 will run callbacks on all messages on the queue + if (limit == 0) + { + Callback.RunCallbacks(); + } + else + { + Callback.RunLimitedCallbacks(limit); + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/Request.cs.meta b/Assets/Oculus/Platform/Scripts/Request.cs.meta new file mode 100644 index 0000000..ea00f2e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/Request.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3a84fde40d771d4cada2a72c18a961d +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RichPresenceExtraContext.cs b/Assets/Oculus/Platform/Scripts/RichPresenceExtraContext.cs new file mode 100644 index 0000000..bc02b2f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RichPresenceExtraContext.cs @@ -0,0 +1,35 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RichPresenceExtraContext : int + { + [Description("UNKNOWN")] + Unknown, + + /// Display nothing + [Description("NONE")] + None, + + /// Display the current amount with the user over the max + [Description("CURRENT_CAPACITY")] + CurrentCapacity, + + /// Display how long ago the match/game/race/etc started + [Description("STARTED_AGO")] + StartedAgo, + + /// Display how soon the match/game/race/etc will end + [Description("ENDING_IN")] + EndingIn, + + /// Display that this user is looking for a match + [Description("LOOKING_FOR_A_MATCH")] + LookingForAMatch, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RichPresenceExtraContext.cs.meta b/Assets/Oculus/Platform/Scripts/RichPresenceExtraContext.cs.meta new file mode 100644 index 0000000..626f5d0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RichPresenceExtraContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14d6e94c70fb541408a83ab132955059 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RichPresenceOptions.cs b/Assets/Oculus/Platform/Scripts/RichPresenceOptions.cs new file mode 100644 index 0000000..4beba13 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RichPresenceOptions.cs @@ -0,0 +1,77 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class RichPresenceOptions { + + public RichPresenceOptions() { + Handle = CAPI.ovr_RichPresenceOptions_Create(); + } + + public void SetApiName(string value) { + CAPI.ovr_RichPresenceOptions_SetApiName(Handle, value); + } + + public void SetArgs(string key, string value) { + CAPI.ovr_RichPresenceOptions_SetArgsString(Handle, key, value); + } + + public void ClearArgs() { + CAPI.ovr_RichPresenceOptions_ClearArgs(Handle); + } + + public void SetCurrentCapacity(uint value) { + CAPI.ovr_RichPresenceOptions_SetCurrentCapacity(Handle, value); + } + + public void SetDeeplinkMessageOverride(string value) { + CAPI.ovr_RichPresenceOptions_SetDeeplinkMessageOverride(Handle, value); + } + + public void SetEndTime(DateTime value) { + CAPI.ovr_RichPresenceOptions_SetEndTime(Handle, value); + } + + public void SetExtraContext(RichPresenceExtraContext value) { + CAPI.ovr_RichPresenceOptions_SetExtraContext(Handle, value); + } + + public void SetIsIdle(bool value) { + CAPI.ovr_RichPresenceOptions_SetIsIdle(Handle, value); + } + + public void SetIsJoinable(bool value) { + CAPI.ovr_RichPresenceOptions_SetIsJoinable(Handle, value); + } + + public void SetJoinableId(string value) { + CAPI.ovr_RichPresenceOptions_SetJoinableId(Handle, value); + } + + public void SetMaxCapacity(uint value) { + CAPI.ovr_RichPresenceOptions_SetMaxCapacity(Handle, value); + } + + public void SetStartTime(DateTime value) { + CAPI.ovr_RichPresenceOptions_SetStartTime(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(RichPresenceOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~RichPresenceOptions() { + CAPI.ovr_RichPresenceOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/RichPresenceOptions.cs.meta b/Assets/Oculus/Platform/Scripts/RichPresenceOptions.cs.meta new file mode 100644 index 0000000..ff88948 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RichPresenceOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9f25082f8ed337b47917aa2c9be82fee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs new file mode 100644 index 0000000..50baa14 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomJoinPolicy : int + { + [Description("NONE")] + None, + + [Description("EVERYONE")] + Everyone, + + [Description("FRIENDS_OF_MEMBERS")] + FriendsOfMembers, + + [Description("FRIENDS_OF_OWNER")] + FriendsOfOwner, + + [Description("INVITED_USERS")] + InvitedUsers, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs.meta b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs.meta new file mode 100644 index 0000000..eb0334d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinPolicy.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7523990f25085a84a9b85d756ef89692 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinability.cs b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs new file mode 100644 index 0000000..5cf2f8b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs @@ -0,0 +1,33 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomJoinability : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ARE_IN")] + AreIn, + + [Description("ARE_KICKED")] + AreKicked, + + [Description("CAN_JOIN")] + CanJoin, + + [Description("IS_FULL")] + IsFull, + + [Description("NO_VIEWER")] + NoViewer, + + [Description("POLICY_PREVENTS")] + PolicyPrevents, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomJoinability.cs.meta b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs.meta new file mode 100644 index 0000000..2bbffee --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomJoinability.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6a79fb9a166cef0428bf67f8d2b0871d +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs new file mode 100644 index 0000000..48387f0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomMembershipLockStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("LOCK")] + Lock, + + [Description("UNLOCK")] + Unlock, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs.meta b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs.meta new file mode 100644 index 0000000..0702083 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomMembershipLockStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a4eb5746a05c2f646802f2dda6ed47b9 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomOptions.cs b/Assets/Oculus/Platform/Scripts/RoomOptions.cs new file mode 100644 index 0000000..dd398d6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomOptions.cs @@ -0,0 +1,61 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class RoomOptions { + + public RoomOptions() { + Handle = CAPI.ovr_RoomOptions_Create(); + } + + public void SetDataStore(string key, string value) { + CAPI.ovr_RoomOptions_SetDataStoreString(Handle, key, value); + } + + public void ClearDataStore() { + CAPI.ovr_RoomOptions_ClearDataStore(Handle); + } + + public void SetExcludeRecentlyMet(bool value) { + CAPI.ovr_RoomOptions_SetExcludeRecentlyMet(Handle, value); + } + + public void SetMaxUserResults(uint value) { + CAPI.ovr_RoomOptions_SetMaxUserResults(Handle, value); + } + + public void SetOrdering(UserOrdering value) { + CAPI.ovr_RoomOptions_SetOrdering(Handle, value); + } + + public void SetRecentlyMetTimeWindow(TimeWindow value) { + CAPI.ovr_RoomOptions_SetRecentlyMetTimeWindow(Handle, value); + } + + public void SetRoomId(UInt64 value) { + CAPI.ovr_RoomOptions_SetRoomId(Handle, value); + } + + public void SetTurnOffUpdates(bool value) { + CAPI.ovr_RoomOptions_SetTurnOffUpdates(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(RoomOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~RoomOptions() { + CAPI.ovr_RoomOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/RoomOptions.cs.meta b/Assets/Oculus/Platform/Scripts/RoomOptions.cs.meta new file mode 100644 index 0000000..608936f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 02f2744e317e9d94286fbaf2c8d422dc +timeCreated: 1523486796 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/RoomType.cs b/Assets/Oculus/Platform/Scripts/RoomType.cs new file mode 100644 index 0000000..6ddc0dd --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomType.cs @@ -0,0 +1,27 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum RoomType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MATCHMAKING")] + Matchmaking, + + [Description("MODERATED")] + Moderated, + + [Description("PRIVATE")] + Private, + + [Description("SOLO")] + Solo, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/RoomType.cs.meta b/Assets/Oculus/Platform/Scripts/RoomType.cs.meta new file mode 100644 index 0000000..1e5e177 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/RoomType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f96a088b097de34bb7d06c1e434beae +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/SdkAccountType.cs b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs new file mode 100644 index 0000000..c94a83d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum SdkAccountType : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("OCULUS")] + Oculus, + + [Description("FACEBOOK_GAMEROOM")] + FacebookGameroom, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/SdkAccountType.cs.meta b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs.meta new file mode 100644 index 0000000..1ce108a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SdkAccountType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6207f568662ec6f4eb7925b4cf951cbe +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/SendPolicy.cs b/Assets/Oculus/Platform/Scripts/SendPolicy.cs new file mode 100644 index 0000000..d4cee71 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SendPolicy.cs @@ -0,0 +1,31 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum SendPolicy : int + { + /// Sends a message using an unreliable data channel (UDP-based). No delivery + /// or ordering guarantees are provided. Sending will fail unless a connection + /// to the peer is already established, either via a previous call to + /// Net.SendPacket() or an explicit Net.Connect(). + /// + /// Ideally, each message should fit into a single packet. Therefore, it is + /// recommended to keep them under 1200 bytes. + [Description("UNRELIABLE")] + Unreliable, + + /// Messages are delivered reliably and in order. The networking layer retries + /// until each message is acknowledged by the peer. Outgoing messages are + /// buffered until a working connection to the peer is established. + [Description("RELIABLE")] + Reliable, + + [Description("UNKNOWN")] + Unknown, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/SendPolicy.cs.meta b/Assets/Oculus/Platform/Scripts/SendPolicy.cs.meta new file mode 100644 index 0000000..fcffc57 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SendPolicy.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ad94dee2a9fba1340966fcd9546e88d3 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/ServiceProvider.cs b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs new file mode 100644 index 0000000..bbb7eb5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum ServiceProvider : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("DROPBOX")] + Dropbox, + + [Description("FACEBOOK")] + Facebook, + + [Description("GOOGLE")] + Google, + + [Description("INSTAGRAM")] + Instagram, + + [Description("REMOTE_MEDIA")] + RemoteMedia, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/ServiceProvider.cs.meta b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs.meta new file mode 100644 index 0000000..50793b9 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ServiceProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1c810b97874c14044a5d4d5d7f44e3e9 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs new file mode 100644 index 0000000..d4b9b01 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum ShareMediaStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("SHARED")] + Shared, + + [Description("CANCELED")] + Canceled, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs.meta b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs.meta new file mode 100644 index 0000000..20917f4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/ShareMediaStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c02daaa12810cb345ae1fcaa33323b68 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs new file mode 100644 index 0000000..210cdc2 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs @@ -0,0 +1,45 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Runtime.InteropServices; + + public sealed class StandalonePlatform + { + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void UnityLogDelegate(IntPtr tag, IntPtr msg); + + public Request InitializeInEditor() + { +#if UNITY_ANDROID + if (String.IsNullOrEmpty(PlatformSettings.MobileAppID)) + { + throw new UnityException("Update your App ID by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + var appID = PlatformSettings.MobileAppID; +#else + if (String.IsNullOrEmpty(PlatformSettings.AppID)) + { + throw new UnityException("Update your App ID by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + var appID = PlatformSettings.AppID; +#endif + if (String.IsNullOrEmpty(StandalonePlatformSettings.OculusPlatformTestUserAccessToken)) + { + throw new UnityException("Update your standalone credentials by selecting 'Oculus Platform' -> 'Edit Settings'"); + } + var accessToken = StandalonePlatformSettings.OculusPlatformTestUserAccessToken; + + return AsyncInitialize(UInt64.Parse(appID), accessToken); + } + + public Request AsyncInitialize(ulong appID, string accessToken) + { + CAPI.ovr_UnityResetTestPlatform(); + CAPI.ovr_UnityInitGlobals(IntPtr.Zero); + + return new Request(CAPI.ovr_PlatformInitializeWithAccessToken(appID, accessToken)); + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs.meta b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs.meta new file mode 100644 index 0000000..81baffc --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 875312922ec23844aac8ed300af28093 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs new file mode 100644 index 0000000..88379d4 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs @@ -0,0 +1,77 @@ +namespace Oculus.Platform +{ + + // This only exists for the Unity Editor + public sealed class StandalonePlatformSettings + { + +#if UNITY_EDITOR + private static string _OculusPlatformTestUserPassword = ""; + + private static void ClearOldStoredPassword() + { + // Ensure that we are not storing the old passwords anywhere on the machine + if (UnityEditor.EditorPrefs.HasKey("OculusStandaloneUserPassword")) + { + UnityEditor.EditorPrefs.SetString("OculusStandaloneUserPassword", "0000"); + UnityEditor.EditorPrefs.DeleteKey("OculusStandaloneUserPassword"); + } + } +#endif + + public static string OculusPlatformTestUserEmail + { + get + { +#if UNITY_EDITOR + return UnityEditor.EditorPrefs.GetString("OculusStandaloneUserEmail"); +#else + return string.Empty; +#endif + } + set + { +#if UNITY_EDITOR + UnityEditor.EditorPrefs.SetString("OculusStandaloneUserEmail", value); +#endif + } + } + + public static string OculusPlatformTestUserPassword + { + get + { +#if UNITY_EDITOR + ClearOldStoredPassword(); + return _OculusPlatformTestUserPassword; +#else + return string.Empty; +#endif + } + set + { +#if UNITY_EDITOR + ClearOldStoredPassword(); + _OculusPlatformTestUserPassword = value; +#endif + } + } + public static string OculusPlatformTestUserAccessToken + { + get + { +#if UNITY_EDITOR + return UnityEditor.EditorPrefs.GetString("OculusStandaloneUserAccessToken"); +#else + return string.Empty; +#endif + } + set + { +#if UNITY_EDITOR + UnityEditor.EditorPrefs.SetString("OculusStandaloneUserAccessToken", value); +#endif + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs.meta b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs.meta new file mode 100644 index 0000000..57f2d96 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/StandalonePlatformSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3396588e357647947883119dbdbb83cd +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs new file mode 100644 index 0000000..4f75500 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum SystemVoipStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("UNAVAILABLE")] + Unavailable, + + [Description("SUPPRESSED")] + Suppressed, + + [Description("ACTIVE")] + Active, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs.meta b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs.meta new file mode 100644 index 0000000..3eb6f62 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/SystemVoipStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5626c6e6cba5cb846943182cc89dc859 +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/TimeWindow.cs b/Assets/Oculus/Platform/Scripts/TimeWindow.cs new file mode 100644 index 0000000..fc83f4f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/TimeWindow.cs @@ -0,0 +1,30 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum TimeWindow : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ONE_HOUR")] + OneHour, + + [Description("ONE_DAY")] + OneDay, + + [Description("ONE_WEEK")] + OneWeek, + + [Description("THIRTY_DAYS")] + ThirtyDays, + + [Description("NINETY_DAYS")] + NinetyDays, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/TimeWindow.cs.meta b/Assets/Oculus/Platform/Scripts/TimeWindow.cs.meta new file mode 100644 index 0000000..8ca50c6 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/TimeWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 676a14e7240dad94eabb75f82b511b74 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/UserOptions.cs b/Assets/Oculus/Platform/Scripts/UserOptions.cs new file mode 100644 index 0000000..2aa869e --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOptions.cs @@ -0,0 +1,45 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class UserOptions { + + public UserOptions() { + Handle = CAPI.ovr_UserOptions_Create(); + } + + public void SetMaxUsers(uint value) { + CAPI.ovr_UserOptions_SetMaxUsers(Handle, value); + } + + public void AddServiceProvider(ServiceProvider value) { + CAPI.ovr_UserOptions_AddServiceProvider(Handle, value); + } + + public void ClearServiceProviders() { + CAPI.ovr_UserOptions_ClearServiceProviders(Handle); + } + + public void SetTimeWindow(TimeWindow value) { + CAPI.ovr_UserOptions_SetTimeWindow(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(UserOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~UserOptions() { + CAPI.ovr_UserOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/UserOptions.cs.meta b/Assets/Oculus/Platform/Scripts/UserOptions.cs.meta new file mode 100644 index 0000000..1982554 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 95b8b021eec44704fa95cad03f793a34 +timeCreated: 1523486800 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/UserOrdering.cs b/Assets/Oculus/Platform/Scripts/UserOrdering.cs new file mode 100644 index 0000000..c669656 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOrdering.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum UserOrdering : int + { + [Description("UNKNOWN")] + Unknown, + + /// No preference for ordering (could be in any or no order) + [Description("NONE")] + None, + + /// Orders by online users first and then offline users. Within each group the + /// users are ordered alphabetically by display name + [Description("PRESENCE_ALPHABETICAL")] + PresenceAlphabetical, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/UserOrdering.cs.meta b/Assets/Oculus/Platform/Scripts/UserOrdering.cs.meta new file mode 100644 index 0000000..a465acb --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserOrdering.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3e9122fd848b41a4eae13ee5b6138b0b +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs new file mode 100644 index 0000000..451f3ab --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum UserPresenceStatus : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ONLINE")] + Online, + + [Description("OFFLINE")] + Offline, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs.meta b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs.meta new file mode 100644 index 0000000..9664837 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/UserPresenceStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 737fdccdf4542bf498c1363c77818305 +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs new file mode 100644 index 0000000..b6ff5ce --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs @@ -0,0 +1,59 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer3.oculus.com/documentation/platform/latest/concepts/dg-core-content/#dg-cc-voip +#if false +namespace Oculus.Platform +{ + using UnityEngine; + using System.Collections.Generic; + + public class VoipAudioSource : MonoBehaviour + { + public bool spatialize = true; + + BufferedAudioStream bufferedAudioStream; + Decoder decoder; + protected List debugOutputData; + + void Start() + { + AudioSource audioSource = gameObject.AddComponent(); + Debug.Log(audioSource); + audioSource.spatialize = spatialize; + bufferedAudioStream = new BufferedAudioStream(audioSource); + decoder = new Decoder(); + } + + public void Stop() + { + } + + public void AddCompressedData(byte[] compressedData) + { + if(decoder == null || bufferedAudioStream == null) + { + throw new System.Exception("VoipAudioSource failed to init"); + } + + float[] decompressedData = decoder.Decode(compressedData); + if (decompressedData != null && decompressedData.Length > 0) + { + bufferedAudioStream.AddData(decompressedData); + if (debugOutputData != null) + { + debugOutputData.AddRange(decompressedData); + } + } + } + + void Update() + { + if (bufferedAudioStream == null) + { + throw new System.Exception("VoipAudioSource failed to init"); + } + + bufferedAudioStream.Update(); + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs.meta b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs.meta new file mode 100644 index 0000000..b36739d --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSource.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d7c40db1e91886345b8e1866120f6c49 +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs new file mode 100644 index 0000000..e681538 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs @@ -0,0 +1,152 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections.Generic; + + public class VoipAudioSourceHiLevel : MonoBehaviour + { + // This is a delegate that exists as a surface for OnAudioFilterRead + // It will be callled on unity's audio thread + public class FilterReadDelegate : MonoBehaviour + { + public VoipAudioSourceHiLevel parent; + float[] scratchBuffer; + + void Awake() + { + int bufferSizeElements = (int)CAPI.ovr_Voip_GetOutputBufferMaxSize(); + scratchBuffer = new float[bufferSizeElements]; + } + + void OnAudioFilterRead(float[] data, int channels) + { + int sizeToFetch = data.Length / channels; + int sourceBufferSize = sizeToFetch; + if (sourceBufferSize > scratchBuffer.Length) + { + Array.Clear(data, 0, data.Length); + throw new Exception(string.Format("Audio system tried to pull {0} bytes, max voip internal ring buffer size {1}", sizeToFetch, scratchBuffer.Length)); + } + + int available = parent.pcmSource.PeekSizeElements(); + if (available < sourceBufferSize) + { + if (verboseLogging) + { + Debug.LogFormat( + "Voip starved! Want {0}, but only have {1} available", + sourceBufferSize, + available); + } + return; + } + + int copied = parent.pcmSource.GetPCM(scratchBuffer, sourceBufferSize); + if (copied < sourceBufferSize) + { + Debug.LogWarningFormat( + "GetPCM() returned {0} samples, expected {1}", + copied, + sourceBufferSize); + + return; + } + + int dest = 0; + float tmpPeakAmp = -1; + for (int i = 0; i < sizeToFetch; i++) + { + float val = scratchBuffer[i]; + + for (int j = 0; j < channels; j++) + { + data[dest++] = val; + if (val > tmpPeakAmp) + { + tmpPeakAmp = val; + } + } + } + parent.peakAmplitude = tmpPeakAmp; + } + } + + + int initialPlaybackDelayMS; + public UInt64 senderID + { + set + { + pcmSource.SetSenderID(value); + } + } + + public AudioSource audioSource; + public float peakAmplitude; + + protected IVoipPCMSource pcmSource; + + static int audioSystemPlaybackFrequency; + static bool verboseLogging = false; + + protected void Stop() {} + + VoipSampleRate SampleRateToEnum(int rate) { + switch(rate) { + case 48000: + return VoipSampleRate.HZ48000; + case 44100: + return VoipSampleRate.HZ44100; + case 24000: + return VoipSampleRate.HZ24000; + default: + return VoipSampleRate.Unknown; + } + } + + protected void Awake() + { + CreatePCMSource(); + if(audioSource == null) { + audioSource = gameObject.AddComponent(); + } + audioSource.gameObject.AddComponent(); + var filterDelegate = audioSource.gameObject.GetComponent(); + filterDelegate.parent = this; + + initialPlaybackDelayMS = 40; + + audioSystemPlaybackFrequency = AudioSettings.outputSampleRate; + CAPI.ovr_Voip_SetOutputSampleRate(SampleRateToEnum(audioSystemPlaybackFrequency)); + if(verboseLogging) { + Debug.LogFormat("freq {0}", audioSystemPlaybackFrequency); + } + } + + void Start() { + audioSource.Stop(); + } + + protected virtual void CreatePCMSource() + { + pcmSource = new VoipPCMSourceNative(); + } + + protected static int MSToElements(int ms) { + return ms * audioSystemPlaybackFrequency / 1000; + } + + void Update() + { + pcmSource.Update(); + + if (!audioSource.isPlaying && pcmSource.PeekSizeElements() >= MSToElements(initialPlaybackDelayMS)) { + if(verboseLogging) { + Debug.LogFormat("buffered {0} elements, starting playback", pcmSource.PeekSizeElements()); + } + audioSource.Play(); + } + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs.meta b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs.meta new file mode 100644 index 0000000..714628b --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipAudioSourceHiLevel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2a84c0bd46c2454449deb6605f136b5c +timeCreated: 1523486798 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipBitrate.cs b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs new file mode 100644 index 0000000..6ec2ea3 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs @@ -0,0 +1,43 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipBitrate : int + { + [Description("UNKNOWN")] + Unknown, + + /// Very low audio quality for minimal network usage. This may not give the + /// full range of Hz for audio, but it will save on network usage. + [Description("B16000")] + B16000, + + /// Lower audio quality but also less network usage. + [Description("B24000")] + B24000, + + /// This is the default bitrate for voip connections. It should be the best + /// tradeoff between audio quality and network usage. + [Description("B32000")] + B32000, + + /// Higher audio quality at the expense of network usage. Good if there's music + /// being streamed over the connections + [Description("B64000")] + B64000, + + /// Even higher audio quality for music streaming or radio-like quality. + [Description("B96000")] + B96000, + + /// At this point the audio quality should be preceptually indistinguishable + /// from the uncompressed input. + [Description("B128000")] + B128000, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipBitrate.cs.meta b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs.meta new file mode 100644 index 0000000..bf2a0c5 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipBitrate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84308236652108943811fb1eed12ac15 +timeCreated: 1533910662 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipDtxState.cs b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs new file mode 100644 index 0000000..925d153 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipDtxState : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("ENABLED")] + Enabled, + + [Description("DISABLED")] + Disabled, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipDtxState.cs.meta b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs.meta new file mode 100644 index 0000000..1c1cb2f --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipDtxState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3f0df97a35282540a46cd1c97d9311b +timeCreated: 1533910663 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipInput.cs b/Assets/Oculus/Platform/Scripts/VoipInput.cs new file mode 100644 index 0000000..d5cd5ee --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipInput.cs @@ -0,0 +1,84 @@ +//This file is deprecated. Use the high level voip system instead: +// https://developer.oculus.com/documentation/platform/latest/concepts/dg-cc-voip/ +#if false +namespace Oculus.Platform +{ + using UnityEngine; + using System.Runtime.InteropServices; + using System.Collections; + + public class VoipInput : MonoBehaviour + { + public delegate void OnCompressedData(byte[] compressedData); + public OnCompressedData onCompressedData; + + protected IMicrophone micInput; + Encoder encoder; + + public bool enableMicRecording; + + protected void Start() + { + encoder = new Encoder(); + if (UnityEngine.Application.platform == RuntimePlatform.WindowsEditor || UnityEngine.Application.platform == RuntimePlatform.WindowsPlayer) + { + micInput = new MicrophoneInputNative(); + } + else + { + micInput = new MicrophoneInput(); + } + + enableMicRecording = true; + } + + void OnApplicationQuit() + { + micInput.Stop(); + } + + void Update() + { + if (micInput == null || encoder == null) + { + throw new System.Exception("VoipInput failed to init"); + } + + if (micInput != null && enableMicRecording) + { + float[] rawMicSamples = micInput.Update(); + + if (rawMicSamples != null && rawMicSamples.Length > 5 * 1024) + { + Debug.Log(string.Format("Giant input mic data {0}", rawMicSamples.Length)); + return; + } + + if (rawMicSamples != null && rawMicSamples.Length > 0) + { + int startIdx = 0; + int remaining = rawMicSamples.Length; + int splitSize = 480; + + do + { + int toCopy = System.Math.Min(splitSize, remaining); + float[] splitInput = new float[toCopy]; + System.Array.Copy(rawMicSamples, startIdx, splitInput, 0, toCopy); + startIdx += toCopy; + remaining -= toCopy; + + byte[] compressedMic = null; + compressedMic = encoder.Encode(splitInput); + + if (compressedMic != null && compressedMic.Length > 0) + { + onCompressedData(compressedMic); + } + } while (remaining > 0); + } + } + } + } +} +#endif diff --git a/Assets/Oculus/Platform/Scripts/VoipInput.cs.meta b/Assets/Oculus/Platform/Scripts/VoipInput.cs.meta new file mode 100644 index 0000000..f626740 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcfbe145232c8b241ac5152c54dc103e +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipMuteState.cs b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs new file mode 100644 index 0000000..4068d5c --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs @@ -0,0 +1,21 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipMuteState : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("MUTED")] + Muted, + + [Description("UNMUTED")] + Unmuted, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipMuteState.cs.meta b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs.meta new file mode 100644 index 0000000..e1fe15a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipMuteState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fdd1475ee285f7a48ae1a5d306ae268e +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipOptions.cs b/Assets/Oculus/Platform/Scripts/VoipOptions.cs new file mode 100644 index 0000000..1f26fc7 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipOptions.cs @@ -0,0 +1,37 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + using System; + using System.Collections; + using Oculus.Platform.Models; + using System.Collections.Generic; + using UnityEngine; + + public class VoipOptions { + + public VoipOptions() { + Handle = CAPI.ovr_VoipOptions_Create(); + } + + public void SetBitrateForNewConnections(VoipBitrate value) { + CAPI.ovr_VoipOptions_SetBitrateForNewConnections(Handle, value); + } + + public void SetCreateNewConnectionUseDtx(VoipDtxState value) { + CAPI.ovr_VoipOptions_SetCreateNewConnectionUseDtx(Handle, value); + } + + + // For passing to native C + public static explicit operator IntPtr(VoipOptions options) { + return options != null ? options.Handle : IntPtr.Zero; + } + + ~VoipOptions() { + CAPI.ovr_VoipOptions_Destroy(Handle); + } + + IntPtr Handle; + } +} diff --git a/Assets/Oculus/Platform/Scripts/VoipOptions.cs.meta b/Assets/Oculus/Platform/Scripts/VoipOptions.cs.meta new file mode 100644 index 0000000..327a546 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c646331fd9da59549978785e62b6ae3e +timeCreated: 1533910663 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs new file mode 100644 index 0000000..2a84988 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs @@ -0,0 +1,27 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace Oculus.Platform +{ + public class VoipPCMSourceNative : IVoipPCMSource + { + ulong senderID; + + public int GetPCM(float[] dest, int length) + { + return (int)CAPI.ovr_Voip_GetPCMFloat(senderID, dest, (UIntPtr)length); + } + + public void SetSenderID(ulong senderID) + { + this.senderID = senderID; + } + + public int PeekSizeElements() { + return (int)CAPI.ovr_Voip_GetPCMSize(senderID); + } + + public void Update() { } + } +} diff --git a/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs.meta b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs.meta new file mode 100644 index 0000000..c848bff --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipPCMSourceNative.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 04488c1881da80546bca546e77f42747 +timeCreated: 1523486797 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs new file mode 100644 index 0000000..b93c94a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs @@ -0,0 +1,24 @@ +// This file was @generated with LibOVRPlatform/codegen/main. Do not modify it! + +namespace Oculus.Platform +{ + + using Description = System.ComponentModel.DescriptionAttribute; + + public enum VoipSampleRate : int + { + [Description("UNKNOWN")] + Unknown, + + [Description("HZ24000")] + HZ24000, + + [Description("HZ44100")] + HZ44100, + + [Description("HZ48000")] + HZ48000, + + } + +} diff --git a/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs.meta b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs.meta new file mode 100644 index 0000000..fc98f4a --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/VoipSampleRate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f2eb1c6bc62ce9847a80184683a48d5c +timeCreated: 1523486801 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs new file mode 100644 index 0000000..b2c02a0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs @@ -0,0 +1,46 @@ +namespace Oculus.Platform +{ + using UnityEngine; + using System; + using System.Collections; + using System.Runtime.InteropServices; + + public class WindowsPlatform + { + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate void UnityLogDelegate(IntPtr tag, IntPtr msg); + + void CPPLogCallback(IntPtr tag, IntPtr message) + { + Debug.Log(string.Format("{0}: {1}", Marshal.PtrToStringAnsi(tag), Marshal.PtrToStringAnsi(message))); + } + + IntPtr getCallbackPointer() + { + //UnityLogDelegate callback_delegate = new UnityLogDelegate(CPPLogCallback); + //IntPtr intptr_delegate = Marshal.GetFunctionPointerForDelegate(callback_delegate); + return IntPtr.Zero; + } + + public bool Initialize(string appId) + { + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + + CAPI.ovr_UnityInitWrapperWindows(appId, getCallbackPointer()); + return true; + } + + public Request AsyncInitialize(string appId) + { + if(String.IsNullOrEmpty(appId)) + { + throw new UnityException("AppID must not be null or empty"); + } + + return new Request(CAPI.ovr_UnityInitWrapperWindowsAsynchronous(appId, getCallbackPointer())); + } + } +} diff --git a/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs.meta b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs.meta new file mode 100644 index 0000000..6b816d0 --- /dev/null +++ b/Assets/Oculus/Platform/Scripts/WindowsPlatform.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6a01db7a8e710d340903a49acb6b023e +timeCreated: 1523486799 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR.meta b/Assets/Oculus/VR.meta new file mode 100644 index 0000000..a97ec7d --- /dev/null +++ b/Assets/Oculus/VR.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dcbbfa24762d12349a9820ca5153f666 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor.meta b/Assets/Oculus/VR/Editor.meta new file mode 100644 index 0000000..a3b8f7d --- /dev/null +++ b/Assets/Oculus/VR/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 76c19abd24bec62459b5f0d26fdd9a85 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml b/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml new file mode 100644 index 0000000..e7e316a --- /dev/null +++ b/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml.meta b/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml.meta new file mode 100644 index 0000000..ebace8d --- /dev/null +++ b/Assets/Oculus/VR/Editor/AndroidManifest.OVRSubmission.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a16cc136accf1f42bdc6f71f94b50ac +timeCreated: 1475710636 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRADBTool.cs b/Assets/Oculus/VR/Editor/OVRADBTool.cs new file mode 100644 index 0000000..c90c1a2 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRADBTool.cs @@ -0,0 +1,258 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Text; +using System.Threading; +using UnityEngine; + +using Debug = UnityEngine.Debug; + +public class OVRADBTool +{ + public bool isReady; + + public string androidSdkRoot; + public string androidPlatformToolsPath; + public string adbPath; + + public OVRADBTool(string androidSdkRoot) + { + if (!String.IsNullOrEmpty(androidSdkRoot)) + { + this.androidSdkRoot = androidSdkRoot; + } + else + { + this.androidSdkRoot = String.Empty; + } + + if (this.androidSdkRoot.EndsWith("\\") || this.androidSdkRoot.EndsWith("/")) + { + this.androidSdkRoot = this.androidSdkRoot.Remove(this.androidSdkRoot.Length - 1); + } + androidPlatformToolsPath = Path.Combine(this.androidSdkRoot, "platform-tools"); + adbPath = Path.Combine(androidPlatformToolsPath, "adb.exe"); + isReady = File.Exists(adbPath); + } + + public static bool IsAndroidSdkRootValid(string androidSdkRoot) + { + OVRADBTool tool = new OVRADBTool(androidSdkRoot); + return tool.isReady; + } + + public delegate void WaitingProcessToExitCallback(); + + public int StartServer(WaitingProcessToExitCallback waitingProcessToExitCallback) + { + string outputString; + string errorString; + + int exitCode = RunCommand(new string[] { "start-server" }, waitingProcessToExitCallback, out outputString, out errorString); + return exitCode; + } + + public int KillServer(WaitingProcessToExitCallback waitingProcessToExitCallback) + { + string outputString; + string errorString; + + int exitCode = RunCommand(new string[] { "kill-server" }, waitingProcessToExitCallback, out outputString, out errorString); + return exitCode; + } + + public int ForwardPort(int port, WaitingProcessToExitCallback waitingProcessToExitCallback) + { + string outputString; + string errorString; + + string portString = string.Format("tcp:{0}", port); + + int exitCode = RunCommand(new string[] { "forward", portString, portString }, waitingProcessToExitCallback, out outputString, out errorString); + return exitCode; + } + + public int ReleasePort(int port, WaitingProcessToExitCallback waitingProcessToExitCallback) + { + string outputString; + string errorString; + + string portString = string.Format("tcp:{0}", port); + + int exitCode = RunCommand(new string[] { "forward", "--remove", portString }, waitingProcessToExitCallback, out outputString, out errorString); + return exitCode; + } + + public List GetDevices() + { + string outputString; + string errorString; + + RunCommand(new string[] { "devices" }, null, out outputString, out errorString); + string[] devices = outputString.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); + + List deviceList = new List(devices); + deviceList.RemoveAt(0); + + for(int i = 0; i < deviceList.Count; i++) + { + string deviceName = deviceList[i]; + int index = deviceName.IndexOf('\t'); + deviceList[i] = deviceName.Substring(0, index); + } + + return deviceList; + } + + private StringBuilder outputStringBuilder = null; + private StringBuilder errorStringBuilder = null; + + public int RunCommand(string[] arguments, WaitingProcessToExitCallback waitingProcessToExitCallback, out string outputString, out string errorString) + { + int exitCode = -1; + + if (!isReady) + { + Debug.LogWarning("OVRADBTool not ready"); + outputString = string.Empty; + errorString = "OVRADBTool not ready"; + return exitCode; + } + + string args = string.Join(" ", arguments); + + ProcessStartInfo startInfo = new ProcessStartInfo(adbPath, args); + startInfo.WorkingDirectory = androidSdkRoot; + startInfo.CreateNoWindow = true; + startInfo.UseShellExecute = false; + startInfo.WindowStyle = ProcessWindowStyle.Hidden; + startInfo.RedirectStandardOutput = true; + startInfo.RedirectStandardError = true; + + outputStringBuilder = new StringBuilder(""); + errorStringBuilder = new StringBuilder(""); + + Process process = Process.Start(startInfo); + process.OutputDataReceived += new DataReceivedEventHandler(OutputDataReceivedHandler); + process.ErrorDataReceived += new DataReceivedEventHandler(ErrorDataReceivedHandler); + + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + + try + { + do + { + if (waitingProcessToExitCallback != null) + { + waitingProcessToExitCallback(); + } + } while (!process.WaitForExit(100)); + + process.WaitForExit(); + } + catch (Exception e) + { + Debug.LogWarningFormat("[OVRADBTool.RunCommand] exception {0}", e.Message); + } + + exitCode = process.ExitCode; + + process.Close(); + + outputString = outputStringBuilder.ToString(); + errorString = errorStringBuilder.ToString(); + + outputStringBuilder = null; + errorStringBuilder = null; + + if (!string.IsNullOrEmpty(errorString)) + { + if (errorString.Contains("Warning")) + { + UnityEngine.Debug.LogWarning("OVRADBTool " + errorString); + } + else + { + UnityEngine.Debug.LogError("OVRADBTool " + errorString); + } + } + + return exitCode; + } + + public Process RunCommandAsync(string[] arguments, DataReceivedEventHandler outputDataRecievedHandler) + { + if (!isReady) + { + Debug.LogWarning("OVRADBTool not ready"); + return null; + } + + string args = string.Join(" ", arguments); + + ProcessStartInfo startInfo = new ProcessStartInfo(adbPath, args); + startInfo.WorkingDirectory = androidSdkRoot; + startInfo.CreateNoWindow = true; + startInfo.UseShellExecute = false; + startInfo.WindowStyle = ProcessWindowStyle.Hidden; + startInfo.RedirectStandardOutput = true; + startInfo.RedirectStandardError = true; + + Process process = Process.Start(startInfo); + if (outputDataRecievedHandler != null) + { + process.OutputDataReceived += new DataReceivedEventHandler(outputDataRecievedHandler); + } + + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + + return process; + } + + private void OutputDataReceivedHandler(object sendingProcess, DataReceivedEventArgs args) + { + // Collect the sort command output. + if (!string.IsNullOrEmpty(args.Data)) + { + // Add the text to the collected output. + outputStringBuilder.Append(args.Data); + outputStringBuilder.Append(Environment.NewLine); + } + } + + private void ErrorDataReceivedHandler(object sendingProcess, DataReceivedEventArgs args) + { + // Collect the sort command output. + if (!string.IsNullOrEmpty(args.Data)) + { + // Add the text to the collected output. + errorStringBuilder.Append(args.Data); + errorStringBuilder.Append(Environment.NewLine); + } + } +} diff --git a/Assets/Oculus/VR/Editor/OVRADBTool.cs.meta b/Assets/Oculus/VR/Editor/OVRADBTool.cs.meta new file mode 100644 index 0000000..312e180 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRADBTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41c2cab7d83278a4f8f44a44b694770f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRBuild.cs b/Assets/Oculus/VR/Editor/OVRBuild.cs new file mode 100644 index 0000000..ccb808c --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRBuild.cs @@ -0,0 +1,593 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System; +using System.IO; +using System.Diagnostics; +using System.Collections.Generic; +using System.Threading; + +/// +/// Allows Oculus to build apps from the command line. +/// +partial class OculusBuildApp : EditorWindow +{ + static void SetPCTarget() + { + if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.StandaloneWindows) + { + EditorUserBuildSettings.SwitchActiveBuildTarget (BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows); + } + UnityEditorInternal.VR.VREditor.SetVREnabledOnTargetGroup(BuildTargetGroup.Standalone, true); + PlayerSettings.virtualRealitySupported = true; + AssetDatabase.SaveAssets(); + } + + static void SetAndroidTarget() + { + EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ASTC; + EditorUserBuildSettings.androidBuildSystem = AndroidBuildSystem.Gradle; + + if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) + { + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android); + } + + UnityEditorInternal.VR.VREditor.SetVREnabledOnTargetGroup(BuildTargetGroup.Standalone, true); + PlayerSettings.virtualRealitySupported = true; + AssetDatabase.SaveAssets(); + } + +#if UNITY_EDITOR_WIN && UNITY_2018_3_OR_NEWER && UNITY_ANDROID + // Build setting constants + const string REMOTE_APK_PATH = "/sdcard/Oculus/Temp"; + const float USB_TRANSFER_SPEED_THRES = 25.0f; + const float USB_3_TRANSFER_SPEED = 32.0f; + const int NUM_BUILD_AND_RUN_STEPS = 9; + const int BYTES_TO_MEGABYTES = 1048576; + + // Progress bar variables + static int totalBuildSteps; + static int currentStep; + static string progressMessage; + + // Build setting varaibles + static string gradlePath; + static string jdkPath; + static string androidSdkPath; + static string applicationIdentifier; + static string productName; + static string dataPath; + + static string gradleTempExport; + static string gradleExport; + static bool showCancel; + static bool buildFailed; + + static double totalBuildTime; + + static DirectorySyncer.CancellationTokenSource syncCancelToken; + static Process gradleBuildProcess; + static Thread buildThread; + + static bool? apkOutputSuccessful; + + private void OnGUI() + { + // Fix progress bar window size + minSize = new Vector2(500, 170); + maxSize = new Vector2(500, 170); + + // Show progress bar + Rect progressRect = EditorGUILayout.BeginVertical(); + progressRect.height = 25.0f; + float progress = currentStep / (float)totalBuildSteps; + EditorGUI.ProgressBar(progressRect, progress, progressMessage); + + // Show cancel button only after Unity export has finished. + if (showCancel) + { + GUIContent btnTxt = new GUIContent("Cancel"); + var rt = GUILayoutUtility.GetRect(btnTxt, GUI.skin.button, GUILayout.ExpandWidth(false)); + rt.center = new Vector2(EditorGUIUtility.currentViewWidth / 2, progressRect.height * 2); + if (GUI.Button(rt, btnTxt, GUI.skin.button)) + { + CancelBuild(); + } + } + EditorGUILayout.EndVertical(); + + // Close window if progress has completed or Unity export failed + if (progress >= 1.0f || buildFailed) + { + Close(); + } + } + + void Update() + { + // Force window update if not in focus to ensure progress bar still updates + var window = EditorWindow.focusedWindow; + if (window != null && window.ToString().Contains("OculusBuildApp")) + { + Repaint(); + } + } + + void CancelBuild() + { + SetProgressBarMessage("Canceling . . ."); + + if (syncCancelToken != null) + { + syncCancelToken.Cancel(); + } + + if (apkOutputSuccessful.HasValue && apkOutputSuccessful.Value) + { + buildThread.Abort(); + buildFailed = true; + } + + if (gradleBuildProcess != null && !gradleBuildProcess.HasExited) + { + var cancelThread = new Thread(delegate () + { + CancelGradleBuild(); + }); + cancelThread.Start(); + } + } + + void CancelGradleBuild() + { + Process cancelGradleProcess = new Process(); + string arguments = "-Xmx1024m -classpath \"" + gradlePath + + "\" org.gradle.launcher.GradleMain --stop"; + var processInfo = new System.Diagnostics.ProcessStartInfo + { + WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal, + FileName = jdkPath, + Arguments = arguments, + RedirectStandardInput = true, + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardError = true, + RedirectStandardOutput = true, + }; + + cancelGradleProcess.StartInfo = processInfo; + cancelGradleProcess.EnableRaisingEvents = true; + + cancelGradleProcess.OutputDataReceived += new DataReceivedEventHandler( + (s, e) => + { + if (e != null && e.Data != null && e.Data.Length != 0) + { + UnityEngine.Debug.LogFormat("Gradle: {0}", e.Data); + } + } + ); + + apkOutputSuccessful = false; + + cancelGradleProcess.Start(); + cancelGradleProcess.BeginOutputReadLine(); + cancelGradleProcess.WaitForExit(); + + buildFailed = true; + } + + [MenuItem("Oculus/OVR Build And Run", false, 10)] + static void StartBuildAndRun() + { + EditorWindow.GetWindow(typeof(OculusBuildApp)); + + showCancel = false; + buildFailed = false; + totalBuildTime = 0; + + InitializeProgressBar(NUM_BUILD_AND_RUN_STEPS); + IncrementProgressBar("Exporting Unity Project . . ."); + + OVRPlugin.SetDeveloperMode(OVRPlugin.Bool.True); + OVRPlugin.AddCustomMetadata("build_type", "ovr_build_and_run"); + + if (!CheckADBDevices()) + { + return; + } + + // Record OVR Build and Run start event + OVRPlugin.SendEvent("ovr_build_and_run_start", "", "ovrbuild"); + + apkOutputSuccessful = null; + syncCancelToken = null; + gradleBuildProcess = null; + + UnityEngine.Debug.Log("OVRBuild: Starting Unity build ..."); + + SetupDirectories(); + + // 1. Get scenes to build in Unity, and export gradle project + List sceneList = GetScenesToBuild(); + DateTime unityExportStart = DateTime.Now; + var buildResult = BuildPipeline.BuildPlayer(sceneList.ToArray(), gradleTempExport, BuildTarget.Android, + BuildOptions.AcceptExternalModificationsToPlayer | + BuildOptions.Development | + BuildOptions.AllowDebugging); + + if (buildResult.summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded) + { + double unityExportTime = (DateTime.Now - unityExportStart).TotalSeconds; + OVRPlugin.SendEvent("build_step_unity_export", unityExportTime.ToString(), "ovrbuild"); + totalBuildTime += unityExportTime; + + // Set static variables so build thread has updated data + showCancel = true; + gradlePath = OVRConfig.Instance.GetGradlePath(); + jdkPath = OVRConfig.Instance.GetJDKPath(); + androidSdkPath = OVRConfig.Instance.GetAndroidSDKPath(); + applicationIdentifier = PlayerSettings.applicationIdentifier; + productName = Application.productName; + dataPath = Application.dataPath; + + buildThread = new Thread(delegate () + { + OVRBuildRun(); + }); + buildThread.Start(); + return; + } + else if (buildResult.summary.result == UnityEditor.Build.Reporting.BuildResult.Cancelled) + { + UnityEngine.Debug.Log("Build cancelled."); + } + else + { + UnityEngine.Debug.Log("Build failed."); + } + buildFailed = true; + } + + static void OVRBuildRun() + { + // 2. Process gradle project + IncrementProgressBar("Processing gradle project . . ."); + if (ProcessGradleProject()) + { + // 3. Build gradle project + IncrementProgressBar("Starting gradle build . . ."); + if (BuildGradleProject()) + { + OVRPlugin.SendEvent("build_complete", totalBuildTime.ToString(), "ovrbuild"); + // 4. Deploy and run + if (DeployAPK()) + { + return; + } + } + } + buildFailed = true; + } + + private static bool BuildGradleProject() + { + gradleBuildProcess = new Process(); + string arguments = "-Xmx4096m -classpath \"" + gradlePath + + "\" org.gradle.launcher.GradleMain assembleDebug -x validateSigningDebug"; + var gradleProjectPath = Path.Combine(gradleExport, productName); + var processInfo = new System.Diagnostics.ProcessStartInfo + { + WorkingDirectory = gradleProjectPath, + WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal, + FileName = jdkPath, + Arguments = arguments, + RedirectStandardInput = true, + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardError = true, + RedirectStandardOutput = true, + }; + + gradleBuildProcess.StartInfo = processInfo; + gradleBuildProcess.EnableRaisingEvents = true; + + DateTime gradleStartTime = System.DateTime.Now; + DateTime gradleEndTime = System.DateTime.MinValue; + + gradleBuildProcess.Exited += new System.EventHandler( + (s, e) => + { + UnityEngine.Debug.Log("Gradle: Exited"); + } + ); + + gradleBuildProcess.OutputDataReceived += new DataReceivedEventHandler( + (s, e) => + { + if (e != null && e.Data != null && + e.Data.Length != 0 && e.Data.Contains("BUILD")) + { + UnityEngine.Debug.LogFormat("Gradle: {0}", e.Data); + if (e.Data.Contains("SUCCESSFUL")) + { + UnityEngine.Debug.LogFormat("APK Build Completed: {0}", + Path.Combine(Path.Combine(gradleProjectPath, "build\\outputs\\apk\\debug"), productName + "-debug.apk").Replace("/", "\\")); + if (!apkOutputSuccessful.HasValue) + { + apkOutputSuccessful = true; + } + gradleEndTime = System.DateTime.Now; + } + else if (e.Data.Contains("FAILED")) + { + apkOutputSuccessful = false; + } + } + } + ); + + gradleBuildProcess.ErrorDataReceived += new DataReceivedEventHandler( + (s, e) => + { + if (e != null && e.Data != null && + e.Data.Length != 0) + { + UnityEngine.Debug.LogErrorFormat("Gradle: {0}", e.Data); + } + apkOutputSuccessful = false; + } + ); + + gradleBuildProcess.Start(); + gradleBuildProcess.BeginOutputReadLine(); + IncrementProgressBar("Building gradle project . . ."); + + gradleBuildProcess.WaitForExit(); + + // Add a timeout for if gradle unexpectedlly exits or errors out + Stopwatch timeout = new Stopwatch(); + timeout.Start(); + while (apkOutputSuccessful == null) + { + if (timeout.ElapsedMilliseconds > 5000) + { + UnityEngine.Debug.LogError("Gradle has exited unexpectedly."); + apkOutputSuccessful = false; + } + System.Threading.Thread.Sleep(100); + } + + // Record time it takes to build gradle project only if we had a successful build + double gradleTime = (gradleEndTime - gradleStartTime).TotalSeconds; + if (gradleTime > 0) + { + OVRPlugin.SendEvent("build_step_building_gradle_project", gradleTime.ToString(), "ovrbuild"); + totalBuildTime += gradleTime; + } + + return apkOutputSuccessful.HasValue && apkOutputSuccessful.Value; + } + + private static bool ProcessGradleProject() + { + DateTime syncStartTime = System.DateTime.Now; + DateTime syncEndTime = System.DateTime.MinValue; + + try + { + var ps = System.Text.RegularExpressions.Regex.Escape("" + Path.DirectorySeparatorChar); + // ignore files .gradle/** build/** foo/.gradle/** and bar/build/** + var ignorePattern = string.Format("^([^{0}]+{0})?(\\.gradle|build){0}", ps); + + var syncer = new DirectorySyncer(gradleTempExport, + gradleExport, ignorePattern); + + syncCancelToken = new DirectorySyncer.CancellationTokenSource(); + var syncResult = syncer.Synchronize(syncCancelToken.Token); + syncEndTime = System.DateTime.Now; + } + catch (Exception e) + { + UnityEngine.Debug.Log("OVRBuild: Processing gradle project failed with exception: " + + e.Message); + return false; + } + + if (syncCancelToken.IsCancellationRequested) + { + return false; + } + + // Record time it takes to sync gradle projects only if the sync was successful + double syncTime = (syncEndTime - syncStartTime).TotalSeconds; + if (syncTime > 0) + { + OVRPlugin.SendEvent("build_step_sync_gradle_project", syncTime.ToString(), "ovrbuild"); + totalBuildTime += syncTime; + } + + return true; + } + + private static List GetScenesToBuild() + { + var sceneList = new List(); + foreach (var scene in EditorBuildSettings.scenes) + { + // Enumerate scenes in project and check if scene is enabled to build + if (scene.enabled) + { + sceneList.Add(scene.path); + } + } + return sceneList; + } + + public static bool DeployAPK() + { + // Create new instance of ADB Tool + var adbTool = new OVRADBTool(androidSdkPath); + + if (adbTool.isReady) + { + string apkPathLocal; + string gradleExportFolder = Path.Combine(Path.Combine(gradleExport, productName), "build\\outputs\\apk\\debug"); + + // Check to see if gradle output directory exists + gradleExportFolder = gradleExportFolder.Replace("/", "\\"); + if (!Directory.Exists(gradleExportFolder)) + { + UnityEngine.Debug.LogError("Could not find the gradle project at the expected path: " + gradleExportFolder); + return false; + } + + // Search for output APK in gradle output directory + apkPathLocal = Path.Combine(gradleExportFolder, productName + "-debug.apk"); + if (!System.IO.File.Exists(apkPathLocal)) + { + UnityEngine.Debug.LogError(string.Format("Could not find {0} in the gradle project.", productName + "-debug.apk")); + return false; + } + + string output, error; + DateTime timerStart; + + // Ensure that the Oculus temp directory is on the device by making it + IncrementProgressBar("Making Temp directory on device"); + string[] mkdirCommand = { "-d shell", "mkdir -p", REMOTE_APK_PATH }; + if (adbTool.RunCommand(mkdirCommand, null, out output, out error) != 0) return false; + + // Push APK to device, also time how long it takes + timerStart = System.DateTime.Now; + IncrementProgressBar("Pushing APK to device . . ."); + string[] pushCommand = { "-d push", "\"" + apkPathLocal + "\"", REMOTE_APK_PATH }; + if (adbTool.RunCommand(pushCommand, null, out output, out error) != 0) return false; + + // Calculate the transfer speed and determine if user is using USB 2.0 or 3.0 + TimeSpan pushTime = System.DateTime.Now - timerStart; + FileInfo apkInfo = new System.IO.FileInfo(apkPathLocal); + double transferSpeed = (apkInfo.Length / pushTime.TotalSeconds) / BYTES_TO_MEGABYTES; + bool informLog = transferSpeed < USB_TRANSFER_SPEED_THRES; + UnityEngine.Debug.Log("OVRADBTool: Push Success"); + + // Install the APK package on the device + IncrementProgressBar("Installing APK . . ."); + string apkPath = REMOTE_APK_PATH + "/" + productName + "-debug.apk"; + apkPath = apkPath.Replace(" ", "\\ "); + string[] installCommand = { "-d shell", "pm install -r", apkPath }; + + timerStart = System.DateTime.Now; + if (adbTool.RunCommand(installCommand, null, out output, out error) != 0) return false; + TimeSpan installTime = System.DateTime.Now - timerStart; + UnityEngine.Debug.Log("OVRADBTool: Install Success"); + + // Start the application on the device + IncrementProgressBar("Launching application on device . . ."); + string playerActivityName = "\"" + applicationIdentifier + "/" + applicationIdentifier + ".UnityPlayerActivity\""; + string[] appStartCommand = { "-d shell", "am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -S -f 0x10200000 -n", playerActivityName }; + if (adbTool.RunCommand(appStartCommand, null, out output, out error) != 0) return false; + UnityEngine.Debug.Log("OVRADBTool: Application Start Success"); + + // Send back metrics on push and install steps + OVRPlugin.AddCustomMetadata("transfer_speed", transferSpeed.ToString()); + OVRPlugin.SendEvent("build_step_push_apk", pushTime.TotalSeconds.ToString(), "ovrbuild"); + OVRPlugin.SendEvent("build_step_install_apk", installTime.TotalSeconds.ToString(), "ovrbuild"); + + IncrementProgressBar("Success!"); + + // If the user is using a USB 2.0 cable, inform them about improved transfer speeds and estimate time saved + if (informLog) + { + var usb3Time = apkInfo.Length / (USB_3_TRANSFER_SPEED * BYTES_TO_MEGABYTES); + UnityEngine.Debug.Log(string.Format("OVRBuild has detected slow transfer speeds. A USB 3.0 cable is recommended to reduce the time it takes to deploy your project by approximatly {0:0.0} seconds", pushTime.TotalSeconds - usb3Time)); + return true; + } + } + else + { + UnityEngine.Debug.LogError("Could not find the ADB executable in the specified Android SDK directory."); + } + return false; + } + + private static bool CheckADBDevices() + { + // Check if there are any ADB devices connected before starting the build process + var adbTool = new OVRADBTool(OVRConfig.Instance.GetAndroidSDKPath()); + if (adbTool.isReady) + { + List devices = adbTool.GetDevices(); + if (devices.Count == 0) + { + OVRPlugin.SendEvent("no_adb_devices", "", "ovrbuild"); + UnityEngine.Debug.LogError("No ADB devices connected. Cannot perform OVR Build and Run."); + return false; + } + else if(devices.Count > 1) + { + OVRPlugin.SendEvent("multiple_adb_devices", "", "ovrbuild"); + UnityEngine.Debug.LogError("Multiple ADB devices connected. Cannot perform OVR Build and Run."); + return false; + } + } + else + { + OVRPlugin.SendEvent("ovr_adbtool_initialize_failure", "", "ovrbuild"); + UnityEngine.Debug.LogError("OVR ADB Tool failed to initialize. Check the Android SDK path in [Edit -> Preferences -> External Tools]"); + return false; + } + return true; + } + + private static void SetupDirectories() + { + gradleTempExport = Path.Combine(Path.Combine(Application.dataPath, "../Temp"), "OVRGradleTempExport"); + gradleExport = Path.Combine(Path.Combine(Application.dataPath, "../Temp"), "OVRGradleExport"); + if (!Directory.Exists(gradleExport)) + { + Directory.CreateDirectory(gradleExport); + } + } + + private static void InitializeProgressBar(int stepCount) + { + currentStep = 0; + totalBuildSteps = stepCount; + } + + private static void IncrementProgressBar(string message) + { + currentStep++; + progressMessage = message; + UnityEngine.Debug.Log("OVRBuild: " + message); + } + + private static void SetProgressBarMessage(string message) + { + progressMessage = message; + UnityEngine.Debug.Log("OVRBuild: " + message); + } +#endif //UNITY_EDITOR_WIN && UNITY_2018_1_OR_NEWER && UNITY_ANDROID +} diff --git a/Assets/Oculus/VR/Editor/OVRBuild.cs.meta b/Assets/Oculus/VR/Editor/OVRBuild.cs.meta new file mode 100644 index 0000000..346624d --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRBuild.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fef522d0247215a43be6b1a8819bd940 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Editor/OVRConfig.cs b/Assets/Oculus/VR/Editor/OVRConfig.cs new file mode 100644 index 0000000..39d1414 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRConfig.cs @@ -0,0 +1,188 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.IO; +using System; + +#if UNITY_EDITOR +[UnityEditor.InitializeOnLoad] +#endif +public class OVRConfig : ScriptableObject +{ + [SerializeField] + private string androidSDKPath = ""; + + [SerializeField] + private string gradlePath = ""; + + [SerializeField] + private string jdkPath = ""; + + private static OVRConfig instance; + + public static OVRConfig Instance + { + get + { + if (instance == null) + { + instance = Resources.Load("OVRConfig"); + if (instance == null) + { + instance = ScriptableObject.CreateInstance(); + string resourcePath = Path.Combine(UnityEngine.Application.dataPath, "Resources"); + if (!Directory.Exists(resourcePath)) + { + UnityEditor.AssetDatabase.CreateFolder("Assets", "Resources"); + } + + string fullPath = Path.Combine(Path.Combine("Assets", "Resources"), "OVRBuildConfig.asset"); + UnityEditor.AssetDatabase.CreateAsset(instance, fullPath); + } + } + return instance; + } + set + { + instance = value; + } + } + + // Returns the path to the base directory of the Android SDK + public string GetAndroidSDKPath(bool throwError = true) + { +#if UNITY_2019_1_OR_NEWER + // Check for use of embedded path or user defined + bool useEmbedded = EditorPrefs.GetBool("SdkUseEmbedded"); + if (useEmbedded) + { + androidSDKPath = Path.Combine(BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None), "SDK"); + } + else +#endif + { + androidSDKPath = EditorPrefs.GetString("AndroidSdkRoot"); + } + + androidSDKPath = androidSDKPath.Replace("/", "\\"); + // Validate sdk path and notify user if path does not exist. + if (!Directory.Exists(androidSDKPath)) + { + androidSDKPath = Environment.GetEnvironmentVariable("ANDROID_SDK_ROOT"); + if (!string.IsNullOrEmpty(androidSDKPath)) + { + return androidSDKPath; + } + + if (throwError) + { + EditorUtility.DisplayDialog("Android SDK not Found", + "Android SDK not found. Please ensure that the path is set correctly in (Edit -> Preferences -> External Tools) or that the Untiy Android module is installed correctly.", + "Ok"); + } + return string.Empty; + } + + EditorUtility.SetDirty(Instance); + return androidSDKPath; + } + + // Returns the path to the gradle-launcher-*.jar + public string GetGradlePath(bool throwError = true) + { + string libPath = ""; +#if UNITY_2019_1_OR_NEWER + // Check for use of embedded path or user defined + bool useEmbedded = EditorPrefs.GetBool("GradleUseEmbedded"); + + if (useEmbedded) + { + libPath = Path.Combine(BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None), "Tools\\gradle\\lib"); + } + else + { + libPath = Path.Combine(EditorPrefs.GetString("GradlePath"), "lib"); + } +#else + libPath = Path.Combine(EditorApplication.applicationContentsPath, "PlaybackEngines\\AndroidPlayer\\Tools\\gradle\\lib"); +#endif + + libPath = libPath.Replace("/", "\\"); + if (!string.IsNullOrEmpty(libPath) && Directory.Exists(libPath)) + { + string[] gradleJar = Directory.GetFiles(libPath, "gradle-launcher-*.jar"); + if (gradleJar.Length == 1) + { + gradlePath = gradleJar[0]; + } + } + + // Validate gradle path and notify user if path does not exist. + if (!File.Exists(gradlePath)) + { + if (throwError) + { + EditorUtility.DisplayDialog("Gradle not Found", + "Gradle not found. Please ensure that the path is set correctly in (Edit -> Preferences -> External Tools) or that the Untiy Android module is installed correctly.", + "Ok"); + } + return string.Empty; + } + + EditorUtility.SetDirty(Instance); + return gradlePath; + } + + // Returns path to the Java executable in the JDK + public string GetJDKPath(bool throwError = true) + { +#if UNITY_EDITOR_WIN + // Check for use of embedded path or user defined + bool useEmbedded = EditorPrefs.GetBool("JdkUseEmbedded"); + + string exePath = ""; + if (useEmbedded) + { +#if UNITY_2019_1_OR_NEWER + exePath = Path.Combine(BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None), "Tools\\OpenJDK\\Windows\\bin"); +#else + exePath = Path.Combine(EditorApplication.applicationContentsPath, "PlaybackEngines\\AndroidPlayer\\Tools\\OpenJDK\\Windows\\bin"); +#endif + } + else + { + exePath = Path.Combine(EditorPrefs.GetString("JdkPath"), "bin"); + } + + jdkPath = Path.Combine(exePath, "java.exe"); + jdkPath = jdkPath.Replace("/", "\\"); + + // Validate gradle path and notify user if path does not exist. + if (!File.Exists(jdkPath)) + { + // Check the enviornment variable as a backup to see if the JDK is there. + string javaHome = Environment.GetEnvironmentVariable("JAVA_HOME"); + if(!string.IsNullOrEmpty(javaHome)) + { + jdkPath = Path.Combine(javaHome, "bin\\java.exe"); + if(File.Exists(jdkPath)) + { + EditorUtility.SetDirty(Instance); + return jdkPath; + } + } + + if (throwError) + { + EditorUtility.DisplayDialog("JDK not Found", + "JDK not found. Please ensure that the path is set correctly in (Edit -> Preferences -> External Tools) or that the Untiy Android module is installed correctly.", + "Ok"); + } + return string.Empty; + } +#endif + EditorUtility.SetDirty(Instance); + return jdkPath; + } +} diff --git a/Assets/Oculus/VR/Editor/OVRConfig.cs.meta b/Assets/Oculus/VR/Editor/OVRConfig.cs.meta new file mode 100644 index 0000000..c10d1bc --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20553fac56ec59645857c0732b787431 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRDeviceSelector.cs b/Assets/Oculus/VR/Editor/OVRDeviceSelector.cs new file mode 100644 index 0000000..a9e9ec8 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRDeviceSelector.cs @@ -0,0 +1,46 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +public class OVRDeviceSelector +{ + public static bool isTargetDeviceGearVrOrGo + { + get + { + OVRProjectConfig projectConfig = OVRProjectConfig.GetProjectConfig(); + return projectConfig.targetDeviceTypes.Contains(OVRProjectConfig.DeviceType.GearVrOrGo); + } + } + + public static bool isTargetDeviceQuest + { + get + { + OVRProjectConfig projectConfig = OVRProjectConfig.GetProjectConfig(); + return projectConfig.targetDeviceTypes.Contains(OVRProjectConfig.DeviceType.Quest); + } + } +} diff --git a/Assets/Oculus/VR/Editor/OVRDeviceSelector.cs.meta b/Assets/Oculus/VR/Editor/OVRDeviceSelector.cs.meta new file mode 100644 index 0000000..e0e7b82 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRDeviceSelector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 157dce969e882084080e0a2c39efe398 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRDirectorySyncer.cs b/Assets/Oculus/VR/Editor/OVRDirectorySyncer.cs new file mode 100644 index 0000000..f345b1b --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRDirectorySyncer.cs @@ -0,0 +1,242 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using System; + +public class DirectorySyncer +{ + public delegate void SyncResultDelegate(SyncResult syncResult); + + public readonly string Source; + public readonly string Target; + public SyncResultDelegate WillPerformOperations; + private readonly Regex _ignoreExpression; + + // helper classes to simplify transition beyond .NET runtime 3.5 + public abstract class CancellationToken + { + protected abstract bool _IsCancellationRequested(); + + public virtual bool IsCancellationRequested + { + get { return _IsCancellationRequested(); } + } + + public void ThrowIfCancellationRequested() + { + if (IsCancellationRequested) + { + throw new Exception("Operation Cancelled"); + } + } + + public static readonly CancellationToken None = new CancellationTokenNone(); + + private class CancellationTokenNone : CancellationToken + { + protected override bool _IsCancellationRequested() + { + return false; + } + } + } + + public class CancellationTokenSource : CancellationToken + { + private bool _isCancelled; + + protected override bool _IsCancellationRequested() + { + return _isCancelled; + } + + public void Cancel() + { + _isCancelled = true; + } + + public CancellationToken Token + { + get { return this; } + } + } + + private static string EnsureTrailingDirectorySeparator(string path) + { + return path.EndsWith("" + Path.DirectorySeparatorChar) + ? path + : path + Path.DirectorySeparatorChar; + } + + private static string CheckedDirectory(string nameInExceptionText, string directory) + { + directory = Path.GetFullPath(directory); + if (!Directory.Exists(directory)) + { + throw new ArgumentException(string.Format("{0} is not a valid directory for argument ${1}", directory, + nameInExceptionText)); + } + + return EnsureTrailingDirectorySeparator(directory); + } + + public DirectorySyncer(string source, string target, string ignoreRegExPattern = null) + { + Source = CheckedDirectory("source", source); + Target = CheckedDirectory("target", target); + if (Source.StartsWith(Target, StringComparison.OrdinalIgnoreCase) || + Target.StartsWith(Source, StringComparison.OrdinalIgnoreCase)) + { + throw new ArgumentException(string.Format("Paths must not contain each other (source: {0}, target: {1}", + Source, Target)); + } + + ignoreRegExPattern = ignoreRegExPattern ?? "^$"; + _ignoreExpression = new Regex(ignoreRegExPattern, RegexOptions.IgnoreCase); + } + + public class SyncResult + { + public readonly IEnumerable Created; + public readonly IEnumerable Updated; + public readonly IEnumerable Deleted; + + public SyncResult(IEnumerable created, IEnumerable updated, IEnumerable deleted) + { + Created = created; + Updated = updated; + Deleted = deleted; + } + } + + public bool RelativeFilePathIsRelevant(string relativeFilename) + { + return !_ignoreExpression.IsMatch(relativeFilename); + } + + public bool RelativeDirectoryPathIsRelevant(string relativeDirName) + { + // Since our ignore patterns look at file names, they may contain trailing path separators + // In order for paths to match those rules, we add a path separator here + return !_ignoreExpression.IsMatch(EnsureTrailingDirectorySeparator(relativeDirName)); + } + + private HashSet RelevantRelativeFilesBeneathDirectory(string path, CancellationToken cancellationToken) + { + return new HashSet(Directory.GetFiles(path, "*", SearchOption.AllDirectories) + .TakeWhile((s) => !cancellationToken.IsCancellationRequested) + .Select(p => PathHelper.MakeRelativePath(path, p)).Where(RelativeFilePathIsRelevant)); + } + + private HashSet RelevantRelativeDirectoriesBeneathDirectory(string path, + CancellationToken cancellationToken) + { + return new HashSet(Directory.GetDirectories(path, "*", SearchOption.AllDirectories) + .TakeWhile((s) => !cancellationToken.IsCancellationRequested) + .Select(p => PathHelper.MakeRelativePath(path, p)).Where(RelativeDirectoryPathIsRelevant)); + } + + public SyncResult Synchronize() + { + return Synchronize(CancellationToken.None); + } + + private void DeleteOutdatedFilesFromTarget(SyncResult syncResult, CancellationToken cancellationToken) + { + var outdatedFiles = syncResult.Updated.Union(syncResult.Deleted); + foreach (var fileName in outdatedFiles) + { + File.Delete(Path.Combine(Target, fileName)); + cancellationToken.ThrowIfCancellationRequested(); + } + } + + [SuppressMessage("ReSharper", "ParameterTypeCanBeEnumerable.Local")] + private void DeleteOutdatedEmptyDirectoriesFromTarget(HashSet sourceDirs, HashSet targetDirs, + CancellationToken cancellationToken) + { + var deleted = targetDirs.Except(sourceDirs).OrderByDescending(s => s); + + // By sorting in descending order above, we delete leaf-first, + // this is simpler than collapsing the list above (which would also allow us to run these ops in parallel). + // Assumption is that there are few empty folders to delete + foreach (var dir in deleted) + { + Directory.Delete(Path.Combine(Target, dir)); + cancellationToken.ThrowIfCancellationRequested(); + } + } + + [SuppressMessage("ReSharper", "ParameterTypeCanBeEnumerable.Local")] + private void CreateRelevantDirectoriesAtTarget(HashSet sourceDirs, HashSet targetDirs, + CancellationToken cancellationToken) + { + var created = sourceDirs.Except(targetDirs); + foreach (var dir in created) + { + Directory.CreateDirectory(Path.Combine(Target, dir)); + cancellationToken.ThrowIfCancellationRequested(); + } + } + + private void MoveRelevantFilesToTarget(SyncResult syncResult, CancellationToken cancellationToken) + { + // step 3: we move all new files to target + var newFiles = syncResult.Created.Union(syncResult.Updated); + foreach (var fileName in newFiles) + { + var sourceFileName = Path.Combine(Source, fileName); + var destFileName = Path.Combine(Target, fileName); + // target directory exists due to step CreateRelevantDirectoriesAtTarget() + File.Move(sourceFileName, destFileName); + cancellationToken.ThrowIfCancellationRequested(); + } + } + + public SyncResult Synchronize(CancellationToken cancellationToken) + { + var sourceDirs = RelevantRelativeDirectoriesBeneathDirectory(Source, cancellationToken); + var targetDirs = RelevantRelativeDirectoriesBeneathDirectory(Target, cancellationToken); + var sourceFiles = RelevantRelativeFilesBeneathDirectory(Source, cancellationToken); + var targetFiles = RelevantRelativeFilesBeneathDirectory(Target, cancellationToken); + + var created = sourceFiles.Except(targetFiles).OrderBy(s => s).ToList(); + var updated = sourceFiles.Intersect(targetFiles).OrderBy(s => s).ToList(); + var deleted = targetFiles.Except(sourceFiles).OrderBy(s => s).ToList(); + var syncResult = new SyncResult(created, updated, deleted); + + if (WillPerformOperations != null) + { + WillPerformOperations.Invoke(syncResult); + } + + DeleteOutdatedFilesFromTarget(syncResult, cancellationToken); + DeleteOutdatedEmptyDirectoriesFromTarget(sourceDirs, targetDirs, cancellationToken); + CreateRelevantDirectoriesAtTarget(sourceDirs, targetDirs, cancellationToken); + MoveRelevantFilesToTarget(syncResult, cancellationToken); + + return syncResult; + } +} diff --git a/Assets/Oculus/VR/Editor/OVRDirectorySyncer.cs.meta b/Assets/Oculus/VR/Editor/OVRDirectorySyncer.cs.meta new file mode 100644 index 0000000..2878abd --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRDirectorySyncer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 666774827ce57754f9fbd8e008ed0a2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs b/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs new file mode 100644 index 0000000..287bf5a --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs @@ -0,0 +1,331 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using UnityEditor; +using UnityEditor.Callbacks; +using System; +using System.IO; + +[InitializeOnLoad] +class OVREngineConfigurationUpdater +{ + private const string prefName = "OVREngineConfigurationUpdater_Enabled"; + private const string menuItemName = "Oculus/Tools/Use Required Project Settings"; + private const string androidAssetsPath = "Assets/Plugins/Android/assets"; + private const string androidManifestPath = "Assets/Plugins/Android/AndroidManifest.xml"; + static bool setPrefsForUtilities; + + [MenuItem(menuItemName)] + static void ToggleUtilities() + { + setPrefsForUtilities = !setPrefsForUtilities; + Menu.SetChecked(menuItemName, setPrefsForUtilities); + + int newValue = (setPrefsForUtilities) ? 1 : 0; + PlayerPrefs.SetInt(prefName, newValue); + PlayerPrefs.Save(); + + Debug.Log("Using required project settings: " + setPrefsForUtilities); + } + +#if UNITY_2017_3_OR_NEWER + private static readonly string dashSupportEnableConfirmedKey = "Oculus_Utilities_OVREngineConfiguration_DashSupportEnableConfirmed_" + Application.unityVersion + OVRManager.utilitiesVersion; + private static bool dashSupportEnableConfirmed + { + get + { + return PlayerPrefs.GetInt(dashSupportEnableConfirmedKey, 0) == 1; + } + + set + { + PlayerPrefs.SetInt(dashSupportEnableConfirmedKey, value ? 1 : 0); + } + } + + private static void DashSupportWarningPrompt() + { + /// + /// Since Unity 2017.3.0f1 and 2017.3.0f2 have "Dash Support" enabled by default + /// We need prompt developers in case they never test their app with dash + /// + /// + if (Application.unityVersion == "2017.3.0f1" || Application.unityVersion == "2017.3.0f2") + { + if (!dashSupportEnableConfirmed) + { + bool dialogResult = EditorUtility.DisplayDialog("Oculus Dash support", "Your current Unity engine " + Application.unityVersion + + " has Oculus Dash Supporting enabled by default. please make sure to test your app with Dash enabled runtime 1.21 or newer," + + " Otherwise, you can also turn it off under XR Settings -> Oculus", "Understand", "Learn more "); + + if (!dialogResult) + { + Application.OpenURL("https://developer.oculus.com/documentation/unity/latest/concepts/unity-lifecycle/"); + } + + dashSupportEnableConfirmed = true; + } + } + } +#endif + + static OVREngineConfigurationUpdater() + { + EditorApplication.delayCall += OnDelayCall; + EditorApplication.update += OnUpdate; + +#if UNITY_2017_3_OR_NEWER + DashSupportWarningPrompt(); +#endif + } + + static void OnDelayCall() + { + setPrefsForUtilities = PlayerPrefs.GetInt(prefName, 1) != 0; + Menu.SetChecked(menuItemName, setPrefsForUtilities); + + if (!setPrefsForUtilities) + return; + + OVRPlugin.AddCustomMetadata("build_target", EditorUserBuildSettings.activeBuildTarget.ToString()); + EnforceAndroidSettings(); + EnforceInputManagerBindings(); +#if UNITY_ANDROID + EnforceOSIG(); +#endif + } + + static void OnUpdate() + { + if (!setPrefsForUtilities) + return; + + EnforceBundleId(); +#if !USING_XR_SDK + EnforceVRSupport(); +#endif + EnforceInstallLocation(); + } + + static void EnforceAndroidSettings() + { + if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) + return; + + if (PlayerSettings.defaultInterfaceOrientation != UIOrientation.LandscapeLeft) + { + Debug.Log("OVREngineConfigurationUpdater: Setting orientation to Landscape Left"); + // Default screen orientation must be set to landscape left. + PlayerSettings.defaultInterfaceOrientation = UIOrientation.LandscapeLeft; + } + + if (!PlayerSettings.virtualRealitySupported) + { + // NOTE: This value should not affect the main window surface + // when Built-in VR support is enabled. + + // NOTE: On Adreno Lollipop, it is an error to have antiAliasing set on the + // main window surface with front buffer rendering enabled. The view will + // render black. + // On Adreno KitKat, some tiling control modes will cause the view to render + // black. + if (QualitySettings.antiAliasing != 0 && QualitySettings.antiAliasing != 1) + { + Debug.Log("OVREngineConfigurationUpdater: Disabling antiAliasing"); + QualitySettings.antiAliasing = 1; + } + } + + if (QualitySettings.vSyncCount != 0) + { + Debug.Log("OVREngineConfigurationUpdater: Setting vsyncCount to 0"); + // We sync in the TimeWarp, so we don't want unity syncing elsewhere. + QualitySettings.vSyncCount = 0; + } + } + + static void EnforceVRSupport() + { + if (PlayerSettings.virtualRealitySupported) + return; + + var mgrs = GameObject.FindObjectsOfType(); + for (int i = 0; i < mgrs.Length; ++i) + { + if (mgrs [i].isActiveAndEnabled) + { + Debug.Log ("Enabling Unity VR support"); + PlayerSettings.virtualRealitySupported = true; + + bool oculusFound = false; +#if UNITY_2017_2_OR_NEWER + foreach (var device in UnityEngine.XR.XRSettings.supportedDevices) +#else + foreach (var device in UnityEngine.VR.VRSettings.supportedDevices) +#endif + oculusFound |= (device == "Oculus"); + + if (!oculusFound) + Debug.LogError("Please add Oculus to the list of supported devices to use the Utilities."); + + return; + } + } + } + + private static void EnforceBundleId() + { + if (!PlayerSettings.virtualRealitySupported) + return; + + if (PlayerSettings.applicationIdentifier == "" || PlayerSettings.applicationIdentifier == "com.Company.ProductName") + { + string defaultBundleId = "com.oculus.UnitySample"; + Debug.LogWarning("\"" + PlayerSettings.applicationIdentifier + "\" is not a valid bundle identifier. Defaulting to \"" + defaultBundleId + "\"."); + PlayerSettings.applicationIdentifier = defaultBundleId; + } + } + + private static void EnforceInstallLocation() + { + if (PlayerSettings.Android.preferredInstallLocation != AndroidPreferredInstallLocation.Auto) + PlayerSettings.Android.preferredInstallLocation = AndroidPreferredInstallLocation.Auto; + } + + private static void EnforceInputManagerBindings() + { + try + { + BindAxis(new Axis() { name = "Oculus_GearVR_LThumbstickX", axis = 0, }); + BindAxis(new Axis() { name = "Oculus_GearVR_LThumbstickY", axis = 1, invert = true }); + BindAxis(new Axis() { name = "Oculus_GearVR_RThumbstickX", axis = 2, }); + BindAxis(new Axis() { name = "Oculus_GearVR_RThumbstickY", axis = 3, invert = true }); + BindAxis(new Axis() { name = "Oculus_GearVR_DpadX", axis = 4, }); + BindAxis(new Axis() { name = "Oculus_GearVR_DpadY", axis = 5, invert = true }); + BindAxis(new Axis() { name = "Oculus_GearVR_LIndexTrigger", axis = 12, }); + BindAxis(new Axis() { name = "Oculus_GearVR_RIndexTrigger", axis = 11, }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_Button2", positiveButton = "joystick button 0", gravity = 1000f, sensitivity = 1000f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_Button4", positiveButton = "joystick button 2", gravity = 1000f, sensitivity = 1000f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryThumbstick", positiveButton = "joystick button 8", gravity = 0f, dead = 0f, sensitivity = 0.1f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryThumbstick", positiveButton = "joystick button 9", gravity = 0f, dead = 0f, sensitivity = 0.1f, type = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryIndexTrigger", dead = 0.19f, type = 2, axis = 8, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryIndexTrigger", dead = 0.19f, type = 2, axis = 9, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryHandTrigger", dead = 0.19f, type = 2, axis = 10, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryHandTrigger", dead = 0.19f, type = 2, axis = 11, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryThumbstickHorizontal", dead = 0.19f, type = 2, axis = 0, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_PrimaryThumbstickVertical", dead = 0.19f, type = 2, axis = 1, joyNum = 0, invert = true }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryThumbstickHorizontal", dead = 0.19f, type = 2, axis = 3, joyNum = 0 }); + BindAxis(new Axis() { name = "Oculus_CrossPlatform_SecondaryThumbstickVertical", dead = 0.19f, type = 2, axis = 4, joyNum = 0, invert = true }); + } + catch + { + Debug.LogError("Failed to apply Oculus GearVR input manager bindings."); + } + } + + private static void EnforceOSIG() + { + // Don't bug the user in play mode. + if (Application.isPlaying) + return; + + // Don't warn if the project may be set up for submission or global signing. + if (File.Exists(androidManifestPath)) + return; + + bool foundPossibleOsig = false; + if (Directory.Exists(androidAssetsPath)) + { + var files = Directory.GetFiles(androidAssetsPath); + for (int i = 0; i < files.Length; ++i) + { + if (!files[i].Contains(".txt")) + { + foundPossibleOsig = true; + break; + } + } + } + + if (!foundPossibleOsig) + Debug.LogWarning("Missing Gear VR OSIG at " + androidAssetsPath + ". Please see https://dashboard.oculus.com/tools/osig-generator"); + } + + private class Axis + { + public string name = String.Empty; + public string descriptiveName = String.Empty; + public string descriptiveNegativeName = String.Empty; + public string negativeButton = String.Empty; + public string positiveButton = String.Empty; + public string altNegativeButton = String.Empty; + public string altPositiveButton = String.Empty; + public float gravity = 0.0f; + public float dead = 0.001f; + public float sensitivity = 1.0f; + public bool snap = false; + public bool invert = false; + public int type = 2; + public int axis = 0; + public int joyNum = 0; + } + + private static void BindAxis(Axis axis) + { + SerializedObject serializedObject = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/InputManager.asset")[0]); + SerializedProperty axesProperty = serializedObject.FindProperty("m_Axes"); + + SerializedProperty axisIter = axesProperty.Copy(); + axisIter.Next(true); + axisIter.Next(true); + while (axisIter.Next(false)) + { + if (axisIter.FindPropertyRelative("m_Name").stringValue == axis.name) + { + // Axis already exists. Don't create binding. + return; + } + } + + axesProperty.arraySize++; + serializedObject.ApplyModifiedProperties(); + + SerializedProperty axisProperty = axesProperty.GetArrayElementAtIndex(axesProperty.arraySize - 1); + axisProperty.FindPropertyRelative("m_Name").stringValue = axis.name; + axisProperty.FindPropertyRelative("descriptiveName").stringValue = axis.descriptiveName; + axisProperty.FindPropertyRelative("descriptiveNegativeName").stringValue = axis.descriptiveNegativeName; + axisProperty.FindPropertyRelative("negativeButton").stringValue = axis.negativeButton; + axisProperty.FindPropertyRelative("positiveButton").stringValue = axis.positiveButton; + axisProperty.FindPropertyRelative("altNegativeButton").stringValue = axis.altNegativeButton; + axisProperty.FindPropertyRelative("altPositiveButton").stringValue = axis.altPositiveButton; + axisProperty.FindPropertyRelative("gravity").floatValue = axis.gravity; + axisProperty.FindPropertyRelative("dead").floatValue = axis.dead; + axisProperty.FindPropertyRelative("sensitivity").floatValue = axis.sensitivity; + axisProperty.FindPropertyRelative("snap").boolValue = axis.snap; + axisProperty.FindPropertyRelative("invert").boolValue = axis.invert; + axisProperty.FindPropertyRelative("type").intValue = axis.type; + axisProperty.FindPropertyRelative("axis").intValue = axis.axis; + axisProperty.FindPropertyRelative("joyNum").intValue = axis.joyNum; + serializedObject.ApplyModifiedProperties(); + } +} + diff --git a/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs.meta b/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs.meta new file mode 100644 index 0000000..f0bb0f6 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVREngineConfigurationUpdater.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c86538ded11bfe24c8c79818bb9ea66a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Editor/OVRExpansionFileGenerator.cs b/Assets/Oculus/VR/Editor/OVRExpansionFileGenerator.cs new file mode 100644 index 0000000..ac3ab0e --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRExpansionFileGenerator.cs @@ -0,0 +1,96 @@ +using System; +using System.IO; +using System.Xml; +using UnityEngine; +using UnityEditor; + +public class BuildAssetBundles : MonoBehaviour +{ + [MenuItem("Oculus/Tools/Build Mobile-Quest Expansion File", false, 100000)] + public static void BuildBundles() + { + // Create expansion file directory and call build asset bundles + string path = Application.dataPath + "/../Asset Bundles/"; + if (!System.IO.Directory.Exists(path)) + { + System.IO.Directory.CreateDirectory(path); + } + BuildPipeline.BuildAssetBundles(path, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.Android); + + // Rename asset bundle file to the proper obb string + if (File.Exists(path + "Asset Bundles")) + { + string expansionName = "main." + PlayerSettings.Android.bundleVersionCode + "." + PlayerSettings.applicationIdentifier + ".obb"; + try + { + if (File.Exists(path + expansionName)) + { + File.Delete(path + expansionName); + } + File.Move(path + "Asset Bundles", path + expansionName); + UnityEngine.Debug.Log("OBB expansion file " + expansionName + " has been successfully created at " + path); + + UpdateAndroidManifest(); + } + catch (Exception e) + { + UnityEngine.Debug.LogError(e.Message); + } + } + } + + public static void UpdateAndroidManifest() + { + string manifestFolder = Application.dataPath + "/Plugins/Android"; + try + { + // Load android manfiest file + XmlDocument doc = new XmlDocument(); + doc.Load(manifestFolder + "/AndroidManifest.xml"); + + string androidNamepsaceURI; + XmlElement element = (XmlElement)doc.SelectSingleNode("/manifest"); + if(element == null) + { + UnityEngine.Debug.LogError("Could not find manifest tag in android manifest."); + return; + } + + // Get android namespace URI from the manifest + androidNamepsaceURI = element.GetAttribute("xmlns:android"); + if (!string.IsNullOrEmpty(androidNamepsaceURI)) + { + // Check if the android manifest already has the read external storage permission + XmlNodeList nodeList = doc.SelectNodes("/manifest/application/uses-permission"); + foreach (XmlElement e in nodeList) + { + string attr = e.GetAttribute("name", androidNamepsaceURI); + if (attr == "android.permission.READ_EXTERNAL_STORAGE") + { + UnityEngine.Debug.Log("Android manifest already has the proper permissions."); + return; + } + } + + element = (XmlElement)doc.SelectSingleNode("/manifest/application"); + if (element != null) + { + // Insert read external storage permission + XmlElement newElement = doc.CreateElement("uses-permission"); + newElement.SetAttribute("name", androidNamepsaceURI, "android.permission.READ_EXTERNAL_STORAGE"); + element.AppendChild(newElement); + + doc.Save(manifestFolder + "/AndroidManifest.xml"); + UnityEngine.Debug.Log("Successfully modified android manifest with external storage permission."); + return; + } + } + + UnityEngine.Debug.LogError("Could not find android naemspace URI in android manifest."); + } + catch (Exception e) + { + UnityEngine.Debug.LogError(e.Message); + } + } +} diff --git a/Assets/Oculus/VR/Editor/OVRExpansionFileGenerator.cs.meta b/Assets/Oculus/VR/Editor/OVRExpansionFileGenerator.cs.meta new file mode 100644 index 0000000..cf911d8 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRExpansionFileGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2a0ba46d78379541a5f56225e034afa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRGradleGeneration.cs b/Assets/Oculus/VR/Editor/OVRGradleGeneration.cs new file mode 100644 index 0000000..b356311 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRGradleGeneration.cs @@ -0,0 +1,453 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +//#define BUILDSESSION +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Xml; +using System.Diagnostics; +using System.Threading; +using UnityEditor; +#if UNITY_ANDROID +using UnityEditor.Android; +#endif +using UnityEngine; +using UnityEngine.Rendering; +using UnityEditor.Build; +#if UNITY_2018_1_OR_NEWER +using UnityEditor.Build.Reporting; +#endif +using System; + +[InitializeOnLoad] +public class OVRGradleGeneration +#if UNITY_2018_1_OR_NEWER + : IPreprocessBuildWithReport, IPostprocessBuildWithReport +#if UNITY_ANDROID + , IPostGenerateGradleAndroidProject +#endif +{ + public OVRADBTool adbTool; + public Process adbProcess; + + public int callbackOrder { get { return 3; } } + static private System.DateTime buildStartTime; + static private System.Guid buildGuid; + + private const string prefName = "OVRAutoIncrementVersionCode_Enabled"; + private const string menuItemAutoIncVersion = "Oculus/Tools/Auto Increment Version Code"; + static bool autoIncrementVersion = false; + + static OVRGradleGeneration() + { + EditorApplication.delayCall += OnDelayCall; + } + + static void OnDelayCall() + { +#if UNITY_ANDROID + autoIncrementVersion = PlayerPrefs.GetInt(prefName, 0) != 0; + Menu.SetChecked(menuItemAutoIncVersion, autoIncrementVersion); +#endif + } + +#if UNITY_ANDROID + [MenuItem(menuItemAutoIncVersion)] + static void ToggleUtilities() + { + autoIncrementVersion = !autoIncrementVersion; + Menu.SetChecked(menuItemAutoIncVersion, autoIncrementVersion); + + int newValue = (autoIncrementVersion) ? 1 : 0; + PlayerPrefs.SetInt(prefName, newValue); + PlayerPrefs.Save(); + + UnityEngine.Debug.Log("Auto Increment Version Code: " + autoIncrementVersion); + } +#endif + + public void OnPreprocessBuild(BuildReport report) + { +#if UNITY_ANDROID + // Generate error when Vulkan is selected as the perferred graphics API, which is not currently supported in Unity XR + if (!PlayerSettings.GetUseDefaultGraphicsAPIs(BuildTarget.Android)) + { + GraphicsDeviceType[] apis = PlayerSettings.GetGraphicsAPIs(BuildTarget.Android); + if (apis.Length >= 1 && apis[0] == GraphicsDeviceType.Vulkan) + { + throw new BuildFailedException("XR is currently not supported when using the Vulkan Graphics API. Please go to PlayerSettings and remove 'Vulkan' from the list of Graphics APIs."); + } + } +#endif + + buildStartTime = System.DateTime.Now; + buildGuid = System.Guid.NewGuid(); + + if (!report.summary.outputPath.Contains("OVRGradleTempExport")) + { + OVRPlugin.SetDeveloperMode(OVRPlugin.Bool.True); + OVRPlugin.AddCustomMetadata("build_type", "standard"); + } + + OVRPlugin.AddCustomMetadata("build_guid", buildGuid.ToString()); + OVRPlugin.AddCustomMetadata("target_platform", report.summary.platform.ToString()); + OVRPlugin.AddCustomMetadata("scripting_runtime_version", UnityEditor.PlayerSettings.scriptingRuntimeVersion.ToString()); + if (report.summary.platform == UnityEditor.BuildTarget.StandaloneWindows + || report.summary.platform == UnityEditor.BuildTarget.StandaloneWindows64) + { + OVRPlugin.AddCustomMetadata("target_oculus_platform", "rift"); + } +#if BUILDSESSION + StreamWriter writer = new StreamWriter("build_session", false); + UnityEngine.Debug.LogFormat("Build Session: {0}", buildGuid.ToString()); + writer.WriteLine(buildGuid.ToString()); + writer.Close(); +#endif + } + + public void OnPostGenerateGradleAndroidProject(string path) + { + UnityEngine.Debug.Log("OVRGradleGeneration triggered."); +#if UNITY_ANDROID + var targetOculusPlatform = new List(); + if (OVRDeviceSelector.isTargetDeviceGearVrOrGo) + { + targetOculusPlatform.Add("geargo"); + } + if (OVRDeviceSelector.isTargetDeviceQuest) + { + targetOculusPlatform.Add("quest"); + } + OVRPlugin.AddCustomMetadata("target_oculus_platform", String.Join("_", targetOculusPlatform.ToArray())); + UnityEngine.Debug.LogFormat(" GearVR or Go = {0} Quest = {1}", OVRDeviceSelector.isTargetDeviceGearVrOrGo, OVRDeviceSelector.isTargetDeviceQuest); + + bool isQuestOnly = OVRDeviceSelector.isTargetDeviceQuest && !OVRDeviceSelector.isTargetDeviceGearVrOrGo; + + if (isQuestOnly) + { + if (File.Exists(Path.Combine(path, "build.gradle"))) + { + try + { + string gradle = File.ReadAllText(Path.Combine(path, "build.gradle")); + + int v2Signingindex = gradle.IndexOf("v2SigningEnabled false"); + if (v2Signingindex != -1) + { + gradle = gradle.Replace("v2SigningEnabled false", "v2SigningEnabled true"); + System.IO.File.WriteAllText(Path.Combine(path, "build.gradle"), gradle); + } + } + catch (System.Exception e) + { + UnityEngine.Debug.LogWarningFormat("Unable to overwrite build.gradle, error {0}", e.Message); + } + } + else + { + UnityEngine.Debug.LogWarning("Unable to locate build.gradle"); + } + } + + PatchAndroidManifest(path); +#endif + } + +#if UNITY_ANDROID + public void PatchAndroidManifest(string path) + { + string manifestFolder = Path.Combine(path, "src/main"); + try + { + // Load android manfiest file + XmlDocument doc = new XmlDocument(); + doc.Load(manifestFolder + "/AndroidManifest.xml"); + + string androidNamepsaceURI; + XmlElement element = (XmlElement)doc.SelectSingleNode("/manifest"); + if (element == null) + { + UnityEngine.Debug.LogError("Could not find manifest tag in android manifest."); + return; + } + + // Get android namespace URI from the manifest + androidNamepsaceURI = element.GetAttribute("xmlns:android"); + if (!string.IsNullOrEmpty(androidNamepsaceURI)) + { + // Look for intent filter category and change LAUNCHER to INFO + XmlNodeList nodeList = doc.SelectNodes("/manifest/application/activity/intent-filter/category"); + foreach (XmlElement e in nodeList) + { + string attr = e.GetAttribute("name", androidNamepsaceURI); + if (attr == "android.intent.category.LAUNCHER") + { + e.SetAttribute("name", androidNamepsaceURI, "android.intent.category.INFO"); + } + } + + //If Quest is the target device, add the headtracking manifest tag + if (OVRDeviceSelector.isTargetDeviceQuest) + { + XmlNodeList manifestUsesFeatureNodes = doc.SelectNodes("/manifest/uses-feature"); + bool foundHeadtrackingTag = false; + foreach (XmlElement e in manifestUsesFeatureNodes) + { + string attr = e.GetAttribute("name", androidNamepsaceURI); + if (attr == "android.hardware.vr.headtracking") + foundHeadtrackingTag = true; + } + //If the tag already exists, don't patch with a new one. If it doesn't, we add it. + if (!foundHeadtrackingTag) + { + XmlNode manifestElement = doc.SelectSingleNode("/manifest"); + XmlElement headtrackingTag = doc.CreateElement("uses-feature"); + headtrackingTag.SetAttribute("name", androidNamepsaceURI, "android.hardware.vr.headtracking"); + headtrackingTag.SetAttribute("version", androidNamepsaceURI, "1"); + string tagRequired = OVRDeviceSelector.isTargetDeviceGearVrOrGo ? "false" : "true"; + headtrackingTag.SetAttribute("required", androidNamepsaceURI, tagRequired); + manifestElement.AppendChild(headtrackingTag); + } + } + + // Disable allowBackup in manifest and add Android NSC XML file + XmlElement applicationNode = (XmlElement)doc.SelectSingleNode("/manifest/application"); + if(applicationNode != null) + { + OVRProjectConfig projectConfig = OVRProjectConfig.GetProjectConfig(); + if (projectConfig != null) + { + if (projectConfig.disableBackups) + { + applicationNode.SetAttribute("allowBackup", androidNamepsaceURI, "false"); + } + + if (projectConfig.enableNSCConfig) + { + applicationNode.SetAttribute("networkSecurityConfig", androidNamepsaceURI, "@xml/network_sec_config"); + + string securityConfigFile = Path.Combine(Application.dataPath, "Oculus/VR/Editor/network_sec_config.xml"); + string xmlDirectory = Path.Combine(path, "src/main/res/xml"); + try + { + if (!Directory.Exists(xmlDirectory)) + { + Directory.CreateDirectory(xmlDirectory); + } + File.Copy(securityConfigFile, Path.Combine(xmlDirectory, "network_sec_config.xml"), true); + } + catch (Exception e) + { + UnityEngine.Debug.LogError(e.Message); + } + } + } + } + doc.Save(manifestFolder + "/AndroidManifest.xml"); + } + } + catch (Exception e) + { + UnityEngine.Debug.LogError(e.Message); + } + } +#endif + + public void OnPostprocessBuild(BuildReport report) + { +#if UNITY_ANDROID + if(autoIncrementVersion) + { + if((report.summary.options & BuildOptions.Development) == 0) + { + PlayerSettings.Android.bundleVersionCode++; + UnityEngine.Debug.Log("Incrementing version code to " + PlayerSettings.Android.bundleVersionCode); + } + } + + bool isExporting = true; + foreach (var step in report.steps) + { + if (step.name.Contains("Compile scripts") + || step.name.Contains("Building scenes") + || step.name.Contains("Writing asset files") + || step.name.Contains("Preparing APK resources") + || step.name.Contains("Creating Android manifest") + || step.name.Contains("Processing plugins") + || step.name.Contains("Exporting project") + || step.name.Contains("Building Gradle project")) + { + OVRPlugin.SendEvent("build_step_" + step.name.ToLower().Replace(' ', '_'), + step.duration.TotalSeconds.ToString(), "ovrbuild"); +#if BUILDSESSION + UnityEngine.Debug.LogFormat("build_step_" + step.name.ToLower().Replace(' ', '_') + ": {0}", step.duration.TotalSeconds.ToString()); +#endif + if(step.name.Contains("Building Gradle project")) + { + isExporting = false; + } + } + } + OVRPlugin.AddCustomMetadata("build_step_count", report.steps.Length.ToString()); + if (report.summary.outputPath.Contains("apk")) // Exclude Gradle Project Output + { + var fileInfo = new System.IO.FileInfo(report.summary.outputPath); + OVRPlugin.AddCustomMetadata("build_output_size", fileInfo.Length.ToString()); + } +#endif + if (!report.summary.outputPath.Contains("OVRGradleTempExport")) + { + OVRPlugin.SendEvent("build_complete", (System.DateTime.Now - buildStartTime).TotalSeconds.ToString(), "ovrbuild"); +#if BUILDSESSION + UnityEngine.Debug.LogFormat("build_complete: {0}", (System.DateTime.Now - buildStartTime).TotalSeconds.ToString()); +#endif + } + +#if UNITY_ANDROID + if (!isExporting) + { + // Get the hosts path to Android SDK + if (adbTool == null) + { + adbTool = new OVRADBTool(OVRConfig.Instance.GetAndroidSDKPath(false)); + } + + if (adbTool.isReady) + { + // Check to see if there are any ADB devices connected before continuing. + List devices = adbTool.GetDevices(); + if(devices.Count == 0) + { + return; + } + + // Clear current logs on device + Process adbClearProcess; + adbClearProcess = adbTool.RunCommandAsync(new string[] { "logcat --clear" }, null); + + // Add a timeout if we cannot get a response from adb logcat --clear in time. + Stopwatch timeout = new Stopwatch(); + timeout.Start(); + while (!adbClearProcess.WaitForExit(100)) + { + if (timeout.ElapsedMilliseconds > 2000) + { + adbClearProcess.Kill(); + return; + } + } + + // Check if existing ADB process is still running, kill if needed + if (adbProcess != null && !adbProcess.HasExited) + { + adbProcess.Kill(); + } + + // Begin thread to time upload and install + var thread = new Thread(delegate () + { + TimeDeploy(); + }); + thread.Start(); + } + } +#endif + } + +#if UNITY_ANDROID + public bool WaitForProcess; + public bool TransferStarted; + public DateTime UploadStart; + public DateTime UploadEnd; + public DateTime InstallEnd; + + public void TimeDeploy() + { + if (adbTool != null) + { + TransferStarted = false; + DataReceivedEventHandler outputRecieved = new DataReceivedEventHandler( + (s, e) => + { + if (e.Data.Length != 0 && !e.Data.Contains("\u001b")) + { + if (e.Data.Contains("free_cache")) + { + // Device recieved install command and is starting upload + UploadStart = System.DateTime.Now; + TransferStarted = true; + } + else if (e.Data.Contains("Running dexopt")) + { + // Upload has finished and Package Manager is starting install + UploadEnd = System.DateTime.Now; + } + else if (e.Data.Contains("dex2oat took")) + { + // Package Manager finished install + InstallEnd = System.DateTime.Now; + WaitForProcess = false; + } + else if (e.Data.Contains("W PackageManager")) + { + // Warning from Package Manager is a failure in the install process + WaitForProcess = false; + } + } + } + ); + + WaitForProcess = true; + adbProcess = adbTool.RunCommandAsync(new string[] { "logcat" }, outputRecieved); + + Stopwatch transferTimeout = new Stopwatch(); + transferTimeout.Start(); + while (adbProcess != null && !adbProcess.WaitForExit(100)) + { + if (!WaitForProcess) + { + adbProcess.Kill(); + float UploadTime = (float)(UploadEnd - UploadStart).TotalMilliseconds / 1000f; + float InstallTime = (float)(InstallEnd - UploadEnd).TotalMilliseconds / 1000f; + + if (UploadTime > 0f) + { + OVRPlugin.SendEvent("deploy_task", UploadTime.ToString(), "ovrbuild"); + } + if (InstallTime > 0f) + { + OVRPlugin.SendEvent("install_task", InstallTime.ToString(), "ovrbuild"); + } + } + + if (!TransferStarted && transferTimeout.ElapsedMilliseconds > 5000) + { + adbProcess.Kill(); + } + } + } + } +#endif +#else + { +#endif + } diff --git a/Assets/Oculus/VR/Editor/OVRGradleGeneration.cs.meta b/Assets/Oculus/VR/Editor/OVRGradleGeneration.cs.meta new file mode 100644 index 0000000..40adffc --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRGradleGeneration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee7053149e3a159409d4deeb2f2e687f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs b/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs new file mode 100644 index 0000000..2596dbd --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs @@ -0,0 +1,32 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEditor; +using UnityEngine; + +[CustomPropertyDrawer(typeof(OVRLayerAttribute))] +class LayerAttributeEditor : PropertyDrawer { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + // One line of oxygen free code. + property.intValue = EditorGUI.LayerField(position, label, property.intValue); + } +} diff --git a/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs.meta b/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs.meta new file mode 100644 index 0000000..f2197ff --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRLayerAttributeEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6c08392d306aac74a88ba571af63c985 +timeCreated: 1499749379 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRLint.cs b/Assets/Oculus/VR/Editor/OVRLint.cs new file mode 100644 index 0000000..60f2b61 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRLint.cs @@ -0,0 +1,930 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if UNITY_EDITOR + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using Assets.OVR.Scripts; + +/// +///Scans the project and warns about the following conditions: +///Audio sources > 16 +///Using MSAA levels other than recommended level +///Excessive pixel lights (>1 on Gear VR; >3 on Rift) +///Directional Lightmapping Modes (on Gear; use Non-Directional) +///Preload audio setting on individual audio clips +///Decompressing audio clips on load +///Disabling occlusion mesh +///Android target API level set to 21 or higher +///Unity skybox use (on by default, but if you can't see the skybox switching to Color is much faster on Gear) +///Lights marked as "baked" but that were not included in the last bake (and are therefore realtime). +///Lack of static batching and dynamic batching settings activated. +///Full screen image effects (Gear) +///Warn about large textures that are marked as uncompressed. +///32-bit depth buffer (use 16) +///Use of projectors (Gear; can be used carefully but slow enough to warrant a warning) +///Maybe in the future once quantified: Graphics jobs and IL2CPP on Gear. +///Real-time global illumination +///No texture compression, or non-ASTC texture compression as a global setting (Gear). +///Using deferred rendering +///Excessive texture resolution after LOD bias (>2k on Gear VR; >4k on Rift) +///Not using trilinear or aniso filtering and not generating mipmaps +///Excessive render scale (>1.2) +///Slow physics settings: Sleep Threshold < 0.005, Default Contact Offset < 0.01, Solver Iteration Count > 6 +///Shadows on when approaching the geometry or draw call limits +///Non-static objects with colliders that are missing rigidbodies on themselves or in the parent chain. +///No initialization of GPU/CPU throttling settings, or init to dangerous values (-1 or > 3) (Gear) +///Using inefficient effects: SSAO, motion blur, global fog, parallax mapping, etc. +///Too many Overlay layers +///Use of Standard shader or Standard Specular shader on Gear. More generally, excessive use of multipass shaders (legacy specular, etc). +///Multiple cameras with clears (on Gear, potential for excessive fill cost) +///Excessive shader passes (>2) +///Material pointers that have been instanced in the editor (esp. if we could determine that the instance has no deltas from the original) +///Excessive draw calls (>150 on Gear VR; >2000 on Rift) +///Excessive tris or verts (>100k on Gear VR; >1M on Rift) +///Large textures, lots of prefabs in startup scene (for bootstrap optimization) +///GPU skinning: testing Android-only, as most Rift devs are GPU-bound. +/// +[InitializeOnLoadAttribute] +public class OVRLint : EditorWindow +{ + //TODO: The following require reflection or static analysis. + ///Use of ONSP reflections (Gear) + ///Use of LoadLevelAsync / LoadLevelAdditiveAsync (on Gear, this kills frame rate so dramatically it's probably better to just go to black and load synchronously) + ///Use of Linq in non-editor assemblies (common cause of GCs). Minor: use of foreach. + ///Use of Unity WWW (exceptionally high overhead for large file downloads, but acceptable for tiny gets). + ///Declared but empty Awake/Start/Update/OnCollisionEnter/OnCollisionExit/OnCollisionStay. Also OnCollision* star methods that declare the Collision argument but do not reference it (omitting it short-circuits the collision contact calculation). + + private static List mRecords = new List(); + private static List mRuntimeEditModeRequiredRecords = new List(); +#if !UNITY_2017_2_OR_NEWER + private static bool mWasPlaying = false; +#endif + private Vector2 mScrollPosition; + + [MenuItem("Oculus/Tools/OVR Performance Lint Tool")] + static void Init() + { + // Get existing open window or if none, make a new one: + EditorWindow.GetWindow(typeof(OVRLint)); + OVRPlugin.SendEvent("perf_lint", "activated"); + OVRLint.RunCheck(); +#if !UNITY_2017_2_OR_NEWER + mWasPlaying = EditorApplication.isPlaying; +#endif + } + + OVRLint() + { +#if UNITY_2017_2_OR_NEWER + EditorApplication.playModeStateChanged += HandlePlayModeState; +#else + EditorApplication.playmodeStateChanged += () => + { + // When Unity starts playing, it would also trigger play mode changed event with isPlaying == false + // Fixes should only be applied when it was transitioned from playing mode + if (!EditorApplication.isPlaying && mWasPlaying) + { + ApplyEditModeRequiredFix(); + mWasPlaying = false; + } + else + { + mWasPlaying = true; + } + }; +#endif + } + +#if UNITY_2017_2_OR_NEWER + private static void HandlePlayModeState(PlayModeStateChange state) + { + if (state == PlayModeStateChange.EnteredEditMode) + { + ApplyEditModeRequiredFix(); + } + } +#endif + + private static void ApplyEditModeRequiredFix() + { + // Apply runtime fixes that require edit mode when applying fix + foreach (FixRecord record in mRuntimeEditModeRequiredRecords) + { + record.fixMethod(null, false, 0); + OVRPlugin.SendEvent("perf_lint_apply_fix", record.category); + record.complete = true; + } + mRuntimeEditModeRequiredRecords.Clear(); + } + + void OnGUI() + { + GUILayout.Label("OVR Performance Lint Tool", EditorStyles.boldLabel); + if (GUILayout.Button("Refresh", EditorStyles.toolbarButton, GUILayout.ExpandWidth(false))) + { + RunCheck(); + } + + string lastCategory = ""; + + mScrollPosition = EditorGUILayout.BeginScrollView(mScrollPosition); + + for (int x = 0; x < mRecords.Count; x++) + { + FixRecord record = mRecords[x]; + + if (!record.category.Equals(lastCategory)) // new category + { + lastCategory = record.category; + EditorGUILayout.Separator(); + EditorGUILayout.BeginHorizontal(); + GUILayout.Label(lastCategory, EditorStyles.label, GUILayout.Width(200)); + bool moreThanOne = (x + 1 < mRecords.Count && mRecords[x + 1].category.Equals(lastCategory)); + if (record.buttonNames != null && record.buttonNames.Length > 0) + { + if (moreThanOne) + { + GUILayout.Label("Apply to all:", EditorStyles.label, GUILayout.Width(75)); + for (int y = 0; y < record.buttonNames.Length; y++) + { + if (GUILayout.Button(record.buttonNames[y], EditorStyles.toolbarButton, GUILayout.Width(200))) + { + List recordsToProcess = new List(); + + for (int z = x; z < mRecords.Count; z++) + { + FixRecord thisRecord = mRecords[z]; + bool isLast = false; + if (z + 1 >= mRecords.Count || !mRecords[z + 1].category.Equals(lastCategory)) + { + isLast = true; + } + + if (!thisRecord.complete) + { + recordsToProcess.Add(thisRecord); + } + + if (isLast) + { + break; + } + } + + UnityEngine.Object[] undoObjects = new UnityEngine.Object[recordsToProcess.Count]; + for (int z = 0; z < recordsToProcess.Count; z++) + { + undoObjects[z] = recordsToProcess[z].targetObject; + } + Undo.RecordObjects(undoObjects, record.category + " (Multiple)"); + for (int z = 0; z < recordsToProcess.Count; z++) + { + FixRecord thisRecord = recordsToProcess[z]; + thisRecord.fixMethod(thisRecord.targetObject, (z + 1 == recordsToProcess.Count), y); + OVRPlugin.SendEvent("perf_lint_apply_fix", thisRecord.category); + thisRecord.complete = true; + } + } + } + } + } + EditorGUILayout.EndHorizontal(); + if (moreThanOne || record.targetObject) + { + GUILayout.Label(record.message); + } + } + + EditorGUILayout.BeginHorizontal(); + GUI.enabled = !record.complete; + if (record.targetObject) + { + EditorGUILayout.ObjectField(record.targetObject, record.targetObject.GetType(), true); + } + else + { + GUILayout.Label(record.message); + } + if (record.buttonNames != null) + { + for (int y = 0; y < record.buttonNames.Length; y++) + { + if (GUILayout.Button(record.buttonNames[y], EditorStyles.toolbarButton, GUILayout.Width(200))) + { + if (record.targetObject != null) + { + Undo.RecordObject(record.targetObject, record.category); + } + + if (record.editModeRequired) + { + // Add to the fix record list that requires edit mode + mRuntimeEditModeRequiredRecords.Add(record); + } + else + { + // Apply the fix directly + record.fixMethod(record.targetObject, true, y); + OVRPlugin.SendEvent("perf_lint_apply_fix", record.category); + record.complete = true; + } + + if (mRuntimeEditModeRequiredRecords.Count != 0) + { + // Stop the scene to apply edit mode required records + EditorApplication.ExecuteMenuItem("Edit/Play"); + } + } + } + + } + GUI.enabled = true; + EditorGUILayout.EndHorizontal(); + } + + EditorGUILayout.EndScrollView(); + } + + + public static int RunCheck() + { + mRecords.Clear(); + mRuntimeEditModeRequiredRecords.Clear(); + + CheckStaticCommonIssues(); +#if UNITY_ANDROID + CheckStaticAndroidIssues(); +#endif + + if (EditorApplication.isPlaying) + { + CheckRuntimeCommonIssues(); +#if UNITY_ANDROID + CheckRuntimeAndroidIssues(); +#endif + } + + mRecords.Sort(delegate (FixRecord record1, FixRecord record2) + { + return record1.category.CompareTo(record2.category); + }); + return mRecords.Count; + } + + static void AddFix(string category, string message, FixMethodDelegate method, UnityEngine.Object target, bool editModeRequired, params string[] buttons) + { + OVRPlugin.SendEvent("perf_lint_add_fix", category); + mRecords.Add(new FixRecord(category, message, method, target, editModeRequired, buttons)); + } + + static void CheckStaticCommonIssues() + { + if (OVRManager.IsUnityAlphaOrBetaVersion()) + { + AddFix("General", OVRManager.UnityAlphaOrBetaVersionWarningMessage, null, null, false); + } + + if (QualitySettings.anisotropicFiltering != AnisotropicFiltering.Enable && QualitySettings.anisotropicFiltering != AnisotropicFiltering.ForceEnable) + { + AddFix("Optimize Aniso", "Anisotropic filtering is recommended for optimal image sharpness and GPU performance.", delegate (UnityEngine.Object obj, bool last, int selected) + { + // Ideally this would be multi-option: offer Enable or ForceEnable. + QualitySettings.anisotropicFiltering = AnisotropicFiltering.Enable; + }, null, false, "Fix"); + } + +#if UNITY_ANDROID + int recommendedPixelLightCount = 1; +#else + int recommendedPixelLightCount = 3; +#endif + + if (QualitySettings.pixelLightCount > recommendedPixelLightCount) + { + AddFix("Optimize Pixel Light Count", "For GPU performance set no more than " + recommendedPixelLightCount + " pixel lights in Quality Settings (currently " + QualitySettings.pixelLightCount + ").", delegate (UnityEngine.Object obj, bool last, int selected) + { + QualitySettings.pixelLightCount = recommendedPixelLightCount; + }, null, false, "Fix"); + } + +#if false + // Should we recommend this? Seems to be mutually exclusive w/ dynamic batching. + if (!PlayerSettings.graphicsJobs) + { + AddFix ("Optimize Graphics Jobs", "For CPU performance, please use graphics jobs.", delegate(UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.graphicsJobs = true; + }, null, false, "Fix"); + } +#endif + +#if UNITY_2017_2_OR_NEWER + if ((!PlayerSettings.MTRendering || !PlayerSettings.GetMobileMTRendering(BuildTargetGroup.Android))) +#else + if ((!PlayerSettings.MTRendering || !PlayerSettings.mobileMTRendering)) +#endif + { + AddFix("Optimize MT Rendering", "For CPU performance, please enable multithreaded rendering.", delegate (UnityEngine.Object obj, bool last, int selected) + { +#if UNITY_2017_2_OR_NEWER + PlayerSettings.SetMobileMTRendering(BuildTargetGroup.Standalone, true); + PlayerSettings.SetMobileMTRendering(BuildTargetGroup.Android, true); +#else + PlayerSettings.MTRendering = PlayerSettings.mobileMTRendering = true; +#endif + }, null, false, "Fix"); + } + +#if UNITY_ANDROID + if (!PlayerSettings.use32BitDisplayBuffer) + { + AddFix("Optimize Display Buffer Format", "We recommend to enable use32BitDisplayBuffer.", delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.use32BitDisplayBuffer = true; + }, null, false, "Fix"); + } +#endif + +#if UNITY_2017_3_OR_NEWER && !UNITY_ANDROID + if (!PlayerSettings.VROculus.dashSupport) + { + AddFix("Enable Dash Integration", "We recommend to enable Dash Integration for better user experience.", delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.VROculus.dashSupport = true; + }, null, false, "Fix"); + } + + if (!PlayerSettings.VROculus.sharedDepthBuffer) + { + AddFix("Enable Depth Buffer Sharing", "We recommend to enable Depth Buffer Sharing for better user experience on Oculus Dash.", delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.VROculus.sharedDepthBuffer = true; + }, null, false, "Fix"); + } +#endif + + BuildTargetGroup target = EditorUserBuildSettings.selectedBuildTargetGroup; + var tier = UnityEngine.Rendering.GraphicsTier.Tier1; + var tierSettings = UnityEditor.Rendering.EditorGraphicsSettings.GetTierSettings(target, tier); + + if ((tierSettings.renderingPath == RenderingPath.DeferredShading || + tierSettings.renderingPath == RenderingPath.DeferredLighting)) + { + AddFix("Optimize Rendering Path", "For CPU performance, please do not use deferred shading.", delegate (UnityEngine.Object obj, bool last, int selected) + { + tierSettings.renderingPath = RenderingPath.Forward; + UnityEditor.Rendering.EditorGraphicsSettings.SetTierSettings(target, tier, tierSettings); + }, null, false, "Use Forward"); + } + + if (PlayerSettings.stereoRenderingPath == StereoRenderingPath.MultiPass) + { + AddFix("Optimize Stereo Rendering", "For CPU performance, please enable single-pass or instanced stereo rendering.", delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.stereoRenderingPath = StereoRenderingPath.Instancing; + }, null, false, "Fix"); + } + + if (LightmapSettings.lightmaps.Length > 0 && LightmapSettings.lightmapsMode != LightmapsMode.NonDirectional) + { + AddFix("Optimize Lightmap Directionality", "Switching from directional lightmaps to non-directional lightmaps can save a small amount of GPU time.", delegate (UnityEngine.Object obj, bool last, int selected) + { + LightmapSettings.lightmapsMode = LightmapsMode.NonDirectional; + }, null, false, "Switch to non-directional lightmaps"); + } + + if (Lightmapping.realtimeGI) + { + AddFix("Disable Realtime GI", "Disabling real-time global illumination can improve GPU performance.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Lightmapping.realtimeGI = false; + }, null, false, "Set Lightmapping.realtimeGI = false."); + } + + var lights = GameObject.FindObjectsOfType(); + for (int i = 0; i < lights.Length; ++i) + { +#if UNITY_2017_3_OR_NEWER + if (lights [i].type != LightType.Directional && !lights [i].bakingOutput.isBaked && IsLightBaked(lights[i])) +#else + if (lights[i].type != LightType.Directional && !lights[i].isBaked && IsLightBaked(lights[i])) +#endif + { + AddFix("Unbaked Lights", "The following lights in the scene are marked as Baked, but they don't have up to date lightmap data. Generate the lightmap data, or set it to auto-generate, in Window->Lighting->Settings.", null, lights[i], false, null); + } + + if (lights[i].shadows != LightShadows.None && !IsLightBaked(lights[i])) + { + AddFix("Optimize Shadows", "For CPU performance, consider disabling shadows on realtime lights.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Light thisLight = (Light)obj; + thisLight.shadows = LightShadows.None; + }, lights[i], false, "Set \"Shadow Type\" to \"No Shadows\""); + } + } + + var sources = GameObject.FindObjectsOfType(); + if (sources.Length > 16) + { + List playingAudioSources = new List(); + foreach (var audioSource in sources) + { + if (audioSource.isPlaying) + { + playingAudioSources.Add(audioSource); + } + } + + if (playingAudioSources.Count > 16) + { + // Sort playing audio sources by priority + playingAudioSources.Sort(delegate (AudioSource x, AudioSource y) + { + return x.priority.CompareTo(y.priority); + }); + for (int i = 16; i < playingAudioSources.Count; ++i) + { + AddFix("Optimize Audio Source Count", "For CPU performance, please disable all but the top 16 AudioSources.", delegate (UnityEngine.Object obj, bool last, int selected) + { + AudioSource audioSource = (AudioSource)obj; + audioSource.enabled = false; + }, playingAudioSources[i], false, "Disable"); + } + } + } + + var clips = GameObject.FindObjectsOfType(); + for (int i = 0; i < clips.Length; ++i) + { + if (clips[i].loadType == AudioClipLoadType.DecompressOnLoad) + { + AddFix("Audio Loading", "For fast loading, please don't use decompress on load for audio clips", delegate (UnityEngine.Object obj, bool last, int selected) + { + AudioClip thisClip = (AudioClip)obj; + if (selected == 0) + { + SetAudioLoadType(thisClip, AudioClipLoadType.CompressedInMemory, last); + } + else + { + SetAudioLoadType(thisClip, AudioClipLoadType.Streaming, last); + } + + }, clips[i], false, "Change to Compressed in Memory", "Change to Streaming"); + } + + if (clips[i].preloadAudioData) + { + AddFix("Audio Preload", "For fast loading, please don't preload data for audio clips.", delegate (UnityEngine.Object obj, bool last, int selected) + { + SetAudioPreload(clips[i], false, last); + }, clips[i], false, "Fix"); + } + } + + if (Physics.defaultContactOffset < 0.01f) + { + AddFix("Optimize Contact Offset", "For CPU performance, please don't use default contact offset below 0.01.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Physics.defaultContactOffset = 0.01f; + }, null, false, "Fix"); + } + + if (Physics.sleepThreshold < 0.005f) + { + AddFix("Optimize Sleep Threshold", "For CPU performance, please don't use sleep threshold below 0.005.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Physics.sleepThreshold = 0.005f; + }, null, false, "Fix"); + } + + if (Physics.defaultSolverIterations > 8) + { + AddFix("Optimize Solver Iterations", "For CPU performance, please don't use excessive solver iteration counts.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Physics.defaultSolverIterations = 8; + }, null, false, "Fix"); + } + + var materials = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < materials.Length; ++i) + { + if (materials[i].shader.name.Contains("Parallax") || materials[i].IsKeywordEnabled("_PARALLAXMAP")) + { + AddFix("Optimize Shading", "For GPU performance, please don't use parallax-mapped materials.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Material thisMaterial = (Material)obj; + if (thisMaterial.IsKeywordEnabled("_PARALLAXMAP")) + { + thisMaterial.DisableKeyword("_PARALLAXMAP"); + } + + if (thisMaterial.shader.name.Contains("Parallax")) + { + var newName = thisMaterial.shader.name.Replace("-ParallaxSpec", "-BumpSpec"); + newName = newName.Replace("-Parallax", "-Bump"); + var newShader = Shader.Find(newName); + if (newShader) + { + thisMaterial.shader = newShader; + } + else + { + Debug.LogWarning("Unable to find a replacement for shader " + materials[i].shader.name); + } + } + }, materials[i], false, "Fix"); + } + } + + var renderers = GameObject.FindObjectsOfType(); + for (int i = 0; i < renderers.Length; ++i) + { + if (renderers[i].sharedMaterial == null) + { + AddFix("Instanced Materials", "Please avoid instanced materials on renderers.", null, renderers[i], false); + } + } + + var overlays = GameObject.FindObjectsOfType(); + if (overlays.Length > 4) + { + AddFix("Optimize VR Layer Count", "For GPU performance, please use 4 or fewer VR layers.", delegate (UnityEngine.Object obj, bool last, int selected) + { + for (int i = 4; i < OVROverlay.instances.Length; ++i) + { + OVROverlay.instances[i].enabled = false; + } + }, null, false, "Fix"); + } + + var splashScreen = PlayerSettings.virtualRealitySplashScreen; + if (splashScreen != null) + { + if (splashScreen.filterMode != FilterMode.Trilinear) + { + AddFix("Optimize VR Splash Filtering", "For visual quality, please use trilinear filtering on your VR splash screen.", delegate (UnityEngine.Object obj, bool last, int EditorSelectedRenderState) + { + var assetPath = AssetDatabase.GetAssetPath(splashScreen); + var importer = (TextureImporter)TextureImporter.GetAtPath(assetPath); + importer.filterMode = FilterMode.Trilinear; + AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate); + }, null, false, "Fix"); + } + + if (splashScreen.mipmapCount <= 1) + { + AddFix("Generate VR Splash Mipmaps", "For visual quality, please use mipmaps with your VR splash screen.", delegate (UnityEngine.Object obj, bool last, int EditorSelectedRenderState) + { + var assetPath = AssetDatabase.GetAssetPath(splashScreen); + var importer = (TextureImporter)TextureImporter.GetAtPath(assetPath); + importer.mipmapEnabled = true; + AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate); + }, null, false, "Fix"); + } + } + } + + static void CheckRuntimeCommonIssues() + { + if (!OVRPlugin.occlusionMesh) + { + AddFix("Occlusion Mesh", "Enabling the occlusion mesh saves substantial GPU resources, generally with no visual impact. Enable unless you have an exceptional use case.", delegate (UnityEngine.Object obj, bool last, int selected) + { + OVRPlugin.occlusionMesh = true; + }, null, false, "Set OVRPlugin.occlusionMesh = true"); + } + + if (OVRManager.instance != null && !OVRManager.instance.useRecommendedMSAALevel) + { + AddFix("Optimize MSAA", "OVRManager can select the optimal antialiasing for the installed hardware at runtime. Recommend enabling this.", delegate (UnityEngine.Object obj, bool last, int selected) + { + var ovrManagers = GameObject.FindObjectsOfType(); + foreach (var ovrManager in ovrManagers) + { + ovrManager.useRecommendedMSAALevel = true; + } + }, null, true, "Stop Play and Fix"); + } + +#if UNITY_2017_2_OR_NEWER + if (UnityEngine.XR.XRSettings.eyeTextureResolutionScale > 1.5) +#else + if (UnityEngine.VR.VRSettings.renderScale > 1.5) +#endif + { + AddFix("Optimize Render Scale", "Render scale above 1.5 is extremely expensive on the GPU, with little if any positive visual benefit.", delegate (UnityEngine.Object obj, bool last, int selected) + { +#if UNITY_2017_2_OR_NEWER + UnityEngine.XR.XRSettings.eyeTextureResolutionScale = 1.5f; +#else + UnityEngine.VR.VRSettings.renderScale = 1.5f; +#endif + }, null, false, "Fix"); + } + } + + static void CheckStaticAndroidIssues() + { + // Check that the minSDKVersion meets requirement, 21 for Gear and Go, 23 for Quest + AndroidSdkVersions recommendedAndroidMinSdkVersion = AndroidSdkVersions.AndroidApiLevel21; + if (OVRDeviceSelector.isTargetDeviceQuest) + { + recommendedAndroidMinSdkVersion = AndroidSdkVersions.AndroidApiLevel23; + } + if ((int)PlayerSettings.Android.minSdkVersion < (int)recommendedAndroidMinSdkVersion) + { + AddFix("Set Min Android API Level", "Please require at least API level " + (int)recommendedAndroidMinSdkVersion, delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.Android.minSdkVersion = recommendedAndroidMinSdkVersion; + }, null, false, "Fix"); + } + + // Check that compileSDKVersion meets minimal version 26 as required for Quest's headtracking feature + // Unity Sets compileSDKVersion in Gradle as the value used in targetSdkVersion + AndroidSdkVersions requiredAndroidTargetSdkVersion = AndroidSdkVersions.AndroidApiLevel26; + if (OVRDeviceSelector.isTargetDeviceQuest && + (int)PlayerSettings.Android.targetSdkVersion < (int)requiredAndroidTargetSdkVersion) + { + AddFix("Set Android Target SDK Level", "Oculus Quest apps require at least target API level " + + (int)requiredAndroidTargetSdkVersion, delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.Android.targetSdkVersion = requiredAndroidTargetSdkVersion; + }, null, false, "Fix"); + } + + if (!PlayerSettings.gpuSkinning) + { + AddFix("Optimize GPU Skinning", "If you are CPU-bound, consider using GPU skinning.", + delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.gpuSkinning = true; + }, null, false, "Fix"); + } + + + if (RenderSettings.skybox) + { + AddFix("Optimize Clearing", "For GPU performance, please don't use Unity's built-in Skybox.", delegate (UnityEngine.Object obj, bool last, int selected) + { + RenderSettings.skybox = null; + }, null, false, "Clear Skybox"); + } + + var materials = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < materials.Length; ++i) + { + if (materials[i].IsKeywordEnabled("_SPECGLOSSMAP") || materials[i].IsKeywordEnabled("_METALLICGLOSSMAP")) + { + AddFix("Optimize Specular Material", "For GPU performance, please don't use specular shader on materials.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Material thisMaterial = (Material)obj; + thisMaterial.DisableKeyword("_SPECGLOSSMAP"); + thisMaterial.DisableKeyword("_METALLICGLOSSMAP"); + }, materials[i], false, "Fix"); + } + + if (materials[i].passCount > 1) + { + AddFix("Material Passes", "Please use 2 or fewer passes in materials.", null, materials[i], false); + } + } + + ScriptingImplementation backend = PlayerSettings.GetScriptingBackend(UnityEditor.BuildTargetGroup.Android); + if (backend != UnityEditor.ScriptingImplementation.IL2CPP) + { + AddFix("Optimize Scripting Backend", "For CPU performance, please use IL2CPP.", delegate (UnityEngine.Object obj, bool last, int selected) + { + PlayerSettings.SetScriptingBackend(UnityEditor.BuildTargetGroup.Android, UnityEditor.ScriptingImplementation.IL2CPP); + }, null, false, "Fix"); + } + + var monoBehaviours = GameObject.FindObjectsOfType(); + System.Type effectBaseType = System.Type.GetType("UnityStandardAssets.ImageEffects.PostEffectsBase"); + if (effectBaseType != null) + { + for (int i = 0; i < monoBehaviours.Length; ++i) + { + if (monoBehaviours[i].GetType().IsSubclassOf(effectBaseType)) + { + AddFix("Image Effects", "Please don't use image effects.", null, monoBehaviours[i], false); + } + } + } + + var textures = Resources.FindObjectsOfTypeAll(); + + int maxTextureSize = 1024 * (1 << QualitySettings.masterTextureLimit); + maxTextureSize = maxTextureSize * maxTextureSize; + + for (int i = 0; i < textures.Length; ++i) + { + if (textures[i].filterMode == FilterMode.Trilinear && textures[i].mipmapCount == 1) + { + AddFix("Optimize Texture Filtering", "For GPU performance, please generate mipmaps or disable trilinear filtering for textures.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Texture2D thisTexture = (Texture2D)obj; + if (selected == 0) + { + thisTexture.filterMode = FilterMode.Bilinear; + } + else + { + SetTextureUseMips(thisTexture, true, last); + } + }, textures[i], false, "Switch to Bilinear", "Generate Mipmaps"); + } + } + + var projectors = GameObject.FindObjectsOfType(); + if (projectors.Length > 0) + { + AddFix("Optimize Projectors", "For GPU performance, please don't use projectors.", delegate (UnityEngine.Object obj, bool last, int selected) + { + Projector[] thisProjectors = GameObject.FindObjectsOfType(); + for (int i = 0; i < thisProjectors.Length; ++i) + { + thisProjectors[i].enabled = false; + } + }, null, false, "Disable Projectors"); + } + + if (EditorUserBuildSettings.androidBuildSubtarget != MobileTextureSubtarget.ASTC) + { + AddFix("Optimize Texture Compression", "For GPU performance, please use ASTC.", delegate (UnityEngine.Object obj, bool last, int selected) + { + EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ASTC; + }, null, false, "Fix"); + } + + var cameras = GameObject.FindObjectsOfType(); + int clearCount = 0; + for (int i = 0; i < cameras.Length; ++i) + { + if (cameras[i].clearFlags != CameraClearFlags.Nothing && cameras[i].clearFlags != CameraClearFlags.Depth) + ++clearCount; + } + + if (clearCount > 2) + { + AddFix("Camera Clears", "Please use 2 or fewer clears.", null, null, false); + } + + for (int i = 0; i < cameras.Length; ++i) + { + if (cameras[i].forceIntoRenderTexture) + { + AddFix("Optimize Mobile Rendering", "For GPU performance, please don't enable forceIntoRenderTexture on your camera, this might be a flag pollution created by post process stack you used before, \nif your post process had already been turned off, we strongly encourage you to disable forceIntoRenderTexture. If you still want to use post process for some reasons, \nyou can leave this one on, but be warned, enabling this flag will introduce huge GPU performance cost. To view your flag status, please turn on you inspector's debug mode", + delegate (UnityEngine.Object obj, bool last, int selected) + { + Camera thisCamera = (Camera)obj; + thisCamera.forceIntoRenderTexture = false; + }, cameras[i], false, "Disable forceIntoRenderTexture"); + } + } + } + + static void CheckRuntimeAndroidIssues() + { + if (UnityStats.usedTextureMemorySize + UnityStats.vboTotalBytes > 1000000) + { + AddFix("Graphics Memory", "Please use less than 1GB of vertex and texture memory.", null, null, false); + } + + if (OVRManager.cpuLevel < 0 || OVRManager.cpuLevel > 3) + { + AddFix("Optimize CPU level", "For battery life, please use a safe CPU level.", delegate (UnityEngine.Object obj, bool last, int selected) + { + OVRManager.cpuLevel = 2; + }, null, false, "Set to CPU2"); + } + + if (OVRManager.gpuLevel < 0 || OVRManager.gpuLevel > 3) + { + AddFix("Optimize GPU level", "For battery life, please use a safe GPU level.", delegate (UnityEngine.Object obj, bool last, int selected) + { + OVRManager.gpuLevel = 2; + }, null, false, "Set to GPU2"); + } + + if (UnityStats.triangles > 100000 || UnityStats.vertices > 100000) + { + AddFix("Triangles and Verts", "Please use less than 100000 triangles or vertices.", null, null, false); + } + + // Warn for 50 if in non-VR mode? + if (UnityStats.drawCalls > 100) + { + AddFix("Draw Calls", "Please use less than 100 draw calls.", null, null, false); + } + } + + + enum LightmapType { Realtime = 4, Baked = 2, Mixed = 1 }; + + static bool IsLightBaked(Light light) + { + return light.lightmapBakeType == LightmapBakeType.Baked; + } + + static void SetAudioPreload(AudioClip clip, bool preload, bool refreshImmediately) + { + if (clip != null) + { + string assetPath = AssetDatabase.GetAssetPath(clip); + AudioImporter importer = AssetImporter.GetAtPath(assetPath) as AudioImporter; + if (importer != null) + { + if (preload != importer.preloadAudioData) + { + importer.preloadAudioData = preload; + + AssetDatabase.ImportAsset(assetPath); + if (refreshImmediately) + { + AssetDatabase.Refresh(); + } + } + } + } + } + + static void SetAudioLoadType(AudioClip clip, AudioClipLoadType loadType, bool refreshImmediately) + { + if (clip != null) + { + string assetPath = AssetDatabase.GetAssetPath(clip); + AudioImporter importer = AssetImporter.GetAtPath(assetPath) as AudioImporter; + if (importer != null) + { + if (loadType != importer.defaultSampleSettings.loadType) + { + AudioImporterSampleSettings settings = importer.defaultSampleSettings; + settings.loadType = loadType; + importer.defaultSampleSettings = settings; + + AssetDatabase.ImportAsset(assetPath); + if (refreshImmediately) + { + AssetDatabase.Refresh(); + } + } + } + } + } + + public static void SetTextureUseMips(Texture texture, bool useMips, bool refreshImmediately) + { + if (texture != null) + { + string assetPath = AssetDatabase.GetAssetPath(texture); + TextureImporter tImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter; + if (tImporter != null && tImporter.mipmapEnabled != useMips) + { + tImporter.mipmapEnabled = useMips; + + AssetDatabase.ImportAsset(assetPath); + if (refreshImmediately) + { + AssetDatabase.Refresh(); + } + } + } + } + + static T FindComponentInParents(GameObject obj) where T : Component + { + T component = null; + if (obj != null) + { + Transform parent = obj.transform.parent; + if (parent != null) + { + do + { + component = parent.GetComponent(typeof(T)) as T; + parent = parent.parent; + } while (parent != null && component == null); + } + } + return component; + } +} + +#endif diff --git a/Assets/Oculus/VR/Editor/OVRLint.cs.meta b/Assets/Oculus/VR/Editor/OVRLint.cs.meta new file mode 100644 index 0000000..9b3f4a7 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRLint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f6763ce4cfe57644a593d773ec6e3cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs b/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs new file mode 100644 index 0000000..06df42c --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs @@ -0,0 +1,84 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System.IO; + +public class OVRManifestPreprocessor +{ + [MenuItem("Oculus/Tools/Create store-compatible AndroidManifest.xml", false, 100000)] + public static void GenerateManifestForSubmission() + { + var so = ScriptableObject.CreateInstance(typeof(OVRPluginUpdaterStub)); + var script = MonoScript.FromScriptableObject(so); + string assetPath = AssetDatabase.GetAssetPath(script); + string editorDir = Directory.GetParent(assetPath).FullName; + string srcFile = editorDir + "/AndroidManifest.OVRSubmission.xml"; + + if (!File.Exists(srcFile)) + { + Debug.LogError("Cannot find Android manifest template for submission." + + " Please delete the OVR folder and reimport the Oculus Utilities."); + return; + } + + string manifestFolder = Application.dataPath + "/Plugins/Android"; + + if (!Directory.Exists(manifestFolder)) + Directory.CreateDirectory(manifestFolder); + + string dstFile = manifestFolder + "/AndroidManifest.xml"; + + if (File.Exists(dstFile)) + { + Debug.LogWarning("Cannot create Oculus store-compatible manifest due to conflicting file: \"" + + dstFile + "\". Please remove it and try again."); + return; + } + + string manifestText = File.ReadAllText(srcFile); + int dofTextIndex = manifestText.IndexOf(""); + if (dofTextIndex != -1) + { + if (OVRDeviceSelector.isTargetDeviceQuest) + { + string headTrackingFeatureText = string.Format("", + OVRDeviceSelector.isTargetDeviceGearVrOrGo ? "false" : "true"); + manifestText = manifestText.Insert(dofTextIndex, headTrackingFeatureText); + } + } + else + { + Debug.LogWarning("Manifest error: unable to locate headset DoF mode"); + } + + System.IO.File.WriteAllText(dstFile, manifestText); + AssetDatabase.Refresh(); + } + + [MenuItem("Oculus/Tools/Remove AndroidManifest.xml")] + public static void RemoveAndroidManifest() + { + AssetDatabase.DeleteAsset("Assets/Plugins/Android/AndroidManifest.xml"); + AssetDatabase.Refresh(); + } +} diff --git a/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs.meta b/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs.meta new file mode 100644 index 0000000..2d76cf5 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRManifestPreprocessor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: fb6426f323b7f024ebb25886b5182c4c +timeCreated: 1462825988 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: + - renderFrom: {fileID: 168286, guid: a5014611cefbb6b4398b7e4c82203d08, type: 2} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRPlatformTool.cs b/Assets/Oculus/VR/Editor/OVRPlatformTool.cs new file mode 100644 index 0000000..8338afa --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPlatformTool.cs @@ -0,0 +1,1264 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Text.RegularExpressions; +using System.Threading; +using UnityEditor; +using UnityEngine; +using UnityEngine.Networking; + +namespace Assets.Oculus.VR.Editor +{ + public class OVRPlatformTool : EditorWindow + { + public enum TargetPlatform + { + Rift, + OculusGoGearVR, + Quest, + None, + }; + + const string urlPlatformUtil = + "https://www.oculus.com/download_app/?id=1076686279105243"; + + static private Process ovrPlatUtilProcess; + Vector2 commandMenuScroll; + Vector2 debugLogScroll; + + static public string log; + + private static bool activeProcess = false; + private static bool ranSelfUpdate = false; + private static int retryCount = 0; + + private const float buttonPadding = 5.0f; + + private bool showOptionalCommands = false; + private bool show2DCommands = false; + private bool showExpansionFileCommands = false; + private bool showRedistCommands = false; + + private const float INDENT_SPACING = 15f; + private const float SINGLE_LINE_SPACING = 18f; + private const float ASSET_CONFIG_BACKGROUND_PADDING = 10f; + private const float DEFAULT_LABEL_WIDTH = 180f; + private const int MAX_DOWNLOAD_RETRY_COUNT = 2; + + private static GUIStyle boldFoldoutStyle; + + string[] platformOptions = new string[] + { + "Oculus Rift", + "Oculus Go | Gear VR", + "Oculus Quest" + }; + + string[] gamepadOptions = new string[] + { + "Off", + "Twinstick", + "Right D Pad", + "Left D Pad" + }; + + [MenuItem("Oculus/Tools/Oculus Platform Tool")] + static void Init() + { + OVRPlatformTool.log = string.Empty; + // Get existing open window or if none, make a new one: + EditorWindow.GetWindow(typeof(OVRPlatformTool)); + + // Populate initial target platform value based on OVRDeviceSelector +#if UNITY_ANDROID + if (OVRDeviceSelector.isTargetDeviceQuest) + { + OVRPlatformToolSettings.TargetPlatform = TargetPlatform.Quest; + } + else + { + OVRPlatformToolSettings.TargetPlatform = TargetPlatform.OculusGoGearVR; + } +#else + OVRPlatformToolSettings.TargetPlatform = TargetPlatform.Rift; +#endif + EditorUtility.SetDirty(OVRPlatformToolSettings.Instance); + + // Load redist packages by calling list-redists in the CLI + string dataPath = Application.dataPath; + var thread = new Thread(delegate () { + retryCount = 0; + LoadRedistPackages(dataPath); + }); + thread.Start(); + + OVRPlugin.SendEvent("oculus_platform_tool", "show_window"); + } + + void OnGUI() + { + if (boldFoldoutStyle == null) + { + boldFoldoutStyle = new GUIStyle(EditorStyles.foldout); + boldFoldoutStyle.fontStyle = FontStyle.Bold; + } + + EditorGUIUtility.labelWidth = DEFAULT_LABEL_WIDTH; + + GUILayout.Label("OVR Platform Tool", EditorStyles.boldLabel); + this.titleContent.text = "OVR Platform Tool"; + + GUIContent TargetPlatformLabel = new GUIContent("Target Oculus Platform"); + OVRPlatformToolSettings.TargetPlatform = (TargetPlatform)MakePopup(TargetPlatformLabel, (int)OVRPlatformToolSettings.TargetPlatform, platformOptions); + SetOVRProjectConfig(OVRPlatformToolSettings.TargetPlatform); + SetDirtyOnGUIChange(); + + commandMenuScroll = EditorGUILayout.BeginScrollView(commandMenuScroll, GUILayout.Height(Screen.height / 2)); + { + // Add the UI Form + EditorGUI.BeginChangeCheck(); + GUILayout.Space(15.0f); + + // App ID + GUIContent AppIDLabel = new GUIContent("Oculus Application ID [?]: ", + "This AppID will be used when uploading the build."); + OVRPlatformToolSettings.AppID = MakeTextBox(AppIDLabel, OVRPlatformToolSettings.AppID); + + // App Token + GUIContent AppTokenLabel = new GUIContent("Oculus App Token [?]: ", + "You can get your app token from your app's Oculus API Dashboard."); + OVRPlatformToolSettings.AppToken = MakePasswordBox(AppTokenLabel, OVRPlatformToolSettings.AppToken); + + // Release Channel + GUIContent ReleaseChannelLabel = new GUIContent("Release Channel [?]: ", + "Specify the releaes channel of the new build, you can reassign to other channels after upload."); + OVRPlatformToolSettings.ReleaseChannel = MakeTextBox(ReleaseChannelLabel, OVRPlatformToolSettings.ReleaseChannel); + + // Releaes Note + GUIContent ReleaseNoteLabel = new GUIContent("Release Note: "); + OVRPlatformToolSettings.ReleaseNote = MakeTextBox(ReleaseNoteLabel, OVRPlatformToolSettings.ReleaseNote); + + // Platform specific fields + if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.Rift) + { + GUIContent BuildDirLabel = new GUIContent("Rift Build Directory [?]: ", + "The full path to the directory containing your Rift build files."); + OVRPlatformToolSettings.RiftBuildDirectory = MakeFileDirectoryField(BuildDirLabel, OVRPlatformToolSettings.RiftBuildDirectory, + "Choose Rifle Build Directory"); + + GUIContent BuildVersionLabel = new GUIContent("Build Version [?]: ", + "The version number shown to users."); + OVRPlatformToolSettings.RiftBuildVersion = MakeTextBox(BuildVersionLabel, OVRPlatformToolSettings.RiftBuildVersion); + + GUIContent LaunchFileLabel = new GUIContent("Launch File Path [?]: ", + "The full path to the executable that launches your app."); + OVRPlatformToolSettings.RiftLaunchFile = MakeFileDirectoryField(LaunchFileLabel, OVRPlatformToolSettings.RiftLaunchFile, + "Choose Launch File", true, "exe"); + } + else + { + GUIContent ApkPathLabel = new GUIContent("Build APK File Path [?]: ", + "The full path to the APK file."); + OVRPlatformToolSettings.ApkBuildPath = MakeFileDirectoryField(ApkPathLabel, OVRPlatformToolSettings.ApkBuildPath, + "Choose APK File", true, "apk"); + + if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.OculusGoGearVR) + { + // Go and Gear VR specific fields + } + else if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.Quest) + { + // Quest specific fields + } + } + + showOptionalCommands = EditorGUILayout.Foldout(showOptionalCommands, "Optional Commands", boldFoldoutStyle); + if (showOptionalCommands) + { + IncrementIndent(); + + if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.Rift) + { + // Launch Parameters + GUIContent LaunchParamLabel = new GUIContent("Launch Parameters [?]: ", + "Specifies any arguments passed to the launcher."); + OVRPlatformToolSettings.RiftLaunchParams = MakeTextBox(LaunchParamLabel, OVRPlatformToolSettings.RiftLaunchParams); + + GUIContent FirewallExceptionLabel = new GUIContent("Firewall Exception [?]: ", + "Specifies if a Windows Firewall exception is required."); + OVRPlatformToolSettings.RiftFirewallException = MakeToggleBox(FirewallExceptionLabel, OVRPlatformToolSettings.RiftFirewallException); + + GUIContent GamepadEmulationLabel = new GUIContent("Gamepad Emulation [?]: ", + "Specifies the type of gamepad emulation used by the Oculus Touch controllers."); + OVRPlatformToolSettings.RiftGamepadEmulation = (OVRPlatformToolSettings.GamepadType)MakePopup(GamepadEmulationLabel, (int)OVRPlatformToolSettings.RiftGamepadEmulation, gamepadOptions); + + show2DCommands = EditorGUILayout.Foldout(show2DCommands, "2D", boldFoldoutStyle); + if (show2DCommands) + { + IncrementIndent(); + + // 2D Launch File + GUIContent LaunchFile2DLabel = new GUIContent("2D Launch File [?]: ", + "The full path to the executable that launches your app in 2D mode."); + OVRPlatformToolSettings.Rift2DLaunchFile = MakeFileDirectoryField(LaunchFile2DLabel, OVRPlatformToolSettings.Rift2DLaunchFile, + "Choose 2D Launch File", true, "exe"); + + // 2D Launch Parameters + GUIContent LaunchParam2DLabel = new GUIContent("2D Launch Parameters [?]: ", + "Specifies any arguments passed to the launcher in 2D mode."); + OVRPlatformToolSettings.Rift2DLaunchParams = MakeTextBox(LaunchParam2DLabel, OVRPlatformToolSettings.Rift2DLaunchParams); + + DecrementIndent(); + } + + showRedistCommands = EditorGUILayout.Foldout(showRedistCommands, "Redistributable Packages", boldFoldoutStyle); + if (showRedistCommands) + { + IncrementIndent(); + + for (int i = 0; i < OVRPlatformToolSettings.RiftRedistPackages.Count; i++) + { + GUIContent RedistPackageLabel = new GUIContent(OVRPlatformToolSettings.RiftRedistPackages[i].name); + OVRPlatformToolSettings.RiftRedistPackages[i].include = MakeToggleBox(RedistPackageLabel, OVRPlatformToolSettings.RiftRedistPackages[i].include); + } + + DecrementIndent(); + } + + showExpansionFileCommands = EditorGUILayout.Foldout(showExpansionFileCommands, "Expansion Files", boldFoldoutStyle); + if (showExpansionFileCommands) + { + IncrementIndent(); + + // Language Pack Directory + GUIContent LanguagePackLabel = new GUIContent("Language Pack Directory [?]: ", + "The full path to the directory containing the language packs"); + OVRPlatformToolSettings.LanguagePackDirectory = MakeFileDirectoryField(LanguagePackLabel, OVRPlatformToolSettings.LanguagePackDirectory, + "Choose Language Pack Directory"); + } + } + else + { + if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.OculusGoGearVR) + { + // Go and Gear VR specific optional fields + } + else if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.Quest) + { + // Quest specific optional fields + } + + showExpansionFileCommands = EditorGUILayout.Foldout(showExpansionFileCommands, "Expansion Files", boldFoldoutStyle); + if (showExpansionFileCommands) + { + IncrementIndent(); + + // OBB File Path + GUIContent ObbPathLabel = new GUIContent("OBB File Path [?]: ", + "The full path to the OBB file."); + OVRPlatformToolSettings.ObbFilePath = MakeFileDirectoryField(ObbPathLabel, OVRPlatformToolSettings.ObbFilePath, + "Choose OBB File", true, "obb"); + } + } + + if (showExpansionFileCommands) + { + // Assets Directory + GUIContent AssetsDirLabel = new GUIContent("Assets Directory [?]: ", + "The full path to the directory with DLCs for this build."); + string assetsDirectory = MakeFileDirectoryField(AssetsDirLabel, OVRPlatformToolSettings.AssetsDirectory, + "Choose Assets Directory"); + + if (assetsDirectory != OVRPlatformToolSettings.AssetsDirectory) + { + OVRPlatformToolSettings.AssetsDirectory = assetsDirectory; + OVRPlatformToolSettings.AssetConfigs.Clear(); + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.AssetsDirectory)) + { + DirectoryInfo dirInfo = new DirectoryInfo(OVRPlatformToolSettings.AssetsDirectory); + FileInfo[] assetFiles = dirInfo.GetFiles(); + foreach (FileInfo f in assetFiles) + { + OVRPlatformToolSettings.AssetConfigs.Add(new AssetConfig(f.Name)); + } + } + EditorUtility.SetDirty(OVRPlatformToolSettings.Instance); + } + + // Display bordered asset configuration list + GUILayout.Space(3f); + Rect rect = GUILayoutUtility.GetRect(0, GetAssetConfigElementHeight() + (ASSET_CONFIG_BACKGROUND_PADDING * 2), + GUILayout.ExpandWidth(true)); + rect.x += (EditorGUI.indentLevel * INDENT_SPACING + 5); + rect.width -= (EditorGUI.indentLevel * INDENT_SPACING + 10); + DrawAssetConfigList(rect); + + DecrementIndent(); + } + + EditorGUI.indentLevel--; + } + + if (EditorGUI.EndChangeCheck()) + { + EditorUtility.SetDirty(OVRPlatformToolSettings.Instance); + } + } + EditorGUILayout.EndScrollView(); + + GUILayout.Space(SINGLE_LINE_SPACING); + + GUILayout.FlexibleSpace(); + + // Run OVR Lint Option + EditorGUIUtility.labelWidth = DEFAULT_LABEL_WIDTH; + GUIContent RunOvrLintLabel = new GUIContent("Run OVR Lint (Recommended) [?]: ", + "Run OVR Lint tool to ensure project is optimized for performance and meets Oculus packaging requirement for publishing."); + OVRPlatformToolSettings.RunOvrLint = MakeToggleBox(RunOvrLintLabel, OVRPlatformToolSettings.RunOvrLint); + + // Add an Upload button + GUI.enabled = !activeProcess; + GUIContent btnTxt = new GUIContent("Upload"); + var rt = GUILayoutUtility.GetRect(btnTxt, GUI.skin.button, GUILayout.ExpandWidth(false)); + var btnYPos = rt.center.y; + rt.center = new Vector2(EditorGUIUtility.currentViewWidth / 2 - rt.width / 2 - buttonPadding, btnYPos); + if (GUI.Button(rt, btnTxt, GUI.skin.button)) + { + OVRPlugin.SendEvent("oculus_platform_tool", "upload"); + OVRPlatformTool.log = string.Empty; + OnUpload(OVRPlatformToolSettings.TargetPlatform); + } + + // Add a cancel button + GUI.enabled = activeProcess; + btnTxt = new GUIContent("Cancel"); + rt = GUILayoutUtility.GetRect(btnTxt, GUI.skin.button, GUILayout.ExpandWidth(false)); + rt.center = new Vector2(EditorGUIUtility.currentViewWidth / 2 + rt.width / 2 + buttonPadding, btnYPos); + if (GUI.Button(rt, btnTxt, GUI.skin.button)) + { + if (EditorUtility.DisplayDialog("Cancel Upload Process", "Are you sure you want to cancel the upload process?", "Yes", "No")) + { + if (ovrPlatUtilProcess != null) + { + ovrPlatUtilProcess.Kill(); + OVRPlatformTool.log += "Upload process was canceled\n"; + } + } + } + + GUI.enabled = true; + GUILayout.FlexibleSpace(); + + GUILayout.Space(SINGLE_LINE_SPACING); + + debugLogScroll = EditorGUILayout.BeginScrollView(debugLogScroll); + GUIStyle logBoxStyle = new GUIStyle(); + logBoxStyle.margin.left = 5; + logBoxStyle.wordWrap = true; + logBoxStyle.normal.textColor = logBoxStyle.focused.textColor = EditorStyles.label.normal.textColor; + EditorGUILayout.SelectableLabel(OVRPlatformTool.log, logBoxStyle, GUILayout.Height(position.height - 30)); + EditorGUILayout.EndScrollView(); + } + + private void SetOVRProjectConfig(TargetPlatform targetPlatform) + { +#if UNITY_ANDROID + + var targetDeviceTypes = new List(); + + if (targetPlatform == TargetPlatform.Quest && !OVRDeviceSelector.isTargetDeviceQuest) + { + targetDeviceTypes.Add(OVRProjectConfig.DeviceType.Quest); + } + else if (targetPlatform == TargetPlatform.OculusGoGearVR && !OVRDeviceSelector.isTargetDeviceGearVrOrGo) + { + targetDeviceTypes.Add(OVRProjectConfig.DeviceType.GearVrOrGo); + } + + if (targetDeviceTypes.Count != 0) + { + OVRProjectConfig projectConfig = OVRProjectConfig.GetProjectConfig(); + projectConfig.targetDeviceTypes = targetDeviceTypes; + OVRProjectConfig.CommitProjectConfig(projectConfig); + } +#endif + } + + private void IncrementIndent() + { + EditorGUI.indentLevel++; + EditorGUIUtility.labelWidth = DEFAULT_LABEL_WIDTH - (EditorGUI.indentLevel * INDENT_SPACING); + } + + private void DecrementIndent() + { + EditorGUI.indentLevel--; + EditorGUIUtility.labelWidth = DEFAULT_LABEL_WIDTH - (EditorGUI.indentLevel * INDENT_SPACING); + } + + private void OnUpload(TargetPlatform targetPlatform) + { + OVRPlatformTool.log = string.Empty; + SetDirtyOnGUIChange(); + var lintCount = 0; + if (OVRPlatformToolSettings.RunOvrLint) + { + lintCount = OVRLint.RunCheck(); + } + if (lintCount != 0) + { + OVRPlatformTool.log += lintCount.ToString() + " lint suggestions are found. \n" + + "Please run Oculus\\Tools\\OVR Performance Lint Tool to review and fix lint errors. \n" + + "You can uncheck Run OVR Lint to bypass lint errors. \n"; + OVRPlugin.SendEvent("oculus_platform_tool_lint", lintCount.ToString()); + } + else + { + // Continue uploading process + ExecuteCommand(targetPlatform); + } + } + + static void ExecuteCommand(TargetPlatform targetPlatform) + { + string dataPath = Application.dataPath; + + // If we already have a copy of the platform util, check if it needs to be updated + if (!ranSelfUpdate && File.Exists(dataPath + "/Oculus/VR/Editor/Tools/ovr-platform-util.exe")) + { + ranSelfUpdate = true; + activeProcess = true; + var updateThread = new Thread(delegate () { + retryCount = 0; + CheckForUpdate(dataPath); + }); + updateThread.Start(); + } + + var thread = new Thread(delegate () { + // Wait for update process to finish before starting upload process + while (activeProcess) + { + Thread.Sleep(100); + } + retryCount = 0; + Command(targetPlatform, dataPath); + }); + thread.Start(); + } + + private static string CheckForPlatformUtil(string dataPath) + { + string toolDataPath = dataPath + "/Oculus/VR/Editor/Tools"; + if (!Directory.Exists(toolDataPath)) + { + Directory.CreateDirectory(toolDataPath); + } + + string platformUtil = toolDataPath + "/ovr-platform-util.exe"; + if (!System.IO.File.Exists(platformUtil)) + { + OVRPlugin.SendEvent("oculus_platform_tool", "provision_util"); + EditorCoroutine downloadCoroutine = EditorCoroutine.Start(ProvisionPlatformUtil(platformUtil)); + while (!downloadCoroutine.GetCompleted()) { } + } + + return platformUtil; + } + + private static void InitializePlatformUtilProcess(string path, string args) + { + ovrPlatUtilProcess = new Process(); + var processInfo = new ProcessStartInfo(path, args); + + processInfo.CreateNoWindow = true; + processInfo.UseShellExecute = false; + processInfo.RedirectStandardError = true; + processInfo.RedirectStandardOutput = true; + + ovrPlatUtilProcess.StartInfo = processInfo; + ovrPlatUtilProcess.EnableRaisingEvents = true; + } + + static void CheckForUpdate(string dataPath) + { + string platformUtilPath = CheckForPlatformUtil(dataPath); + InitializePlatformUtilProcess(platformUtilPath, "self-update"); + + OVRPlatformTool.log += "Checking for update...\n"; + + ovrPlatUtilProcess.Exited += new EventHandler( + (s, e) => + { + if (File.Exists(dataPath + ".ovr-platform-util.exe")) + { + OVRPlatformTool.log += "Cleaning up...\n"; + while (File.Exists(dataPath + ".ovr-platform-util.exe")) { } + OVRPlatformTool.log += "Finished updating platform utility.\n"; + } + activeProcess = false; + } + ); + + ovrPlatUtilProcess.OutputDataReceived += new DataReceivedEventHandler( + (s, e) => + { + if (e.Data != null && e.Data.Length != 0 && !e.Data.Contains("\u001b")) + { + OVRPlatformTool.log += e.Data + "\n"; + } + } + ); + + try + { + ovrPlatUtilProcess.Start(); + ovrPlatUtilProcess.BeginOutputReadLine(); + } + catch + { + if (ThrowPlatformUtilStartupError(platformUtilPath)) + { + CheckForUpdate(dataPath); + } + } + } + + static void LoadRedistPackages(string dataPath) + { + // Check / Download the platform util and call list-redists on it + activeProcess = true; + string platformUtilPath = CheckForPlatformUtil(dataPath); + InitializePlatformUtilProcess(platformUtilPath, "list-redists"); + + OVRPlatformTool.log += "Loading redistributable packages...\n"; + + List redistPacks = new List(); + + ovrPlatUtilProcess.Exited += new EventHandler( + (s, e) => + { + activeProcess = false; + } + ); + + ovrPlatUtilProcess.OutputDataReceived += new DataReceivedEventHandler( + (s, e) => + { + if (e.Data != null && e.Data.Length != 0 && !e.Data.Contains("\u001b") && !e.Data.Contains("ID")) + { + // Get the name / ID pair from the CLI and create a redist package instance + string[] terms = e.Data.Split('|'); + if (terms.Length == 2) + { + RedistPackage redistPack = new RedistPackage(terms[1], terms[0]); + redistPacks.Add(redistPack); + } + } + } + ); + + try + { + ovrPlatUtilProcess.Start(); + ovrPlatUtilProcess.BeginOutputReadLine(); + + ovrPlatUtilProcess.WaitForExit(); + + if (redistPacks.Count != OVRPlatformToolSettings.RiftRedistPackages.Count) + { + OVRPlatformTool.log += "Successfully updated redistributable packages.\n"; + OVRPlatformToolSettings.RiftRedistPackages = redistPacks; + } + else + { + OVRPlatformTool.log += "Redistributable packages up to date.\n"; + } + } + catch + { + if (ThrowPlatformUtilStartupError(platformUtilPath)) + { + LoadRedistPackages(dataPath); + } + } + } + + static void Command(TargetPlatform targetPlatform, string dataPath) + { + string platformUtilPath = CheckForPlatformUtil(dataPath); + + string args; + if (genUploadCommand(targetPlatform, out args)) + { + activeProcess = true; + InitializePlatformUtilProcess(platformUtilPath, args); + + ovrPlatUtilProcess.Exited += new EventHandler( + (s, e) => + { + activeProcess = false; + } + ); + + ovrPlatUtilProcess.OutputDataReceived += new DataReceivedEventHandler( + (s, e) => + { + if (e.Data != null && e.Data.Length != 0 && !e.Data.Contains("\u001b")) + { + OVRPlatformTool.log += e.Data + "\n"; + } + } + ); + ovrPlatUtilProcess.ErrorDataReceived += new DataReceivedEventHandler( + (s, e) => + { + OVRPlatformTool.log += e.Data + "\n"; + } + ); + + try + { + ovrPlatUtilProcess.Start(); + ovrPlatUtilProcess.BeginOutputReadLine(); + ovrPlatUtilProcess.BeginErrorReadLine(); + } + catch + { + if (ThrowPlatformUtilStartupError(platformUtilPath)) + { + Command(targetPlatform, dataPath); + } + } + } + } + + private static bool genUploadCommand(TargetPlatform targetPlatform, out string command) + { + bool success = true; + command = ""; + + switch (targetPlatform) + { + case TargetPlatform.Rift: + command = "upload-rift-build"; + break; + case TargetPlatform.OculusGoGearVR: + command = "upload-mobile-build"; + break; + case TargetPlatform.Quest: + command = "upload-quest-build"; + break; + default: + OVRPlatformTool.log += "ERROR: Invalid target platform selected"; + success = false; + break; + } + + // Add App ID + ValidateTextField(AppIDFieldValidator, OVRPlatformToolSettings.AppID, "App ID", ref success); + command += " --app-id \"" + OVRPlatformToolSettings.AppID + "\""; + + // Add App Token + ValidateTextField(GenericFieldValidator, OVRPlatformToolSettings.AppToken, "App Token", ref success); + command += " --app-secret \"" + OVRPlatformToolSettings.AppToken + "\""; + + // Add Platform specific fields + if (targetPlatform == TargetPlatform.Rift) + { + // Add Rift Build Directory + ValidateTextField(DirectoryValidator, OVRPlatformToolSettings.RiftBuildDirectory, "Rift Build Directory", ref success); + command += " --build-dir \"" + OVRPlatformToolSettings.RiftBuildDirectory + "\""; + + // Add Rift Launch File + ValidateTextField(FileValidator, OVRPlatformToolSettings.RiftLaunchFile, "Rift Launch File Path", ref success); + command += " --launch-file \"" + OVRPlatformToolSettings.RiftLaunchFile + "\""; + + // Add Rift Build Version + ValidateTextField(GenericFieldValidator, OVRPlatformToolSettings.RiftBuildVersion, "Build Version", ref success); + command += " --version \"" + OVRPlatformToolSettings.RiftBuildVersion + "\""; + + // Add Rift Launch Parameters + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.RiftLaunchParams)) + { + ValidateTextField(LaunchParameterValidator, OVRPlatformToolSettings.RiftLaunchParams, "Launch Parameters", ref success); + command += " --launch_params \"" + OVRPlatformToolSettings.RiftLaunchParams + "\""; + } + + // Add 2D Launch File + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.Rift2DLaunchFile)) + { + ValidateTextField(FileValidator, OVRPlatformToolSettings.Rift2DLaunchFile, "2D Launch File", ref success); + command += " --launch_file_2d \"" + OVRPlatformToolSettings.Rift2DLaunchFile + "\""; + + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.Rift2DLaunchParams)) + { + ValidateTextField(LaunchParameterValidator, OVRPlatformToolSettings.Rift2DLaunchParams, "2D Launch Parameters", ref success); + command += " --launch_params_2d \"" + OVRPlatformToolSettings.Rift2DLaunchParams + "\""; + } + } + + // Add Firewall Exception + if (OVRPlatformToolSettings.RiftFirewallException) + { + command += " --firewall_exceptions true"; + } + + // Add Redistributable Packages + List redistCommandIds = new List(); + for (int i = 0; i < OVRPlatformToolSettings.RiftRedistPackages.Count; i++) + { + if (OVRPlatformToolSettings.RiftRedistPackages[i].include) + { + redistCommandIds.Add(OVRPlatformToolSettings.RiftRedistPackages[i].id); + } + } + if (redistCommandIds.Count > 0) + { + command += " --redistributables \"" + string.Join(",", redistCommandIds.ToArray()) + "\""; + } + + // Add Gamepad Emulation + if (OVRPlatformToolSettings.RiftGamepadEmulation > OVRPlatformToolSettings.GamepadType.OFF && + OVRPlatformToolSettings.RiftGamepadEmulation <= OVRPlatformToolSettings.GamepadType.LEFT_D_PAD) + { + command += " --gamepad-emulation "; + switch (OVRPlatformToolSettings.RiftGamepadEmulation) + { + case OVRPlatformToolSettings.GamepadType.TWINSTICK: command += "TWINSTICK"; break; + case OVRPlatformToolSettings.GamepadType.RIGHT_D_PAD: command += "RIGHT_D_PAD"; break; + case OVRPlatformToolSettings.GamepadType.LEFT_D_PAD: command += "LEFT_D_PAD"; break; + default: command += "OFF"; break; + } + } + + // Add Rift Language Pack Directory + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.LanguagePackDirectory)) + { + ValidateTextField(DirectoryValidator, OVRPlatformToolSettings.LanguagePackDirectory, "Language Pack Directory", ref success); + command += " --language_packs_dir \"" + OVRPlatformToolSettings.LanguagePackDirectory + "\""; + } + } + else + { + // Add APK Build Path + ValidateTextField(FileValidator, OVRPlatformToolSettings.ApkBuildPath, "APK Build Path", ref success); + command += " --apk \"" + OVRPlatformToolSettings.ApkBuildPath + "\""; + + // Add OBB File Path + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.ObbFilePath)) + { + ValidateTextField(FileValidator, OVRPlatformToolSettings.ObbFilePath, "OBB File Path", ref success); + command += " --obb \"" + OVRPlatformToolSettings.ObbFilePath + "\""; + } + + if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.OculusGoGearVR) + { + // Go and Gear VR specific commands + } + else if (OVRPlatformToolSettings.TargetPlatform == TargetPlatform.Quest) + { + // Quest specific commands + } + } + + // Add Assets Directory + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.AssetsDirectory)) + { + ValidateTextField(DirectoryValidator, OVRPlatformToolSettings.AssetsDirectory, "Assets Directory", ref success); + command += " --assets-dir \"" + OVRPlatformToolSettings.AssetsDirectory + "\""; + + // Add Asset Configurations + if (OVRPlatformToolSettings.AssetConfigs.Count > 0) + { + List assetConfigs = new List(); + for (int i = 0; i < OVRPlatformToolSettings.AssetConfigs.Count; i++) + { + List configParameters = new List(); + AssetConfig config = OVRPlatformToolSettings.AssetConfigs[i]; + + if (config.required) + { + configParameters.Add("\\\"required\\\":true"); + } + if (config.type > AssetConfig.AssetType.DEFAULT) + { + string typeCommand = "\\\"type\\\":"; + switch (config.type) + { + case AssetConfig.AssetType.LANGUAGE_PACK: + configParameters.Add(typeCommand + "\\\"LANGUAGE_PACK\\\""); + break; + case AssetConfig.AssetType.STORE: + configParameters.Add(typeCommand + "\\\"STORE\\\""); + break; + default: + configParameters.Add(typeCommand + "\\\"DEFAULT\\\""); + break; + } + } + if (!string.IsNullOrEmpty(config.sku)) + { + configParameters.Add("\\\"sku\\\":\\\"" + config.sku + "\\\""); + } + + if (configParameters.Count > 0) + { + string configString = "\\\"" + config.name + "\\\":{" + string.Join(",", configParameters.ToArray()) + "}"; + assetConfigs.Add(configString); + } + } + + if (assetConfigs.Count > 0) + { + command += " --asset_files_config {" + string.Join(",", assetConfigs.ToArray()) + "}"; + } + } + } + + // Add Release Channel + ValidateTextField(GenericFieldValidator, OVRPlatformToolSettings.ReleaseChannel, "Release Channel", ref success); + command += " --channel \"" + OVRPlatformToolSettings.ReleaseChannel + "\""; + + // Add Notes + if (!string.IsNullOrEmpty(OVRPlatformToolSettings.ReleaseNote)) + { + string sanatizedReleaseNote = OVRPlatformToolSettings.ReleaseNote; + sanatizedReleaseNote = sanatizedReleaseNote.Replace("\"", "\"\""); + command += " --notes \"" + sanatizedReleaseNote + "\""; + } + + return success; + } + + // Private delegate for text field validation functions + private delegate TSuccess FieldValidatorDelegate(TText text, ref TError error); + + // Validate the text using a given field validator function. An error message will be printed if validation fails. Success will ONLY be modified to false if validation fails. + static void ValidateTextField(FieldValidatorDelegate fieldValidator, string fieldText, string fieldName, ref bool success) + { + string error = ""; + if (!fieldValidator(fieldText, ref error)) + { + OVRPlatformTool.log += "ERROR: Please verify that the " + fieldName + " is correct. "; + OVRPlatformTool.log += string.IsNullOrEmpty(error) ? "\n" : error + "\n"; + success = false; + } + } + + // Checks if the text is null or empty + static bool GenericFieldValidator(string fieldText, ref string error) + { + if (string.IsNullOrEmpty(fieldText)) + { + error = "The field is empty."; + return false; + } + return true; + } + + // Checks if the App ID contains only numbers + static bool AppIDFieldValidator(string fieldText, ref string error) + { + if (string.IsNullOrEmpty(fieldText)) + { + error = "The field is empty."; + return false; + } + else if (!Regex.IsMatch(OVRPlatformToolSettings.AppID, "^[0-9]+$")) + { + error = "The field contains invalid characters."; + return false; + } + return true; + } + + // Check that the directory exists + static bool DirectoryValidator(string path, ref string error) + { + if (!Directory.Exists(path)) + { + error = "The directory does not exist."; + return false; + } + return true; + } + + // Check that the file exists + static bool FileValidator(string path, ref string error) + { + if (!File.Exists(path)) + { + error = "The file does not exist."; + return false; + } + return true; + } + + // Check if the launch parameter string contains illegal characters + static bool LaunchParameterValidator(string fieldText, ref string error) + { + if (fieldText.Contains("\"")) + { + error = "The field contains illegal characters."; + return false; + } + return true; + } + + void OnInspectorUpdate() + { + Repaint(); + } + + private static bool ThrowPlatformUtilStartupError(string utilPath) + { + if (retryCount < MAX_DOWNLOAD_RETRY_COUNT) + { + retryCount++; + OVRPlatformTool.log += "There was a problem starting Oculus Platform Util. Restarting provision process...\n"; + File.Delete(utilPath); + return true; + } + else + { + OVRPlatformTool.log += "OVR Platform Tool had a problem with downloading a valid executable after several trys. Please reopen the tool to try again.\n"; + return false; + } + } + + private string MakeTextBox(GUIContent label, string variable) + { + string result = string.Empty; + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.ExpandWidth(false)); + result = EditorGUILayout.TextField(variable); + EditorGUILayout.EndHorizontal(); + + return result; + } + + private string MakePasswordBox(GUIContent label, string variable) + { + string result = string.Empty; + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.ExpandWidth(false)); + result = EditorGUILayout.PasswordField(variable); + EditorGUILayout.EndHorizontal(); + + return result; + } + + private bool MakeToggleBox(GUIContent label, bool variable) + { + bool result = false; + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.ExpandWidth(false)); + result = EditorGUILayout.Toggle(variable); + EditorGUILayout.EndHorizontal(); + + return result; + } + + private int MakePopup(GUIContent label, int variable, string[] options) + { + int result = 0; + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.ExpandWidth(false)); + result = EditorGUILayout.Popup(variable, options); + EditorGUILayout.EndHorizontal(); + + return result; + } + + private string MakeFileDirectoryField(GUIContent label, string variable, string title, bool isFile = false, string extension = "") + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.ExpandWidth(false)); + + Rect rect = GUILayoutUtility.GetRect(0, SINGLE_LINE_SPACING, GUILayout.ExpandWidth(true)); + EditorGUI.SelectableLabel(rect, variable); + + // Create X button if there is a valid path in the field + string result = variable; + if (!string.IsNullOrEmpty(variable)) + { + Color defaultColor = GUI.backgroundColor; + GUI.backgroundColor = new Color(.9f, 0.5f, 0.5f); + rect = GUILayoutUtility.GetRect(SINGLE_LINE_SPACING, SINGLE_LINE_SPACING, GUILayout.ExpandWidth(false)); + if (GUI.Button(rect, "X")) + { + result = string.Empty; + } + GUI.backgroundColor = defaultColor; + } + + // Create the Choose button to initiate the file explorer + rect = GUILayoutUtility.GetRect(75f, SINGLE_LINE_SPACING, GUILayout.ExpandWidth(false)); + if (GUI.Button(rect, "Choose ...")) + { + string newPath = string.Empty; + string path = string.IsNullOrEmpty(variable) ? Application.dataPath : variable; + if (isFile) + { + newPath = EditorUtility.OpenFilePanel(title, path, extension); + } + else + { + newPath = EditorUtility.OpenFolderPanel(title, path, string.Empty); + } + if (newPath.Length > 0) + { + result = newPath; + } + } + GUILayout.Space(5f); + EditorGUILayout.EndHorizontal(); + + // If the path has changed, deselect the selectable field so that it can update. + if (result != variable) + { + GUIUtility.hotControl = 0; + GUIUtility.keyboardControl = 0; + } + + return result; + } + + private static void SetDirtyOnGUIChange() + { + if (GUI.changed) + { + EditorUtility.SetDirty(OVRPlatformToolSettings.Instance); + GUI.changed = false; + } + } + + private static IEnumerator ProvisionPlatformUtil(string dataPath) + { +#if UNITY_2019_1_OR_NEWER + var webRequest = new UnityWebRequest(urlPlatformUtil, UnityWebRequest.kHttpVerbGET); + string path = dataPath; + webRequest.downloadHandler = new DownloadHandlerFile(path); + // WWW request timeout in seconds + webRequest.timeout = 60; + UnityWebRequestAsyncOperation webOp = webRequest.SendWebRequest(); + while (!webOp.isDone) { } + if (webRequest.isNetworkError || webRequest.isHttpError) + { + var networkErrorMsg = "Failed to provision Oculus Platform Util\n"; + UnityEngine.Debug.LogError(networkErrorMsg); + OVRPlatformTool.log += networkErrorMsg; + } + else + { + OVRPlatformTool.log += "Completed Provisioning Oculus Platform Util\n"; + } + SetDirtyOnGUIChange(); + yield return webOp; +#else + using (WWW www = new WWW(urlPlatformUtil)) + { + UnityEngine.Debug.Log("Started Provisioning Oculus Platform Util"); + float timer = 0; + float timeOut = 60; + yield return www; + while (!www.isDone && timer < timeOut) + { + timer += Time.deltaTime; + if (www.error != null) + { + UnityEngine.Debug.Log("Download error: " + www.error); + break; + } + OVRPlatformTool.log = string.Format("Downloading.. {0:P1}", www.progress); + SetDirtyOnGUIChange(); + yield return new WaitForSeconds(1f); + } + if (www.isDone) + { + System.IO.File.WriteAllBytes(dataPath, www.bytes); + OVRPlatformTool.log = "Completed Provisioning Oculus Platform Util\n"; + SetDirtyOnGUIChange(); + } + } +#endif + } + + private static void DrawAssetConfigList(Rect rect) + { + DrawAssetConfigHeader(rect); + DrawAssetConfigBackground(rect); + DrawAssetConfigElement(rect); + } + + private static void DrawAssetConfigElement(Rect rect) + { + Rect elementRect = new Rect(rect.x, rect.y + SINGLE_LINE_SPACING + ASSET_CONFIG_BACKGROUND_PADDING / 2, + rect.width, SINGLE_LINE_SPACING); + if (OVRPlatformToolSettings.AssetConfigs.Count > 0) + { + for (int i = 0; i < OVRPlatformToolSettings.AssetConfigs.Count; i++) + { + AssetConfig config = OVRPlatformToolSettings.AssetConfigs[i]; + GUIContent fieldLabel; + + config.SetFoldoutState(EditorGUI.Foldout(elementRect, config.GetFoldoutState(), config.name, boldFoldoutStyle)); + if (config.GetFoldoutState()) + { + Rect attributeRect = new Rect(elementRect.x + INDENT_SPACING, elementRect.y + SINGLE_LINE_SPACING, + elementRect.width - INDENT_SPACING - 3f, SINGLE_LINE_SPACING); + // Extra asset config params are disabled for now until CLI supports them +#if !DISABLE_EXTRA_ASSET_CONFIG + fieldLabel = new GUIContent("Required Asset [?]", "Whether or not this asset file is required for the app to run."); + config.required = EditorGUI.Toggle(attributeRect, fieldLabel, config.required); + + attributeRect.y += SINGLE_LINE_SPACING; + fieldLabel = new GUIContent("Asset Type [?]", "The asset file type."); + config.type = (AssetConfig.AssetType)EditorGUI.EnumPopup(attributeRect, fieldLabel, config.type); + + attributeRect.y += SINGLE_LINE_SPACING; +#endif + fieldLabel = new GUIContent("Asset SKU [?]", "The Oculus store SKU for this asset file."); + config.sku = EditorGUI.TextField(attributeRect, fieldLabel, config.sku); + + elementRect.y = attributeRect.y; + } + elementRect.y += SINGLE_LINE_SPACING; + } + } + else + { + EditorGUI.LabelField(elementRect, "No asset files found. Choose a valid assets directory."); + } + } + + private static float GetAssetConfigElementHeight() + { + float totalHeight = 0f; + if (OVRPlatformToolSettings.AssetConfigs.Count > 0) + { + for (int i = 0; i < OVRPlatformToolSettings.AssetConfigs.Count; i++) + { + AssetConfig config = OVRPlatformToolSettings.AssetConfigs[i]; +#if !DISABLE_EXTRA_ASSET_CONFIG + totalHeight += config.GetFoldoutState() ? SINGLE_LINE_SPACING * 4 : SINGLE_LINE_SPACING; +#else + totalHeight += config.GetFoldoutState() ? SINGLE_LINE_SPACING * 2 : SINGLE_LINE_SPACING; +#endif + } + } + else + { + totalHeight += SINGLE_LINE_SPACING; + } + return totalHeight + ASSET_CONFIG_BACKGROUND_PADDING; + } + + private static void DrawAssetConfigHeader(Rect rect) + { + Rect headerRect = new Rect(rect.x, rect.y, rect.width, SINGLE_LINE_SPACING); + EditorGUI.DrawRect(headerRect, EditorGUIUtility.isProSkin ? new Color(0.37f, 0.37f, 0.37f) : new Color(0.55f, 0.55f, 0.55f)); + EditorGUI.LabelField(rect, "Asset File Configuration"); + } + + private static void DrawAssetConfigBackground(Rect rect) + { + Rect backgroundRect = new Rect(rect.x, rect.y + SINGLE_LINE_SPACING, rect.width, GetAssetConfigElementHeight()); + EditorGUI.DrawRect(backgroundRect, EditorGUIUtility.isProSkin ? new Color(0.3f, 0.3f, 0.3f) : new Color(0.63f, 0.63f, 0.63f)); + } + + class GUIHelper + { + public delegate void Worker(); + + static void InOut(Worker begin, Worker body, Worker end) + { + try + { + begin(); + body(); + } + finally + { + end(); + } + } + + public static void HInset(int pixels, Worker worker) + { + InOut( + () => { + GUILayout.BeginHorizontal(); + GUILayout.Space(pixels); + GUILayout.BeginVertical(); + }, + worker, + () => { + GUILayout.EndVertical(); + GUILayout.EndHorizontal(); + } + ); + } + + public delegate T ControlWorker(); + public static T MakeControlWithLabel(GUIContent label, ControlWorker worker) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label); + + var result = worker(); + + EditorGUILayout.EndHorizontal(); + return result; + } + } + + public class EditorCoroutine + { + public static EditorCoroutine Start(IEnumerator routine) + { + EditorCoroutine coroutine = new EditorCoroutine(routine); + coroutine.Start(); + return coroutine; + } + + readonly IEnumerator routine; + bool completed; + EditorCoroutine(IEnumerator _routine) + { + routine = _routine; + completed = false; + } + + void Start() + { + EditorApplication.update += Update; + } + public void Stop() + { + EditorApplication.update -= Update; + completed = true; + } + + public bool GetCompleted() + { + return completed; + } + + void Update() + { + if (!routine.MoveNext()) + { + Stop(); + } + } + } + } +} diff --git a/Assets/Oculus/VR/Editor/OVRPlatformTool.cs.meta b/Assets/Oculus/VR/Editor/OVRPlatformTool.cs.meta new file mode 100644 index 0000000..59cb5c5 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPlatformTool.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f6d58d9d4ff0e8f4ca5f73c5ec106551 +timeCreated: 1536960564 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRPlatformToolSettings.cs b/Assets/Oculus/VR/Editor/OVRPlatformToolSettings.cs new file mode 100644 index 0000000..c7c1c1a --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPlatformToolSettings.cs @@ -0,0 +1,380 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +namespace Assets.Oculus.VR.Editor +{ +#if UNITY_EDITOR + [UnityEditor.InitializeOnLoad] +#endif + public sealed class OVRPlatformToolSettings : ScriptableObject + { + private const string DEFAULT_RELEASE_CHANNEL = "Alpha"; + + public enum GamepadType + { + OFF, + TWINSTICK, + RIGHT_D_PAD, + LEFT_D_PAD, + }; + + public static string AppID + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.appIDs[(int)Instance.targetPlatform] : ""; + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.appIDs[(int)Instance.targetPlatform] = value; + } + } + } + + public static string AppToken + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.appTokens[(int)Instance.targetPlatform] : ""; + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.appTokens[(int)Instance.targetPlatform] = value; + } + } + } + + public static string ReleaseNote + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.releaseNotes[(int)Instance.targetPlatform] : ""; + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.releaseNotes[(int)Instance.targetPlatform] = value; + } + } + } + + public static string ReleaseChannel + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.releaseChannels[(int)Instance.targetPlatform] : ""; + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.releaseChannels[(int)Instance.targetPlatform] = value; + } + } + } + + public static string ApkBuildPath + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.apkBuildPaths[(int)Instance.targetPlatform] : ""; + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.apkBuildPaths[(int)Instance.targetPlatform] = value; + } + } + } + + public static string ObbFilePath + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.obbFilePaths[(int)Instance.targetPlatform] : ""; + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.obbFilePaths[(int)Instance.targetPlatform] = value; + } + } + } + + public static string AssetsDirectory + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.assetsDirectorys[(int)Instance.targetPlatform] : ""; + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.assetsDirectorys[(int)Instance.targetPlatform] = value; + } + } + } + + public static string RiftBuildDirectory + { + get { return Instance.riftBuildDiretory; } + set { Instance.riftBuildDiretory = value; } + } + + public static string RiftBuildVersion + { + get { return Instance.riftBuildVersion; } + set { Instance.riftBuildVersion = value; } + } + + public static string RiftLaunchFile + { + get { return Instance.riftLaunchFile; } + set { Instance.riftLaunchFile = value; } + } + + public static string RiftLaunchParams + { + get { return Instance.riftLaunchParams; } + set { Instance.riftLaunchParams = value; } + } + + public static string Rift2DLaunchFile + { + get { return Instance.rift2DLaunchFile; } + set { Instance.rift2DLaunchFile = value; } + } + + public static string Rift2DLaunchParams + { + get { return Instance.rift2DLaunchParams; } + set { Instance.rift2DLaunchParams = value; } + } + + public static bool RiftFirewallException + { + get { return Instance.riftFirewallException; } + set { Instance.riftFirewallException = value; } + } + + public static GamepadType RiftGamepadEmulation + { + get { return Instance.riftGamepadEmulation; } + set { Instance.riftGamepadEmulation = value; } + } + + public static List RiftRedistPackages + { + get { return Instance.riftRedistPackages; } + set { Instance.riftRedistPackages = value; } + } + + public static string LanguagePackDirectory + { + get { return Instance.languagePackDirectory; } + set { Instance.languagePackDirectory = value; } + } + + public static List AssetConfigs + { + get + { + return Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None ? Instance.assetConfigs[(int)Instance.targetPlatform].configList : new List(); + } + set + { + if (Instance.targetPlatform < OVRPlatformTool.TargetPlatform.None) + { + Instance.assetConfigs[(int)Instance.targetPlatform].configList = value; + } + } + } + + public static OVRPlatformTool.TargetPlatform TargetPlatform + { + get { return Instance.targetPlatform; } + set { Instance.targetPlatform = value; } + } + + public static bool RunOvrLint + { + get { return Instance.runOvrLint; } + set { Instance.runOvrLint = value; } + } + + [SerializeField] + private string[] appIDs = new string[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private string[] appTokens = new string[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private string[] releaseNotes = new string[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private string[] releaseChannels = new string[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private string riftBuildDiretory = ""; + + [SerializeField] + private string riftBuildVersion = ""; + + [SerializeField] + private string riftLaunchFile = ""; + + [SerializeField] + private string riftLaunchParams = ""; + + [SerializeField] + private string rift2DLaunchFile = ""; + + [SerializeField] + private string rift2DLaunchParams = ""; + + [SerializeField] + private bool riftFirewallException = false; + + [SerializeField] + private GamepadType riftGamepadEmulation = GamepadType.OFF; + + [SerializeField] + private List riftRedistPackages; + + [SerializeField] + private string languagePackDirectory = ""; + + [SerializeField] + private string[] apkBuildPaths = new string[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private string[] obbFilePaths = new string[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private string[] assetsDirectorys = new string[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private AssetConfigList[] assetConfigs = new AssetConfigList[(int)OVRPlatformTool.TargetPlatform.None]; + + [SerializeField] + private OVRPlatformTool.TargetPlatform targetPlatform = OVRPlatformTool.TargetPlatform.None; + + [SerializeField] + private bool runOvrLint = true; + + private static OVRPlatformToolSettings instance; + public static OVRPlatformToolSettings Instance + { + get + { + if (instance == null) + { + instance = Resources.Load("OVRPlatformToolSettings"); + + if (instance == null) + { + instance = ScriptableObject.CreateInstance(); + + string properPath = System.IO.Path.Combine(UnityEngine.Application.dataPath, "Resources"); + if (!System.IO.Directory.Exists(properPath)) + { + UnityEditor.AssetDatabase.CreateFolder("Assets", "Resources"); + } + + string fullPath = System.IO.Path.Combine( + System.IO.Path.Combine("Assets", "Resources"), + "OVRPlatformToolSettings.asset" + ); + UnityEditor.AssetDatabase.CreateAsset(instance, fullPath); + + // Initialize cross platform default values for the new instance of OVRPlatformToolSettings here + if (instance != null) + { + for (int i = 0; i < (int)OVRPlatformTool.TargetPlatform.None; i++) + { + instance.releaseChannels[i] = DEFAULT_RELEASE_CHANNEL; + instance.assetConfigs[i] = new AssetConfigList(); + } + + instance.riftRedistPackages = new List(); + } + } + } + return instance; + } + set + { + instance = value; + } + } + } + + // Wrapper for asset config list so that it can be serialized properly + [System.Serializable] + public class AssetConfigList + { + public List configList; + + public AssetConfigList() + { + configList = new List(); + } + } + + [System.Serializable] + public class AssetConfig + { + public enum AssetType + { + DEFAULT, + STORE, + LANGUAGE_PACK, + }; + + public string name; + public bool required; + public AssetType type; + public string sku; + + private bool foldout; + + public AssetConfig(string assetName) + { + name = assetName; + } + + public bool GetFoldoutState() + { + return foldout; + } + + public void SetFoldoutState(bool state) + { + foldout = state; + } + } + + [System.Serializable] + public class RedistPackage + { + public bool include = false; + public string name; + public string id; + + public RedistPackage(string pkgName, string pkgId) + { + name = pkgName; + id = pkgId; + } + } +} diff --git a/Assets/Oculus/VR/Editor/OVRPlatformToolSettings.cs.meta b/Assets/Oculus/VR/Editor/OVRPlatformToolSettings.cs.meta new file mode 100644 index 0000000..e44241e --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPlatformToolSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd7bb81df5b74b34dadbf531f381a26b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs new file mode 100644 index 0000000..c4d2ac6 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs @@ -0,0 +1,701 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using UnityEditor; +using UnityEditor.Callbacks; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using System.IO; +using System.Diagnostics; + +[InitializeOnLoad] +class OVRPluginUpdater +{ + enum PluginPlatform + { + Android, + AndroidUniversal, + OSXUniversal, + Win, + Win64, + } + class PluginPackage + { + public string RootPath; + public System.Version Version; + public Dictionary Plugins = new Dictionary(); + + public bool IsBundledPluginPackage() + { + return (RootPath == GetBundledPluginRootPath()); + } + + public bool IsEnabled() + { + // TODO: Check each individual platform rather than using the Win64 DLL status for the overall package status. + string path = ""; + if (Plugins.TryGetValue(PluginPlatform.Win64, out path)) + { + return File.Exists(path); + } + + return false; + } + + public bool IsAndroidUniversalEnabled() + { + string path = ""; + if (Plugins.TryGetValue(PluginPlatform.AndroidUniversal, out path)) + { + if (File.Exists(path)) + { + string basePath = GetCurrentProjectPath(); + string relPath = path.Substring(basePath.Length + 1); + + PluginImporter pi = PluginImporter.GetAtPath(relPath) as PluginImporter; + if (pi != null) + { + return pi.GetCompatibleWithPlatform(BuildTarget.Android); + } + } + } + + return false; + } + + public bool IsAndroidUniversalPresent() + { + string path = ""; + if (Plugins.TryGetValue(PluginPlatform.AndroidUniversal, out path)) + { + string disabledPath = path + GetDisabledPluginSuffix(); + + if (File.Exists(path) || File.Exists(disabledPath)) + { + return true; + } + } + + return false; + } + } + + private static bool restartPending = false; + private static bool unityRunningInBatchmode = false; + private static bool unityVersionSupportsAndroidUniversal = false; + private static bool enableAndroidUniversalSupport = true; + + private static System.Version invalidVersion = new System.Version("0.0.0"); + + static OVRPluginUpdater() + { + EditorApplication.delayCall += OnDelayCall; + } + + static void OnDelayCall() + { + if (System.Environment.CommandLine.Contains("-batchmode")) + { + unityRunningInBatchmode = true; + } + + if (enableAndroidUniversalSupport) + { +#if UNITY_2018_3_OR_NEWER + unityVersionSupportsAndroidUniversal = true; +#endif + } + + if (ShouldAttemptPluginUpdate()) + { + AttemptPluginUpdate(true); + } + } + + private static PluginPackage GetPluginPackage(string rootPath) + { + return new PluginPackage() + { + RootPath = rootPath, + Version = GetPluginVersion(rootPath), + Plugins = new Dictionary() + { + { PluginPlatform.Android, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.Android) }, + { PluginPlatform.AndroidUniversal, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.AndroidUniversal) }, + { PluginPlatform.OSXUniversal, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.OSXUniversal) }, + { PluginPlatform.Win, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.Win) }, + { PluginPlatform.Win64, rootPath + GetPluginBuildTargetSubPath(PluginPlatform.Win64) }, + } + }; + } + + private static PluginPackage GetBundledPluginPackage() + { + return GetPluginPackage(GetBundledPluginRootPath()); + } + + private static List GetAllUtilitiesPluginPackages() + { + string pluginRootPath = GetUtilitiesPluginRootPath(); + List packages = new List(); + + if (Directory.Exists(pluginRootPath)) + { + var dirs = Directory.GetDirectories(pluginRootPath); + + foreach(string dir in dirs) + { + packages.Add(GetPluginPackage(dir)); + } + } + + return packages; + } + + private static string GetCurrentProjectPath() + { + return Directory.GetParent(Application.dataPath).FullName; + } + + private static string GetUtilitiesPluginRootPath() + { + return GetUtilitiesRootPath() + @"/Plugins"; + } + + private static string GetUtilitiesRootPath() + { + var so = ScriptableObject.CreateInstance(typeof(OVRPluginUpdaterStub)); + var script = MonoScript.FromScriptableObject(so); + string assetPath = AssetDatabase.GetAssetPath(script); + string editorDir = Directory.GetParent(assetPath).FullName; + string ovrDir = Directory.GetParent(editorDir).FullName; + + return ovrDir; + } + + private static string GetBundledPluginRootPath() + { + string basePath = EditorApplication.applicationContentsPath; + string pluginPath = @"/UnityExtensions/Unity/VR"; + + return basePath + pluginPath; + } + + private static string GetPluginBuildTargetSubPath(PluginPlatform target) + { + string path = string.Empty; + + switch (target) + { + case PluginPlatform.Android: + path = @"/Android/OVRPlugin.aar"; + break; + case PluginPlatform.AndroidUniversal: + path = @"/AndroidUniversal/OVRPlugin.aar"; + break; + case PluginPlatform.OSXUniversal: + path = @"/OSXUniversal/OVRPlugin.bundle"; + break; + case PluginPlatform.Win: + path = @"/Win/OVRPlugin.dll"; + break; + case PluginPlatform.Win64: + path = @"/Win64/OVRPlugin.dll"; + break; + default: + throw new ArgumentException("Attempted GetPluginBuildTargetSubPath() for unsupported BuildTarget: " + target); + } + + return path; + } + + private static string GetDisabledPluginSuffix() + { + return @".disabled"; + } + + private static System.Version GetPluginVersion(string path) + { + System.Version pluginVersion = invalidVersion; + + try + { + pluginVersion = new System.Version(Path.GetFileName(path)); + } + catch + { + pluginVersion = invalidVersion; + } + + if (pluginVersion == invalidVersion) + { + //Unable to determine version from path, fallback to Win64 DLL meta data + path += GetPluginBuildTargetSubPath(PluginPlatform.Win64); + if (!File.Exists(path)) + { + path += GetDisabledPluginSuffix(); + if (!File.Exists(path)) + { + return invalidVersion; + } + } + + FileVersionInfo pluginVersionInfo = FileVersionInfo.GetVersionInfo(path); + if (pluginVersionInfo == null || pluginVersionInfo.ProductVersion == null || pluginVersionInfo.ProductVersion == "") + { + return invalidVersion; + } + + pluginVersion = new System.Version(pluginVersionInfo.ProductVersion); + } + + return pluginVersion; + } + + public static string GetVersionDescription(System.Version version) + { + bool isVersionValid = (version != invalidVersion); + return isVersionValid ? version.ToString() : "(Unknown)"; + } + + private static bool ShouldAttemptPluginUpdate() + { + if (unityRunningInBatchmode) + { + return false; + } + else + { + return !UnitySupportsEnabledAndroidPlugin() || (autoUpdateEnabled && !restartPending && !Application.isPlaying); + } + } + + private static void DisableAllUtilitiesPluginPackages() + { + List allUtilsPluginPkgs = GetAllUtilitiesPluginPackages(); + + foreach(PluginPackage pluginPkg in allUtilsPluginPkgs) + { + foreach(string path in pluginPkg.Plugins.Values) + { + if ((Directory.Exists(path)) || (File.Exists(path))) + { + string basePath = GetCurrentProjectPath(); + string relPath = path.Substring(basePath.Length + 1); + string relDisabledPath = relPath + GetDisabledPluginSuffix(); + + AssetDatabase.MoveAsset(relPath, relDisabledPath); + AssetDatabase.ImportAsset(relDisabledPath, ImportAssetOptions.ForceUpdate); + } + } + } + + AssetDatabase.Refresh(); + AssetDatabase.SaveAssets(); + } + + private static void EnablePluginPackage(PluginPackage pluginPkg) + { + foreach(var kvp in pluginPkg.Plugins) + { + PluginPlatform platform = kvp.Key; + string path = kvp.Value; + + if ((Directory.Exists(path + GetDisabledPluginSuffix())) || (File.Exists(path + GetDisabledPluginSuffix()))) + { + string basePath = GetCurrentProjectPath(); + string relPath = path.Substring(basePath.Length + 1); + string relDisabledPath = relPath + GetDisabledPluginSuffix(); + + AssetDatabase.MoveAsset(relDisabledPath, relPath); + AssetDatabase.ImportAsset(relPath, ImportAssetOptions.ForceUpdate); + + PluginImporter pi = PluginImporter.GetAtPath(relPath) as PluginImporter; + if (pi == null) + { + continue; + } + + // Disable support for all platforms, then conditionally enable desired support below + pi.SetCompatibleWithEditor(false); + pi.SetCompatibleWithAnyPlatform(false); + pi.SetCompatibleWithPlatform(BuildTarget.Android, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, false); +#if UNITY_2017_3_OR_NEWER + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, false); +#else + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXUniversal, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, false); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, false); +#endif + + switch (platform) + { + case PluginPlatform.Android: + pi.SetCompatibleWithPlatform(BuildTarget.Android, !unityVersionSupportsAndroidUniversal); + if (!unityVersionSupportsAndroidUniversal) + { + pi.SetPlatformData(BuildTarget.Android, "CPU", "ARMv7"); + } + break; + case PluginPlatform.AndroidUniversal: + pi.SetCompatibleWithPlatform(BuildTarget.Android, unityVersionSupportsAndroidUniversal); + break; + case PluginPlatform.OSXUniversal: +#if UNITY_2017_3_OR_NEWER + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSX, true); +#else + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXUniversal, true); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel, true); + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneOSXIntel64, true); +#endif + pi.SetCompatibleWithEditor(true); + pi.SetEditorData("CPU", "AnyCPU"); + pi.SetEditorData("OS", "OSX"); + pi.SetPlatformData("Editor", "CPU", "AnyCPU"); + pi.SetPlatformData("Editor", "OS", "OSX"); + break; + case PluginPlatform.Win: + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows, true); + pi.SetCompatibleWithEditor(true); + pi.SetEditorData("CPU", "X86"); + pi.SetEditorData("OS", "Windows"); + pi.SetPlatformData("Editor", "CPU", "X86"); + pi.SetPlatformData("Editor", "OS", "Windows"); + break; + case PluginPlatform.Win64: + pi.SetCompatibleWithPlatform(BuildTarget.StandaloneWindows64, true); + pi.SetCompatibleWithEditor(true); + pi.SetEditorData("CPU", "X86_64"); + pi.SetEditorData("OS", "Windows"); + pi.SetPlatformData("Editor", "CPU", "X86_64"); + pi.SetPlatformData("Editor", "OS", "Windows"); + break; + default: + throw new ArgumentException("Attempted EnablePluginPackage() for unsupported BuildTarget: " + platform); + } + + AssetDatabase.ImportAsset(relPath, ImportAssetOptions.ForceUpdate); + } + } + + AssetDatabase.Refresh(); + AssetDatabase.SaveAssets(); + } + + private static readonly string autoUpdateEnabledKey = "Oculus_Utilities_OVRPluginUpdater_AutoUpdate_" + OVRManager.utilitiesVersion; + private static bool autoUpdateEnabled + { + get { + return PlayerPrefs.GetInt(autoUpdateEnabledKey, 1) == 1; + } + + set { + PlayerPrefs.SetInt(autoUpdateEnabledKey, value ? 1 : 0); + } + } + + [MenuItem("Oculus/Tools/Disable OVR Utilities Plugin")] + private static void AttemptPluginDisable() + { + PluginPackage bundledPluginPkg = GetBundledPluginPackage(); + List allUtilsPluginPkgs = GetAllUtilitiesPluginPackages(); + + PluginPackage enabledUtilsPluginPkg = null; + + foreach(PluginPackage pluginPkg in allUtilsPluginPkgs) + { + if (pluginPkg.IsEnabled()) + { + if ((enabledUtilsPluginPkg == null) || (pluginPkg.Version > enabledUtilsPluginPkg.Version)) + { + enabledUtilsPluginPkg = pluginPkg; + } + } + } + + if (enabledUtilsPluginPkg == null) + { + if (unityRunningInBatchmode +#if UNITY_2018_3_OR_NEWER + || EditorUtility.DisplayDialog("Disable Oculus Utilities Plugin", + "The OVRPlugin included with Oculus Utilities is already disabled." + + " The OVRPlugin installed through the Package Manager will continue to be used.\n", + "Ok", + "")) +#else + || EditorUtility.DisplayDialog("Disable Oculus Utilities Plugin", + "The OVRPlugin included with Oculus Utilities is already disabled." + + " The OVRPlugin bundled with the Unity Editor will continue to be used.\n\n" + + "Bundled version: " + + GetVersionDescription(bundledPluginPkg.Version), + "Ok", + "")) +#endif + { + return; + } + } + else + { + if (unityRunningInBatchmode +#if UNITY_2018_3_OR_NEWER + || EditorUtility.DisplayDialog("Disable Oculus Utilities Plugin", + "Do you want to disable the OVRPlugin included with Oculus Utilities and revert to the OVRPlugin installed through the Package Manager?\n\n" + + "Current version: " + GetVersionDescription(enabledUtilsPluginPkg.Version), + "Yes", + "No")) +#else + || EditorUtility.DisplayDialog("Disable Oculus Utilities Plugin", + "Do you want to disable the OVRPlugin included with Oculus Utilities and revert to the OVRPlugin bundled with the Unity Editor?\n\n" + + "Current version: " + GetVersionDescription(enabledUtilsPluginPkg.Version) + + "\nBundled version: " + GetVersionDescription(bundledPluginPkg.Version), + "Yes", + "No")) +#endif + { + DisableAllUtilitiesPluginPackages(); + + if (unityRunningInBatchmode +#if UNITY_2018_3_OR_NEWER + || EditorUtility.DisplayDialog("Restart Unity", + "Now you will be using the OVRPlugin installed through Package Manager." + + "\n\nPlease restart the Unity Editor to complete the update process.", + "Restart", + "Not Now")) +#else + || EditorUtility.DisplayDialog("Restart Unity", + "OVRPlugin has been updated to " + + GetVersionDescription(bundledPluginPkg.Version) + + ".\n\nPlease restart the Unity Editor to complete the update process." +#if !UNITY_2017_1_OR_NEWER + + " You may need to manually relaunch Unity if you are using Unity 5.6 and higher." +#endif + , + "Restart", + "Not Now")) +#endif + { + RestartUnityEditor(); + } + } + } + } + + [MenuItem("Oculus/Tools/Update OVR Utilities Plugin")] + private static void RunPluginUpdate() + { + autoUpdateEnabled = true; + AttemptPluginUpdate(false); + } + + // Separate entry point needed since "-executeMethod" does not support parameters or default parameter values + private static void BatchmodePluginUpdate() + { + OnDelayCall(); // manually invoke when running editor in batchmode + AttemptPluginUpdate(false); + } + + private static void AttemptPluginUpdate(bool triggeredByAutoUpdate) + { + OVRPlugin.SendEvent("attempt_plugin_update_auto", triggeredByAutoUpdate.ToString()); + + PluginPackage bundledPluginPkg = GetBundledPluginPackage(); + List allUtilsPluginPkgs = GetAllUtilitiesPluginPackages(); + + PluginPackage enabledUtilsPluginPkg = null; + PluginPackage newestUtilsPluginPkg = null; + + foreach(PluginPackage pluginPkg in allUtilsPluginPkgs) + { + if ((newestUtilsPluginPkg == null) || (pluginPkg.Version > newestUtilsPluginPkg.Version)) + { + newestUtilsPluginPkg = pluginPkg; + } + + if (pluginPkg.IsEnabled()) + { + if ((enabledUtilsPluginPkg == null) || (pluginPkg.Version > enabledUtilsPluginPkg.Version)) + { + enabledUtilsPluginPkg = pluginPkg; + } + } + } + + bool reenableCurrentPluginPkg = false; + PluginPackage targetPluginPkg = null; + + if ((newestUtilsPluginPkg != null) && (newestUtilsPluginPkg.Version > bundledPluginPkg.Version)) + { + if ((enabledUtilsPluginPkg == null) || (enabledUtilsPluginPkg.Version != newestUtilsPluginPkg.Version)) + { + targetPluginPkg = newestUtilsPluginPkg; + } + } + else if ((enabledUtilsPluginPkg != null) && (enabledUtilsPluginPkg.Version < bundledPluginPkg.Version)) + { + targetPluginPkg = bundledPluginPkg; + } + + PluginPackage currentPluginPkg = (enabledUtilsPluginPkg != null) ? enabledUtilsPluginPkg : bundledPluginPkg; + + if ((targetPluginPkg == null) && !UnitySupportsEnabledAndroidPlugin()) + { + // Force reenabling the current package to configure the correct android plugin for this unity version. + reenableCurrentPluginPkg = true; + targetPluginPkg = currentPluginPkg; + } + + if (targetPluginPkg == null) + { + if (!triggeredByAutoUpdate && !unityRunningInBatchmode) + { +#if UNITY_2018_3_OR_NEWER + EditorUtility.DisplayDialog("Update Oculus Utilities Plugin", + "OVRPlugin is already up to date.\n\nCurrent version: " + + GetVersionDescription(currentPluginPkg.Version), + "Ok", + ""); +#else + EditorUtility.DisplayDialog("Update Oculus Utilities Plugin", + "OVRPlugin is already up to date.\n\nCurrent version: " + + GetVersionDescription(currentPluginPkg.Version) + "\nBundled version: " + + GetVersionDescription(bundledPluginPkg.Version), + "Ok", + ""); +#endif + } + + return; // No update necessary. + } + + System.Version targetVersion = targetPluginPkg.Version; + + bool userAcceptsUpdate = false; + + if (unityRunningInBatchmode) + { + userAcceptsUpdate = true; + } + else + { + string dialogBody = "Oculus Utilities has detected that a newer OVRPlugin is available." + + " Using the newest version is recommended. Do you want to enable it?\n\n" + + "Current version: " + + GetVersionDescription(currentPluginPkg.Version) + + "\nAvailable version: " + + targetVersion; + + if (reenableCurrentPluginPkg) + { + dialogBody = "Oculus Utilities has detected a configuration change that requires re-enabling the current OVRPlugin." + + " Do you want to proceed?\n\nCurrent version: " + + GetVersionDescription(currentPluginPkg.Version); + } + + int dialogResult = EditorUtility.DisplayDialogComplex("Update Oculus Utilities Plugin", dialogBody, "Yes", "No, Don't Ask Again", "No"); + + switch (dialogResult) + { + case 0: // "Yes" + userAcceptsUpdate = true; + break; + case 1: // "No, Don't Ask Again" + autoUpdateEnabled = false; + + EditorUtility.DisplayDialog("Oculus Utilities OVRPlugin", + "To manually update in the future, use the following menu option:\n\n" + + "[Oculus -> Tools -> Update OVR Utilities Plugin]", + "Ok", + ""); + return; + case 2: // "No" + return; + } + } + + if (userAcceptsUpdate) + { + DisableAllUtilitiesPluginPackages(); + + if (!targetPluginPkg.IsBundledPluginPackage()) + { + EnablePluginPackage(targetPluginPkg); + } + + if (unityRunningInBatchmode + || EditorUtility.DisplayDialog("Restart Unity", + "OVRPlugin has been updated to " + + GetVersionDescription(targetPluginPkg.Version) + + ".\n\nPlease restart the Unity Editor to complete the update process." +#if !UNITY_2017_1_OR_NEWER + + " You may need to manually relaunch Unity if you are using Unity 5.6 and higher." +#endif + , + "Restart", + "Not Now")) + { + RestartUnityEditor(); + } + } + } + + private static bool UnitySupportsEnabledAndroidPlugin() + { + List allUtilsPluginPkgs = GetAllUtilitiesPluginPackages(); + + foreach(PluginPackage pluginPkg in allUtilsPluginPkgs) + { + if (pluginPkg.IsEnabled()) + { + if (pluginPkg.IsAndroidUniversalEnabled() && !unityVersionSupportsAndroidUniversal) + { + // Android Universal should only be enabled on supported Unity versions since it can prevent app launch. + return false; + } + else if (!pluginPkg.IsAndroidUniversalEnabled() && pluginPkg.IsAndroidUniversalPresent() && unityVersionSupportsAndroidUniversal) + { + // Android Universal is present and should be enabled on supported Unity versions since ARM64 config will fail otherwise. + return false; + } + } + } + + return true; + } + + private static void RestartUnityEditor() + { + if (unityRunningInBatchmode) + { + EditorApplication.Exit(0); + } + else + { + restartPending = true; + EditorApplication.OpenProject(GetCurrentProjectPath()); + } + } +} diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs.meta b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs.meta new file mode 100644 index 0000000..29d7fde --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdater.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9e64a3a065da39f4caa17a7372962df6 +timeCreated: 1493086775 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs new file mode 100644 index 0000000..f29d20f --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs @@ -0,0 +1,29 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +public class OVRPluginUpdaterStub : ScriptableObject +{ + // Stub helper class to locate OVR Utilities Path through Unity Editor API. + // Required to be a standalone class in a separate file or else MonoScript.FromScriptableObject() returns an empty string path. +} diff --git a/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs.meta b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs.meta new file mode 100644 index 0000000..fbaf4f6 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRPluginUpdaterStub.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 791840c2fc67dd3409b79f212fad7dd4 +timeCreated: 1493148044 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRProjectConfig.cs b/Assets/Oculus/VR/Editor/OVRProjectConfig.cs new file mode 100644 index 0000000..a9c7288 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRProjectConfig.cs @@ -0,0 +1,94 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.IO; +using System; + +[System.Serializable] +public class OVRProjectConfig : ScriptableObject +{ + public enum DeviceType + { + GearVrOrGo = 0, + Quest = 1 + } + + public List targetDeviceTypes; + + public bool disableBackups; + public bool enableNSCConfig; + + //public const string OculusProjectConfigAssetPath = "Assets/Oculus/OculusProjectConfig.asset"; + + private static string GetOculusProjectConfigAssetPath() + { + var so = ScriptableObject.CreateInstance(typeof(OVRPluginUpdaterStub)); + var script = MonoScript.FromScriptableObject(so); + string assetPath = AssetDatabase.GetAssetPath(script); + string editorDir = Directory.GetParent(assetPath).FullName; + string ovrDir = Directory.GetParent(editorDir).FullName; + string oculusDir = Directory.GetParent(ovrDir).FullName; + string configAssetPath = Path.GetFullPath(Path.Combine(oculusDir, "OculusProjectConfig.asset")); + Uri configUri = new Uri(configAssetPath); + Uri projectUri = new Uri(Application.dataPath); + Uri relativeUri = projectUri.MakeRelativeUri(configUri); + + return relativeUri.ToString(); + } + + public static OVRProjectConfig GetProjectConfig() + { + OVRProjectConfig projectConfig = null; + string oculusProjectConfigAssetPath = GetOculusProjectConfigAssetPath(); + try + { + projectConfig = AssetDatabase.LoadAssetAtPath(oculusProjectConfigAssetPath, typeof(OVRProjectConfig)) as OVRProjectConfig; + } + catch (System.Exception e) + { + Debug.LogWarningFormat("Unable to load ProjectConfig from {0}, error {1}", oculusProjectConfigAssetPath, e.Message); + } + if (projectConfig == null) + { + projectConfig = ScriptableObject.CreateInstance(); + projectConfig.targetDeviceTypes = new List(); + projectConfig.targetDeviceTypes.Add(DeviceType.Quest); + projectConfig.disableBackups = true; + projectConfig.enableNSCConfig = true; + AssetDatabase.CreateAsset(projectConfig, oculusProjectConfigAssetPath); + } + return projectConfig; + } + + public static void CommitProjectConfig(OVRProjectConfig projectConfig) + { + string oculusProjectConfigAssetPath = GetOculusProjectConfigAssetPath(); + if (AssetDatabase.GetAssetPath(projectConfig) != oculusProjectConfigAssetPath) + { + Debug.LogWarningFormat("The asset path of ProjectConfig is wrong. Expect {0}, get {1}", oculusProjectConfigAssetPath, AssetDatabase.GetAssetPath(projectConfig)); + } + EditorUtility.SetDirty(projectConfig); + } +} diff --git a/Assets/Oculus/VR/Editor/OVRProjectConfig.cs.meta b/Assets/Oculus/VR/Editor/OVRProjectConfig.cs.meta new file mode 100644 index 0000000..55035de --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRProjectConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05d394ae2a81edd4cbc3c51917e766e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs b/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs new file mode 100644 index 0000000..fe57f83 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs @@ -0,0 +1,216 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System.IO; + +/// +/// From the selected transform, takes a cubemap screenshot that can be submitted with the application +/// as a screenshot (or additionally used for reflection shaders). +/// +class OVRScreenshotWizard : ScriptableWizard +{ + public enum TexFormat + { + JPEG, // 512kb at 1k x 1k resolution vs + PNG, // 5.3mb + } + + public enum SaveMode { + SaveCubemapScreenshot, + SaveUnityCubemap, + SaveBoth, + } + + public GameObject renderFrom = null; + public int size = 2048; + public SaveMode saveMode = SaveMode.SaveUnityCubemap; + public string cubeMapFolder = "Assets/Textures/Cubemaps"; + public TexFormat textureFormat = TexFormat.PNG; + + /// + /// Validates the user's input + /// + void OnWizardUpdate() + { + helpString = "Select a game object positioned in the place where\nyou want to render the cubemap screenshot from: "; + isValid = (renderFrom != null); + } + + /// + /// Create the asset path if it is not available. + /// Assuming the newFolderPath is stated with "Assets", which is a requirement. + /// + static bool CreateAssetPath( string newFolderPath ) + { + const int maxFoldersCount = 32; + string currentPath; + string[] pathFolders; + + pathFolders = newFolderPath.Split (new char[]{ '/' }, maxFoldersCount); + + if (!string.Equals ("Assets", pathFolders [0], System.StringComparison.OrdinalIgnoreCase)) + { + Debug.LogError( "Folder path has to be started with \" Assets \" " ); + return false; + } + + currentPath = "Assets"; + for (int i = 1; i < pathFolders.Length; i++) + { + if (!string.IsNullOrEmpty(pathFolders[i])) + { + string newPath = currentPath + "/" + pathFolders[i]; + if (!AssetDatabase.IsValidFolder(newPath)) + AssetDatabase.CreateFolder(currentPath, pathFolders[i]); + currentPath = newPath; + } + } + + Debug.Log( "Created path: " + currentPath ); + return true; + } + + /// + /// Renders the cubemap + /// + void OnWizardCreate() + { + if ( !AssetDatabase.IsValidFolder( cubeMapFolder ) ) + { + if (!CreateAssetPath(cubeMapFolder)) + { + Debug.LogError( "Created path failed: " + cubeMapFolder ); + return; + } + } + + bool existingCamera = true; + bool existingCameraStateSave = true; + Camera camera = renderFrom.GetComponent(); + if (camera == null) + { + camera = renderFrom.AddComponent(); + camera.farClipPlane = 10000f; + existingCamera = false; + } + else + { + existingCameraStateSave = camera.enabled; + camera.enabled = true; + } + // find the last screenshot saved + if (cubeMapFolder[cubeMapFolder.Length-1] != '/') + { + cubeMapFolder += "/"; + } + int idx = 0; + string[] fileNames = Directory.GetFiles(cubeMapFolder); + foreach(string fileName in fileNames) + { + if (!fileName.ToLower().EndsWith(".cubemap")) + { + continue; + } + string temp = fileName.Replace(cubeMapFolder + "vr_screenshot_", string.Empty); + temp = temp.Replace(".cubemap", string.Empty); + int tempIdx = 0; + if (int.TryParse( temp, out tempIdx )) + { + if (tempIdx > idx) + { + idx = tempIdx; + } + } + } + string pathName = string.Format("{0}vr_screenshot_{1}.cubemap", cubeMapFolder, (++idx).ToString("d2")); + Cubemap cubemap = new Cubemap(size, TextureFormat.RGB24, false); + + // render into cubemap + if ((camera != null) && (cubemap != null)) + { + // set up cubemap defaults + OVRCubemapCapture.RenderIntoCubemap(camera, cubemap); + if (existingCamera) + { + camera.enabled = existingCameraStateSave; + } + else + { + DestroyImmediate(camera); + } + // generate a regular texture as well? + if ( ( saveMode == SaveMode.SaveCubemapScreenshot ) || ( saveMode == SaveMode.SaveBoth ) ) + { + GenerateTexture(cubemap, pathName); + } + + if ( ( saveMode == SaveMode.SaveUnityCubemap ) || ( saveMode == SaveMode.SaveBoth ) ) + { + Debug.Log( "Saving: " + pathName ); + // by default the unity cubemap isn't saved + AssetDatabase.CreateAsset( cubemap, pathName ); + // reimport as necessary + AssetDatabase.SaveAssets(); + // select it in the project tree so developers can find it + EditorGUIUtility.PingObject( cubemap ); + Selection.activeObject = cubemap; + } + AssetDatabase.Refresh(); + } + } + + /// + /// Generates a NPOT 6x1 cubemap in the following format PX NX PY NY PZ NZ + /// + void GenerateTexture(Cubemap cubemap, string pathName) + { + // Encode the texture and save it to disk + pathName = pathName.Replace(".cubemap", (textureFormat == TexFormat.PNG) ? ".png" : ".jpg" ).ToLower(); + pathName = pathName.Replace( cubeMapFolder.ToLower(), "" ); + string format = textureFormat.ToString(); + string fullPath = EditorUtility.SaveFilePanel( string.Format( "Save Cubemap Screenshot as {0}", format ), "", pathName, format.ToLower() ); + if ( !string.IsNullOrEmpty( fullPath ) ) + { + Debug.Log( "Saving: " + fullPath ); + OVRCubemapCapture.SaveCubemapCapture(cubemap, fullPath); + } + } + + /// + /// Unity Editor menu option to take a screenshot + /// + [MenuItem("Oculus/Tools/OVR Screenshot Wizard", false, 100000)] + static void TakeOVRScreenshot() + { + OVRScreenshotWizard wizard = ScriptableWizard.DisplayWizard("OVR Screenshot Wizard", "Render Cubemap"); + if (wizard != null) + { + if (Selection.activeGameObject != null) + wizard.renderFrom = Selection.activeGameObject; + else + wizard.renderFrom = Camera.main.gameObject; + + wizard.isValid = (wizard.renderFrom != null); + } + } +} diff --git a/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs.meta b/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs.meta new file mode 100644 index 0000000..3ee30b8 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRScreenshotWizard.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b8b9ee1d7b188284f90d944cd54eb026 +timeCreated: 1462825988 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: + - renderFrom: {fileID: 168286, guid: a5014611cefbb6b4398b7e4c82203d08, type: 2} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/OVRSystemProfilerPanel.cs b/Assets/Oculus/VR/Editor/OVRSystemProfilerPanel.cs new file mode 100644 index 0000000..81a8607 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRSystemProfilerPanel.cs @@ -0,0 +1,691 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus SDK License Version 3.4.1 (the "License"); +you may not use the Oculus SDK except in compliance with the License, +which is provided at the time of installation or download, or which +otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at + +https://developer.oculus.com/licenses/sdk-3.4.1 + +Unless required by applicable law or agreed to in writing, the Oculus SDK +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +using System.Collections.Generic; +using System; +using System.Reflection; +using UnityEngine; +using UnityEditor; +using System.Text; + +public class OVRSystemProfilerPanel : EditorWindow { + [MenuItem("Oculus/Tools/Oculus Profiler Panel")] + public static void ShowWindow() + { + EditorWindow.GetWindow(typeof(OVRSystemProfilerPanel), false, "Oculus Profiler"); + OVRPlugin.SendEvent("oculus_profiler_panel", "show_window"); + } + + bool showAndroidOptions = false; + OVRNetwork.OVRNetworkTcpClient tcpClient = new OVRNetwork.OVRNetworkTcpClient(); + int remoteListeningPort = OVRSystemPerfMetrics.TcpListeningPort; + + //OVRSystemPerfMetrics.PerfMetrics lastReceivedMetrics; + + const int maxMetricsFrames = 120; + const float metricsHistoryDuration = 1.0f; + + List receivedMetricsList = new List(); + bool pauseReceiveMetrics = false; + bool repaintRequested = false; + + const float labelWidth = 140.0f; + const float panelInnerRightPad = 6.0f; + const float progressBarPad = 5.0f; + const float progressBarHeight = 18.0f; + + string androidSdkRootPath; + OVRADBTool adbTool; + + // The actual window code goes here + void OnGUI() + { + showAndroidOptions = EditorGUILayout.Foldout(showAndroidOptions, "Android Tools"); + + if (showAndroidOptions) + { + GUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("Android SDK root path: ", androidSdkRootPath); + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + if (GUILayout.Button("Start Server")) + { + if (adbTool == null) + { + adbTool = new OVRADBTool(androidSdkRootPath); + } + if (adbTool.isReady) + { + int exitCode = adbTool.StartServer(null); + EditorUtility.DisplayDialog("ADB StartServer", (exitCode == 0 ? "Success" : "Failure. ExitCode = " + exitCode.ToString()), "Ok"); + } + else + { + EditorUtility.DisplayDialog("Can't locate ADBTool", adbTool.adbPath, "Ok"); + } + } + if (GUILayout.Button("Kill Server")) + { + if (adbTool == null) + { + adbTool = new OVRADBTool(androidSdkRootPath); + } + if (adbTool.isReady) + { + int exitCode = adbTool.KillServer(null); + EditorUtility.DisplayDialog("ADB KillServer", (exitCode == 0 ? "Success" : "Failure. ExitCode = " + exitCode.ToString()), "Ok"); + } + else + { + EditorUtility.DisplayDialog("Can't locate ADBTool", adbTool.adbPath, "Ok"); + } + } + if (GUILayout.Button("Forward Port")) + { + if (adbTool == null) + { + adbTool = new OVRADBTool(androidSdkRootPath); + } + if (adbTool.isReady) + { + int exitCode = adbTool.ForwardPort(remoteListeningPort, null); + EditorUtility.DisplayDialog("ADB ForwardPort", (exitCode == 0 ? "Success" : "Failure. ExitCode = " + exitCode.ToString()), "Ok"); + OVRPlugin.SendEvent("device_metrics_profiler", (exitCode == 0 ? "adb_forward_success" : "adb_forward_failure")); + } + else + { + EditorUtility.DisplayDialog("Can't locate ADBTool", adbTool.adbPath, "Ok"); + } + } + if (GUILayout.Button("Release Port")) + { + if (adbTool == null) + { + adbTool = new OVRADBTool(androidSdkRootPath); + } + if (adbTool.isReady) + { + int exitCode = adbTool.ReleasePort(remoteListeningPort, null); + EditorUtility.DisplayDialog("ADB ReleasePort", (exitCode == 0 ? "Success" : "Failure. ExitCode = " + exitCode.ToString()), "Ok"); + } + else + { + EditorUtility.DisplayDialog("Can't locate ADBTool", adbTool.adbPath, "Ok"); + } + } + GUILayout.EndHorizontal(); + } + + EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); + + GUILayout.BeginHorizontal(); + remoteListeningPort = EditorGUILayout.DelayedIntField("Remote Port", remoteListeningPort); + + if (tcpClient.connectionState == OVRNetwork.OVRNetworkTcpClient.ConnectionState.Disconnected) + { + if (GUILayout.Button("Connect")) + { + ConnectPerfMetricsTcpServer(); + pauseReceiveMetrics = false; + OVRPlugin.SendEvent("device_metrics_profiler", "connect"); + } + } + else + { + if (tcpClient.connectionState == OVRNetwork.OVRNetworkTcpClient.ConnectionState.Connecting) + { + if (GUILayout.Button("Connecting ... Click again to Cancel")) + { + DisconnectPerfMetricsTcpServer(); + OVRPlugin.SendEvent("device_metrics_profiler", "cancel"); + } + } + else + { + if (GUILayout.Button("Disconnect")) + { + DisconnectPerfMetricsTcpServer(); + OVRPlugin.SendEvent("device_metrics_profiler", "disconnect"); + } + + if (GUILayout.Button(pauseReceiveMetrics ? "Continue" : "Pause")) + { + pauseReceiveMetrics = !pauseReceiveMetrics; + } + } + } + GUILayout.EndHorizontal(); + + EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); + + lock (receivedMetricsList) + { + PresentIntProperty("Frame Count", "frameCount"); + PresentIntProperty("Dropped Frame Count", "compositorDroppedFrameCount"); + + float? avgFrameTime = GetAveragePerfValueFloat("deltaFrameTime"); + if (avgFrameTime.HasValue) + { + float fps = 1.0f / avgFrameTime.Value; + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("FPS", GUILayout.Width(labelWidth)); + EditorGUILayout.LabelField(string.Format("{0:F1}", fps)); + EditorGUILayout.EndHorizontal(); + } + + int? deviceCpuClockLevel = GetLatestPerfValueInt("deviceCpuClockLevel"); + int? deviceGpuClockLevel = GetLatestPerfValueInt("deviceGpuClockLevel"); + float? deviceCpuClockFrequencyInMHz = GetLatestPerfValueFloat("deviceCpuClockFrequencyInMHz"); + float? deviceGpuClockFrequencyInMHz = GetLatestPerfValueFloat("deviceGpuClockFrequencyInMHz"); + + if (deviceCpuClockLevel.HasValue || deviceCpuClockFrequencyInMHz.HasValue) + { + string cpuLabel; + string cpuText; + if (deviceCpuClockLevel.HasValue && deviceCpuClockFrequencyInMHz.HasValue) + { + cpuLabel = "CPU Level (Freq)"; + cpuText = string.Format("{0} ({1:F0} MHz)", deviceCpuClockLevel, deviceCpuClockFrequencyInMHz); + } + else if (deviceCpuClockLevel.HasValue) + { + cpuLabel = "CPU Level"; + cpuText = string.Format("{0}", deviceCpuClockLevel); + } + else + { + cpuLabel = "CPU Frequency"; + cpuText = string.Format("{0:F0} MHz", deviceCpuClockFrequencyInMHz); + } + PresentText(cpuLabel, cpuText); + } + + if (deviceGpuClockLevel.HasValue || deviceGpuClockFrequencyInMHz.HasValue) + { + string cpuLabel; + string cpuText; + if (deviceGpuClockLevel.HasValue && deviceGpuClockFrequencyInMHz.HasValue) + { + cpuLabel = "GPU Level (Freq)"; + cpuText = string.Format("{0} ({1:F0} MHz)", deviceGpuClockLevel, deviceGpuClockFrequencyInMHz); + } + else if (deviceGpuClockLevel.HasValue) + { + cpuLabel = "GPU Level"; + cpuText = string.Format("{0}", deviceGpuClockLevel); + } + else + { + cpuLabel = "GPU Frequency"; + cpuText = string.Format("{0:F0} MHz", deviceGpuClockFrequencyInMHz); + } + PresentText(cpuLabel, cpuText); + } + + PresentColumnTitles("Current", "Average", "Peak"); + + PresentFloatTimeInMs("Frame Time", "deltaFrameTime", 0.020f, true, true); + PresentFloatTimeInMs("App CPU Time", "appCpuTime", 0.020f, true, true); + PresentFloatTimeInMs("App GPU Time", "appGpuTime", 0.020f, true, true); + PresentFloatTimeInMs("Compositor CPU Time", "compositorCpuTime", 0.020f, true, true); + PresentFloatTimeInMs("Compositor GPU Time", "compositorGpuTime", 0.020f, true, true); + PresentFloatPercentage("CPU Util (Average)", "systemCpuUtilAveragePercentage", false, false); + PresentFloatPercentage("CPU Util (Worst Core)", "systemCpuUtilWorstPercentage", false, false); + PresentFloatPercentage("GPU Util", "systemGpuUtilPercentage", false, false); + } + } + + void GetMetricsField(string propertyName, out FieldInfo baseFieldInfo, out FieldInfo validalityFieldInfo) + { + baseFieldInfo = typeof(OVRSystemPerfMetrics.PerfMetrics).GetField(propertyName); + validalityFieldInfo = typeof(OVRSystemPerfMetrics.PerfMetrics).GetField(propertyName + "_IsValid"); + } + + bool HasValidPerfMetrics(string propertyName) + { + FieldInfo baseFieldInfo, validalityFieldInfo; + GetMetricsField(propertyName, out baseFieldInfo, out validalityFieldInfo); + + if (baseFieldInfo == null || (validalityFieldInfo != null && validalityFieldInfo.FieldType != typeof(bool))) + { + Debug.LogWarning("[OVRSystemProfilerPanel] Unable to find property " + propertyName); + return false; + } + + if (validalityFieldInfo == null) + { + return true; + } + + for (int i = receivedMetricsList.Count - 1; i >= 0; --i) + { + var metrics = receivedMetricsList[i]; + if (validalityFieldInfo != null && (bool)validalityFieldInfo.GetValue(metrics)) + { + return true; + } + } + + return false; + } + + int? GetLatestPerfValueInt(string propertyName) + { + FieldInfo baseFieldInfo, validalityFieldInfo; + GetMetricsField(propertyName, out baseFieldInfo, out validalityFieldInfo); + + if (baseFieldInfo == null || baseFieldInfo.FieldType != typeof(int) || + (validalityFieldInfo != null && validalityFieldInfo.FieldType != typeof(bool))) + { + Debug.LogWarning("[OVRSystemProfilerPanel] GetLatestPerfValueInt(): Type mismatch"); + return null; + } + + if (receivedMetricsList.Count == 0) + { + return null; + } + + for (int i = receivedMetricsList.Count - 1; i >= 0; --i) + { + var metrics = receivedMetricsList[i]; + if (validalityFieldInfo == null || (validalityFieldInfo != null && (bool)validalityFieldInfo.GetValue(metrics))) + { + return (int)baseFieldInfo.GetValue(metrics); + } + } + + return null; + } + + float? GetLatestPerfValueFloat(string propertyName) + { + FieldInfo baseFieldInfo, validalityFieldInfo; + GetMetricsField(propertyName, out baseFieldInfo, out validalityFieldInfo); + + if (baseFieldInfo == null || baseFieldInfo.FieldType != typeof(float) || + (validalityFieldInfo != null && validalityFieldInfo.FieldType != typeof(bool))) + { + Debug.LogWarning("[OVRSystemProfilerPanel] GetLatestPerfValueFloat(): Type mismatch"); + return null; + } + + if (receivedMetricsList.Count == 0) + { + return null; + } + + for (int i = receivedMetricsList.Count - 1; i >= 0; --i) + { + var metrics = receivedMetricsList[i]; + if (validalityFieldInfo == null || (validalityFieldInfo != null && (bool)validalityFieldInfo.GetValue(metrics))) + { + return (float)baseFieldInfo.GetValue(metrics); + } + } + + return null; + } + + float? GetAveragePerfValueFloat(string propertyName) + { + FieldInfo baseFieldInfo, validalityFieldInfo; + GetMetricsField(propertyName, out baseFieldInfo, out validalityFieldInfo); + + if (baseFieldInfo == null || baseFieldInfo.FieldType != typeof(float) || + (validalityFieldInfo != null && validalityFieldInfo.FieldType != typeof(bool))) + { + Debug.LogWarning("[OVRSystemProfilerPanel] GetAveragePerfValueFloat(): Type mismatch"); + return null; + } + + int count = 0; + float sum = 0; + + OVRSystemPerfMetrics.PerfMetrics lastMetrics = null; + int metricsIndex; + for (metricsIndex = receivedMetricsList.Count - 1; metricsIndex >= 0; --metricsIndex) + { + var metrics = receivedMetricsList[metricsIndex]; + if (validalityFieldInfo != null && !(bool)validalityFieldInfo.GetValue(metrics)) + { + continue; + } + lastMetrics = metrics; + break; + } + + if (lastMetrics == null) + { + return null; + } + + for (; metricsIndex >=0; -- metricsIndex) + { + var metrics = receivedMetricsList[metricsIndex]; + if (metrics.frameTime < lastMetrics.frameTime - metricsHistoryDuration) + { + break; + } + if (validalityFieldInfo != null && !(bool)validalityFieldInfo.GetValue(metrics)) + { + continue; + } + sum += (float)baseFieldInfo.GetValue(metrics); + count++; + } + + if (count == 0) + { + return null; + } + else + { + return sum / count; + } + } + + float? GetMaxPerfValueFloat(string propertyName) + { + FieldInfo baseFieldInfo, validalityFieldInfo; + GetMetricsField(propertyName, out baseFieldInfo, out validalityFieldInfo); + + if (baseFieldInfo == null || baseFieldInfo.FieldType != typeof(float) || + (validalityFieldInfo != null && validalityFieldInfo.FieldType != typeof(bool))) + { + Debug.LogWarning("[OVRSystemProfilerPanel] GetMaxPerfValueFloat(): Type mismatch"); + return null; + } + + OVRSystemPerfMetrics.PerfMetrics lastMetrics = null; + int metricsIndex; + for (metricsIndex = receivedMetricsList.Count - 1; metricsIndex >= 0; --metricsIndex) + { + var metrics = receivedMetricsList[metricsIndex]; + if (validalityFieldInfo != null && !(bool)validalityFieldInfo.GetValue(metrics)) + { + continue; + } + lastMetrics = metrics; + break; + } + + if (lastMetrics == null) + { + return null; + } + + float? result = null; + + for (; metricsIndex >= 0; --metricsIndex) + { + var metrics = receivedMetricsList[metricsIndex]; + if (metrics.frameTime < lastMetrics.frameTime - metricsHistoryDuration) + { + break; + } + if (validalityFieldInfo != null && !(bool)validalityFieldInfo.GetValue(metrics)) + { + continue; + } + else + { + float value = (float)baseFieldInfo.GetValue(metrics); + if (!result.HasValue || result.Value < value) + { + result = value; + } + } + } + + return result; + } + + void PresentFloatPercentage(string label, string propertyName, bool displayAverage, bool displayMaximum) + { + float? lastValue = GetLatestPerfValueFloat(propertyName); + if (!lastValue.HasValue) + { + return; + } + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.Width(labelWidth)); + + Rect r = EditorGUILayout.BeginVertical(); + + float barWidth = (r.width - panelInnerRightPad - progressBarPad * 2) / 3.0f; + EditorGUI.ProgressBar(new Rect(r.x, r.y, barWidth, r.height), lastValue.Value, string.Format("{0:F1}%", lastValue.Value * 100.0f)); + + if (displayAverage) + { + float? averageValue = GetAveragePerfValueFloat(propertyName); + if (averageValue.HasValue) + { + EditorGUI.ProgressBar(new Rect(r.x + barWidth + progressBarPad, r.y, barWidth, r.height), averageValue.Value, string.Format("{0:F1}%", averageValue.Value * 100.0f)); + } + } + + if (displayMaximum) + { + float? maxValue = GetMaxPerfValueFloat(propertyName); + if (maxValue.HasValue) + { + EditorGUI.ProgressBar(new Rect(r.x + (barWidth + progressBarPad) * 2, r.y, barWidth, r.height), maxValue.Value, string.Format("{0:F1}%", maxValue.Value * 100.0f)); + } + } + + GUILayout.Space(progressBarHeight); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndHorizontal(); + } + + void PresentFloatTimeInMs(string label, string propertyName, float maxScale, bool displayAverage, bool displayMaximum) + { + float? lastValue = GetLatestPerfValueFloat(propertyName); + if (!lastValue.HasValue) + { + return; + } + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.Width(labelWidth)); + + Rect r = EditorGUILayout.BeginVertical(); + + float barWidth = (r.width - panelInnerRightPad - progressBarPad * 2) / 3.0f; + EditorGUI.ProgressBar(new Rect(r.x, r.y, barWidth, r.height), lastValue.Value/maxScale, string.Format("{0:F1} ms", lastValue.Value * 1000.0f)); + + if (displayAverage) + { + float? averageValue = GetAveragePerfValueFloat(propertyName); + if (averageValue.HasValue) + { + EditorGUI.ProgressBar(new Rect(r.x + barWidth + progressBarPad, r.y, barWidth, r.height), averageValue.Value / maxScale, string.Format("{0:F1} ms", averageValue.Value * 1000.0f)); + } + } + + if (displayMaximum) + { + float? maxValue = GetMaxPerfValueFloat(propertyName); + if (maxValue.HasValue) + { + EditorGUI.ProgressBar(new Rect(r.x + (barWidth + progressBarPad) * 2, r.y, barWidth, r.height), maxValue.Value / maxScale, string.Format("{0:F1} ms", maxValue.Value * 1000.0f)); + } + } + + GUILayout.Space(progressBarHeight); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.EndHorizontal(); + } + + void PresentIntProperty(string label, string propertyName) + { + int? lastValue = GetLatestPerfValueInt(propertyName); + if (!lastValue.HasValue) + { + return; + } + + PresentText(label, lastValue.Value.ToString()); + } + + void PresentText(string label, string text) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(label, GUILayout.Width(labelWidth)); + EditorGUILayout.LabelField(text); + EditorGUILayout.EndHorizontal(); + } + + void PresentColumnTitles(string title0, string title1, string title2) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("", GUILayout.Width(labelWidth)); + + float windowWidth = position.width; + float barWidth = (windowWidth - labelWidth - panelInnerRightPad * 3 ) / 3.0f; + EditorGUILayout.LabelField(title0, GUILayout.Width(barWidth)); + EditorGUILayout.LabelField(title1, GUILayout.Width(barWidth)); + EditorGUILayout.LabelField(title2, GUILayout.Width(barWidth)); + + EditorGUILayout.EndHorizontal(); + } + + // Called as the new window is opened. + private void Awake() + { + InitializeAndroidSdkPath(); + minSize = new Vector2(400, 300); + } + + void InitializeAndroidSdkPath() + { + androidSdkRootPath = OVRConfig.Instance.GetAndroidSDKPath(); + } + + // OnDestroy is called to close the EditorWindow window. + private void OnDestroy() + { + DisconnectPerfMetricsTcpServer(); + } + + // Called multiple times per second on all visible windows. + private void Update() + { + if (tcpClient != null && tcpClient.Connected) + { + tcpClient.Tick(); + } + + if (repaintRequested) + { + Repaint(); + repaintRequested = false; + } + } + + void OnConnectionStateChanged() + { + repaintRequested = true; + + if (tcpClient.connectionState == OVRNetwork.OVRNetworkTcpClient.ConnectionState.Disconnected) + { + tcpClient.connectionStateChangedCallback -= OnConnectionStateChanged; + tcpClient.payloadReceivedCallback -= OnPayloadReceived; + } + } + + void OnPayloadReceived(int payloadType, byte[] buffer, int start, int length) + { + if (payloadType == OVRSystemPerfMetrics.PayloadTypeMetrics) + { + string message = Encoding.UTF8.GetString(buffer, start, length); + OnMessageReceived(message); + } + else + { + Debug.LogWarningFormat("[OVRSystemProfilerPanel] unrecongized payload type {0}", payloadType); + } + } + + void OnMessageReceived(string message) + { + if (pauseReceiveMetrics) + { + return; + } + + var metrics = new OVRSystemPerfMetrics.PerfMetrics(); + if (!metrics.LoadFromJSON(message)) + { + Debug.LogWarning("Cannot analyze metrics: " + message); + return; + } + lock(receivedMetricsList) + { + if (receivedMetricsList.Count >= maxMetricsFrames) + { + receivedMetricsList.RemoveAt(0); + } + receivedMetricsList.Add(metrics); + } + repaintRequested = true; + } + + void ConnectPerfMetricsTcpServer() + { + tcpClient.connectionStateChangedCallback += OnConnectionStateChanged; + tcpClient.payloadReceivedCallback += OnPayloadReceived; + + tcpClient.Connect(remoteListeningPort); + +#if UNITY_2017_1_OR_NEWER + EditorApplication.playModeStateChanged += OnApplicationPlayModeStateChanged; +#endif + } + + void DisconnectPerfMetricsTcpServer() + { +#if UNITY_2017_1_OR_NEWER + EditorApplication.playModeStateChanged -= OnApplicationPlayModeStateChanged; +#endif + + tcpClient.Disconnect(); + } + +#if UNITY_2017_1_OR_NEWER + void OnApplicationPlayModeStateChanged(PlayModeStateChange change) + { + Debug.LogFormat("[OVRSystemPerfMetricsWindow] OnApplicationPlayModeStateChanged {0}", change.ToString()); + if (change == PlayModeStateChange.ExitingPlayMode) + { + tcpClient.Disconnect(); + } + } +#endif + +} diff --git a/Assets/Oculus/VR/Editor/OVRSystemProfilerPanel.cs.meta b/Assets/Oculus/VR/Editor/OVRSystemProfilerPanel.cs.meta new file mode 100644 index 0000000..8be7663 --- /dev/null +++ b/Assets/Oculus/VR/Editor/OVRSystemProfilerPanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60f797c78d731a54e9d4a949cfa2f989 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/Oculus.VR.Editor.asmdef b/Assets/Oculus/VR/Editor/Oculus.VR.Editor.asmdef new file mode 100644 index 0000000..974abe7 --- /dev/null +++ b/Assets/Oculus/VR/Editor/Oculus.VR.Editor.asmdef @@ -0,0 +1,19 @@ +{ + "name": "Oculus.VR.Editor", + "references": [ + "Oculus.VR" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "versionDefines": [ + { + "name": "com.unity.xr.management", + "expression": "", + "define": "USING_XR_SDK" + } + ] +} \ No newline at end of file diff --git a/Assets/Oculus/VR/Editor/Oculus.VR.Editor.asmdef.meta b/Assets/Oculus/VR/Editor/Oculus.VR.Editor.asmdef.meta new file mode 100644 index 0000000..56a1bb0 --- /dev/null +++ b/Assets/Oculus/VR/Editor/Oculus.VR.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2761a0af0f567748a72629d4bb18a26 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/PathHelper.cs b/Assets/Oculus/VR/Editor/PathHelper.cs new file mode 100644 index 0000000..df75daa --- /dev/null +++ b/Assets/Oculus/VR/Editor/PathHelper.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; + +public static class PathHelper +{ + public static string MakeRelativePath(string fromPath, string toPath) + { + var fromUri = new Uri(Path.GetFullPath(fromPath)); + var toUri = new Uri(Path.GetFullPath(toPath)); + + if (fromUri.Scheme != toUri.Scheme) + { + return toPath; + } + + var relativeUri = fromUri.MakeRelativeUri(toUri); + var relativePath = Uri.UnescapeDataString(relativeUri.ToString()); + + if (toUri.Scheme.Equals("file", StringComparison.InvariantCultureIgnoreCase)) + { + relativePath = relativePath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); + } + + return relativePath; + } +} diff --git a/Assets/Oculus/VR/Editor/PathHelper.cs.meta b/Assets/Oculus/VR/Editor/PathHelper.cs.meta new file mode 100644 index 0000000..f188d20 --- /dev/null +++ b/Assets/Oculus/VR/Editor/PathHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e97d8d54c1d1f16468e12a2079fdd060 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Editor/network_sec_config.xml b/Assets/Oculus/VR/Editor/network_sec_config.xml new file mode 100644 index 0000000..e8413b0 --- /dev/null +++ b/Assets/Oculus/VR/Editor/network_sec_config.xml @@ -0,0 +1,4 @@ + + + + diff --git a/Assets/Oculus/VR/Editor/network_sec_config.xml.meta b/Assets/Oculus/VR/Editor/network_sec_config.xml.meta new file mode 100644 index 0000000..c35bd28 --- /dev/null +++ b/Assets/Oculus/VR/Editor/network_sec_config.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b69c9b95ff9fc8a44b5e162bbca8fbcc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/LICENSE.txt b/Assets/Oculus/VR/LICENSE.txt new file mode 100644 index 0000000..9116f35 --- /dev/null +++ b/Assets/Oculus/VR/LICENSE.txt @@ -0,0 +1,576 @@ +OCULUS UTILITIES SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT + +1. INTRODUCTION This Oculus Utilities Software Development Kit License Agreement +(“License”) forms a legally binding contract between you and Facebook +Technologies, LLC formerly known as Oculus VR, LLC (“Oculus”) and governs your +use of the Oculus Utilities Software Development Kit (“Utilities SDK”). In order +to obtain and use the Utilities SDK, you must first agree to the terms and +conditions of this License. If you agree to the terms and conditions of this +License, you may use the Utilities SDK. If you do not agree to the terms and +conditions of this License, then you may not use the Utilities SDK. PLEASE READ +THIS LICENSE CAREFULLY TO ENSURE THAT YOU UNDERSTAND EACH PROVISION. THIS +LICENSE CONTAINS A MANDATORY INDIVIDUAL ARBITRATION AND CLASS ACTION/JURY TRIAL +WAIVER PROVISION THAT REQUIRES THE USE OF ARBITRATION ON AN INDIVIDUAL BASIS TO +RESOLVE DISPUTES, RATHER THAN JURY TRIALS OR CLASS ACTIONS. BY CLICKING ACCEPT +OR USING, DOWNLOADING OR COPYING THE UTILITIES SDK, YOU SIGNIFY THAT YOU HAVE +READ, UNDERSTOOD AND HEREBY AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF +THIS LICENSE. + +2. ELIGIBILITY By entering into this License with Oculus, you represent and +warrant that you are not a person with whom Oculus is prohibited from +transacting business under applicable law, nor are you a person who Oculus has +previously denied access to or use of the Utilities SDK. If you will use the +Utilities SDK on behalf of your employer or other company, organization, +educational institution or any governmental agency, instrumentality or +department (your “Entity”), you represent and warrant that you have full legal +authority to bind your Entity to all of the terms and conditions of this +License. If you do not have the requisite authority to so bind your Entity, you +may not accept this License or use the Utilities SDK on behalf of your Entity. + +3. UTILITIES SDK LICENSE + +3.1. License. Subject to the terms and conditions of this License, Oculus hereby +grants to you a limited, worldwide, freely revocable, non-exclusive, +non-transferable, sublicensable, fully paid-up royalty-free license under +Oculus’ copyright rights to: + +(a) store, use, reproduce, and redistribute (subject to the restrictions below) +the software contained in the Utilities SDK (including, but not limited to +OVRPlugin binary files, models, and Utilities Code (as defined below)) solely to +design, develop, test, and run your engines, tools, applications, content, games +and demos (collectively and generally referred to as “Developer Content”) to be +used in connection with any and all compatible software or hardware (including, +without limitation and by way of example, with commercial headsets, mobile +tablets or phones) made available by Oculus or any third parties; + +(b) use, reproduce, modify, distribute, and create derivative works of the +following named folders in the Utilities SDK: Prefabs, Resources, Scenes, +Scripts, and Shader (collectively, “Utilities Code”) to internally design, +develop and test Developer Content, and (ii) incorporate such Utilities Code and +any such modifications, in whole or in part, into your Developer Content +developed through your use of the Utilities SDK; and + +(c) use any documentation made available by Oculus to you in connection with the +Utilities SDK solely in connection with your exercise of the licenses and rights +granted in this License. + +3.2. License Restrictions. You may not use the Utilities SDK for any purpose not +expressly permitted by this License. Without in any way limiting the foregoing +restriction, except as expressly permitted in this License, you agree not to (or +enable any third party to): + +(a) modify or create any derivative works of the Utilities SDK other than the +Utilities Code; + +(b) work around any technical measures in the Utilities SDK, or use the +Utilities SDK (alone or in conjunction with any device, program or service) in +an attempt to circumvent any technical measures employed by or for Oculus or any +third party to control access to, or any rights in, any content, file or other +work; + +(c) decompile, reverse engineer, disassemble, decipher, translate or otherwise +attempt to derive or access any source code of the Utilities SDK or any part of +the Utilities SDK (other than any component of the Utilities SDK that is made +available by Oculus in source code form), or any other software or firmware +provided to you by Oculus (except as and only to the extent the foregoing +restriction is prohibited by applicable law); + +(d) publish, rent, lease, lend, sell, sublicense, distribute, transfer, disclose +or otherwise provide the Utilities SDK; + +(e) remove, obscure or alter any proprietary notices on or in the Utilities SDK +or any Oculus license terms, policies or terms of service or any links to or +notices thereto; + +(f) use the Utilities SDK in connection with the development or transmission of +any malware, viruses, hacks, bots, Trojan horses or other harmful or malicious +code; + +(g) use the Utilities SDK (i) to infringe or violate any rights of Oculus, any +of its affiliates or any third party or (ii) in any way that does not comply +with all applicable laws (including, without limitation, all applicable export, +import, privacy and data security laws); + +(h) use the Utilities SDK in any way that interferes with, disrupts, damages or +accesses in any manner not expressly authorized by Oculus, or accesses for any +purpose not expressly authorized by Oculus, any services, networks, other +properties, data or information of Oculus or any of its affiliates or any third +party; + +(i) use the Utilities SDK in any manner other than to enhance your Developer +Content or the functionality thereof in accordance with Section 3.1; + +(j) develop any Developer Content or other application or software that could +(i) disable, hack or otherwise interfere with any authentication, content +protection, digital signing, digital rights management, security or verification +mechanisms or (ii) disable, override or otherwise interfere with any device, +system or software, including any device, system or software intended to notify +an end user that such end user’s personal information is being collected, +transmitted, stored, maintained, processed or used; + +(k) use the Utilities SDK to (i) defame, abuse, harass, stalk, bully or threaten +any third party or (ii) promote or facilitate any prohibited or illegal +activities; + +(l) enable any functionality in your Developer Content that would generate +excessive traffic over any network or servers of Oculus or any of its affiliates +or any third party that would negatively impact the experience of any user of +any product or service of Oculus or any of its affiliates (or of any third party +made available through any network or service of Oculus or any of its +affiliates), or otherwise interfere with, limit or restrict the operation of any +servers or networks of Oculus or any of its affiliates; + +(m) use or encourage the use of the Utilities SDK for any mission critical, +life-saving or ultra-hazardous activities; or + +(n) use or redistribute the Utilities SDK or any portion or component thereof in +any manner that would cause the Utilities SDK or any portion or component +thereof to become subject to the terms of any open source license. + +3.3. Redistribution and Sublicense Restriction. Subject to the terms and +conditions of this License, your license to redistribute and sublicense the +Utilities SDK (or any portion thereof) is also expressly made subject to the +following conditions: + +(a) You may sublicense and redistribute the Utilities SDK to your end users in +whole for no charge or as part of a for-charge piece of Developer Content; +provided that you may only license, sublicense or redistribute the Utilities +SDK: (a) in its entirety; (b) solely in compiled binary executable form; and (c) +solely as incorporated into your Developer Content; + +(b) You must include with all such redistributed or sublicensed Utilities SDK +code the following copyright notice: “Copyright © Facebook Technologies, LLC and +its affiliates. All rights reserved.”; + +(c) You must give any other recipients of the Utilities SDK a copy of this +License as such recipients, licensees or sublicensees may only use the Utilities +SDK subject to the terms of this License and such recipient's, licensee's or +sublicensee's agreement to and acceptance of this License with Oculus; + +(d) Each sublicense you grant to your end users must be pursuant to a valid and +enforceable license agreement that (i) includes an acknowledgement by such end +user that the Utilities SDK is the proprietary property of Oculus or its +licensors or contributors, (ii) ensures that neither Oculus nor any of its +licensors or contributors has any obligations to such end user with respect to +any the Utilities SDK and (iii) imposes obligations on such end user no less +restrictive than your obligations under this License with respect to the use and +protection of the Utilities SDK; and + +(e) the Utilities SDK includes a "LICENSE" text file (the "License Notice"), and +any Utilities SDK distribution that you distribute must include a copy of this +License with the License Notice. Notwithstanding the foregoing in this Section +3.3, you may grant to end users of your Developer Content a non-exclusive +runtime sublicense to use the Utilities Code and any modifications of any +Utilities Code incorporated into your Developer Content pursuant to and in +accordance with this License: (a) solely in the form in which the Utilities Code +is made available to you by Oculus; and (b) solely as incorporated into your +Developer Content pursuant to and in accordance with this License (“Runtime +Sublicense”). You agree to include a Runtime Sublicense with any of your +Developer Content that incorporates any Utilities Code (or any modifications of +any Utilities Code) that you provide, distribute or make available to any end +user of such Developer Content. Each Runtime Sublicense you grant to an end user +of your Developer Content must be granted pursuant to a valid and enforceable +license agreement that: (i) includes an acknowledgement by such end user that +the Utilities Code (and any modifications of any Utilities Code (other than +modifications of the Utilities Code developed by you during the term of this +License in accordance with Section 3.1 (“Developer Modified Utilities Code”)) is +the proprietary property of Oculus or its licensors or contributors, (ii) +ensures that neither Oculus nor any of its licensors or contributors has any +obligations to such end user with respect to any Utilities Code (or any +modifications of any Utilities Code) and (iii) imposes obligations on such end +user no less restrictive than your obligations under this License with respect +to the use and protection of the Utilities Code. If you incorporate any of the +Utilities Code or Developer Modified Utilities Code into any of your Developer +Content, you must include in or on all copies of such Developer Content a copy +of this License and the following copyright notice (along with any other notices +or license files that appear in or on the Utilities SDK): “Certain portions of +the code are owned by Facebook Technologies, LLC. Copyright © Facebook +Technologies, LLC. All rights reserved”. + +3.4. Developer Content Rules, Restrictions and License. + +(a) You agree that as a condition of this License you will design and distribute +your Developer Content to ensure that your Developer Content and any software +required to use your Developer Content does not, and you will not, alter or +interfere with the normal operation, behavior or functionality of the compatible +hardware or software of Oculus or any third party. Without limiting the +foregoing, in the case of Oculus hardware or software, you will ensure that your +Developer Content and any software required to use your Developer Content does +not alter or interfere with: (i) the behavior of the "Oculus button" and "XBox +button" implemented by the Oculus system software; (ii) any on-screen messages +or information; (iii) the behavior of the proximity sensor in the Oculus +hardware implemented by the Oculus system software; (iv) any Oculus hardware or +software security features; (v) end user's settings; or (vi) the Oculus Flash +Screen Warnings. You also agree not to (i) commit any act, or enable, assist or +instruct any third party to commit any act, intended to interfere with the +normal operation of any compatible hardware or software of Oculus or any third +party or (ii) provide any software to any users or developers that would induce +breach of any Oculus’s or other software or hardware providers’ agreements or +that contains any malware, viruses, hacks, bots, Trojan horses or other harmful +or malicious code. You also agree that your Developer Content will not violate +the Oculus Content Guidelines (available at +https://developer.oculus.com/distribute/latest/concepts/publish-content-guidelines/). + +(b) Oculus may suspend operation of or remove any Developer Content that does +not comply with the restrictions in this License. + +(c) You agree that Oculus may grant its employees and internal contractors the +right to use, perform and display the Developer Content you provide to Oculus +for user research, testing, evaluation and approval purposes, which shall be on +a royalty-free basis. + +4. OCULUS PLATFORM SERVICES + +4.1. Definitions. For the purposes of this Section 4: + +(a) "Application Services" means services provided by Oculus associated with the +Platform, including but not limited to in-app purchasing, multiplayer +matchmaking, friends, leader boards, achievements, rooms, voice over IP and +cloud saves, which list may be changed from time to time in Oculus' sole +discretion. + +(b) "Oculus Platform Framework" means the suite of Oculus platform services, +including but not limited to the Oculus file distribution and update system +(enabling distribution and updates of Developer Content by Oculus, including +through generated activation Keys), entitlement system, and account +authentication, which list may be changed from time to time in Oculus' sole +discretion. + +(c) "Platform" means the Oculus virtual reality platform, including but not +limited to the user experience, user interface, store, and social features, +usable on Oculus approved hardware or any third-party device or operating +system, including but not limited to iOS, Android, Windows, OS X, Linux, and +Windows Mobile. + +(d) "Platform Services" means the Oculus Platform Framework and the Application +Services. + +4.2. Oculus Platform Services. Oculus makes certain Platform Services available +to you to include and enable in your Developer Content. Developer Content that +enables or includes any Platform Service must implement the Oculus Platform +Framework with that Developer Content. Once your Developer Content has been +authorized for use of the Platform Services, you are not required to update your +Developer Content to include new Platform Services Oculus may make available as +part of the Oculus Platform Framework. + +4.3. Key Provision and Redemption. If you request that Oculus generate +activation keys for your Developer Content on the Platform ("Keys") and Oculus +agrees, you hereby grant Oculus (i) the right to generate Keys for you and (ii) +a license to make available, reproduce, distribute, perform, and display the +Developer Content to end users who have submitted a Key to Oculus. Oculus agrees +to authenticate and make Developer Content available to any end user supplying a +valid Key (unless the Developer Content has been removed or withdrawn). + +4.4. Limited Authorization. You hereby grant Oculus the limited authorization +reasonably necessary for Oculus's exercise of its rights and performance of its +obligations under this Section 4. You agree that Oculus may use its contractors +and affiliates for the purposes of exercising its rights and licenses set forth +in this Section 4. + +4.5. Platform Services Requirements. You will not make any use of any API, +software, code or other item or information supplied by Oculus in connection +with the Platform Services other than to enhance the functionality of your +Developer Content. You may not sublicense any software, firmware or other item +or information supplied by Oculus in connection with the Platform Service for +use by a third party, unless expressly authorized by Oculus to do so. + +5. INTELLECTUAL PROPERTY RIGHTS + +5.1. Ownership. + +(a) Oculus. As between you and Oculus, Oculus retains all rights (including all +intellectual property rights), title and interest (subject to the license +granted to you in Section 3.1 during the term of this License) in and to the +Utilities SDK and any derivatives or modifications of the Utilities SDK, +including all source code and object code of any of the foregoing (other than +any Developer Modified Utilities Code). Oculus reserves all rights not expressly +granted to you under this License. + +(b) Developer. For the sake of clarification, when you use the Utilities SDK in +or with Developer Content, you retain all rights to: (i) your Developer Content, +and (ii) Developer Modified Utilities Code; provided however, Oculus retains all +rights to the Utilities SDK (including without limitation, any and all software +contained therein), including those that may be incorporated into your Developer +Content. Except as otherwise provided herein, you have no obligations to share +or license Developer Content (including your source and object code) or any of +your Developer Modified Utilities Code to Oculus or any third parties; + +5.2. Additional Content. Oculus may include additional content in the Utilities +SDK for demonstration, references or other purposes. Such content will be +clearly marked in the Utilities SDK and is subject to any terms and conditions +included with such content. + +5.3. Publicity; Use of Trademarks. This License does not grant you or any +third-party permission to use any of the trade names, trademarks, service marks, +logos or product names of Oculus, except as required for reasonable and +customary use in describing the origin of the Utilities SDK or reproducing the +copyright or other notice required pursuant to Section 3.3. Neither the name of +Oculus nor the name of any contributor, licensor, employee or contractor of +Oculus may be used to endorse or promote any Developer Content or any other +products, content or materials developed using the Utilities SDK without +specific prior written permission of Oculus. + +5.4. Feedback. You may, but are not obligated to, provide Oculus with comments +or other feedback, suggestions or recommended improvements regarding the +Utilities SDK or any other Oculus products or services (collectively, +“Feedback”). You hereby grant Oculus a worldwide, non-exclusive, perpetual, +irrevocable, royalty-free, fully paid-up, transferable, sublicensable (through +multiple tiers of sublicenses) license to use, disclose, reproduce, modify, +create derivatives of, license, distribute, provide and exploit any Feedback for +any purpose whatsoever, without any obligation, limitation or restriction of any +kind. + +6. THIRD PARTY SOFTWARE OR MATERIALS Your use of any third-party software +(including any open source software) or materials included in the Utilities SDK +may be subject to other terms and conditions typically found in separate +third-party license agreements or "READ ME" files included with such third-party +software or materials. To the extent any of such other terms and conditions +conflict with any of the terms and conditions of this License, such other terms +and conditions applicable to such third-party software or materials will control +solely with respect to such third-party software or materials (but to no other +portion or component of the Utilities SDK). + +7. INDEMNIFICATION You agree to defend, indemnify and hold harmless Oculus and +its subsidiaries, agents, contributors, licensors, managers, and other +affiliated companies, and their employees, contractors, agents, officers and +directors, from and against any and all claims, damages, obligations, losses, +liabilities, costs or debt, and expenses (including, without limitation, +reasonable attorneys’ fees and expenses) arising from or relating to (a) your +exercise of any of the licenses or rights granted to you under this License, (b) +your use and access of the Utilities SDK and/or the Platform Services, (c) any +Developer Content, (d) any negligence or misconduct by you or any of your +employees, agents, vendors or contractors, (e) your violation of any third-party +right, including without limitation any right of privacy or intellectual +property rights, (f) your violation of any applicable law, rule or regulation, +or (g) your breach of any provision of this License. + +8. NO WARRANTIES THE UTILITIES SDK, ANY PORTION OR COMPONENT OF THE UTILITIES +SDK (INCLUDING, BY WAY OF EXAMPLE AND WITHOUT LIMITATION, THE OVRPLUGIN BINARY +FILES, MODELS, AND UTILITIES CODE), THE PLATFORM SERVICES AND ALL DOCUMENTATION +OR OTHER INFORMATION OR MATERIALS PROVIDED OR MADE AVAILABLE BY OR FOR OCULUS +ARE PROVIDED "AS IS" AND WITHOUT ANY WARRANTY OF ANY KIND, WHETHER EXPRESS, +IMPLIED, STATUTORY OR OTHERWISE. ALL EXPRESS OR IMPLIED WARRANTIES ARE HEREBY +DISCLAIMED, INCLUDING, WITHOUT LIMITATION: (A) ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, QUIET +ENJOYMENT, QUIET POSSESSION OR TITLE; AND (B) ANY WARRANTIES THAT THE UTILITIES +SDK, ANY PORTION OR COMPONENT OF THE UTILITIES SDK, THE PLATFORM SERVICES OR ANY +DOCUMENTATION OR OTHER INFORMATION OR MATERIALS PROVIDED OR MADE AVAILABLE BY OR +FOR OCULUS (I) WILL MEET ANY OF YOUR REQUIREMENTS (INCLUDING, WITHOUT +LIMITATION, YOUR REQUIREMENTS RELATING TO ANY DESIGN OR PERFORMANCE), (II) WILL +BE UNINTERRUPTED OR ERROR-FREE, (III) ARE FREE OF ANY MALWARE, VIRUSES, HACKS, +BOTS, TROJAN HORSES AND OTHER HARMFUL OR MALICIOUS CODE; AND (D) ARE FUNCTIONAL +ON ANY HARDWARE OR IN ANY ENVIRONMENT. FEDERAL LAW, SOME STATES, PROVINCES AND +OTHER JURISDICTIONS DO NOT ALLOW THE EXCLUSION AND LIMITATIONS OF CERTAIN +IMPLIED WARRANTIES, SO THE ABOVE EXCLUSIONS MAY NOT APPLY TO YOU. THIS LICENSE +GIVES YOU SPECIFIC LEGAL RIGHTS, AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY +FROM STATE TO STATE. THE DISCLAIMERS AND EXCLUSIONS UNDER THIS LICENSE WILL NOT +APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW. + +9. LIMITATION OF LIABILITY TO THE FULLEST EXTEST PERMITTED UNDER APPLICABLE LAW, +IN NO EVENT SHALL OCULUS OR ANY OF ITS LICENSORS OR CONTRIBUTORS BE LIABLE TO +YOU OR ANY END USER OR OTHER THIRD PARTY WITH RESPECT TO ANY SUBJECT MATTER OF +THIS LICENSE (INCLUDING, WITHOUT LIMITATION, WITH RESPECT TO ANY OF THE LICENSES +OR OTHER RIGHTS GRANTED BY OCULUS UNDER THIS LICENSE) OR ARISING IN ANY WAY OUT +OF THE UTILITIES SDK OR ANY PORTION OR COMPONENT OF THE UTILITIES SDK +(INCLUDING, BY WAY OF EXAMPLE AND WITHOUT LIMITATION, THE OVRPLUGIN BINARY +FILES, MODELS, AND UTILITIES CODE), THE PLATFORM SERVICES, ALL DOCUMENTATION OR +OTHER INFORMATION OR MATERIALS PROVIDED OR MADE AVAILABLE BY OR FOR OCULUS OR +ANY OF YOUR USE OF THE FOREGOING FOR ANY INDIRECT, INCIDENTAL, SPECIAL, +CONSEQUENTIAL, EXEMPLARY OR PUNITIVE DAMAGES (INCLUDING, WITHOUT LIMITATION: +DAMAGE TO BUSINESS REPTUATION; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, PROFITS, BUSINESS OR GOODWILL; LOSS OR CORRUPTION OF DATA; OR BUSINESS +INTERRUPTION), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY (LEGAL, EQUITABLE +OR OTHERWISE), WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (WHETHER +NEGLIGENCE OR OTHERWISE), WHETHER FORESEEABLE OR NOT AND REGARDLESS OF WHETHER +YOU HAVE BEEN OR OCULUS HAS BEEN ADVISED OF THE POSSIBILITY OF ANY SUCH DAMAGE. +YOU ACKNOWLEDGE AND AGREE THAT YOUR REMEDIES UNDER THIS LICENSE ARE LIMITED +SOLELY TO THE RIGHT TO COLLECT MONEY DAMAGES, IF ANY, AND YOU HEREBY WAIVE YOUR +RIGHT TO SEEK INJUNCTIVE OR OTHER EQUITABLE RELIEF. THE CUMULATIVE, AGGREGATE +LIABILITY OF OCULUS AND ITS AFFILIATES, LICENSORS AND CONTRIBUTORS UNDER THIS +LICENSE WILL BE LIMITED TO ONE HUNDRED US DOLLARS (US $100). THE EXISTENCE OF +MULTIPLE CLAIMS OR SUITS UNDER OR RELATED TO THIS LICENSE WILL NOT ENLARGE OR +EXTEND THE FOREGOING MONETARY CAP ON DAMAGES. SOME STATES DO NOT ALLOW THE +EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE +LIMITATIONS OR EXCLUSIONS MAY NOT APPLY TO YOU. THIS LICENSE GIVES YOU SPECIFIC +LEGAL RIGHTS, AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY FROM STATE TO STATE. +THE DISCLAIMERS, EXCLUSIONS, AND LIMITATIONS OF LIABILITY UNDER THIS LICENSE +WILL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW. + +10. LICENSE TERM + +10.1. Term and Termination. The term of this License will commence on the date +on which you click accept or use, download or copy the Utilities SDK or any +portion or component thereof and will continue until terminated as set forth in +this License. This License and all your rights under this License shall +automatically and immediately terminate in the event you breach any provision of +this License (including, without limitation, your failure to provide required +notices as set forth in Section 3.3 or your failure to observe any of the +restrictions set forth in Sections 3.2, 3.3 or 3.4) or for any of the following +reasons: + +(a) Any of the following infringes or violates any intellectual property rights +of any third party or violates any applicable law: (i) your exercise of any of +the licenses or rights granted under this License; and/or (ii) your Developer +Content or any use or exploitation of any such Developer Content; + +(b) Your Developer Content violates applicable law; + +(c) Any health or safety issues associated with your Developer Content; + +(d) Failure to comply with or use properly the Oculus Flash Screen Warnings; + +(e) To the extent applicable, any failure to comply with or properly use the +Oculus help and safety warnings; + +(f) Failure to provide required notices as set forth above; and + +(g) Failure to observe the restrictions in Section 3.2. + +10.2. Effect of Termination; Survival. If this License is terminated for any +reason, (a) all licenses and rights granted under this License will immediately +terminate; (b) you must immediately cease using the Utilities SDK, all portions +and components of the Utilities SDK, all documentation made available by Oculus +to you in connection with the Utilities SDK; and (c) using, distributing, +providing, making available and exploiting any Developer Content that +incorporates any Utilities Code, any modifications of any Utilities Code (other +than any Developer Modified Utilities Code), or any other portion or component +of the Utilities SDK. Notwithstanding any termination of this License, the +following provisions shall survive indefinitely: Sections 1, 2, 3.2, 3.3, 3.4, +4.1, 4.4, 4.5, 5, 6, 7, 8, 9, 10.2, 11, and 12. + +11. GOVERNING LAW; ARBITRATION; CLASS ACTION/JURY TRIAL WAIVER + +11.1. Governing Law; Alternative Dispute Resolution. This License shall be +governed by the laws of the State of California, without giving effect to +conflict of laws provisions or principles thereof. The parties agree that, +except as provided below, all disputes relating to this License shall be +resolved by binding non-appearance-based arbitration before a single neutral +arbitrator in San Mateo, California. The arbitration will be conducted in the +English language by a single arbitrator who is an attorney-at-law with at least +fifteen (15) years’ experience in consumer and technology transactions and who +is also a member of the JAMS roster of arbitrators. If you and Oculus cannot +agree on a mutually acceptable arbitrator within thirty (30) days after the +arbitration is initiated, then JAMS will pick a neutral arbitrator who meets +such qualifications. The arbitration shall be conducted in accordance with the +rules and procedures of JAMS then in effect, and the judgment of the arbitrator +shall be final and capable of entry in any court of competent jurisdiction. The +parties undertake to keep confidential all awards in their arbitration, together +with all materials in the proceedings created for the purpose of the arbitration +and all other documents produced by another party in the proceedings not +otherwise in the public domain, save and to the extent that disclosure may be +required of a party by legal duty, to protect or pursue a legal right or to +enforce or challenge an award in legal proceedings before a court or other +judicial authority. You and Oculus agree the following may be submitted to a +court of competent jurisdiction located within San Francisco, California and +further agree to submit to the personal jurisdiction of the courts located +within San Francisco, California in connection with (a) any entrance of an +arbitrator's judgment or decision, (b) any dispute with respect to the +arbitration process or procedure, (c) Oculus’ exercise of any of its equitable +rights or remedies or (d) any claims regarding the ownership, validity, +enforceability and/or infringement of any intellectual property rights. + +11.2. Class Action/Jury Waiver. WITH RESPECT TO ALL PERSONS AND ENTITIES, +REGARDLESS OF WHETHER THEY HAVE OBTAINED OR USED THE UTILITIES SDK FOR PERSONAL, +COMMERCIAL OR OTHER PURPOSES, ALL CLAIMS MUST BE BROUGHT IN THE PARTIES’ +INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED +CLASS ACTION, COLLECTIVE ACTION, PRIVATE ATTORNEY GENERAL ACTION OR OTHER +REPRESENTATIVE PROCEEDING. THIS WAIVER APPLIES TO CLASS ARBITRATION, AND, UNLESS +WE AGREE OTHERWISE, THE ARBITRATOR MAY NOT CONSOLIDATE MORE THAN ONE PERSON’S +CLAIMS. YOU AGREE THAT, BY ENTERING INTO THIS LICENSE, YOU AND OCULUS ARE EACH +WAIVING THE RIGHT TO A TRIAL BY JURY OR TO PARTICIPATE IN A CLASS ACTION, +COLLECTIVE ACTION, PRIVATE ATTORNEY GENERAL ACTION, OR OTHER REPRESENTATIVE +PROCEEDING OF ANY KIND. + +11.3. License Suspension. If you file a suit or initiate a proceeding with or +before a governmental authority in which you challenge Oculus’ ownership of any +intellectual property rights related to the Utilities SDK or the validity or +enforceability of any such intellectual property rights (a “Claim”), the +licenses granted to you under this License shall automatically and immediately +(upon the filing of such suit or proceeding) be suspended. Such suspension will +continue until all such Claims asserted by you are dismissed, withdrawn or are +finally settled and no longer pending, as applicable, in which case, such +licenses will be automatically reinstated; provided, however, that such +reinstatement will not release you from any liabilities, or remedies therefor, +that arise during the period of such suspension. + +12. OTHER PROVISIONS + +12.1. Changes to the SDK. Oculus may discontinue or change functionality of the +Utilities SDK at any time, and your continued use of the Utilities SDK or use of +any modified or additional Utilities SDL is conditioned upon your adherence to +the terms of this License, as modified by Oculus from time to time in accordance +with Section 12.2. + +12.2. Updates to License. Oculus may revise and update this License at any time +by posting the amended terms and conditions of this License (“Updated License +Terms”) to: https://developer.oculus.com/licenses/. Your continued use of the +Utilities SDK or any portion or component of the Utilities SDK constitutes your +acceptance of the Updated License Terms. If there are Updated License Terms for +any future release of the Utilities SDK, you: (a) agree to comply with all terms +and conditions of such Updated License Terms for such future Utilities SDK +release and (b) acknowledge and agree that such Updated License Terms will apply +to all Developer Content that may be developed using or incorporating such +future Utilities SDK or any portion or component of the Utilities SDK (for +example, without limitation, you cannot avoid complying with the terms and +conditions of such Updated License Terms by developing any Developer Content +using or incorporating any release of the Utilities SDK that precedes such +future Utilities SDK or under any version of this License that precedes such +Updated License Terms). + +12.3. Export Law Compliance. You will comply, and will not cause Oculus to not +comply (by for example, providing Developer Content to Oculus under this +Agreement for which required export clearances have not been obtained), with all +applicable export control laws of the United States and any other applicable +governmental authority, including without limitation, the U.S. Export +Administration Regulations. + +12.4. Confidentiality. You agree that (a) the Utilities SDK and all +documentation or other information or materials provided or made available by or +for Oculus are Oculus’ confidential information and (b) you will not use, +disclose or make available any of such Oculus confidential information to any +third party except as expressly permitted under, and in accordance with, the +terms and conditions of this License. + +12.5. Relationship of the Parties. The parties hereto are independent +contractors. Neither party has any express or implied right or authority to +assume or create any obligations on behalf of the other or to bind such other +party to any contract, agreement or undertaking with any third party. Nothing in +this License shall be construed to create a partnership, joint venture, +employment or agency relationship. + +12.6. Assignment. You may not assign this License or any licenses or rights +granted under this License or delegate any obligations under this License, in +each case, without the advance written consent of Oculus, which may be withheld +in its sole discretion. Any attempted assignment by you without such advance +written consent of Oculus will be null and void. Oculus may assign this License +or any licenses or rights granted under this License or delegate any obligations +under this License in its sole discretion, in each case, without your consent or +any notice to you. This License shall be binding on, inure to the benefit of, +and be enforceable by the parties and their respective heirs, successors and +permitted assigns. + +12.7. Severability. In the event that any provision of this License is held to +be null, void, invalid or unenforceable by a court, other governmental body or +arbitration tribunal, in each case of competent jurisdiction, you and Oculus +agree (a) such provision will be modified to the extent necessary to allow it to +be valid and enforceable to the extent permitted by applicable law, provided +that such modification reflects as nearly as possible the intentions of the +parties when entering into this License and (b) the remaining provisions of this +License shall remain in full force and effect. + +12.8. Headings. The section headings contained in this License are for reference +purposes only and shall not affect in any way the meaning or interpretation of +this License. + +12.9. No Waiver. Failure of either party at any time to exercise or enforce any +legal right or remedy under this License will not be construed as a waiver of +such provisions or in any way affect the validity of this License or any portion +of this License. No waiver of any provision of this License shall be of any +force or effect unless set forth in a writing signed by an authorized +representative of each party. + +12.10. Entire Agreement. This License constitutes the entire agreement between +you and Oculus regarding your use of the Utilities SDK and supersedes and +replaces any prior or contemporaneous agreements, understandings, negotiations +and discussions between you and Oculus regarding your access and use of the +Utilities SDK. diff --git a/Assets/Oculus/VR/LICENSE.txt.meta b/Assets/Oculus/VR/LICENSE.txt.meta new file mode 100644 index 0000000..7041bc0 --- /dev/null +++ b/Assets/Oculus/VR/LICENSE.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea216613534b07f45adfcdd5ba09cf4e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/NOTICE.txt b/Assets/Oculus/VR/NOTICE.txt new file mode 100644 index 0000000..85b04f3 --- /dev/null +++ b/Assets/Oculus/VR/NOTICE.txt @@ -0,0 +1,65 @@ +The following sets forth attribution notices for third party software that may be contained in portions of the Oculus Utilities SDK + +OPENVR +SimpleJSON + +-------------------------------------------------------------------------------- + +Notices for file(s): +ThirdParty/openvr_api.cs + +Copyright (c) 2015, Valve Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------- + +Notices for file(s): +ThirdParty/SimpleJSON.cs +ThirdParty/SimpleJSONUnity.cs + +The MIT License (MIT) + +Copyright (c) 2012-2017 Markus Göbel (Bunny83) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Assets/Oculus/VR/NOTICE.txt.meta b/Assets/Oculus/VR/NOTICE.txt.meta new file mode 100644 index 0000000..8ad2548 --- /dev/null +++ b/Assets/Oculus/VR/NOTICE.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1d3ffd26004693948809cf896824b17e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Oculus.VR.asmdef b/Assets/Oculus/VR/Oculus.VR.asmdef new file mode 100644 index 0000000..2425c90 --- /dev/null +++ b/Assets/Oculus/VR/Oculus.VR.asmdef @@ -0,0 +1,15 @@ +{ + "name": "Oculus.VR", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "versionDefines": [ + { + "name": "com.unity.xr.management", + "expression": "", + "define": "USING_XR_SDK" + } + ] +} \ No newline at end of file diff --git a/Assets/Oculus/VR/Oculus.VR.asmdef.meta b/Assets/Oculus/VR/Oculus.VR.asmdef.meta new file mode 100644 index 0000000..65849bb --- /dev/null +++ b/Assets/Oculus/VR/Oculus.VR.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f64c9ebcd7899c3448a08dc9f9ddbe30 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins.meta b/Assets/Oculus/VR/Plugins.meta new file mode 100644 index 0000000..d875041 --- /dev/null +++ b/Assets/Oculus/VR/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e1f06b56b3e7614419c5db24e2262938 +folderAsset: yes +timeCreated: 1493321336 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0.meta b/Assets/Oculus/VR/Plugins/1.41.0.meta new file mode 100644 index 0000000..5151fd8 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 21414b5e6d7ac8f47bb675b34c8e1f11 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Android.meta b/Assets/Oculus/VR/Plugins/1.41.0/Android.meta new file mode 100644 index 0000000..21c8730 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5dc174cd470824b49a9cabb121db2a82 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Android/OVRPlugin.aar.disabled b/Assets/Oculus/VR/Plugins/1.41.0/Android/OVRPlugin.aar.disabled new file mode 100644 index 0000000..62ef1fd Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.41.0/Android/OVRPlugin.aar.disabled differ diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Android/OVRPlugin.aar.disabled.meta b/Assets/Oculus/VR/Plugins/1.41.0/Android/OVRPlugin.aar.disabled.meta new file mode 100644 index 0000000..2d33846 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/Android/OVRPlugin.aar.disabled.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 919c9ccf6c17eb940b6f1873d3e35dd6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal.meta b/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal.meta new file mode 100644 index 0000000..340ffdd --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f1e8c0df6fe6b74593bbe457d536d7e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal/OVRPlugin.aar.disabled b/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal/OVRPlugin.aar.disabled new file mode 100644 index 0000000..b21f86e Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal/OVRPlugin.aar.disabled differ diff --git a/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal/OVRPlugin.aar.disabled.meta b/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal/OVRPlugin.aar.disabled.meta new file mode 100644 index 0000000..6e77544 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/AndroidUniversal/OVRPlugin.aar.disabled.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e31884728c27ff94780bc999abc3a525 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Win.meta b/Assets/Oculus/VR/Plugins/1.41.0/Win.meta new file mode 100644 index 0000000..d7aa1e3 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/Win.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a9394acf96038cf4ea47a4b2ea204963 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Win/OVRPlugin.dll.disabled b/Assets/Oculus/VR/Plugins/1.41.0/Win/OVRPlugin.dll.disabled new file mode 100644 index 0000000..c643293 Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.41.0/Win/OVRPlugin.dll.disabled differ diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Win/OVRPlugin.dll.disabled.meta b/Assets/Oculus/VR/Plugins/1.41.0/Win/OVRPlugin.dll.disabled.meta new file mode 100644 index 0000000..af7d44b --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/Win/OVRPlugin.dll.disabled.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 70a7e4a0118e2b94699023f3ae13eef6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Win64.meta b/Assets/Oculus/VR/Plugins/1.41.0/Win64.meta new file mode 100644 index 0000000..bafbd71 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/Win64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8aa7ff3a3668b764d8fd27c8cc467eca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Win64/OVRPlugin.dll.disabled b/Assets/Oculus/VR/Plugins/1.41.0/Win64/OVRPlugin.dll.disabled new file mode 100644 index 0000000..f6e957a Binary files /dev/null and b/Assets/Oculus/VR/Plugins/1.41.0/Win64/OVRPlugin.dll.disabled differ diff --git a/Assets/Oculus/VR/Plugins/1.41.0/Win64/OVRPlugin.dll.disabled.meta b/Assets/Oculus/VR/Plugins/1.41.0/Win64/OVRPlugin.dll.disabled.meta new file mode 100644 index 0000000..4aa43da --- /dev/null +++ b/Assets/Oculus/VR/Plugins/1.41.0/Win64/OVRPlugin.dll.disabled.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b9e5cbfdac4cce24eb24f1ce2a60178a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/MacOSX.meta b/Assets/Oculus/VR/Plugins/MacOSX.meta new file mode 100644 index 0000000..f977625 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/MacOSX.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3b0808cda9a8d4b458fad2788f63ff7f +folderAsset: yes +timeCreated: 1522878718 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle.meta new file mode 100644 index 0000000..cf1bb8f --- /dev/null +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle.meta @@ -0,0 +1,141 @@ +fileFormatVersion: 2 +guid: 537f08a1aac8553459f3574a939a05ed +folderAsset: yes +timeCreated: 1441326310 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': WP8 + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: OSX + data: + first: + Facebook: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents.meta new file mode 100644 index 0000000..1ade0cc --- /dev/null +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 648a2605a2bc848728f27adc59fe8010 +folderAsset: yes +timeCreated: 1441327083 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist new file mode 100644 index 0000000..7420b23 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + OVRGamepad + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + + CFBundleName + + CFBundlePackageType + APPL + CFBundleShortVersionString + + CFBundleSignature + ???? + CFBundleVersion + + CSResourcesFileMapped + + LSRequiresCarbon + + NSHumanReadableCopyright + + + diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist.meta new file mode 100644 index 0000000..7d9d729 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/Info.plist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5de957de5187b406687f99aa5a30871b +timeCreated: 1441327083 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..4d43db7 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8fad9c333897547a59f91edacd69f7db +folderAsset: yes +timeCreated: 1441327083 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad new file mode 100644 index 0000000..7c7bf1c Binary files /dev/null and b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad differ diff --git a/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad.meta b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad.meta new file mode 100644 index 0000000..a132ba7 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/MacOSX/OVRGamepad.bundle/Contents/MacOS/OVRGamepad.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3af79ea9cc1984e498b6a7e5409cdcac +timeCreated: 1441327083 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Plugins/placeholder.txt b/Assets/Oculus/VR/Plugins/placeholder.txt new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Oculus/VR/Plugins/placeholder.txt.meta b/Assets/Oculus/VR/Plugins/placeholder.txt.meta new file mode 100644 index 0000000..c70c9d4 --- /dev/null +++ b/Assets/Oculus/VR/Plugins/placeholder.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c111fff50cd6404baf2b833432e6ee8 +timeCreated: 1493325988 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Prefabs.meta b/Assets/Oculus/VR/Prefabs.meta new file mode 100644 index 0000000..598abc3 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: bfe39332fdb4cb044b619b3e4b890396 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Oculus/VR/Prefabs/Cursor_Timer.prefab b/Assets/Oculus/VR/Prefabs/Cursor_Timer.prefab new file mode 100644 index 0000000..15972c9 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/Cursor_Timer.prefab @@ -0,0 +1,70 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + - 33: {fileID: 3300000} + - 23: {fileID: 2300000} + m_Layer: 0 + m_Name: Cursor_Timer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.70000005, z: 1} + m_LocalScale: {x: .25, y: .25, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &2300000 +Renderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: 9531aa878fd5c4749b288b72024e8d2f, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3300000 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 + m_IsExploded: 1 diff --git a/Assets/Oculus/VR/Prefabs/Cursor_Timer.prefab.meta b/Assets/Oculus/VR/Prefabs/Cursor_Timer.prefab.meta new file mode 100644 index 0000000..4d32837 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/Cursor_Timer.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 5a7682c244a150b49965c007720bdbb7 +NativeFormatImporter: + userData: diff --git a/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab b/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab new file mode 100644 index 0000000..19b69a8 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab @@ -0,0 +1,509 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400000} + - component: {fileID: 20000010189485334} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400002} + - component: {fileID: 8100000} + - component: {fileID: 2037080} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400004} + - component: {fileID: 11400010} + - component: {fileID: 11400000} + - component: {fileID: 114473266101150724} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400006} + - component: {fileID: 20000012175207052} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109308 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 482130} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &113768 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 487254} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &159718 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 459718} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168682 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 468682} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 459718} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400002 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 459718} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400004 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 459718} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400006 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 459718} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &459718 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159718} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400006} + - {fileID: 400002} + - {fileID: 400000} + - {fileID: 468682} + - {fileID: 482130} + - {fileID: 487254} + m_Father: {fileID: 400004} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &468682 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 459718} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &482130 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109308} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4593680705043960} + m_Father: {fileID: 459718} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &487254 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113768} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4484591312116288} + m_Father: {fileID: 459718} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &2037080 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &8100000 +AudioListener: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 1 + _monoscopic: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + _headPoseRelativeOffsetRotation: {x: 0, y: 0, z: 0} + _headPoseRelativeOffsetTranslation: {x: 0, y: 0, z: 0} + profilerTcpPort: 32419 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + externalCompositionBackdropColor: {r: 0, g: 0, b: 0, a: 0} + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + mrcActivationMode: 0 + _trackingOriginType: 0 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 + AllowRecenter: 1 + _reorientHMDOnControllerRecenter: 1 + LateControllerUpdate: 1 +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 + disableEyeAnchorCameras: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100004} + m_IsPrefabParent: 1 +--- !u!1 &1054112583220142 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4484591312116288} + m_Layer: 0 + m_Name: RightControllerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1983321904398200 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4593680705043960} + m_Layer: 0 + m_Name: LeftControllerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4484591312116288 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1054112583220142} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 487254} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4593680705043960 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1983321904398200} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 482130} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &20000010189485334 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!20 &20000012175207052 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!114 &114473266101150724 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5178bc8574ce2bf4388e787a2e2af326, type: 3} + m_Name: + m_EditorClassIdentifier: + opMode: 1 + resetHmdPoseOnRelease: 1 + resetHmdPoseByMiddleMouseButton: 1 + activateKeys: 3201000031010000 + pitchKeys: 3401000033010000 diff --git a/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab.meta b/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab.meta new file mode 100644 index 0000000..6286515 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 126d619cf4daa52469682f85c1378b4a +NativeFormatImporter: + userData: diff --git a/Assets/Oculus/VR/Prefabs/OVRControllerPrefab.prefab b/Assets/Oculus/VR/Prefabs/OVRControllerPrefab.prefab new file mode 100644 index 0000000..caf303d --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRControllerPrefab.prefab @@ -0,0 +1,3003 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &112276 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 488160} + - component: {fileID: 11479374} + m_Layer: 0 + m_Name: OVRControllerPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &488160 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112276} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011296770734} + - {fileID: 4464436526328426} + - {fileID: 4018669889632488} + - {fileID: 4590459659269666} + - {fileID: 4674903275779108} + - {fileID: 4424331664721706} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &11479374 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 112276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aed62bf3ae2456c408f247f96808ce96, type: 3} + m_Name: + m_EditorClassIdentifier: + m_modelGearVrController: {fileID: 1000010178323718} + m_modelOculusGoController: {fileID: 1956530202777762} + m_modelOculusTouchQuestAndRiftSLeftController: {fileID: 1864357959958104} + m_modelOculusTouchQuestAndRiftSRightController: {fileID: 1307870489563208} + m_modelOculusTouchRiftLeftController: {fileID: 1999073185825882} + m_modelOculusTouchRiftRightController: {fileID: 1351868014986946} + m_controller: 33554432 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 112276} + m_IsPrefabParent: 1 +--- !u!1 &1000010178323718 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011296770734} + m_Layer: 0 + m_Name: GearVrControllerModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011436655710 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012142331768} + - component: {fileID: 33000013153656990} + - component: {fileID: 23000011768000172} + m_Layer: 0 + m_Name: home_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011549955176 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012748093882} + - component: {fileID: 33000013186836272} + - component: {fileID: 23000013477210968} + m_Layer: 0 + m_Name: trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012388513744 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010547406920} + - component: {fileID: 33000013134621756} + - component: {fileID: 23000010895726220} + m_Layer: 0 + m_Name: chassis_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012567764716 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000010554578882} + - component: {fileID: 33000013511306870} + - component: {fileID: 23000012129420234} + m_Layer: 0 + m_Name: disc_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013696185028 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011347987256} + - component: {fileID: 33000013945561740} + - component: {fileID: 23000010818504298} + m_Layer: 0 + m_Name: back_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013718830530 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011835757296} + - component: {fileID: 33000010177796194} + - component: {fileID: 23000011389392996} + m_Layer: 0 + m_Name: text_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000014047055526 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000012637917122} + - component: {fileID: 33000013874298672} + - component: {fileID: 23000010051961506} + m_Layer: 0 + m_Name: center_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1043718319765106 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4217597188290772} + - component: {fileID: 137516833752771690} + m_Layer: 0 + m_Name: rctrl:o_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1046305140630946 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4145440608189314} + - component: {fileID: 137894515578887148} + m_Layer: 0 + m_Name: rctrl:ring_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1111836968271984 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4930198374904308} + m_Layer: 0 + m_Name: lctrl:b_trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1150514829769540 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4054458720371030} + - component: {fileID: 137953460083308940} + m_Layer: 0 + m_Name: lctrl:main_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1153598635317830 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4475506175273502} + m_Layer: 0 + m_Name: lctrl:b_button01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1163019739493792 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4756900187738382} + m_Layer: 0 + m_Name: rctrl:b_trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1175928214747458 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4160029557842794} + m_Layer: 0 + m_Name: rctrl:b_button03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1272650095541868 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4984268951621866} + m_Layer: 0 + m_Name: rctrl:b_button02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1291433702725222 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4497618915451418} + m_Layer: 0 + m_Name: rctrl:geometry_null + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1307870489563208 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4590459659269666} + - component: {fileID: 33487662383985252} + - component: {fileID: 23740872028335676} + - component: {fileID: 95033031799970748} + m_Layer: 0 + m_Name: OculusTouchForQuestAndRiftSRightModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1341283074334724 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4986827042887056} + m_Layer: 0 + m_Name: lctrl:b_button02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1346558941273396 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4336468700419714} + m_Layer: 0 + m_Name: lctrl:b_button03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1351868014986946 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4424331664721706} + - component: {fileID: 95159725740943820} + m_Layer: 0 + m_Name: OculusTouchForRiftRightModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1407562648133754 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4966908025643000} + m_Layer: 0 + m_Name: lctrl:b_stick_IGNORE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1410792866537844 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4183120237395500} + m_Layer: 0 + m_Name: lctrl:b_hold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1420546792291356 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4622968367758772} + m_Layer: 0 + m_Name: lctrl:left_touch_controller_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1501938979627348 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4781385269134180} + - component: {fileID: 137132433173345654} + m_Layer: 0 + m_Name: lctrl:side_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1580528522853954 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4519872946202134} + - component: {fileID: 137548540825210660} + m_Layer: 0 + m_Name: rctrl:controller_body_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1582883067469128 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4287477734124642} + - component: {fileID: 137013385765703262} + m_Layer: 0 + m_Name: lctrl:o_button_decal_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1591694296978774 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4488555750834636} + m_Layer: 0 + m_Name: rctrl:b_stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1634122703765650 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4835306428485234} + - component: {fileID: 137410385877248658} + m_Layer: 0 + m_Name: rctrl:thumbstick_ball_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1640091058704360 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4291277175788902} + m_Layer: 0 + m_Name: lctrl:geometry_null + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1653136352874222 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4844326987582138} + - component: {fileID: 137799296538821628} + m_Layer: 0 + m_Name: lctrl:controller_body_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1680001862499580 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4620985457895698} + m_Layer: 0 + m_Name: lctrl:b_stick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1694063663317782 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4501959689107672} + m_Layer: 0 + m_Name: rctrl:b_hold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1715807544907940 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4556676711426526} + m_Layer: 0 + m_Name: rctrl:right_touch_controller_world + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1731361599223734 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4593899846663936} + - component: {fileID: 137670343033052700} + m_Layer: 0 + m_Name: rctrl:o_button_decal_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1738261221487676 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4840275246547096} + - component: {fileID: 137020412966494170} + m_Layer: 0 + m_Name: rctrl:a_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1741382130313638 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4684588568180746} + - component: {fileID: 137310653907615322} + m_Layer: 0 + m_Name: lctrl:surface_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1758321880106294 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4401767331493524} + - component: {fileID: 137812751115180306} + m_Layer: 0 + m_Name: rctrl:side_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1833973838428082 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4626860071786586} + - component: {fileID: 137378573564850912} + m_Layer: 0 + m_Name: rctrl:b_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1846566732132504 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4471428637981784} + - component: {fileID: 137580252240055964} + m_Layer: 0 + m_Name: lctrl:y_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1864357959958104 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4018669889632488} + - component: {fileID: 33444066182808318} + - component: {fileID: 23022262598936998} + - component: {fileID: 95091669218293994} + m_Layer: 0 + m_Name: OculusTouchForQuestAndRiftSLeftModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1864589419913158 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4043977657542554} + - component: {fileID: 137306554513006224} + m_Layer: 0 + m_Name: lctrl:thumbstick_ball_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1914456947047296 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4441198579746148} + - component: {fileID: 137735589292049982} + m_Layer: 0 + m_Name: rctrl:main_trigger_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1925473343199970 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4782286329022162} + - component: {fileID: 137119327089857916} + m_Layer: 0 + m_Name: lctrl:ring_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1930270789047778 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4944515266127590} + - component: {fileID: 137039721825203164} + m_Layer: 0 + m_Name: lctrl:x_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1937342357854408 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4771435348981660} + - component: {fileID: 137967895554077838} + m_Layer: 0 + m_Name: lctrl:o_button_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1938084028754538 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4273564299776498} + - component: {fileID: 137903369291241316} + m_Layer: 0 + m_Name: rctrl:surface_PLY + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1944473258442844 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4356416327803184} + m_Layer: 0 + m_Name: rctrl:b_button01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1956530202777762 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4464436526328426} + - component: {fileID: 33356632527651328} + - component: {fileID: 23705978566827108} + m_Layer: 0 + m_Name: OculusGoControllerModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1971879593916346 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4095537424049504} + m_Layer: 0 + m_Name: rctrl:b_stick_IGNORE + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1999073185825882 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4674903275779108} + - component: {fileID: 95607614017261978} + m_Layer: 0 + m_Name: OculusTouchForRiftLeftModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010547406920 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012388513744} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.00007190227, z: -0.023617705} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011296770734} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000010554578882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012567764716} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.00007190227, z: -0.023617705} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011296770734} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011296770734 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010178323718} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011347987256} + - {fileID: 4000012637917122} + - {fileID: 4000010547406920} + - {fileID: 4000010554578882} + - {fileID: 4000012142331768} + - {fileID: 4000011835757296} + - {fileID: 4000012748093882} + m_Father: {fileID: 488160} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011347987256 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013696185028} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.00007190227, z: -0.023617705} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011296770734} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000011835757296 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013718830530} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.00007190227, z: -0.023617705} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011296770734} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012142331768 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011436655710} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.00007190227, z: -0.023617705} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011296770734} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012637917122 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014047055526} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.00007190227, z: -0.023617705} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011296770734} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4000012748093882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011549955176} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.00007190227, z: -0.023617705} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000011296770734} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4018669889632488 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1864357959958104} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 488160} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4043977657542554 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1864589419913158} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4054458720371030 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1150514829769540} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4095537424049504 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1971879593916346} + m_LocalRotation: {x: -4.5059287e-17, y: -0.70108956, z: -6.5911624e-17, w: 0.71307325} + m_LocalPosition: {x: -0.019321036, y: 0, z: 9.992007e-18} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4488555750834636} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4145440608189314 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1046305140630946} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4160029557842794 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1175928214747458} + m_LocalRotation: {x: 0.07876507, y: 0.01894126, z: 0.5343878, w: 0.8413483} + m_LocalPosition: {x: -0.012083728, y: -0.01402681, z: -0.0007126567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4556676711426526} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4183120237395500 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1410792866537844} + m_LocalRotation: {x: -0.18065539, y: -0.13555649, z: -0.067166515, w: 0.97184193} + m_LocalPosition: {x: 0.013074442, y: -0.025639696, z: -0.027427113} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4622968367758772} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4217597188290772 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1043718319765106} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4273564299776498 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1938084028754538} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4287477734124642 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1582883067469128} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4291277175788902 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1640091058704360} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4844326987582138} + - {fileID: 4054458720371030} + - {fileID: 4287477734124642} + - {fileID: 4771435348981660} + - {fileID: 4782286329022162} + - {fileID: 4781385269134180} + - {fileID: 4684588568180746} + - {fileID: 4043977657542554} + - {fileID: 4944515266127590} + - {fileID: 4471428637981784} + m_Father: {fileID: 4674903275779108} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4336468700419714 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1346558941273396} + m_LocalRotation: {x: 0.05660452, y: -0.05795374, z: -0.0046757394, w: 0.9967023} + m_LocalPosition: {x: 0.012083728, y: -0.01402681, z: -0.0007126567} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4622968367758772} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4356416327803184 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1944473258442844} + m_LocalRotation: {x: 0.056604527, y: 0.05795374, z: 0.004675739, w: 0.9967023} + m_LocalPosition: {x: 0.0019170768, y: -0.0073837424, z: -0.00091214647} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4556676711426526} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4401767331493524 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758321880106294} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4424331664721706 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1351868014986946} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4497618915451418} + - {fileID: 4556676711426526} + m_Father: {fileID: 488160} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4441198579746148 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1914456947047296} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4464436526328426 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1956530202777762} + m_LocalRotation: {x: 6.123234e-17, y: -0.0000000754979, z: 6.1232336e-17, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 488160} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4471428637981784 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1846566732132504} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4475506175273502 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1153598635317830} + m_LocalRotation: {x: 0.05660452, y: -0.05795374, z: -0.0046757394, w: 0.9967023} + m_LocalPosition: {x: -0.0019170768, y: -0.0073837424, z: -0.00091214647} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4622968367758772} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4488555750834636 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1591694296978774} + m_LocalRotation: {x: -0.003149668, y: 0.7098123, z: 0.002783398, w: 0.7043784} + m_LocalPosition: {x: -0.010637393, y: 0.00497835, z: -0.009418557} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4095537424049504} + m_Father: {fileID: 4556676711426526} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4497618915451418 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1291433702725222} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4840275246547096} + - {fileID: 4626860071786586} + - {fileID: 4519872946202134} + - {fileID: 4441198579746148} + - {fileID: 4593899846663936} + - {fileID: 4217597188290772} + - {fileID: 4145440608189314} + - {fileID: 4401767331493524} + - {fileID: 4273564299776498} + - {fileID: 4835306428485234} + m_Father: {fileID: 4424331664721706} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4501959689107672 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1694063663317782} + m_LocalRotation: {x: -0.17913595, y: 0.14914332, z: 0.022661837, w: 0.97218984} + m_LocalPosition: {x: -0.013074442, y: -0.025639696, z: -0.027427113} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4556676711426526} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4519872946202134 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1580528522853954} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4556676711426526 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1715807544907940} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: -8.659561e-17} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4356416327803184} + - {fileID: 4984268951621866} + - {fileID: 4160029557842794} + - {fileID: 4501959689107672} + - {fileID: 4488555750834636} + - {fileID: 4756900187738382} + m_Father: {fileID: 4424331664721706} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4590459659269666 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307870489563208} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 488160} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4593899846663936 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1731361599223734} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4620985457895698 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1680001862499580} + m_LocalRotation: {x: 0.0027868259, y: 0.70437866, z: -0.0031505642, w: 0.7098119} + m_LocalPosition: {x: 0.010637393, y: 0.00497835, z: -0.009418557} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4966908025643000} + m_Father: {fileID: 4622968367758772} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4622968367758772 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1420546792291356} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: -8.659561e-17} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4475506175273502} + - {fileID: 4986827042887056} + - {fileID: 4336468700419714} + - {fileID: 4183120237395500} + - {fileID: 4620985457895698} + - {fileID: 4930198374904308} + m_Father: {fileID: 4674903275779108} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4626860071786586 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1833973838428082} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4674903275779108 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1999073185825882} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4291277175788902} + - {fileID: 4622968367758772} + m_Father: {fileID: 488160} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4684588568180746 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1741382130313638} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4756900187738382 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1163019739493792} + m_LocalRotation: {x: 0.056604527, y: 0.05795374, z: 0.004675739, w: 0.9967023} + m_LocalPosition: {x: 0.001420367, y: 0.021865888, z: -0.005495974} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4556676711426526} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4771435348981660 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1937342357854408} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4781385269134180 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1501938979627348} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4782286329022162 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1925473343199970} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4835306428485234 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1634122703765650} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4840275246547096 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1738261221487676} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4497618915451418} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4844326987582138 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1653136352874222} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4930198374904308 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1111836968271984} + m_LocalRotation: {x: -0.05795374, y: -0.05660452, z: 0.9967023, w: 0.0046757394} + m_LocalPosition: {x: -0.001420367, y: 0.021865888, z: -0.005495974} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4622968367758772} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4944515266127590 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1930270789047778} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4291277175788902} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4966908025643000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1407562648133754} + m_LocalRotation: {x: 0, y: -0.70108956, z: -0, w: 0.71307325} + m_LocalPosition: {x: -0.019321036, y: 0, z: 9.992007e-18} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4620985457895698} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4984268951621866 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1272650095541868} + m_LocalRotation: {x: 0.07876507, y: 0.01894126, z: 0.5343878, w: 0.8413483} + m_LocalPosition: {x: 0.009152712, y: 0.0054823146, z: 0.000030916483} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4556676711426526} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4986827042887056 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1341283074334724} + m_LocalRotation: {x: 0.017080953, y: -0.07918932, z: 0.52647054, w: 0.84632504} + m_LocalPosition: {x: -0.0091353385, y: 0.005499125, z: -0.00011681918} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4622968367758772} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23000010051961506 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014047055526} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f6ccc53b9bcfb114996e76ee88ce6948, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23000010818504298 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013696185028} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f6ccc53b9bcfb114996e76ee88ce6948, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23000010895726220 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012388513744} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f6ccc53b9bcfb114996e76ee88ce6948, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23000011389392996 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013718830530} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f6ccc53b9bcfb114996e76ee88ce6948, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23000011768000172 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011436655710} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f6ccc53b9bcfb114996e76ee88ce6948, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23000012129420234 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012567764716} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f6ccc53b9bcfb114996e76ee88ce6948, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23000013477210968 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011549955176} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f6ccc53b9bcfb114996e76ee88ce6948, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23022262598936998 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1864357959958104} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 01ac879f6ce09924e9c26663f798beaf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23705978566827108 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1956530202777762} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 6c0b208d35ece4a459821be19df69561, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!23 &23740872028335676 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307870489563208} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 01ac879f6ce09924e9c26663f798beaf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &33000010177796194 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013718830530} + m_Mesh: {fileID: 4300000, guid: 84c37137326e7b943a87be7ae2a7ea19, type: 3} +--- !u!33 &33000013134621756 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012388513744} + m_Mesh: {fileID: 4300012, guid: 84c37137326e7b943a87be7ae2a7ea19, type: 3} +--- !u!33 &33000013153656990 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011436655710} + m_Mesh: {fileID: 4300006, guid: 84c37137326e7b943a87be7ae2a7ea19, type: 3} +--- !u!33 &33000013186836272 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011549955176} + m_Mesh: {fileID: 4300004, guid: 84c37137326e7b943a87be7ae2a7ea19, type: 3} +--- !u!33 &33000013511306870 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012567764716} + m_Mesh: {fileID: 4300010, guid: 84c37137326e7b943a87be7ae2a7ea19, type: 3} +--- !u!33 &33000013874298672 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014047055526} + m_Mesh: {fileID: 4300002, guid: 84c37137326e7b943a87be7ae2a7ea19, type: 3} +--- !u!33 &33000013945561740 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013696185028} + m_Mesh: {fileID: 4300008, guid: 84c37137326e7b943a87be7ae2a7ea19, type: 3} +--- !u!33 &33356632527651328 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1956530202777762} + m_Mesh: {fileID: 4300000, guid: e0f1914fdbfd3764faeff5474c0cbe1e, type: 3} +--- !u!33 &33444066182808318 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1864357959958104} + m_Mesh: {fileID: 4300000, guid: 32fbc8bcebb64584da5868aeeb086cda, type: 3} +--- !u!33 &33487662383985252 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307870489563208} + m_Mesh: {fileID: 4300000, guid: 37ba10a26a648144fa2390c8adfb2c8a, type: 3} +--- !u!95 &95033031799970748 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307870489563208} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 37ba10a26a648144fa2390c8adfb2c8a, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!95 &95091669218293994 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1864357959958104} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 32fbc8bcebb64584da5868aeeb086cda, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!95 &95159725740943820 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1351868014986946} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!95 &95607614017261978 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1999073185825882} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 +--- !u!137 &137013385765703262 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1582883067469128} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4336468700419714} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4336468700419714} + m_AABB: + m_Center: {x: 0.000017451588, y: -0.00010048866, z: 0.0012767098} + m_Extent: {x: 0.00211959, y: 0.001628002, z: 0.000015275553} + m_DirtyAABB: 0 +--- !u!137 &137020412966494170 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1738261221487676} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300018, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4356416327803184} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4356416327803184} + m_AABB: + m_Center: {x: 0.0000007292256, y: 0.000013417564, z: 0.00051031867} + m_Extent: {x: 0.0050891023, y: 0.005111115, z: 0.0025862483} + m_DirtyAABB: 0 +--- !u!137 &137039721825203164 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1930270789047778} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300004, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4475506175273502} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4475506175273502} + m_AABB: + m_Center: {x: -0.00000072829425, y: 0.000013418496, z: 0.0004995642} + m_Extent: {x: 0.0050891023, y: 0.005111114, z: 0.0025754946} + m_DirtyAABB: 0 +--- !u!137 &137119327089857916 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1925473343199970} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300008, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4622968367758772} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4622968367758772} + m_AABB: + m_Center: {x: 0.016699282, y: 0.010818447, z: -0.036364146} + m_Extent: {x: 0.054633915, y: 0.02167825, z: 0.050220706} + m_DirtyAABB: 0 +--- !u!137 &137132433173345654 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1501938979627348} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300018, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4183120237395500} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4183120237395500} + m_AABB: + m_Center: {x: -0.015075568, y: -0.000016345643, z: 0.0018507424} + m_Extent: {x: 0.0069265533, y: 0.014548335, z: 0.007307569} + m_DirtyAABB: 0 +--- !u!137 &137306554513006224 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1864589419913158} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300016, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4622968367758772} + - {fileID: 4620985457895698} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4622968367758772} + m_AABB: + m_Center: {x: 0.010604477, y: 0.0049807085, z: 0.0022465447} + m_Extent: {x: 0.010754766, y: 0.010751986, z: 0.007853852} + m_DirtyAABB: 0 +--- !u!137 &137310653907615322 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1741382130313638} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300002, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4622968367758772} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4622968367758772} + m_AABB: + m_Center: {x: 0.00016466714, y: 0.00024955533, z: -0.0010734661} + m_Extent: {x: 0.02819586, y: 0.02827545, z: 0.005969927} + m_DirtyAABB: 0 +--- !u!137 &137378573564850912 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1833973838428082} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300016, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4984268951621866} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4984268951621866} + m_AABB: + m_Center: {x: 0.000000345055, y: -0.0000009192154, z: 0.0003571303} + m_Extent: {x: 0.0050524976, y: 0.0050528734, z: 0.0025179689} + m_DirtyAABB: 0 +--- !u!137 &137410385877248658 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1634122703765650} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300012, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4556676711426526} + - {fileID: 4488555750834636} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4556676711426526} + m_AABB: + m_Center: {x: -0.01054777, y: 0.004984765, z: 0.00224772} + m_Extent: {x: 0.010899382, y: 0.010843774, z: 0.007860384} + m_DirtyAABB: 0 +--- !u!137 &137516833752771690 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1043718319765106} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300010, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4160029557842794} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4160029557842794} + m_AABB: + m_Center: {x: -0.00000026635826, y: -0.00000013131648, z: 0.0005419669} + m_Extent: {x: 0.004489839, y: 0.0044893455, z: 0.0007474746} + m_DirtyAABB: 0 +--- !u!137 &137548540825210660 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1580528522853954} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300006, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4556676711426526} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4556676711426526} + m_AABB: + m_Center: {x: -0.0012377053, y: -0.019060574, z: -0.031160347} + m_Extent: {x: 0.030484851, y: 0.051344886, z: 0.035910763} + m_DirtyAABB: 0 +--- !u!137 &137580252240055964 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1846566732132504} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300006, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4986827042887056} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4986827042887056} + m_AABB: + m_Center: {x: 0.0000023958273, y: -0.000002474524, z: 0.0004961197} + m_Extent: {x: 0.005060065, y: 0.0050237104, z: 0.0025072566} + m_DirtyAABB: 0 +--- !u!137 &137670343033052700 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1731361599223734} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4160029557842794} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4160029557842794} + m_AABB: + m_Center: {x: 0.00004066783, y: 0.00002745376, z: 0.0012303367} + m_Extent: {x: 0.0015236214, y: 0.0021297487, z: 0.00001941109} + m_DirtyAABB: 0 +--- !u!137 &137735589292049982 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1914456947047296} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300008, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4756900187738382} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4756900187738382} + m_AABB: + m_Center: {x: -0.0006609438, y: -0.0013324562, z: -0.013972085} + m_Extent: {x: 0.014561905, y: 0.009363498, z: 0.013364948} + m_DirtyAABB: 0 +--- !u!137 &137799296538821628 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1653136352874222} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300010, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4622968367758772} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4622968367758772} + m_AABB: + m_Center: {x: 0.0012377053, y: -0.01906057, z: -0.031179678} + m_Extent: {x: 0.030484851, y: 0.051344883, z: 0.03589144} + m_DirtyAABB: 0 +--- !u!137 &137812751115180306 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1758321880106294} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300014, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4501959689107672} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4501959689107672} + m_AABB: + m_Center: {x: 0.015085926, y: 0.00079575554, z: 0.0022845895} + m_Extent: {x: 0.0075142607, y: 0.014562387, z: 0.0074783238} + m_DirtyAABB: 0 +--- !u!137 &137894515578887148 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1046305140630946} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300004, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4556676711426526} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4556676711426526} + m_AABB: + m_Center: {x: -0.016699282, y: 0.010818443, z: -0.036364153} + m_Extent: {x: 0.054633915, y: 0.021678247, z: 0.050220713} + m_DirtyAABB: 0 +--- !u!137 &137903369291241316 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1938084028754538} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300002, guid: eb8e07cd3e0ce494f81482c6835d2b10, type: 3} + m_Bones: + - {fileID: 4556676711426526} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4556676711426526} + m_AABB: + m_Center: {x: -0.00016466714, y: 0.00024955347, z: -0.0010734657} + m_Extent: {x: 0.02819586, y: 0.02827545, z: 0.0059699244} + m_DirtyAABB: 0 +--- !u!137 &137953460083308940 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1150514829769540} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300012, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4930198374904308} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4930198374904308} + m_AABB: + m_Center: {x: -0.0006609438, y: 0.0013324535, z: -0.013972079} + m_Extent: {x: 0.0145619055, y: 0.009363498, z: 0.0133649465} + m_DirtyAABB: 0 +--- !u!137 &137967895554077838 +SkinnedMeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1937342357854408} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: eacafe280fdfa6a44845c135057ae6a5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300014, guid: 45137ecb2b0f9ba45b80adefb16de509, type: 3} + m_Bones: + - {fileID: 4336468700419714} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 4336468700419714} + m_AABB: + m_Center: {x: 0.00000037020072, y: 0.00000087032095, z: 0.00057196105} + m_Extent: {x: 0.004508083, y: 0.004509521, z: 0.0007474739} + m_DirtyAABB: 0 diff --git a/Assets/Oculus/VR/Prefabs/OVRControllerPrefab.prefab.meta b/Assets/Oculus/VR/Prefabs/OVRControllerPrefab.prefab.meta new file mode 100644 index 0000000..7f3752f --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRControllerPrefab.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9809c5e8418bb047bf2c8ba1d1a2cec +timeCreated: 1486168892 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab b/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab new file mode 100644 index 0000000..a4469f4 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &115974 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400110} + - 114: {fileID: 11407504} + m_Layer: 0 + m_Name: OVRCubemapCaptureProbe + m_TagString: Untagged + m_Icon: {fileID: 2974397684917235467, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400110 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115974} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3.74, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11407504 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 115974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a489178b0acf0147846b3873447beaf, type: 3} + m_Name: + m_EditorClassIdentifier: + autoTriggerAfterLaunch: 1 + autoTriggerDelay: 1 + triggeredByKey: 289 + pathName: + cubemapSize: 2048 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 115974} + m_IsPrefabParent: 1 diff --git a/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab.meta b/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab.meta new file mode 100644 index 0000000..9926764 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRCubemapCaptureProbe.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a400e96d4650ff4e827a7e727fad81d +timeCreated: 1464847331 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab b/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab new file mode 100644 index 0000000..80a6b96 --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab @@ -0,0 +1,656 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400008} + - component: {fileID: 11400020} + - component: {fileID: 11400002} + - component: {fileID: 114814064252544740} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400002} + m_Layer: 0 + m_Name: ForwardDirection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100008 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400006} + - component: {fileID: 14300000} + - component: {fileID: 11400010} + - component: {fileID: 11462408} + - component: {fileID: 11493974} + m_Layer: 0 + m_Name: OVRPlayerController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100010 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400010} + - component: {fileID: 20131489337305086} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100012 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400012} + - component: {fileID: 8100000} + - component: {fileID: 2015248} + - component: {fileID: 11414578} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100014 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 400014} + - component: {fileID: 20504667576486672} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &134650 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 481164} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162066 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 462066} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162068 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 462068} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168962 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 477154} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400002 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400006} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400006 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400002} + - {fileID: 400008} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400008 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 462066} + m_Father: {fileID: 400006} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400010 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 462066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400012 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 462066} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &400014 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 462066} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &462066 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400010} + - {fileID: 400012} + - {fileID: 400014} + - {fileID: 462068} + - {fileID: 477154} + - {fileID: 481164} + m_Father: {fileID: 400008} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &462068 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 462066} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &477154 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168962} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4188412984752900} + m_Father: {fileID: 462066} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &481164 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4471613377008970} + m_Father: {fileID: 462066} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &2015248 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &8100000 +AudioListener: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_Enabled: 1 +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 1 + _monoscopic: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + _headPoseRelativeOffsetRotation: {x: 0, y: 0, z: 0} + _headPoseRelativeOffsetTranslation: {x: 0, y: 0, z: 0} + profilerTcpPort: 32419 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + externalCompositionBackdropColor: {r: 0, g: 0, b: 0, a: 0} + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + mrcActivationMode: 0 + _trackingOriginType: 0 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 + AllowRecenter: 1 + _reorientHMDOnControllerRecenter: 1 + LateControllerUpdate: 1 +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0950df82e7936c84983497630bde5b54, type: 3} + m_Name: + m_EditorClassIdentifier: + Acceleration: 0.1 + Damping: 0.3 + BackAndSideDampen: 0.5 + JumpForce: 0.3 + RotationAmount: 1.5 + RotationRatchet: 45 + SnapRotation: 1 + FixedSpeedSteps: 0 + HmdResetsY: 1 + HmdRotatesY: 1 + GravityModifier: 1 + useProfileData: 1 + EnableLinearMovement: 1 + EnableRotation: 1 + RotationEitherThumbstick: 0 +--- !u!114 &11400020 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 + disableEyeAnchorCameras: 0 +--- !u!114 &11414578 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df8e1d778abf442e4bec449c360e9e1c, type: 3} + m_Name: + m_EditorClassIdentifier: + fadeTime: 2 + fadeColor: {r: 0.01, g: 0.01, b: 0.01, a: 1} + fadeOnStart: 1 + renderQueue: 5000 +--- !u!114 &11462408 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f07515ada089df47868559a20dd6783, type: 3} + m_Name: + m_EditorClassIdentifier: + quitKey: 27 + fadeInTexture: {fileID: 0} + speedRotationIncrement: 0.05 + layerName: Default +--- !u!114 &11493974 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b71d1996d67004241a3b69960856ffcb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!143 &14300000 +CharacterController: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 2 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.01 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100008} + m_IsPrefabParent: 1 +--- !u!1 &1125068011842588 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4471613377008970} + m_Layer: 0 + m_Name: RightControllerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1660603843503870 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4188412984752900} + m_Layer: 0 + m_Name: LeftControllerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4188412984752900 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1660603843503870} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477154} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4471613377008970 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1125068011842588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 481164} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &20131489337305086 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!20 &20504667576486672 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!114 &114814064252544740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5178bc8574ce2bf4388e787a2e2af326, type: 3} + m_Name: + m_EditorClassIdentifier: + opMode: 1 + resetHmdPoseOnRelease: 1 + resetHmdPoseByMiddleMouseButton: 1 + activateKeys: 3201000031010000 + pitchKeys: 3401000033010000 diff --git a/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab.meta b/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab.meta new file mode 100644 index 0000000..06e2a6b --- /dev/null +++ b/Assets/Oculus/VR/Prefabs/OVRPlayerController.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: ce816f2e6abb0504092c23ed9b970dfd +NativeFormatImporter: + userData: diff --git a/Assets/Oculus/VR/Resources.meta b/Assets/Oculus/VR/Resources.meta new file mode 100644 index 0000000..b93fee0 --- /dev/null +++ b/Assets/Oculus/VR/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 807714291dbf2a54c9b3975c271b2493 +folderAsset: yes +timeCreated: 1466707364 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/Cubemap Blit.shader b/Assets/Oculus/VR/Resources/Cubemap Blit.shader new file mode 100644 index 0000000..dd1ba78 --- /dev/null +++ b/Assets/Oculus/VR/Resources/Cubemap Blit.shader @@ -0,0 +1,75 @@ +Shader "Oculus/Cubemap Blit" { + Properties{ + _MainTex("Base (RGB) Trans (A)", CUBE) = "white" {} + _face("Face", Int) = 0 + _linearToSrgb("Perform linear-to-gamma conversion", Int) = 0 + _premultiply("Cubemap Blit", Int) = 0 + } + SubShader{ + Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + + Pass{ + ZWrite Off + ColorMask RGBA + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata_t + { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + half3 cubedir : TEXCOORD0; + }; + + samplerCUBE _MainTex; + float4 _MainTex_ST; + int _face; + int _linearToSrgb; + int _premultiply; + + v2f vert (appdata_t va) + { + v2f vo; + vo.vertex = UnityObjectToClipPos(va.vertex); + + //Face bases, assuming +x, -x, +z, -z, +y, -y with origin at bottom-left. + float3 o[6] = { {1.0, -1.0, 1.0}, {-1.0, -1.0, -1.0}, {-1.0, 1.0, 1.0}, {-1.0, -1.0, -1.0}, {-1.0, -1.0, 1.0}, { 1.0, -1.0, -1.0} }; + float3 u[6] = { {0.0, 0.0, -1.0}, { 0.0, 0.0, 1.0}, { 1.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, { 1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0} }; + float3 v[6] = { {0.0, 1.0, 0.0}, { 0.0, 1.0, 0.0}, { 0.0, 0.0, -1.0}, { 0.0, 0.0, 1.0}, { 0.0, 1.0, 0.0}, { 0.0, 1.0, 0.0} }; + + //Map the input UV to the corresponding face basis. + vo.cubedir = o[_face] + 2.0*va.texcoord.x * u[_face] + 2.0*(1.0 - va.texcoord.y) * v[_face]; + + return vo; + } + + fixed4 frag (v2f vi) : COLOR + { + fixed4 col = texCUBE(_MainTex, vi.cubedir); + + if (_linearToSrgb) + { + float3 S1 = sqrt(col.rgb); + float3 S2 = sqrt(S1); + float3 S3 = sqrt(S2); + col.rgb = 0.662002687 * S1 + 0.684122060 * S2 - 0.323583601 * S3 - 0.0225411470 * col.rgb; + } + + if (_premultiply) + col.rgb *= col.a; + + return col; + } + ENDCG + } + } +} diff --git a/Assets/Oculus/VR/Resources/Cubemap Blit.shader.meta b/Assets/Oculus/VR/Resources/Cubemap Blit.shader.meta new file mode 100644 index 0000000..6bdd653 --- /dev/null +++ b/Assets/Oculus/VR/Resources/Cubemap Blit.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 561ccac587275c745aec500620f12fc7 +timeCreated: 1507678760 +licenseType: Free +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader b/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader new file mode 100644 index 0000000..b2c082a --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader @@ -0,0 +1,99 @@ +Shader "Oculus/OVRMRCameraFrame" +{ + Properties + { + _Color("Main Color", Color) = (1,1,1,1) + _MainTex("Main Texture", 2D) = "white" {} + _Visible("Visible", Range(0.0,1.0)) = 1.0 + _ChromaAlphaCutoff("ChromaAlphaCutoff", Range(0.0,1.0)) = 0.01 + _ChromaToleranceA("ChromaToleranceA", Range(0.0,50.0)) = 20.0 + _ChromaToleranceB("ChromaToleranceB", Range(0.0,50.0)) = 15.0 + _ChromaShadows("ChromaShadows", Range(0.0,1.0)) = 0.02 + } + SubShader + { + Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + Blend SrcAlpha OneMinusSrcAlpha + AlphaTest Greater .01 + Fog{ Mode Off } + LOD 100 + Cull Off + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + #include "OVRMRChromaKey.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + float2 texcoord : TEXCOORD0; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + sampler2D _MaskTex; + + float4 _TextureDimension; // (w, h, 1/w, 1/h) + + fixed4 _Color; + fixed _Visible; + float4 _FlipParams; // (flip_h, flip_v, 0, 0) + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.vertex *= _Visible; + o.texcoord = TRANSFORM_TEX(float2(v.texcoord.x, 1.0-v.texcoord.y), _MainTex); + return o; + } + + fixed GetMask(float2 uv) + { + return tex2D(_MaskTex, uv).r; + } + + fixed4 GetCameraColor(float2 colorUV) + { + fixed4 c = tex2D(_MainTex, colorUV) * _Color; + return c; + } + + fixed4 frag (v2f i) : SV_Target + { + float2 colorUV = i.texcoord; + if (_FlipParams.x > 0.0) + { + colorUV.x = 1.0 - colorUV.x; + } + if (_FlipParams.y > 0.0) + { + colorUV.y = 1.0 - colorUV.y; + } + float mask = GetMask(float2(colorUV.x, 1.0 - colorUV.y)); + if (mask == 0.0) + { + discard; + } + float4 col = GetColorAfterChromaKey(colorUV, _TextureDimension.zw, 1.0); + if (col.a < 0.0) + { + discard; + } + return col; + } + ENDCG + } + } +} diff --git a/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader.meta b/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader.meta new file mode 100644 index 0000000..864be36 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRCameraFrame.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2bd7618c3fa0e4b4ab8e08dc3fadc376 +timeCreated: 1497574409 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader b/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader new file mode 100644 index 0000000..985092f --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader @@ -0,0 +1,112 @@ +Shader "Oculus/OVRMRCameraFrameLit" { + Properties{ + _Color("Color", Color) = (1,1,1,1) + _MainTex("Albedo (RGB)", 2D) = "white" {} + _DepthTex("Depth (cm)", 2D) = "black" {} + _InconfidenceTex("Inconfidence (0-100)", 2D) = "black" {} + _Visible("Visible", Range(0.0,1.0)) = 1.0 + } + SubShader{ + Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" } + LOD 200 + + CGPROGRAM + #pragma surface surf Lambert alpha:fade + #pragma target 3.0 + + #include "OVRMRChromaKey.cginc" + + #define TEST_ENVIRONMENT 0 + + sampler2D _MainTex; + sampler2D _DepthTex; + sampler2D _MaskTex; + + float4 _TextureDimension; // (w, h, 1/w, 1/h) + float4 _TextureWorldSize; // (width_in_meter, height_in_meter, 0, 0) + + float _SmoothFactor; + float _DepthVariationClamp; + + float _CullingDistance; + + struct Input { + #if TEST_ENVIRONMENT + float2 uv_MainTex; + #endif + float4 screenPos; + }; + + fixed4 _Color; + fixed _Visible; + float4 _FlipParams; // (flip_h, flip_v, 0, 0) + + fixed GetMask(float2 uv) + { + return tex2D(_MaskTex, uv).r; + } + + fixed4 GetCameraColor(float2 colorUV) + { + fixed4 c = tex2D(_MainTex, colorUV) * _Color; + return c; + } + + float GetDepth(float2 uv) + { + float depth = tex2D(_DepthTex, uv).x * 1.0 / 100; + return depth; + } + + float3 GetNormal(float2 uv) + { + float dz_x = GetDepth(uv + float2(_TextureDimension.z, 0)) - GetDepth(uv - float2(_TextureDimension.z, 0)); + float dz_y = GetDepth(uv + float2(0, _TextureDimension.w)) - GetDepth(uv - float2(0, _TextureDimension.w)); + dz_x = clamp(dz_x, -_DepthVariationClamp, _DepthVariationClamp); + dz_y = clamp(dz_y, -_DepthVariationClamp, _DepthVariationClamp); + //float dist = 0.01; + //float3 normal = cross(float3(dist, 0, dz_x), float3(0, dist, dz_y)); + float3 normal = cross(float3(_TextureWorldSize.x * _TextureDimension.z * 2.0 * _SmoothFactor, 0, dz_x), float3(0, _TextureWorldSize.y * _TextureDimension.w * 2.0 * _SmoothFactor, dz_y)); + normal = normalize(normal); + return normal; + } + + void surf(Input IN, inout SurfaceOutput o) { + #if TEST_ENVIRONMENT + float2 colorUV = float2(IN.uv_MainTex.x, IN.uv_MainTex.y); + #else + float2 screenUV = IN.screenPos.xy / IN.screenPos.w; + float2 colorUV = float2(screenUV.x, 1.0 - screenUV.y); + #endif + if (_FlipParams.x > 0.0) + { + colorUV.x = 1.0 - colorUV.x; + } + if (_FlipParams.y > 0.0) + { + colorUV.y = 1.0 - colorUV.y; + } + float mask = GetMask(colorUV); + if (mask == 0.0) + { + discard; + } + float4 col = GetColorAfterChromaKey(colorUV, _TextureDimension.zw, 1.0); + if (col.a < 0.0) + { + discard; + } + float depth = GetDepth(colorUV); + if (depth > _CullingDistance) + { + discard; + } + float3 normal = GetNormal(colorUV); + o.Albedo = col.rgb; + o.Normal = normal; + o.Alpha = col.a *_Visible; + } + ENDCG + } + FallBack "Alpha-Diffuse" +} diff --git a/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader.meta b/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader.meta new file mode 100644 index 0000000..beb16d4 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRCameraFrameLit.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a8577c885e80d8043946ac5b7abcf9a1 +timeCreated: 1497574409 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc b/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc new file mode 100644 index 0000000..50ceb7d --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc @@ -0,0 +1,103 @@ +fixed4 _ChromaKeyColor; +float _ChromaKeySimilarity; +float _ChromaKeySmoothRange; +float _ChromaKeySpillRange; + +// https://en.wikipedia.org/wiki/YUV +float3 RGB2YUV(float3 rgb) +{ + float r = rgb.x; + float g = rgb.y; + float b = rgb.z; + float y = 0.2126 * r + 0.7152 * g + 0.0722 * b; + float u = -0.09991 * r - 0.33609 * g + 0.436 * b; + float v = 0.615 * r - 0.55861 * g - 0.05639 * b; + return float3(y, u, v); +} + +float3 YUV2RGB(float3 yuv) +{ + float y = yuv.x; + float u = yuv.y; + float v = yuv.z; + float r = y + 1.28033 * v; + float g = y - 0.21482 * u - 0.38059 * v; + float b = y + 2.12798 * u; + return float3(r, g, b); +} + +fixed4 GetCameraColor(float2 colorUV); + +float ColorDistance_YUV_YUV(float3 yuv1, float3 yuv2) +{ + float dist = distance(yuv1.yz, yuv2.yz); + // Increase the distance if the brightness of the first color is too high. + // It fixed the error on the over exposure areas + dist += saturate(yuv1.x - 0.9); + return dist; +} + +float ColorDistance_RGB_YUV(float3 rgb1, float3 yuv2) +{ + float3 yuv1 = RGB2YUV(rgb1); + return ColorDistance_YUV_YUV(yuv1, yuv2); +} + + +float ColorDistance_RGB_RGB(float3 rgb1, float3 rgb2) +{ + float3 yuv1 = RGB2YUV(rgb1); + float3 yuv2 = RGB2YUV(rgb2); + return ColorDistance_YUV_YUV(yuv1, yuv2); +} + +float RGB2Gray(float3 rgb) +{ + float r = rgb.x; + float g = rgb.y; + float b = rgb.z; + float y = 0.2126 * r + 0.7152 * g + 0.0722 * b; + return y; +} + +float GetAlphaFromDistance(float dist) +{ + float result = smoothstep(_ChromaKeySimilarity, _ChromaKeySimilarity + _ChromaKeySmoothRange, dist); + result = result * result; + return result; +} + +float GetSpillFromDistance(float dist) +{ + float result = smoothstep(_ChromaKeySimilarity, _ChromaKeySimilarity + _ChromaKeySpillRange, dist); + result = result * result * result; + return result; +} + + +float4 GetColorAfterChromaKey(float2 UV, float2 deltaUV, float step) +{ + float3 chromaColor = _ChromaKeyColor.rgb; + float3 chromaYUV = RGB2YUV(chromaColor); + float dist = 0.0; + const int samples = 3; + float offset = ((float)samples - 1.0) / 2.0; + for (int i = 0; i < samples; ++i) + { + for (int j = 0; j < samples; ++j) + { + fixed4 color = GetCameraColor(UV + float2((float)i - offset, (float)j - offset) * deltaUV * step); + float d = ColorDistance_RGB_YUV(color, chromaYUV); + dist += d; + } + } + dist /= (samples * samples); + fixed4 centerColor = GetCameraColor(UV); + float alpha = GetAlphaFromDistance(dist); + float spill = GetSpillFromDistance(dist); + float gray = RGB2Gray(centerColor.rgb); + float4 outColor; + outColor.rgb = lerp(float3(gray, gray, gray), centerColor.rgb, spill); + outColor.a = alpha; + return outColor; +} diff --git a/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc.meta b/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc.meta new file mode 100644 index 0000000..46f25dc --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRChromaKey.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 680577023e93e564c9b00f18b0164afa +timeCreated: 1503944830 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader b/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader new file mode 100644 index 0000000..3a2e679 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader @@ -0,0 +1,50 @@ +Shader "Oculus/OVRMRClipPlane" +{ + Properties + { + _Color("Chroma Key Color", Color) = (0,1,0,1) + _Visible("Visible", Range(0.0,1.0)) = 1.0 + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 100 + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + }; + + fixed4 _Color; + fixed _Visible; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.vertex *= _Visible; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 col = _Color; + return col; + } + ENDCG + } + } +} diff --git a/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader.meta b/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader.meta new file mode 100644 index 0000000..a82fce1 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRClipPlane.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2ab721dccaa7e6f4693cedd904dfdcac +timeCreated: 1494743027 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/OVRMRUnlit.shader b/Assets/Oculus/VR/Resources/OVRMRUnlit.shader new file mode 100644 index 0000000..a2cbd59 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRUnlit.shader @@ -0,0 +1,48 @@ +Shader "Oculus/Unlit" { + Properties{ + _Color("Main Color", Color) = (1,1,1,1) + } + + SubShader{ + Tags{ "RenderType" = "Opaque" } + LOD 100 + + Pass{ + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + #pragma multi_compile_fog + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + }; + + struct v2f { + float4 vertex : SV_POSITION; + UNITY_FOG_COORDS(0) + }; + + fixed4 _Color; + + v2f vert(appdata_t v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + UNITY_TRANSFER_FOG(o,o.vertex); + return o; + } + + fixed4 frag(v2f i) : COLOR + { + fixed4 col = _Color; + UNITY_APPLY_FOG(i.fogCoord, col); + UNITY_OPAQUE_ALPHA(col.a); + return col; + } + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/Oculus/VR/Resources/OVRMRUnlit.shader.meta b/Assets/Oculus/VR/Resources/OVRMRUnlit.shader.meta new file mode 100644 index 0000000..9305c35 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRUnlit.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9aa46566e1d86644c9a55e3037e935f6 +timeCreated: 1504826310 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader b/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader new file mode 100644 index 0000000..512a945 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader @@ -0,0 +1,54 @@ +Shader "Oculus/UnlitTransparent" { + Properties{ + _MainTex("Base (RGB) Trans (A)", 2D) = "white" {} + } + + SubShader{ + Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + LOD 100 + + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + + Pass{ + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + #pragma multi_compile_fog + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 vertex : SV_POSITION; + half2 texcoord : TEXCOORD0; + UNITY_FOG_COORDS(1) + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert(appdata_t v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + UNITY_TRANSFER_FOG(o,o.vertex); + return o; + } + + fixed4 frag(v2f i) : SV_Target + { + fixed4 col = tex2D(_MainTex, i.texcoord); + UNITY_APPLY_FOG(i.fogCoord, col); + return col; + } + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader.meta b/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader.meta new file mode 100644 index 0000000..a9e9ef6 --- /dev/null +++ b/Assets/Oculus/VR/Resources/OVRMRUnlitTransparent.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 38ad33c152e32ee46a9bbbb0e656f7e1 +timeCreated: 1504826310 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/Texture2D Blit.shader b/Assets/Oculus/VR/Resources/Texture2D Blit.shader new file mode 100644 index 0000000..c86e756 --- /dev/null +++ b/Assets/Oculus/VR/Resources/Texture2D Blit.shader @@ -0,0 +1,64 @@ +Shader "Oculus/Texture2D Blit" { + Properties{ + _MainTex("Base (RGB) Trans (A)", 2D) = "white" {} + _linearToSrgb("Perform linear-to-gamma conversion", Int) = 0 + _premultiply("Pre-multiply alpha", Int) = 0 + } + SubShader{ + Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + + Pass{ + ZWrite Off + ColorMask RGBA + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata_t + { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + half2 texcoord : TEXCOORD0; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + int _linearToSrgb; + int _premultiply; + + v2f vert (appdata_t v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + return o; + } + + fixed4 frag (v2f i) : COLOR + { + fixed4 col = tex2D(_MainTex, i.texcoord); + if (_linearToSrgb) + { + float3 S1 = sqrt(col.rgb); + float3 S2 = sqrt(S1); + float3 S3 = sqrt(S2); + col.rgb = 0.662002687 * S1 + 0.684122060 * S2 - 0.323583601 * S3 - 0.0225411470 * col.rgb; + } + + if (_premultiply) + col.rgb *= col.a; + + return col; + } + ENDCG + } + } +} diff --git a/Assets/Oculus/VR/Resources/Texture2D Blit.shader.meta b/Assets/Oculus/VR/Resources/Texture2D Blit.shader.meta new file mode 100644 index 0000000..602efa7 --- /dev/null +++ b/Assets/Oculus/VR/Resources/Texture2D Blit.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a31796e9e8816c7448b55d584c9417f1 +timeCreated: 1498190241 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/Underlay Impostor.shader b/Assets/Oculus/VR/Resources/Underlay Impostor.shader new file mode 100644 index 0000000..a55247e --- /dev/null +++ b/Assets/Oculus/VR/Resources/Underlay Impostor.shader @@ -0,0 +1,48 @@ +/* +This shader is used to render the impostor while clearing out the alpha of the eye buffer +The important details here are: +- the use of the Geometry+1 queue to make sure the impostor is drawn after all other opaque objects but before alpha +- the keepalpha parameter that allow unity to actually write the alpha we return at the end of the shader. +*/ + +Shader "Oculus/Underlay Impostor" { + Properties{ + _Color("Color", Color) = (1,1,1,1) + _MainTex("Albedo (RGB)", 2D) = "white" {} + _Glossiness("Smoothness", Range(0,1)) = 0.5 + _Metallic("Metallic", Range(0,1)) = 0.0 + } + SubShader{ + Tags { "Queue" = "Geometry+1" "RenderType" = "Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows keepalpha + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + + struct Input { + float2 uv_MainTex; + }; + + half _Glossiness; + half _Metallic; + fixed4 _Color; + + void surf(Input IN, inout SurfaceOutputStandard o) { + // Albedo comes from a texture tinted by color + fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; + o.Albedo = c.rgb; + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + o.Alpha = 0.f; + } + ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Oculus/VR/Resources/Underlay Impostor.shader.meta b/Assets/Oculus/VR/Resources/Underlay Impostor.shader.meta new file mode 100644 index 0000000..b8b919a --- /dev/null +++ b/Assets/Oculus/VR/Resources/Underlay Impostor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: eaeac9ce83896a04691d2590189776f5 +timeCreated: 1471282585 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader b/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader new file mode 100644 index 0000000..3bbf763 --- /dev/null +++ b/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader @@ -0,0 +1,36 @@ +/* +Code for transparent object in front of the overlay +The keepalpha option is important to let unity maintain the alpha we return from the shader +*/ + +Shader "Oculus/Underlay Transparent Occluder" { + Properties{ + _Color("Main Color", Color) = (1,1,1,1) + _MainTex("Base (RGB) Trans (A)", 2D) = "white" {} + } + SubShader{ + Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + Blend SrcAlpha OneMinusSrcAlpha + + // extra pass that renders to depth buffer only + Pass{ + ZWrite On + ColorMask 0 + } + + CGPROGRAM + #pragma surface surf Lambert keepalpha + fixed4 _Color; + struct Input { + float4 color : COLOR; + }; + void surf(Input IN, inout SurfaceOutput o) { + o.Albedo = _Color.rgb; + o.Alpha = _Color.a; + } + ENDCG + } + + + Fallback "Transparent/VertexLit" +} diff --git a/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader.meta b/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader.meta new file mode 100644 index 0000000..2822b91 --- /dev/null +++ b/Assets/Oculus/VR/Resources/Underlay Transparent Occluder.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d6708eb99dec8334fb83db57b764097a +timeCreated: 1470867310 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader b/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader new file mode 100644 index 0000000..4b8270e --- /dev/null +++ b/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader @@ -0,0 +1,17 @@ +Shader "Oculus/Unlit Transparent Color" { +Properties { + _Color ("Main Color", Color) = (1,1,1,1) +} + +SubShader { + Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} + LOD 100 + Fog {Mode Off} + + ZTest Always + Blend SrcAlpha OneMinusSrcAlpha + Color [_Color] + + Pass {} +} +} diff --git a/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader.meta b/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader.meta new file mode 100644 index 0000000..d14aae5 --- /dev/null +++ b/Assets/Oculus/VR/Resources/Unlit Transparent Color.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ced943c76cb8fb8489bab18c3dfcdcd3 +timeCreated: 1435284538 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scenes.meta b/Assets/Oculus/VR/Scenes.meta new file mode 100644 index 0000000..24df5c7 --- /dev/null +++ b/Assets/Oculus/VR/Scenes.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 68bc04068edcc1a4d89699ab4e2e69ae +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Oculus/VR/Scenes/ControllerModels.unity b/Assets/Oculus/VR/Scenes/ControllerModels.unity new file mode 100644 index 0000000..54949bd --- /dev/null +++ b/Assets/Oculus/VR/Scenes/ControllerModels.unity @@ -0,0 +1,6205 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 9 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &36454512 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 36454513} + - component: {fileID: 36454516} + - component: {fileID: 36454515} + - component: {fileID: 36454514} + - component: {fileID: 36454518} + - component: {fileID: 36454517} + m_Layer: 0 + m_Name: Cube (20) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &36454513 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &36454514 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &36454515 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &36454516 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &36454517 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &36454518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &66877009 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 66877010} + - component: {fileID: 66877013} + - component: {fileID: 66877012} + - component: {fileID: 66877011} + - component: {fileID: 66877015} + - component: {fileID: 66877014} + m_Layer: 0 + m_Name: Cube (29) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &66877010 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &66877011 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &66877012 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &66877013 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &66877014 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &66877015 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &73524539 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 73524540} + - component: {fileID: 73524543} + - component: {fileID: 73524542} + - component: {fileID: 73524541} + - component: {fileID: 73524545} + - component: {fileID: 73524544} + m_Layer: 0 + m_Name: Cube (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &73524540 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &73524541 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &73524542 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &73524543 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &73524544 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &73524545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &81954963 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 81954964} + m_Layer: 0 + m_Name: Grabbables + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &81954964 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 81954963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &107656903 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 107656907} + - component: {fileID: 107656906} + - component: {fileID: 107656905} + - component: {fileID: 107656904} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &107656904 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &107656905 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &107656906 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &107656907 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &113500680 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 113500681} + - component: {fileID: 113500684} + - component: {fileID: 113500683} + - component: {fileID: 113500682} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &113500681 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &113500682 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &113500683 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &113500684 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &154239276 stripped +Transform: + m_PrefabParentObject: {fileID: 4188412984752900, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &156189377 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 156189378} + - component: {fileID: 156189381} + - component: {fileID: 156189380} + - component: {fileID: 156189379} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &156189378 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &156189379 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &156189380 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &156189381 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &166120574 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 166120575} + m_Layer: 0 + m_Name: Counter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &166120575 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 166120574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1605028847} + - {fileID: 524771733} + - {fileID: 1519282573} + - {fileID: 1055723252} + - {fileID: 755868679} + - {fileID: 1962295111} + - {fileID: 243097430} + - {fileID: 261327897} + - {fileID: 383385450} + - {fileID: 1702096973} + - {fileID: 948387091} + - {fileID: 113500681} + - {fileID: 156189378} + - {fileID: 1500551998} + - {fileID: 907087224} + - {fileID: 580231891} + m_Father: {fileID: 346664030} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &204679842 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 204679846} + - component: {fileID: 204679845} + - component: {fileID: 204679844} + - component: {fileID: 204679843} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &204679843 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &204679844 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &204679845 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &204679846 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &206189564 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 206189565} + - component: {fileID: 206189568} + - component: {fileID: 206189567} + - component: {fileID: 206189566} + - component: {fileID: 206189570} + - component: {fileID: 206189569} + m_Layer: 0 + m_Name: Cube (12) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &206189565 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &206189566 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &206189567 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &206189568 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &206189569 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &206189570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &210993500 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 210993504} + - component: {fileID: 210993503} + - component: {fileID: 210993502} + - component: {fileID: 210993501} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &210993501 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &210993502 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &210993503 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &210993504 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &224673155 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 224673156} + - component: {fileID: 224673159} + - component: {fileID: 224673158} + - component: {fileID: 224673157} + - component: {fileID: 224673161} + - component: {fileID: 224673160} + m_Layer: 0 + m_Name: Cube (11) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &224673156 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &224673157 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &224673158 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &224673159 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &224673160 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &224673161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &243097429 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 243097430} + - component: {fileID: 243097433} + - component: {fileID: 243097432} + - component: {fileID: 243097431} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &243097430 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &243097431 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &243097432 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &243097433 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &261327896 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 261327897} + - component: {fileID: 261327900} + - component: {fileID: 261327899} + - component: {fileID: 261327898} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &261327897 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &261327898 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &261327899 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &261327900 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &329624603 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 329624604} + - component: {fileID: 329624607} + - component: {fileID: 329624606} + - component: {fileID: 329624605} + - component: {fileID: 329624609} + - component: {fileID: 329624608} + m_Layer: 0 + m_Name: Cube (14) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &329624604 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &329624605 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &329624606 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &329624607 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &329624608 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &329624609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &346664029 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 346664030} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &346664030 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 346664029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 537728712} + - {fileID: 166120575} + - {fileID: 1925469568} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &358988759 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 358988760} + - component: {fileID: 358988763} + - component: {fileID: 358988762} + - component: {fileID: 358988761} + - component: {fileID: 358988765} + - component: {fileID: 358988764} + m_Layer: 0 + m_Name: Cube (26) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &358988760 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &358988761 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &358988762 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &358988763 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &358988764 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &358988765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &383385449 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 383385450} + - component: {fileID: 383385453} + - component: {fileID: 383385452} + - component: {fileID: 383385451} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &383385450 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &383385451 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &383385452 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &383385453 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &383999543 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 383999547} + - component: {fileID: 383999546} + - component: {fileID: 383999545} + - component: {fileID: 383999544} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &383999544 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &383999545 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &383999546 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &383999547 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &452902406 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 452902407} + - component: {fileID: 452902410} + - component: {fileID: 452902409} + - component: {fileID: 452902408} + - component: {fileID: 452902412} + - component: {fileID: 452902411} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &452902407 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &452902408 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &452902409 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &452902410 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &452902411 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &452902412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &467809853 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 467809857} + - component: {fileID: 467809856} + - component: {fileID: 467809855} + - component: {fileID: 467809854} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &467809854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &467809855 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &467809856 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &467809857 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &516740337 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1879097668} + m_Modifications: + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11479374, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_controller + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &524771732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 524771733} + - component: {fileID: 524771736} + - component: {fileID: 524771735} + - component: {fileID: 524771734} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &524771733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &524771734 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &524771735 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &524771736 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &537728711 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 537728712} + m_Layer: 0 + m_Name: Room + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &537728712 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537728711} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 204679846} + - {fileID: 383999547} + - {fileID: 107656907} + - {fileID: 2026317950} + - {fileID: 210993504} + - {fileID: 467809857} + m_Father: {fileID: 346664030} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &568642233 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 568642234} + - component: {fileID: 568642237} + - component: {fileID: 568642236} + - component: {fileID: 568642235} + - component: {fileID: 568642239} + - component: {fileID: 568642238} + m_Layer: 0 + m_Name: Cube (31) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &568642234 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &568642235 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &568642236 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &568642237 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &568642238 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &568642239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &575655890 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 575655891} + - component: {fileID: 575655894} + - component: {fileID: 575655893} + - component: {fileID: 575655892} + - component: {fileID: 575655896} + - component: {fileID: 575655895} + m_Layer: 0 + m_Name: Cube (16) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &575655891 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &575655892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &575655893 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &575655894 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &575655895 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &575655896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &580231890 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 580231891} + - component: {fileID: 580231894} + - component: {fileID: 580231893} + - component: {fileID: 580231892} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &580231891 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &580231892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &580231893 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &580231894 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &617808497 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 617808498} + - component: {fileID: 617808501} + - component: {fileID: 617808500} + - component: {fileID: 617808499} + - component: {fileID: 617808503} + - component: {fileID: 617808502} + m_Layer: 0 + m_Name: Cube (32) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617808498 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &617808499 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &617808500 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &617808501 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &617808502 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &617808503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &663437231 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 663437232} + - component: {fileID: 663437235} + - component: {fileID: 663437234} + - component: {fileID: 663437233} + - component: {fileID: 663437237} + - component: {fileID: 663437236} + m_Layer: 0 + m_Name: Cube (18) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &663437232 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &663437233 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &663437234 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &663437235 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &663437236 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &663437237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &684017681 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 684017682} + - component: {fileID: 684017685} + - component: {fileID: 684017684} + - component: {fileID: 684017683} + - component: {fileID: 684017687} + - component: {fileID: 684017686} + m_Layer: 0 + m_Name: Cube (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &684017682 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &684017683 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &684017684 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &684017685 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &684017686 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &684017687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &719105579 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 719105580} + - component: {fileID: 719105583} + - component: {fileID: 719105582} + - component: {fileID: 719105581} + - component: {fileID: 719105585} + - component: {fileID: 719105584} + m_Layer: 0 + m_Name: Cube (19) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &719105580 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &719105581 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &719105582 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &719105583 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &719105584 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &719105585 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &755868678 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 755868679} + - component: {fileID: 755868682} + - component: {fileID: 755868681} + - component: {fileID: 755868680} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &755868679 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &755868680 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &755868681 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &755868682 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &857705792 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 857705793} + - component: {fileID: 857705796} + - component: {fileID: 857705795} + - component: {fileID: 857705794} + - component: {fileID: 857705798} + - component: {fileID: 857705797} + m_Layer: 0 + m_Name: Cube (10) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &857705793 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &857705794 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &857705795 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &857705796 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &857705797 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &857705798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &907087223 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 907087224} + - component: {fileID: 907087227} + - component: {fileID: 907087226} + - component: {fileID: 907087225} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907087224 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &907087225 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &907087226 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &907087227 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &943102110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 943102111} + - component: {fileID: 943102114} + - component: {fileID: 943102113} + - component: {fileID: 943102112} + - component: {fileID: 943102116} + - component: {fileID: 943102115} + m_Layer: 0 + m_Name: Cube (27) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &943102111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &943102112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &943102113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &943102114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &943102115 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &943102116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &948387090 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 948387091} + - component: {fileID: 948387094} + - component: {fileID: 948387093} + - component: {fileID: 948387092} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &948387091 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &948387092 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &948387093 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &948387094 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1055723251 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1055723252} + - component: {fileID: 1055723255} + - component: {fileID: 1055723254} + - component: {fileID: 1055723253} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1055723252 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1055723253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1055723254 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1055723255 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1065364693 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1065364694} + - component: {fileID: 1065364697} + - component: {fileID: 1065364696} + - component: {fileID: 1065364695} + - component: {fileID: 1065364699} + - component: {fileID: 1065364698} + m_Layer: 0 + m_Name: Cube (28) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1065364694 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1065364695 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1065364696 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1065364697 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1065364698 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1065364699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1107310626 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1107310627} + - component: {fileID: 1107310630} + - component: {fileID: 1107310629} + - component: {fileID: 1107310628} + - component: {fileID: 1107310632} + - component: {fileID: 1107310631} + m_Layer: 0 + m_Name: Cube (17) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1107310627 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1107310628 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1107310629 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1107310630 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1107310631 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1107310632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1206777512 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1206777513} + - component: {fileID: 1206777516} + - component: {fileID: 1206777515} + - component: {fileID: 1206777514} + - component: {fileID: 1206777518} + - component: {fileID: 1206777517} + m_Layer: 0 + m_Name: Cube (23) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1206777513 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1206777514 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1206777515 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1206777516 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1206777517 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1206777518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1267950892 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1267950893} + - component: {fileID: 1267950896} + - component: {fileID: 1267950895} + - component: {fileID: 1267950894} + - component: {fileID: 1267950898} + - component: {fileID: 1267950897} + m_Layer: 0 + m_Name: Cube (24) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1267950893 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1267950894 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1267950895 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1267950896 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1267950897 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1267950898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1353144165 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1353144166} + - component: {fileID: 1353144169} + - component: {fileID: 1353144168} + - component: {fileID: 1353144167} + - component: {fileID: 1353144171} + - component: {fileID: 1353144170} + m_Layer: 0 + m_Name: Cube (13) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1353144166 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1353144167 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1353144168 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1353144169 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1353144170 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1353144171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1380377873 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1380377874} + - component: {fileID: 1380377877} + - component: {fileID: 1380377876} + - component: {fileID: 1380377875} + - component: {fileID: 1380377879} + - component: {fileID: 1380377878} + m_Layer: 0 + m_Name: Cube (21) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1380377874 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1380377875 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1380377876 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1380377877 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1380377878 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1380377879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1470509161 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1470509163} + - component: {fileID: 1470509162} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1470509162 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1470509163 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.10938166, w: 0.8754261} + m_LocalPosition: {x: 0.2, y: 0.61, z: 0.208} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1500117049 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1500117050} + - component: {fileID: 1500117053} + - component: {fileID: 1500117052} + - component: {fileID: 1500117051} + - component: {fileID: 1500117055} + - component: {fileID: 1500117054} + m_Layer: 0 + m_Name: Cube (9) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1500117050 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1500117051 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1500117052 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1500117053 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1500117054 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1500117055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1500551997 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1500551998} + - component: {fileID: 1500552001} + - component: {fileID: 1500552000} + - component: {fileID: 1500551999} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1500551998 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1500551999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1500552000 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1500552001 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1519282572 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1519282573} + - component: {fileID: 1519282576} + - component: {fileID: 1519282575} + - component: {fileID: 1519282574} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1519282573 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1519282574 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1519282575 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1519282576 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525608981 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1525608982} + - component: {fileID: 1525608985} + - component: {fileID: 1525608984} + - component: {fileID: 1525608983} + - component: {fileID: 1525608987} + - component: {fileID: 1525608986} + m_Layer: 0 + m_Name: Cube (30) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1525608982 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1525608983 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1525608984 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1525608985 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1525608986 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1525608987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1001 &1545968989 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 154239276} + m_Modifications: + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11479374, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_controller + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1605028846 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1605028847} + - component: {fileID: 1605028850} + - component: {fileID: 1605028849} + - component: {fileID: 1605028848} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1605028847 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1605028848 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1605028849 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1605028850 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1657719772 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1657719773} + - component: {fileID: 1657719776} + - component: {fileID: 1657719775} + - component: {fileID: 1657719774} + - component: {fileID: 1657719778} + - component: {fileID: 1657719777} + m_Layer: 0 + m_Name: Cube (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1657719773 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1657719774 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1657719775 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1657719776 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1657719777 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1657719778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1702096972 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1702096973} + - component: {fileID: 1702096976} + - component: {fileID: 1702096975} + - component: {fileID: 1702096974} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1702096973 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1702096974 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1702096975 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1702096976 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1744811460 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1744811461} + - component: {fileID: 1744811464} + - component: {fileID: 1744811463} + - component: {fileID: 1744811462} + - component: {fileID: 1744811466} + - component: {fileID: 1744811465} + m_Layer: 0 + m_Name: Cube (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1744811461 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1744811462 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1744811463 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1744811464 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1744811465 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1744811466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1840087110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1840087111} + - component: {fileID: 1840087114} + - component: {fileID: 1840087113} + - component: {fileID: 1840087112} + - component: {fileID: 1840087116} + - component: {fileID: 1840087115} + m_Layer: 0 + m_Name: Cube (15) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1840087111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1840087112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1840087113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1840087114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1840087115 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1840087116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!4 &1879097668 stripped +Transform: + m_PrefabParentObject: {fileID: 4471613377008970, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &1908482354 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1908482355} + - component: {fileID: 1908482358} + - component: {fileID: 1908482357} + - component: {fileID: 1908482356} + - component: {fileID: 1908482360} + - component: {fileID: 1908482359} + m_Layer: 0 + m_Name: Cube (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1908482355 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1908482356 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1908482357 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1908482358 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1908482359 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1908482360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1925469567 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1925469568} + m_Layer: 0 + m_Name: Grabbables + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1925469568 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1925469567} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 452902407} + - {fileID: 1657719773} + - {fileID: 2013597838} + - {fileID: 2055358989} + - {fileID: 1908482355} + - {fileID: 1744811461} + - {fileID: 684017682} + - {fileID: 73524540} + - {fileID: 1500117050} + - {fileID: 857705793} + - {fileID: 224673156} + - {fileID: 206189565} + - {fileID: 1353144166} + - {fileID: 329624604} + - {fileID: 1840087111} + - {fileID: 575655891} + - {fileID: 1107310627} + - {fileID: 663437232} + - {fileID: 719105580} + - {fileID: 36454513} + - {fileID: 1380377874} + - {fileID: 2137937538} + - {fileID: 1206777513} + - {fileID: 1267950893} + - {fileID: 1967851989} + - {fileID: 358988760} + - {fileID: 943102111} + - {fileID: 1065364694} + - {fileID: 66877010} + - {fileID: 1525608982} + - {fileID: 568642234} + - {fileID: 617808498} + m_Father: {fileID: 346664030} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1962295110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1962295111} + - component: {fileID: 1962295114} + - component: {fileID: 1962295113} + - component: {fileID: 1962295112} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1962295111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1962295112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1962295113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1962295114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1967851988 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1967851989} + - component: {fileID: 1967851992} + - component: {fileID: 1967851991} + - component: {fileID: 1967851990} + - component: {fileID: 1967851994} + - component: {fileID: 1967851993} + m_Layer: 0 + m_Name: Cube (25) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1967851989 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1967851990 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1967851991 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1967851992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1967851993 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1967851994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &2013597837 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2013597838} + - component: {fileID: 2013597841} + - component: {fileID: 2013597840} + - component: {fileID: 2013597839} + - component: {fileID: 2013597843} + - component: {fileID: 2013597842} + m_Layer: 0 + m_Name: Cube (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2013597838 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2013597839 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2013597840 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2013597841 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2013597842 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2013597843 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &2026317946 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2026317950} + - component: {fileID: 2026317949} + - component: {fileID: 2026317948} + - component: {fileID: 2026317947} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2026317947 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2026317948 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2026317949 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2026317950 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2055358988 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2055358989} + - component: {fileID: 2055358992} + - component: {fileID: 2055358991} + - component: {fileID: 2055358990} + - component: {fileID: 2055358994} + - component: {fileID: 2055358993} + m_Layer: 0 + m_Name: Cube (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2055358989 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2055358990 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2055358991 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2055358992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2055358993 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2055358994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1001 &2080101472 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11400010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: useProfileData + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400008, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &2080101473 stripped +GameObject: + m_PrefabParentObject: {fileID: 100014, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &2080101474 stripped +GameObject: + m_PrefabParentObject: {fileID: 100010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!20 &2080101475 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101473} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!20 &2080101476 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101474} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &2137937537 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2137937538} + - component: {fileID: 2137937541} + - component: {fileID: 2137937540} + - component: {fileID: 2137937539} + - component: {fileID: 2137937543} + - component: {fileID: 2137937542} + m_Layer: 0 + m_Name: Cube (22) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2137937538 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2137937539 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2137937540 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2137937541 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2137937542 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2137937543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] diff --git a/Assets/Oculus/VR/Scenes/ControllerModels.unity.meta b/Assets/Oculus/VR/Scenes/ControllerModels.unity.meta new file mode 100644 index 0000000..17c19a2 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/ControllerModels.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 39cfe7aa0a2d46c47994d8d0308ec663 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scenes/Cubes.unity b/Assets/Oculus/VR/Scenes/Cubes.unity new file mode 100644 index 0000000..890da2a --- /dev/null +++ b/Assets/Oculus/VR/Scenes/Cubes.unity @@ -0,0 +1,47147 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_Fog: 0 + m_FogColor: {r: .5, g: .5, b: .5, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 1, g: 1, b: 1, a: 1} + m_AmbientEquatorColor: {r: 1, g: 1, b: 1, a: 1} + m_AmbientGroundColor: {r: 1, g: 1, b: 1, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: .5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} +--- !u!127 &3 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_GIWorkflowMode: 1 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 1 + m_BakeResolution: 50 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: .166666657 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &3664027 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 3664028} + - 33: {fileID: 3664030} + - 23: {fileID: 3664029} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3664028 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 3664027} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 5 +--- !u!23 &3664029 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 3664027} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3664030 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 3664027} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &4240588 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4240589} + - 33: {fileID: 4240591} + - 23: {fileID: 4240590} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4240589 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 4240588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 0 +--- !u!23 &4240590 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 4240588} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &4240591 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 4240588} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &6176330 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 6176331} + - 33: {fileID: 6176333} + - 23: {fileID: 6176332} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6176331 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 6176330} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 3 +--- !u!23 &6176332 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 6176330} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &6176333 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 6176330} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &10900166 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 10900167} + - 33: {fileID: 10900169} + - 23: {fileID: 10900168} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &10900167 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 10900166} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 7 +--- !u!23 &10900168 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 10900166} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &10900169 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 10900166} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &11815620 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 11815621} + - 33: {fileID: 11815623} + - 23: {fileID: 11815622} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &11815621 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 11815620} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 4 +--- !u!23 &11815622 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 11815620} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &11815623 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 11815620} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &13932139 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 13932140} + - 33: {fileID: 13932142} + - 23: {fileID: 13932141} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &13932140 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 13932139} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 2 +--- !u!23 &13932141 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 13932139} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &13932142 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 13932139} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &18001876 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 18001877} + - 33: {fileID: 18001879} + - 23: {fileID: 18001878} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &18001877 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 18001876} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 6 +--- !u!23 &18001878 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 18001876} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &18001879 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 18001876} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &18047732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 18047733} + - 33: {fileID: 18047735} + - 23: {fileID: 18047734} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &18047733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 18047732} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 2 +--- !u!23 &18047734 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 18047732} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &18047735 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 18047732} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &22254241 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 22254242} + - 33: {fileID: 22254244} + - 23: {fileID: 22254243} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &22254242 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 22254241} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 5 +--- !u!23 &22254243 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 22254241} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &22254244 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 22254241} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &22869809 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 22869810} + - 33: {fileID: 22869812} + - 23: {fileID: 22869811} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &22869810 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 22869809} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 1 +--- !u!23 &22869811 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 22869809} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &22869812 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 22869809} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &24013132 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 24013133} + - 33: {fileID: 24013135} + - 23: {fileID: 24013134} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &24013133 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 24013132} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 7 +--- !u!23 &24013134 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 24013132} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &24013135 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 24013132} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &24304357 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 24304358} + - 33: {fileID: 24304360} + - 23: {fileID: 24304359} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &24304358 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 24304357} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 8 +--- !u!23 &24304359 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 24304357} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &24304360 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 24304357} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &26660321 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 26660322} + - 33: {fileID: 26660324} + - 23: {fileID: 26660323} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &26660322 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 26660321} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 3 +--- !u!23 &26660323 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 26660321} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &26660324 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 26660321} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &31880375 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 31880376} + - 33: {fileID: 31880378} + - 23: {fileID: 31880377} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &31880376 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 31880375} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 7 +--- !u!23 &31880377 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 31880375} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &31880378 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 31880375} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &32196260 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 32196261} + - 33: {fileID: 32196263} + - 23: {fileID: 32196262} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &32196261 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 32196260} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 3 +--- !u!23 &32196262 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 32196260} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &32196263 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 32196260} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &32676780 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 32676781} + - 33: {fileID: 32676783} + - 23: {fileID: 32676782} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &32676781 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 32676780} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 6 +--- !u!23 &32676782 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 32676780} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &32676783 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 32676780} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &35212799 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 35212800} + - 33: {fileID: 35212802} + - 23: {fileID: 35212801} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &35212800 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 35212799} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 1 +--- !u!23 &35212801 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 35212799} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &35212802 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 35212799} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &39903540 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 39903541} + - 33: {fileID: 39903543} + - 23: {fileID: 39903542} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &39903541 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 39903540} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 4 +--- !u!23 &39903542 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 39903540} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &39903543 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 39903540} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &39951912 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 39951913} + - 33: {fileID: 39951915} + - 23: {fileID: 39951914} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &39951913 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 39951912} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 6 +--- !u!23 &39951914 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 39951912} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &39951915 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 39951912} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &47831828 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 47831829} + - 33: {fileID: 47831831} + - 23: {fileID: 47831830} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &47831829 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 47831828} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 4 +--- !u!23 &47831830 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 47831828} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &47831831 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 47831828} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &47951524 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 47951525} + - 33: {fileID: 47951527} + - 23: {fileID: 47951526} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &47951525 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 47951524} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 1 +--- !u!23 &47951526 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 47951524} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &47951527 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 47951524} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &49728983 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 49728984} + - 33: {fileID: 49728986} + - 23: {fileID: 49728985} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &49728984 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 49728983} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 4 +--- !u!23 &49728985 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 49728983} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &49728986 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 49728983} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &51436667 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 51436668} + - 33: {fileID: 51436670} + - 23: {fileID: 51436669} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &51436668 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51436667} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 1 +--- !u!23 &51436669 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51436667} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &51436670 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51436667} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &52129120 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 52129121} + - 33: {fileID: 52129123} + - 23: {fileID: 52129122} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &52129121 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52129120} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 5 +--- !u!23 &52129122 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52129120} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &52129123 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52129120} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &52338613 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 52338614} + - 33: {fileID: 52338616} + - 23: {fileID: 52338615} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &52338614 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52338613} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 1 +--- !u!23 &52338615 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52338613} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &52338616 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52338613} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &52357632 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 52357633} + - 33: {fileID: 52357635} + - 23: {fileID: 52357634} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &52357633 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52357632} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 8 +--- !u!23 &52357634 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52357632} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &52357635 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52357632} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &53922723 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 53922724} + - 33: {fileID: 53922726} + - 23: {fileID: 53922725} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &53922724 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 53922723} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 8 +--- !u!23 &53922725 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 53922723} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &53922726 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 53922723} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &56780191 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 56780192} + - 33: {fileID: 56780194} + - 23: {fileID: 56780193} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &56780192 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 56780191} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 8 +--- !u!23 &56780193 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 56780191} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &56780194 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 56780191} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &60223817 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 60223818} + - 33: {fileID: 60223820} + - 23: {fileID: 60223819} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &60223818 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 60223817} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 7 +--- !u!23 &60223819 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 60223817} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &60223820 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 60223817} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &60943538 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 60943539} + - 33: {fileID: 60943541} + - 23: {fileID: 60943540} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &60943539 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 60943538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 5 +--- !u!23 &60943540 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 60943538} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &60943541 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 60943538} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &61856426 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 61856427} + - 33: {fileID: 61856429} + - 23: {fileID: 61856428} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &61856427 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61856426} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 5 +--- !u!23 &61856428 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61856426} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &61856429 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61856426} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &61866933 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 61866934} + - 33: {fileID: 61866936} + - 23: {fileID: 61866935} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &61866934 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61866933} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 0 +--- !u!23 &61866935 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61866933} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &61866936 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 61866933} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &63880794 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 63880795} + - 33: {fileID: 63880797} + - 23: {fileID: 63880796} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &63880795 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 63880794} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 2 +--- !u!23 &63880796 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 63880794} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &63880797 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 63880794} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &66939662 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 66939663} + - 33: {fileID: 66939665} + - 23: {fileID: 66939664} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &66939663 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66939662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 3 +--- !u!23 &66939664 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66939662} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &66939665 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66939662} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &68974762 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 68974763} + - 33: {fileID: 68974765} + - 23: {fileID: 68974764} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &68974763 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 68974762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 4 +--- !u!23 &68974764 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 68974762} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &68974765 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 68974762} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &72504182 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 72504183} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &72504183 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 72504182} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1345266611} + - {fileID: 1861128536} + - {fileID: 1991666046} + - {fileID: 1755946758} + - {fileID: 1563197119} + - {fileID: 448452949} + - {fileID: 1787459735} + - {fileID: 296827906} + - {fileID: 436597880} + m_Father: {fileID: 416898948} + m_RootOrder: 2 +--- !u!1 &73591252 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 73591253} + - 33: {fileID: 73591255} + - 23: {fileID: 73591254} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &73591253 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73591252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 6 +--- !u!23 &73591254 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73591252} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &73591255 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73591252} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &75920194 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 75920195} + - 33: {fileID: 75920197} + - 23: {fileID: 75920196} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &75920195 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 75920194} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 7 +--- !u!23 &75920196 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 75920194} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &75920197 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 75920194} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &79316879 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 79316880} + - 33: {fileID: 79316882} + - 23: {fileID: 79316881} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &79316880 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 79316879} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 7 +--- !u!23 &79316881 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 79316879} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &79316882 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 79316879} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &81328366 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 81328367} + - 33: {fileID: 81328369} + - 23: {fileID: 81328368} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &81328367 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 81328366} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 7 +--- !u!23 &81328368 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 81328366} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &81328369 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 81328366} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &89611125 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 89611126} + - 33: {fileID: 89611128} + - 23: {fileID: 89611127} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &89611126 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 89611125} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 5 +--- !u!23 &89611127 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 89611125} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &89611128 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 89611125} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &91951653 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 91951654} + - 33: {fileID: 91951656} + - 23: {fileID: 91951655} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &91951654 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 91951653} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 8 +--- !u!23 &91951655 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 91951653} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &91951656 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 91951653} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &97341078 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 97341079} + - 33: {fileID: 97341081} + - 23: {fileID: 97341080} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &97341079 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97341078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 8 +--- !u!23 &97341080 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97341078} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &97341081 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97341078} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &97446089 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 97446090} + - 33: {fileID: 97446092} + - 23: {fileID: 97446091} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &97446090 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97446089} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 4 +--- !u!23 &97446091 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97446089} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &97446092 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97446089} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &99675306 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 99675307} + - 33: {fileID: 99675309} + - 23: {fileID: 99675308} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &99675307 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 99675306} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 0 +--- !u!23 &99675308 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 99675306} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &99675309 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 99675306} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &101568286 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 101568287} + - 33: {fileID: 101568289} + - 23: {fileID: 101568288} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &101568287 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101568286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 8 +--- !u!23 &101568288 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101568286} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &101568289 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101568286} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &101794872 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 101794873} + - 33: {fileID: 101794875} + - 23: {fileID: 101794874} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &101794873 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101794872} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 1 +--- !u!23 &101794874 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101794872} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &101794875 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 101794872} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &115371109 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 115371110} + - 33: {fileID: 115371112} + - 23: {fileID: 115371111} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &115371110 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 115371109} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 1 +--- !u!23 &115371111 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 115371109} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &115371112 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 115371109} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &118428095 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 118428096} + - 33: {fileID: 118428098} + - 23: {fileID: 118428097} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &118428096 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 118428095} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 2 +--- !u!23 &118428097 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 118428095} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &118428098 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 118428095} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &121895491 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 121895492} + - 33: {fileID: 121895494} + - 23: {fileID: 121895493} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &121895492 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 121895491} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 2 +--- !u!23 &121895493 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 121895491} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &121895494 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 121895491} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &122792863 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 122792864} + - 33: {fileID: 122792866} + - 23: {fileID: 122792865} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &122792864 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 122792863} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 1 +--- !u!23 &122792865 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 122792863} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &122792866 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 122792863} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &123976716 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 123976717} + - 33: {fileID: 123976719} + - 23: {fileID: 123976718} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &123976717 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 123976716} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 6 +--- !u!23 &123976718 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 123976716} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &123976719 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 123976716} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &124953302 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 124953303} + - 33: {fileID: 124953305} + - 23: {fileID: 124953304} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &124953303 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 124953302} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 0 +--- !u!23 &124953304 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 124953302} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &124953305 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 124953302} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &128223065 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 128223066} + - 33: {fileID: 128223068} + - 23: {fileID: 128223067} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &128223066 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 128223065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 8 +--- !u!23 &128223067 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 128223065} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &128223068 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 128223065} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &132263418 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 132263419} + - 33: {fileID: 132263421} + - 23: {fileID: 132263420} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &132263419 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 132263418} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 7 +--- !u!23 &132263420 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 132263418} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &132263421 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 132263418} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &133039176 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 133039177} + - 33: {fileID: 133039179} + - 23: {fileID: 133039178} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &133039177 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 133039176} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 3 +--- !u!23 &133039178 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 133039176} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &133039179 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 133039176} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &134224554 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 134224555} + - 33: {fileID: 134224557} + - 23: {fileID: 134224556} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &134224555 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 134224554} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 1 +--- !u!23 &134224556 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 134224554} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &134224557 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 134224554} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &138445034 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 138445035} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &138445035 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138445034} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1779963277} + - {fileID: 1371947164} + - {fileID: 639002474} + - {fileID: 1325847477} + - {fileID: 843322475} + - {fileID: 1234331063} + - {fileID: 672418999} + - {fileID: 674325342} + - {fileID: 1809721791} + m_Father: {fileID: 357871943} + m_RootOrder: 8 +--- !u!1 &144254503 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 144254504} + - 33: {fileID: 144254506} + - 23: {fileID: 144254505} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &144254504 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 144254503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 3 +--- !u!23 &144254505 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 144254503} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &144254506 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 144254503} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &146325015 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 146325016} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &146325016 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 146325015} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1438931484} + - {fileID: 215729169} + - {fileID: 1472923031} + - {fileID: 188878799} + - {fileID: 1209329983} + - {fileID: 1239907698} + - {fileID: 1113415722} + - {fileID: 494523048} + - {fileID: 159467062} + m_Father: {fileID: 1875085494} + m_RootOrder: 4 +--- !u!1 &150190141 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 150190142} + - 33: {fileID: 150190144} + - 23: {fileID: 150190143} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &150190142 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 150190141} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 8 +--- !u!23 &150190143 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 150190141} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &150190144 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 150190141} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &153267156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 153267157} + - 33: {fileID: 153267159} + - 23: {fileID: 153267158} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &153267157 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 153267156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 5 +--- !u!23 &153267158 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 153267156} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &153267159 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 153267156} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &155157966 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 155157967} + - 33: {fileID: 155157969} + - 23: {fileID: 155157968} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &155157967 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 155157966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 7 +--- !u!23 &155157968 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 155157966} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &155157969 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 155157966} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &155545761 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 155545762} + - 33: {fileID: 155545764} + - 23: {fileID: 155545763} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &155545762 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 155545761} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 6 +--- !u!23 &155545763 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 155545761} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &155545764 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 155545761} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &157447698 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 157447699} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &157447699 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 157447698} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1793642500} + - {fileID: 1493653994} + - {fileID: 1368997100} + - {fileID: 345088240} + - {fileID: 539304524} + - {fileID: 1606405213} + - {fileID: 691554664} + - {fileID: 1350275575} + - {fileID: 56780192} + m_Father: {fileID: 416898948} + m_RootOrder: 7 +--- !u!1 &159467061 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 159467062} + - 33: {fileID: 159467064} + - 23: {fileID: 159467063} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &159467062 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 159467061} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 8 +--- !u!23 &159467063 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 159467061} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &159467064 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 159467061} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &161900531 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 161900532} + - 33: {fileID: 161900534} + - 23: {fileID: 161900533} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &161900532 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 161900531} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 6 +--- !u!23 &161900533 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 161900531} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &161900534 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 161900531} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &162559257 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 162559258} + - 33: {fileID: 162559260} + - 23: {fileID: 162559259} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &162559258 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 162559257} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 0 +--- !u!23 &162559259 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 162559257} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &162559260 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 162559257} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &173812876 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 173812877} + - 33: {fileID: 173812879} + - 23: {fileID: 173812878} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &173812877 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 173812876} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 6 +--- !u!23 &173812878 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 173812876} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &173812879 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 173812876} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &176026933 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 176026934} + - 33: {fileID: 176026936} + - 23: {fileID: 176026935} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &176026934 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 176026933} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 4 +--- !u!23 &176026935 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 176026933} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &176026936 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 176026933} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &178633823 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 178633824} + - 33: {fileID: 178633826} + - 23: {fileID: 178633825} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &178633824 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 178633823} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 0 +--- !u!23 &178633825 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 178633823} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &178633826 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 178633823} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &185328091 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 185328092} + - 33: {fileID: 185328094} + - 23: {fileID: 185328093} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &185328092 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 185328091} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 5 +--- !u!23 &185328093 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 185328091} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &185328094 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 185328091} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &188878798 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 188878799} + - 33: {fileID: 188878801} + - 23: {fileID: 188878800} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &188878799 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 188878798} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 3 +--- !u!23 &188878800 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 188878798} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &188878801 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 188878798} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &190771843 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 190771844} + - 33: {fileID: 190771846} + - 23: {fileID: 190771845} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &190771844 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 190771843} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 5 +--- !u!23 &190771845 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 190771843} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &190771846 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 190771843} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &191837272 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 191837273} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &191837273 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 191837272} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 764367998} + - {fileID: 1190442269} + - {fileID: 1354454586} + - {fileID: 1142309782} + - {fileID: 1013698094} + - {fileID: 1646787810} + - {fileID: 1127960877} + - {fileID: 1445609286} + - {fileID: 474628329} + m_Father: {fileID: 1288823789} + m_RootOrder: 0 +--- !u!1 &199543576 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 199543577} + - 33: {fileID: 199543579} + - 23: {fileID: 199543578} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &199543577 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 199543576} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 3 +--- !u!23 &199543578 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 199543576} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &199543579 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 199543576} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &201332831 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 201332832} + - 33: {fileID: 201332834} + - 23: {fileID: 201332833} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &201332832 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 201332831} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 3 +--- !u!23 &201332833 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 201332831} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &201332834 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 201332831} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &205582491 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 205582492} + - 33: {fileID: 205582494} + - 23: {fileID: 205582493} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &205582492 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 205582491} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 1 +--- !u!23 &205582493 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 205582491} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &205582494 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 205582491} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &209477139 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 209477140} + - 33: {fileID: 209477142} + - 23: {fileID: 209477141} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &209477140 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 209477139} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 5 +--- !u!23 &209477141 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 209477139} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &209477142 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 209477139} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &210983307 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 210983308} + - 33: {fileID: 210983310} + - 23: {fileID: 210983309} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &210983308 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210983307} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 1 +--- !u!23 &210983309 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210983307} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &210983310 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210983307} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &211645511 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 211645512} + - 33: {fileID: 211645514} + - 23: {fileID: 211645513} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &211645512 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 211645511} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 3 +--- !u!23 &211645513 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 211645511} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &211645514 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 211645511} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &214705699 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 214705700} + - 33: {fileID: 214705702} + - 23: {fileID: 214705701} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &214705700 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 214705699} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 7 +--- !u!23 &214705701 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 214705699} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &214705702 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 214705699} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &214908234 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 214908235} + - 33: {fileID: 214908237} + - 23: {fileID: 214908236} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &214908235 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 214908234} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 7 +--- !u!23 &214908236 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 214908234} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &214908237 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 214908234} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &215669801 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 215669802} + - 33: {fileID: 215669804} + - 23: {fileID: 215669803} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &215669802 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 215669801} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 0 +--- !u!23 &215669803 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 215669801} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &215669804 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 215669801} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &215729168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 215729169} + - 33: {fileID: 215729171} + - 23: {fileID: 215729170} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &215729169 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 215729168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 1 +--- !u!23 &215729170 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 215729168} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &215729171 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 215729168} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &216828086 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 216828087} + - 33: {fileID: 216828089} + - 23: {fileID: 216828088} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &216828087 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 216828086} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 4 +--- !u!23 &216828088 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 216828086} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &216828089 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 216828086} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &217104404 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 217104405} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &217104405 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 217104404} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 694583488} + - {fileID: 1808457319} + - {fileID: 1977979797} + - {fileID: 2099444889} + - {fileID: 413406532} + - {fileID: 697907466} + - {fileID: 18001877} + - {fileID: 799336607} + - {fileID: 101568287} + m_Father: {fileID: 1906654409} + m_RootOrder: 6 +--- !u!1 &225483471 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 225483472} + - 33: {fileID: 225483474} + - 23: {fileID: 225483473} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &225483472 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 225483471} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 0 +--- !u!23 &225483473 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 225483471} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &225483474 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 225483471} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &227008743 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 227008744} + - 33: {fileID: 227008746} + - 23: {fileID: 227008745} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &227008744 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 227008743} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 1 +--- !u!23 &227008745 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 227008743} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &227008746 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 227008743} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &227248109 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 227248110} + - 33: {fileID: 227248112} + - 23: {fileID: 227248111} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &227248110 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 227248109} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 7 +--- !u!23 &227248111 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 227248109} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &227248112 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 227248109} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &229979265 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 229979266} + - 33: {fileID: 229979268} + - 23: {fileID: 229979267} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &229979266 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 229979265} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 3 +--- !u!23 &229979267 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 229979265} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &229979268 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 229979265} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &231626961 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 231626962} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &231626962 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 231626961} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2064792706} + - {fileID: 22869810} + - {fileID: 2062746976} + - {fileID: 1389778215} + - {fileID: 1903182221} + - {fileID: 1116037529} + - {fileID: 1307348601} + - {fileID: 1414375560} + - {fileID: 549499155} + m_Father: {fileID: 1875085494} + m_RootOrder: 1 +--- !u!1 &231738742 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 231738743} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &231738743 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 231738742} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 801635955} + - {fileID: 115371110} + - {fileID: 1754474688} + - {fileID: 1487009763} + - {fileID: 1952045473} + - {fileID: 1360348676} + - {fileID: 504812018} + - {fileID: 1388392809} + - {fileID: 398823143} + m_Father: {fileID: 320694060} + m_RootOrder: 8 +--- !u!1 &232827029 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 232827030} + - 33: {fileID: 232827032} + - 23: {fileID: 232827031} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &232827030 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 232827029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 6 +--- !u!23 &232827031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 232827029} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &232827032 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 232827029} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &233977206 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 233977207} + - 33: {fileID: 233977209} + - 23: {fileID: 233977208} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &233977207 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 233977206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 4 +--- !u!23 &233977208 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 233977206} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &233977209 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 233977206} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &234401192 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 234401193} + - 33: {fileID: 234401195} + - 23: {fileID: 234401194} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &234401193 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 234401192} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 3 +--- !u!23 &234401194 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 234401192} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &234401195 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 234401192} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &249804278 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 249804279} + - 33: {fileID: 249804281} + - 23: {fileID: 249804280} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &249804279 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 249804278} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 3 +--- !u!23 &249804280 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 249804278} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &249804281 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 249804278} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &250318198 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 250318199} + - 33: {fileID: 250318201} + - 23: {fileID: 250318200} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &250318199 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 250318198} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 1 +--- !u!23 &250318200 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 250318198} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &250318201 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 250318198} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &254407488 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 254407489} + - 33: {fileID: 254407491} + - 23: {fileID: 254407490} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &254407489 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 254407488} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 1 +--- !u!23 &254407490 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 254407488} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &254407491 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 254407488} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &260159408 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 260159409} + - 33: {fileID: 260159411} + - 23: {fileID: 260159410} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &260159409 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 260159408} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 8 +--- !u!23 &260159410 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 260159408} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &260159411 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 260159408} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &262542701 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 262542702} + - 33: {fileID: 262542704} + - 23: {fileID: 262542703} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &262542702 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 262542701} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 1 +--- !u!23 &262542703 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 262542701} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &262542704 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 262542701} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &264309449 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 264309450} + - 33: {fileID: 264309452} + - 23: {fileID: 264309451} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &264309450 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 264309449} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 7 +--- !u!23 &264309451 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 264309449} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &264309452 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 264309449} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &265207075 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 265207076} + - 33: {fileID: 265207078} + - 23: {fileID: 265207077} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &265207076 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 265207075} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 2 +--- !u!23 &265207077 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 265207075} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &265207078 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 265207075} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &268222374 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 268222375} + - 33: {fileID: 268222377} + - 23: {fileID: 268222376} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &268222375 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 268222374} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 2 +--- !u!23 &268222376 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 268222374} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &268222377 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 268222374} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &271422295 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 271422296} + - 33: {fileID: 271422298} + - 23: {fileID: 271422297} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &271422296 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 271422295} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 5 +--- !u!23 &271422297 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 271422295} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &271422298 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 271422295} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &272056893 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 272056894} + - 33: {fileID: 272056896} + - 23: {fileID: 272056895} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &272056894 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 272056893} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 8 +--- !u!23 &272056895 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 272056893} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &272056896 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 272056893} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &276138906 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 276138907} + - 33: {fileID: 276138909} + - 23: {fileID: 276138908} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &276138907 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 276138906} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 6 +--- !u!23 &276138908 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 276138906} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &276138909 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 276138906} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &277228139 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 277228140} + - 33: {fileID: 277228142} + - 23: {fileID: 277228141} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &277228140 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 277228139} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 8 +--- !u!23 &277228141 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 277228139} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &277228142 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 277228139} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &283110880 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 283110881} + - 33: {fileID: 283110883} + - 23: {fileID: 283110882} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &283110881 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 283110880} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 2 +--- !u!23 &283110882 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 283110880} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &283110883 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 283110880} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &283747328 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 283747329} + - 33: {fileID: 283747331} + - 23: {fileID: 283747330} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &283747329 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 283747328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 0 +--- !u!23 &283747330 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 283747328} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &283747331 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 283747328} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &284640321 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 284640322} + - 33: {fileID: 284640324} + - 23: {fileID: 284640323} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &284640322 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 284640321} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 7 +--- !u!23 &284640323 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 284640321} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &284640324 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 284640321} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &285840096 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 285840097} + - 33: {fileID: 285840099} + - 23: {fileID: 285840098} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &285840097 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 285840096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 2 +--- !u!23 &285840098 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 285840096} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &285840099 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 285840096} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &287649692 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 287649693} + - 33: {fileID: 287649695} + - 23: {fileID: 287649694} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &287649693 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 287649692} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 0 +--- !u!23 &287649694 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 287649692} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &287649695 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 287649692} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &292936479 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 292936480} + - 33: {fileID: 292936482} + - 23: {fileID: 292936481} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &292936480 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 292936479} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 7 +--- !u!23 &292936481 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 292936479} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &292936482 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 292936479} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &296827905 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 296827906} + - 33: {fileID: 296827908} + - 23: {fileID: 296827907} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &296827906 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 296827905} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 7 +--- !u!23 &296827907 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 296827905} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &296827908 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 296827905} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &304245273 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 304245274} + - 33: {fileID: 304245276} + - 23: {fileID: 304245275} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &304245274 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 304245273} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 2 +--- !u!23 &304245275 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 304245273} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &304245276 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 304245273} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &306662444 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 306662445} + - 33: {fileID: 306662447} + - 23: {fileID: 306662446} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &306662445 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 306662444} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 4 +--- !u!23 &306662446 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 306662444} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &306662447 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 306662444} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &307869077 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 307869078} + - 33: {fileID: 307869080} + - 23: {fileID: 307869079} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &307869078 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 307869077} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 3 +--- !u!23 &307869079 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 307869077} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &307869080 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 307869077} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &309447439 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 309447440} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &309447440 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 309447439} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1825222277} + - {fileID: 101794873} + - {fileID: 1470668112} + - {fileID: 840540659} + - {fileID: 1276774529} + - {fileID: 1595097606} + - {fileID: 1283742115} + - {fileID: 1136746723} + - {fileID: 1211858530} + m_Father: {fileID: 1285129845} + m_RootOrder: 5 +--- !u!1 &311797877 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 311797878} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &311797878 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 311797877} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -7.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2097222327} + - {fileID: 1396826707} + - {fileID: 857026539} + - {fileID: 1711378518} + - {fileID: 2040025849} + - {fileID: 1528982994} + - {fileID: 1881349947} + - {fileID: 499152561} + - {fileID: 1240836681} + m_Father: {fileID: 1335403818} + m_RootOrder: 5 +--- !u!1 &316302724 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 316302725} + - 33: {fileID: 316302727} + - 23: {fileID: 316302726} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &316302725 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 316302724} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 2 +--- !u!23 &316302726 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 316302724} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &316302727 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 316302724} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &320694059 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 320694060} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &320694060 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 320694059} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -5.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 379543545} + - {fileID: 1613309483} + - {fileID: 1337936969} + - {fileID: 1435433903} + - {fileID: 849571239} + - {fileID: 732523451} + - {fileID: 1950362483} + - {fileID: 1392306390} + - {fileID: 231738743} + m_Father: {fileID: 1335403818} + m_RootOrder: 0 +--- !u!1 &332742598 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 332742599} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &332742599 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 332742598} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1646799001} + - {fileID: 925124721} + - {fileID: 1364969516} + - {fileID: 511318834} + - {fileID: 1355525086} + - {fileID: 1479376376} + - {fileID: 1291389607} + - {fileID: 606569945} + - {fileID: 866611229} + m_Father: {fileID: 2047955730} + m_RootOrder: 1 +--- !u!1 &333333697 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 333333698} + - 33: {fileID: 333333700} + - 23: {fileID: 333333699} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &333333698 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 333333697} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 5 +--- !u!23 &333333699 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 333333697} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &333333700 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 333333697} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &335083539 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 335083540} + - 33: {fileID: 335083542} + - 23: {fileID: 335083541} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &335083540 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 335083539} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 4 +--- !u!23 &335083541 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 335083539} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &335083542 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 335083539} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &339113544 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 339113545} + - 33: {fileID: 339113547} + - 23: {fileID: 339113546} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &339113545 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 339113544} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 2 +--- !u!23 &339113546 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 339113544} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &339113547 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 339113544} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &345088239 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 345088240} + - 33: {fileID: 345088242} + - 23: {fileID: 345088241} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &345088240 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 345088239} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 3 +--- !u!23 &345088241 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 345088239} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &345088242 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 345088239} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &349606542 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 349606543} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &349606543 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 349606542} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 61866934} + - {fileID: 1602538143} + - {fileID: 339113545} + - {fileID: 1102846825} + - {fileID: 653589771} + - {fileID: 2139240985} + - {fileID: 850494880} + - {fileID: 851576731} + - {fileID: 1169682652} + m_Father: {fileID: 1288823789} + m_RootOrder: 5 +--- !u!1 &349988447 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 349988448} + - 33: {fileID: 349988450} + - 23: {fileID: 349988449} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &349988448 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 349988447} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 6 +--- !u!23 &349988449 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 349988447} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &349988450 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 349988447} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &351209545 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 351209546} + - 33: {fileID: 351209548} + - 23: {fileID: 351209547} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &351209546 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 351209545} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 3 +--- !u!23 &351209547 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 351209545} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &351209548 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 351209545} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &352250861 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 352250862} + - 33: {fileID: 352250864} + - 23: {fileID: 352250863} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &352250862 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352250861} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 3 +--- !u!23 &352250863 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352250861} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &352250864 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352250861} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &352349651 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 352349652} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &352349652 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352349651} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 655133131} + - {fileID: 52338614} + - {fileID: 920142118} + - {fileID: 1475028433} + - {fileID: 97446090} + - {fileID: 1902281420} + - {fileID: 1445696865} + - {fileID: 1865533535} + - {fileID: 1305541519} + m_Father: {fileID: 1906654409} + m_RootOrder: 1 +--- !u!1 &352927685 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 352927686} + - 33: {fileID: 352927688} + - 23: {fileID: 352927687} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &352927686 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352927685} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 8 +--- !u!23 &352927687 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352927685} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &352927688 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352927685} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &352977277 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 352977278} + - 33: {fileID: 352977280} + - 23: {fileID: 352977279} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &352977278 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352977277} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 6 +--- !u!23 &352977279 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352977277} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &352977280 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 352977277} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &354724695 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 354724696} + - 33: {fileID: 354724698} + - 23: {fileID: 354724697} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &354724696 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 354724695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 2 +--- !u!23 &354724697 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 354724695} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &354724698 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 354724695} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &357871942 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 357871943} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &357871943 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 357871942} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -1.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1624250639} + - {fileID: 1366031035} + - {fileID: 1243272144} + - {fileID: 1038701522} + - {fileID: 1049063299} + - {fileID: 1802157139} + - {fileID: 1536546683} + - {fileID: 1357615428} + - {fileID: 138445035} + m_Father: {fileID: 1335403818} + m_RootOrder: 4 +--- !u!1 &358145805 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 358145806} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &358145806 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358145805} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1001880624} + - {fileID: 1711515864} + - {fileID: 1505898926} + - {fileID: 1161644336} + - {fileID: 570170665} + - {fileID: 869062404} + - {fileID: 349988448} + - {fileID: 1465525031} + - {fileID: 1622807706} + m_Father: {fileID: 2047955730} + m_RootOrder: 3 +--- !u!1 &363080942 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 363080943} + - 33: {fileID: 363080945} + - 23: {fileID: 363080944} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &363080943 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 363080942} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 7 +--- !u!23 &363080944 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 363080942} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &363080945 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 363080942} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &364803735 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 364803736} + - 33: {fileID: 364803738} + - 23: {fileID: 364803737} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &364803736 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 364803735} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 6 +--- !u!23 &364803737 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 364803735} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &364803738 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 364803735} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &366225504 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 366225505} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &366225505 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 366225504} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 598451971} + - {fileID: 1288023954} + - {fileID: 583863356} + - {fileID: 776061702} + - {fileID: 176026934} + - {fileID: 3664028} + - {fileID: 1362344587} + - {fileID: 284640322} + - {fileID: 2093071929} + m_Father: {fileID: 1288823789} + m_RootOrder: 8 +--- !u!1 &368109053 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 368109054} + - 33: {fileID: 368109056} + - 23: {fileID: 368109055} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &368109054 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 368109053} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 0 +--- !u!23 &368109055 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 368109053} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &368109056 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 368109053} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &375505130 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 375505131} + - 33: {fileID: 375505133} + - 23: {fileID: 375505132} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &375505131 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 375505130} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 5 +--- !u!23 &375505132 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 375505130} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &375505133 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 375505130} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &379543544 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 379543545} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &379543545 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 379543544} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 944084776} + - {fileID: 262542702} + - {fileID: 1887303632} + - {fileID: 1334569733} + - {fileID: 540466442} + - {fileID: 1520303005} + - {fileID: 1128731190} + - {fileID: 578583990} + - {fileID: 97341079} + m_Father: {fileID: 320694060} + m_RootOrder: 0 +--- !u!1 &382491389 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 382491390} + - 33: {fileID: 382491392} + - 23: {fileID: 382491391} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &382491390 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382491389} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 4 +--- !u!23 &382491391 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382491389} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &382491392 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382491389} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &382685687 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 382685688} + - 33: {fileID: 382685690} + - 23: {fileID: 382685689} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &382685688 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382685687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 3 +--- !u!23 &382685689 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382685687} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &382685690 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382685687} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &387035446 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 387035447} + - 33: {fileID: 387035449} + - 23: {fileID: 387035448} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &387035447 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 387035446} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 0 +--- !u!23 &387035448 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 387035446} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &387035449 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 387035446} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &396729916 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 396729917} + - 33: {fileID: 396729919} + - 23: {fileID: 396729918} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &396729917 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 396729916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 5 +--- !u!23 &396729918 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 396729916} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &396729919 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 396729916} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &398582822 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 398582823} + - 33: {fileID: 398582825} + - 23: {fileID: 398582824} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &398582823 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 398582822} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 0 +--- !u!23 &398582824 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 398582822} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &398582825 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 398582822} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &398823142 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 398823143} + - 33: {fileID: 398823145} + - 23: {fileID: 398823144} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &398823143 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 398823142} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 8 +--- !u!23 &398823144 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 398823142} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &398823145 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 398823142} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &404626639 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 404626640} + - 33: {fileID: 404626642} + - 23: {fileID: 404626641} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &404626640 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 404626639} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 2 +--- !u!23 &404626641 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 404626639} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &404626642 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 404626639} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &405307837 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 405307838} + - 33: {fileID: 405307840} + - 23: {fileID: 405307839} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &405307838 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 405307837} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 8 +--- !u!23 &405307839 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 405307837} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &405307840 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 405307837} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &406100770 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 406100771} + - 33: {fileID: 406100773} + - 23: {fileID: 406100772} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &406100771 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406100770} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 4 +--- !u!23 &406100772 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406100770} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &406100773 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406100770} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &412002961 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 412002962} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &412002962 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 412002961} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1571448786} + - {fileID: 1063450513} + - {fileID: 1767762801} + - {fileID: 821731846} + - {fileID: 47831829} + - {fileID: 396729917} + - {fileID: 1195783902} + - {fileID: 1462913751} + - {fileID: 715690333} + m_Father: {fileID: 2047955730} + m_RootOrder: 7 +--- !u!1 &413262253 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 413262254} + - 33: {fileID: 413262256} + - 23: {fileID: 413262255} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &413262254 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 413262253} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 0 +--- !u!23 &413262255 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 413262253} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &413262256 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 413262253} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &413406531 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 413406532} + - 33: {fileID: 413406534} + - 23: {fileID: 413406533} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &413406532 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 413406531} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 4 +--- !u!23 &413406533 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 413406531} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &413406534 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 413406531} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &415594697 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 415594698} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &415594698 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 415594697} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1475930363} + - {fileID: 1492260308} + - {fileID: 2085279771} + - {fileID: 1883108106} + - {fileID: 513028103} + - {fileID: 683790916} + - {fileID: 364803736} + - {fileID: 865105502} + - {fileID: 1459732962} + m_Father: {fileID: 416898948} + m_RootOrder: 8 +--- !u!1 &415624977 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 415624978} + - 33: {fileID: 415624980} + - 23: {fileID: 415624979} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &415624978 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 415624977} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 5 +--- !u!23 &415624979 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 415624977} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &415624980 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 415624977} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &416384452 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 416384453} + - 33: {fileID: 416384455} + - 23: {fileID: 416384454} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &416384453 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 416384452} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 0 +--- !u!23 &416384454 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 416384452} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &416384455 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 416384452} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &416898947 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 416898948} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &416898948 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 416898947} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -2.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 768694475} + - {fileID: 1041296208} + - {fileID: 72504183} + - {fileID: 498431041} + - {fileID: 1965163931} + - {fileID: 554489815} + - {fileID: 471463405} + - {fileID: 157447699} + - {fileID: 415594698} + m_Father: {fileID: 1335403818} + m_RootOrder: 7 +--- !u!1 &418861001 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 418861002} + - 33: {fileID: 418861004} + - 23: {fileID: 418861003} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &418861002 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 418861001} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 4 +--- !u!23 &418861003 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 418861001} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &418861004 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 418861001} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &423336366 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 423336367} + - 33: {fileID: 423336369} + - 23: {fileID: 423336368} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &423336367 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 423336366} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 6 +--- !u!23 &423336368 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 423336366} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &423336369 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 423336366} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &426250120 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 426250121} + - 33: {fileID: 426250123} + - 23: {fileID: 426250122} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &426250121 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 426250120} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 0 +--- !u!23 &426250122 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 426250120} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &426250123 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 426250120} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &427916688 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 427916689} + - 33: {fileID: 427916691} + - 23: {fileID: 427916690} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &427916689 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 427916688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 4 +--- !u!23 &427916690 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 427916688} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &427916691 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 427916688} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &428027776 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 428027777} + - 33: {fileID: 428027779} + - 23: {fileID: 428027778} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &428027777 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 428027776} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 7 +--- !u!23 &428027778 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 428027776} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &428027779 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 428027776} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &429781487 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 429781488} + - 33: {fileID: 429781490} + - 23: {fileID: 429781489} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &429781488 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 429781487} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 8 +--- !u!23 &429781489 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 429781487} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &429781490 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 429781487} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &430584707 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400004, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 126d619cf4daa52469682f85c1378b4a, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &430685318 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 430685319} + - 33: {fileID: 430685321} + - 23: {fileID: 430685320} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &430685319 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 430685318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 8 +--- !u!23 &430685320 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 430685318} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &430685321 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 430685318} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &433168049 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 433168050} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433168050 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433168049} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1574963638} + - {fileID: 579785515} + - {fileID: 265207076} + - {fileID: 1173828076} + - {fileID: 626833814} + - {fileID: 1665684508} + - {fileID: 39951913} + - {fileID: 1741551535} + - {fileID: 784653061} + m_Father: {fileID: 1285129845} + m_RootOrder: 8 +--- !u!1 &433219885 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 433219886} + - 33: {fileID: 433219888} + - 23: {fileID: 433219887} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433219886 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433219885} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 0 +--- !u!23 &433219887 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433219885} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &433219888 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433219885} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &433220171 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 433220172} + - 33: {fileID: 433220174} + - 23: {fileID: 433220173} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433220172 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433220171} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 8 +--- !u!23 &433220173 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433220171} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &433220174 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433220171} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &433647461 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 433647462} + - 33: {fileID: 433647464} + - 23: {fileID: 433647463} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433647462 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433647461} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 5 +--- !u!23 &433647463 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433647461} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &433647464 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 433647461} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &434164392 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 434164393} + - 33: {fileID: 434164395} + - 23: {fileID: 434164394} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &434164393 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 434164392} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 0 +--- !u!23 &434164394 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 434164392} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &434164395 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 434164392} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &436597879 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 436597880} + - 33: {fileID: 436597882} + - 23: {fileID: 436597881} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &436597880 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 436597879} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 8 +--- !u!23 &436597881 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 436597879} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &436597882 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 436597879} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &437676467 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 437676468} + - 33: {fileID: 437676470} + - 23: {fileID: 437676469} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &437676468 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 437676467} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 4 +--- !u!23 &437676469 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 437676467} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &437676470 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 437676467} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &440610437 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 440610438} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &440610438 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 440610437} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 645802775} + - {fileID: 452972113} + - {fileID: 575084346} + - {fileID: 26660322} + - {fileID: 1729768773} + - {fileID: 1834334019} + - {fileID: 1044959949} + - {fileID: 227248110} + - {fileID: 1475464809} + m_Father: {fileID: 1285129845} + m_RootOrder: 0 +--- !u!1 &445368523 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 445368524} + - 33: {fileID: 445368526} + - 23: {fileID: 445368525} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &445368524 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 445368523} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 7 +--- !u!23 &445368525 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 445368523} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &445368526 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 445368523} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &447053504 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 447053505} + - 33: {fileID: 447053507} + - 23: {fileID: 447053506} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &447053505 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 447053504} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 1 +--- !u!23 &447053506 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 447053504} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &447053507 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 447053504} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &448229885 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 448229886} + - 33: {fileID: 448229888} + - 23: {fileID: 448229887} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &448229886 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448229885} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 3 +--- !u!23 &448229887 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448229885} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &448229888 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448229885} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &448452948 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 448452949} + - 33: {fileID: 448452951} + - 23: {fileID: 448452950} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &448452949 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448452948} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 5 +--- !u!23 &448452950 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448452948} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &448452951 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448452948} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &451337794 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 451337795} + - 33: {fileID: 451337797} + - 23: {fileID: 451337796} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &451337795 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 451337794} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 2 +--- !u!23 &451337796 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 451337794} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &451337797 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 451337794} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &452972112 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 452972113} + - 33: {fileID: 452972115} + - 23: {fileID: 452972114} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &452972113 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452972112} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 1 +--- !u!23 &452972114 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452972112} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &452972115 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452972112} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &461508963 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 461508964} + - 33: {fileID: 461508966} + - 23: {fileID: 461508965} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &461508964 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 461508963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 0 +--- !u!23 &461508965 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 461508963} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &461508966 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 461508963} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &463653235 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 463653236} + - 33: {fileID: 463653238} + - 23: {fileID: 463653237} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &463653236 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 463653235} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 4 +--- !u!23 &463653237 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 463653235} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &463653238 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 463653235} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &469176261 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 469176262} + - 33: {fileID: 469176264} + - 23: {fileID: 469176263} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &469176262 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 469176261} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 3 +--- !u!23 &469176263 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 469176261} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &469176264 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 469176261} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &471463404 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 471463405} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &471463405 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 471463404} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1512158322} + - {fileID: 726430108} + - {fileID: 1827989466} + - {fileID: 621855946} + - {fileID: 1052080523} + - {fileID: 626371961} + - {fileID: 1448535561} + - {fileID: 428027777} + - {fileID: 1662872402} + m_Father: {fileID: 416898948} + m_RootOrder: 6 +--- !u!1 &471620195 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 471620196} + - 33: {fileID: 471620198} + - 23: {fileID: 471620197} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &471620196 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 471620195} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 6 +--- !u!23 &471620197 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 471620195} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &471620198 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 471620195} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &474628328 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 474628329} + - 33: {fileID: 474628331} + - 23: {fileID: 474628330} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &474628329 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 474628328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 8 +--- !u!23 &474628330 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 474628328} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &474628331 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 474628328} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &477954934 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 477954935} + - 33: {fileID: 477954937} + - 23: {fileID: 477954936} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &477954935 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 477954934} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 5 +--- !u!23 &477954936 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 477954934} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &477954937 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 477954934} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &484195583 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 484195584} + - 33: {fileID: 484195586} + - 23: {fileID: 484195585} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &484195584 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484195583} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 6 +--- !u!23 &484195585 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484195583} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &484195586 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484195583} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &484270179 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 484270180} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &484270180 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484270179} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1585804692} + - {fileID: 35212800} + - {fileID: 1245497275} + - {fileID: 555280643} + - {fileID: 11815621} + - {fileID: 1202756945} + - {fileID: 716723409} + - {fileID: 2004483208} + - {fileID: 1717160740} + m_Father: {fileID: 1906654409} + m_RootOrder: 4 +--- !u!1 &484418414 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 484418415} + - 33: {fileID: 484418417} + - 23: {fileID: 484418416} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &484418415 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484418414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 4 +--- !u!23 &484418416 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484418414} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &484418417 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484418414} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &484522387 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 484522388} + - 33: {fileID: 484522390} + - 23: {fileID: 484522389} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &484522388 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484522387} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 2 +--- !u!23 &484522389 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484522387} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &484522390 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484522387} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &485922318 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 485922319} + - 33: {fileID: 485922321} + - 23: {fileID: 485922320} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &485922319 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 485922318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 8 +--- !u!23 &485922320 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 485922318} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &485922321 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 485922318} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &494523047 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 494523048} + - 33: {fileID: 494523050} + - 23: {fileID: 494523049} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &494523048 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 494523047} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 7 +--- !u!23 &494523049 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 494523047} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &494523050 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 494523047} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &498431040 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 498431041} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &498431041 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 498431040} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 905568585} + - {fileID: 882231446} + - {fileID: 754377028} + - {fileID: 382685688} + - {fileID: 2068883891} + - {fileID: 375505131} + - {fileID: 2057664975} + - {fileID: 1741033992} + - {fileID: 778259615} + m_Father: {fileID: 416898948} + m_RootOrder: 3 +--- !u!1 &499152560 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 499152561} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &499152561 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 499152560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 461508964} + - {fileID: 1948389798} + - {fileID: 981850443} + - {fileID: 2045179446} + - {fileID: 1700747218} + - {fileID: 1074652779} + - {fileID: 1274924130} + - {fileID: 1396288340} + - {fileID: 1587431538} + m_Father: {fileID: 311797878} + m_RootOrder: 7 +--- !u!1 &504812017 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 504812018} + - 33: {fileID: 504812020} + - 23: {fileID: 504812019} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &504812018 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 504812017} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 6 +--- !u!23 &504812019 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 504812017} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &504812020 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 504812017} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &506744596 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 506744597} + - 33: {fileID: 506744599} + - 23: {fileID: 506744598} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &506744597 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 506744596} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 6 +--- !u!23 &506744598 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 506744596} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &506744599 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 506744596} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &511318833 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 511318834} + - 33: {fileID: 511318836} + - 23: {fileID: 511318835} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &511318834 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 511318833} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 3 +--- !u!23 &511318835 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 511318833} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &511318836 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 511318833} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &511402743 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 511402744} + - 33: {fileID: 511402746} + - 23: {fileID: 511402745} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &511402744 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 511402743} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 5 +--- !u!23 &511402745 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 511402743} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &511402746 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 511402743} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &513028102 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 513028103} + - 33: {fileID: 513028105} + - 23: {fileID: 513028104} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &513028103 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 513028102} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 4 +--- !u!23 &513028104 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 513028102} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &513028105 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 513028102} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &514001096 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 514001097} + - 33: {fileID: 514001099} + - 23: {fileID: 514001098} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &514001097 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 514001096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 8 +--- !u!23 &514001098 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 514001096} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &514001099 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 514001096} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &520605638 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 520605639} + - 33: {fileID: 520605641} + - 23: {fileID: 520605640} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &520605639 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 520605638} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 2 +--- !u!23 &520605640 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 520605638} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &520605641 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 520605638} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &523985742 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 523985743} + - 33: {fileID: 523985745} + - 23: {fileID: 523985744} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &523985743 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523985742} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 1 +--- !u!23 &523985744 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523985742} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &523985745 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523985742} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &531698856 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 531698857} + - 33: {fileID: 531698859} + - 23: {fileID: 531698858} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &531698857 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 531698856} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 3 +--- !u!23 &531698858 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 531698856} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &531698859 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 531698856} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &532371071 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 532371072} + - 33: {fileID: 532371074} + - 23: {fileID: 532371073} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &532371072 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 532371071} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 5 +--- !u!23 &532371073 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 532371071} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &532371074 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 532371071} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &539304523 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 539304524} + - 33: {fileID: 539304526} + - 23: {fileID: 539304525} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &539304524 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 539304523} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 4 +--- !u!23 &539304525 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 539304523} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &539304526 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 539304523} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &540466441 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 540466442} + - 33: {fileID: 540466444} + - 23: {fileID: 540466443} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &540466442 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 540466441} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 4 +--- !u!23 &540466443 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 540466441} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &540466444 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 540466441} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &540681793 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 540681794} + - 33: {fileID: 540681796} + - 23: {fileID: 540681795} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &540681794 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 540681793} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 7 +--- !u!23 &540681795 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 540681793} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &540681796 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 540681793} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &546731475 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 546731476} + - 33: {fileID: 546731478} + - 23: {fileID: 546731477} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &546731476 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 546731475} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 1 +--- !u!23 &546731477 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 546731475} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &546731478 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 546731475} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &546913079 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 546913080} + - 33: {fileID: 546913082} + - 23: {fileID: 546913081} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &546913080 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 546913079} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 2 +--- !u!23 &546913081 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 546913079} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &546913082 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 546913079} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &548293211 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 548293212} + - 33: {fileID: 548293214} + - 23: {fileID: 548293213} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &548293212 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548293211} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 6 +--- !u!23 &548293213 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548293211} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &548293214 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548293211} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &548381933 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 548381934} + - 33: {fileID: 548381936} + - 23: {fileID: 548381935} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &548381934 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548381933} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 1 +--- !u!23 &548381935 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548381933} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &548381936 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548381933} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &549499154 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 549499155} + - 33: {fileID: 549499157} + - 23: {fileID: 549499156} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &549499155 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 549499154} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 8 +--- !u!23 &549499156 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 549499154} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &549499157 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 549499154} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &554489814 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 554489815} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &554489815 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 554489814} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 215669802} + - {fileID: 579658403} + - {fileID: 1389388062} + - {fileID: 144254504} + - {fileID: 382491390} + - {fileID: 1424159264} + - {fileID: 1318505279} + - {fileID: 1457726232} + - {fileID: 1822101654} + m_Father: {fileID: 416898948} + m_RootOrder: 5 +--- !u!1 &555280642 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 555280643} + - 33: {fileID: 555280645} + - 23: {fileID: 555280644} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &555280643 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 555280642} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 3 +--- !u!23 &555280644 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 555280642} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &555280645 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 555280642} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &564326637 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 564326638} + - 33: {fileID: 564326640} + - 23: {fileID: 564326639} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &564326638 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 564326637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 4 +--- !u!23 &564326639 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 564326637} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &564326640 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 564326637} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &567130466 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 567130467} + - 33: {fileID: 567130469} + - 23: {fileID: 567130468} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &567130467 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 567130466} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 7 +--- !u!23 &567130468 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 567130466} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &567130469 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 567130466} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &570170664 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 570170665} + - 33: {fileID: 570170667} + - 23: {fileID: 570170666} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &570170665 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 570170664} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 4 +--- !u!23 &570170666 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 570170664} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &570170667 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 570170664} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &571634747 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 571634748} + - 33: {fileID: 571634750} + - 23: {fileID: 571634749} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &571634748 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 571634747} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 2 +--- !u!23 &571634749 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 571634747} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &571634750 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 571634747} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &575084345 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 575084346} + - 33: {fileID: 575084348} + - 23: {fileID: 575084347} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &575084346 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575084345} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 2 +--- !u!23 &575084347 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575084345} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &575084348 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575084345} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &578583989 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 578583990} + - 33: {fileID: 578583992} + - 23: {fileID: 578583991} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &578583990 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 578583989} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 7 +--- !u!23 &578583991 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 578583989} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &578583992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 578583989} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &579658402 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 579658403} + - 33: {fileID: 579658405} + - 23: {fileID: 579658404} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &579658403 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 579658402} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 1 +--- !u!23 &579658404 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 579658402} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &579658405 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 579658402} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &579785514 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 579785515} + - 33: {fileID: 579785517} + - 23: {fileID: 579785516} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &579785515 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 579785514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 1 +--- !u!23 &579785516 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 579785514} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &579785517 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 579785514} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &583863355 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 583863356} + - 33: {fileID: 583863358} + - 23: {fileID: 583863357} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &583863356 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 583863355} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 2 +--- !u!23 &583863357 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 583863355} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &583863358 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 583863355} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &585764506 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 585764507} + - 33: {fileID: 585764509} + - 23: {fileID: 585764508} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &585764507 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 585764506} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 7 +--- !u!23 &585764508 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 585764506} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &585764509 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 585764506} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &589321229 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 589321230} + - 33: {fileID: 589321232} + - 23: {fileID: 589321231} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &589321230 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 589321229} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 5 +--- !u!23 &589321231 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 589321229} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &589321232 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 589321229} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &591298305 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 591298306} + - 33: {fileID: 591298308} + - 23: {fileID: 591298307} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &591298306 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 591298305} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 2 +--- !u!23 &591298307 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 591298305} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &591298308 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 591298305} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &592028978 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 592028979} + - 33: {fileID: 592028981} + - 23: {fileID: 592028980} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &592028979 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 592028978} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 8 +--- !u!23 &592028980 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 592028978} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &592028981 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 592028978} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &597432347 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 597432348} + - 33: {fileID: 597432350} + - 23: {fileID: 597432349} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &597432348 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 597432347} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 6 +--- !u!23 &597432349 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 597432347} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &597432350 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 597432347} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &598451970 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 598451971} + - 33: {fileID: 598451973} + - 23: {fileID: 598451972} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &598451971 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 598451970} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 0 +--- !u!23 &598451972 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 598451970} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &598451973 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 598451970} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &604038726 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 604038727} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &604038727 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 604038726} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 912679176} + - {fileID: 714657756} + - {fileID: 1026110227} + - {fileID: 352250862} + - {fileID: 1400544811} + - {fileID: 271422296} + - {fileID: 1059900642} + - {fileID: 1660802535} + - {fileID: 53922724} + m_Father: {fileID: 1875085494} + m_RootOrder: 2 +--- !u!1 &606569944 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 606569945} + - 33: {fileID: 606569947} + - 23: {fileID: 606569946} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &606569945 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 606569944} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 7 +--- !u!23 &606569946 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 606569944} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &606569947 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 606569944} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &607719587 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 607719588} + - 33: {fileID: 607719590} + - 23: {fileID: 607719589} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &607719588 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 607719587} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 4 +--- !u!23 &607719589 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 607719587} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &607719590 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 607719587} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &608429980 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 608429981} + - 33: {fileID: 608429983} + - 23: {fileID: 608429982} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &608429981 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608429980} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 7 +--- !u!23 &608429982 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608429980} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &608429983 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608429980} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &608618474 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 608618475} + - 33: {fileID: 608618477} + - 23: {fileID: 608618476} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &608618475 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608618474} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 0 +--- !u!23 &608618476 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608618474} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &608618477 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608618474} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &608944952 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 608944953} + - 33: {fileID: 608944955} + - 23: {fileID: 608944954} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &608944953 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608944952} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 1 +--- !u!23 &608944954 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608944952} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &608944955 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 608944952} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &610586810 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 610586811} + - 33: {fileID: 610586813} + - 23: {fileID: 610586812} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &610586811 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 610586810} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 5 +--- !u!23 &610586812 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 610586810} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &610586813 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 610586810} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &614301047 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 614301048} + - 33: {fileID: 614301050} + - 23: {fileID: 614301049} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &614301048 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 614301047} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 8 +--- !u!23 &614301049 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 614301047} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &614301050 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 614301047} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &617739922 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 617739923} + - 33: {fileID: 617739925} + - 23: {fileID: 617739924} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617739923 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617739922} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 6 +--- !u!23 &617739924 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617739922} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &617739925 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617739922} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &621855945 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 621855946} + - 33: {fileID: 621855948} + - 23: {fileID: 621855947} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &621855946 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 621855945} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 3 +--- !u!23 &621855947 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 621855945} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &621855948 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 621855945} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &621882597 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 621882598} + - 33: {fileID: 621882600} + - 23: {fileID: 621882599} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &621882598 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 621882597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 5 +--- !u!23 &621882599 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 621882597} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &621882600 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 621882597} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &626371960 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 626371961} + - 33: {fileID: 626371963} + - 23: {fileID: 626371962} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &626371961 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 626371960} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 5 +--- !u!23 &626371962 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 626371960} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &626371963 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 626371960} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &626833813 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 626833814} + - 33: {fileID: 626833816} + - 23: {fileID: 626833815} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &626833814 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 626833813} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 4 +--- !u!23 &626833815 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 626833813} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &626833816 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 626833813} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &628298918 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 628298919} + - 33: {fileID: 628298921} + - 23: {fileID: 628298920} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &628298919 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 628298918} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 0 +--- !u!23 &628298920 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 628298918} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &628298921 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 628298918} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &633738327 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 633738328} + - 33: {fileID: 633738330} + - 23: {fileID: 633738329} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &633738328 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 633738327} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 2 +--- !u!23 &633738329 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 633738327} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &633738330 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 633738327} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &639002473 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 639002474} + - 33: {fileID: 639002476} + - 23: {fileID: 639002475} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &639002474 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 639002473} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 2 +--- !u!23 &639002475 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 639002473} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &639002476 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 639002473} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &642335543 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 642335544} + - 33: {fileID: 642335546} + - 23: {fileID: 642335545} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &642335544 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 642335543} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 7 +--- !u!23 &642335545 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 642335543} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &642335546 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 642335543} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &645802774 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 645802775} + - 33: {fileID: 645802777} + - 23: {fileID: 645802776} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &645802775 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 645802774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 0 +--- !u!23 &645802776 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 645802774} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &645802777 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 645802774} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &646509305 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 646509306} + - 33: {fileID: 646509308} + - 23: {fileID: 646509307} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &646509306 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 646509305} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 1 +--- !u!23 &646509307 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 646509305} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &646509308 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 646509305} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &653589770 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 653589771} + - 33: {fileID: 653589773} + - 23: {fileID: 653589772} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &653589771 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653589770} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 4 +--- !u!23 &653589772 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653589770} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &653589773 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653589770} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &653981193 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 653981194} + - 33: {fileID: 653981196} + - 23: {fileID: 653981195} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &653981194 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653981193} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 7 +--- !u!23 &653981195 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653981193} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &653981196 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653981193} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &655133130 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 655133131} + - 33: {fileID: 655133133} + - 23: {fileID: 655133132} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &655133131 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 655133130} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 0 +--- !u!23 &655133132 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 655133130} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &655133133 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 655133130} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &656027562 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 656027563} + - 33: {fileID: 656027565} + - 23: {fileID: 656027564} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &656027563 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 656027562} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 6 +--- !u!23 &656027564 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 656027562} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &656027565 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 656027562} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &664229993 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 664229994} + - 33: {fileID: 664229996} + - 23: {fileID: 664229995} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &664229994 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 664229993} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 8 +--- !u!23 &664229995 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 664229993} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &664229996 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 664229993} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &668452299 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 668452300} + - 33: {fileID: 668452302} + - 23: {fileID: 668452301} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &668452300 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 668452299} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 3 +--- !u!23 &668452301 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 668452299} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &668452302 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 668452299} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &670426898 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 670426899} + - 33: {fileID: 670426901} + - 23: {fileID: 670426900} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &670426899 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 670426898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 1 +--- !u!23 &670426900 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 670426898} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &670426901 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 670426898} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &670736872 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 670736873} + - 33: {fileID: 670736875} + - 23: {fileID: 670736874} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &670736873 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 670736872} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 0 +--- !u!23 &670736874 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 670736872} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &670736875 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 670736872} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &671668762 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 671668763} + - 33: {fileID: 671668765} + - 23: {fileID: 671668764} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &671668763 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 671668762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 1 +--- !u!23 &671668764 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 671668762} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &671668765 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 671668762} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &672418998 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 672418999} + - 33: {fileID: 672419001} + - 23: {fileID: 672419000} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &672418999 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 672418998} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 6 +--- !u!23 &672419000 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 672418998} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &672419001 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 672418998} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &674325341 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 674325342} + - 33: {fileID: 674325344} + - 23: {fileID: 674325343} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &674325342 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 674325341} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 7 +--- !u!23 &674325343 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 674325341} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &674325344 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 674325341} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &683790915 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 683790916} + - 33: {fileID: 683790918} + - 23: {fileID: 683790917} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &683790916 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 683790915} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 5 +--- !u!23 &683790917 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 683790915} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &683790918 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 683790915} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &688419947 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 688419948} + - 33: {fileID: 688419950} + - 23: {fileID: 688419949} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &688419948 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 688419947} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 2 +--- !u!23 &688419949 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 688419947} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &688419950 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 688419947} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &688604065 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 688604066} + - 33: {fileID: 688604068} + - 23: {fileID: 688604067} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &688604066 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 688604065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 7 +--- !u!23 &688604067 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 688604065} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &688604068 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 688604065} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &690061369 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 690061370} + - 33: {fileID: 690061372} + - 23: {fileID: 690061371} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &690061370 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 690061369} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 6 +--- !u!23 &690061371 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 690061369} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &690061372 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 690061369} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &691554663 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 691554664} + - 33: {fileID: 691554666} + - 23: {fileID: 691554665} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &691554664 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 691554663} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 6 +--- !u!23 &691554665 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 691554663} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &691554666 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 691554663} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &692314445 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 692314446} + - 33: {fileID: 692314448} + - 23: {fileID: 692314447} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &692314446 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 692314445} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 5 +--- !u!23 &692314447 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 692314445} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &692314448 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 692314445} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &694065972 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 694065973} + - 33: {fileID: 694065975} + - 23: {fileID: 694065974} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &694065973 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 694065972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 7 +--- !u!23 &694065974 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 694065972} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &694065975 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 694065972} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &694583487 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 694583488} + - 33: {fileID: 694583490} + - 23: {fileID: 694583489} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &694583488 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 694583487} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 0 +--- !u!23 &694583489 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 694583487} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &694583490 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 694583487} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &695396972 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 695396973} + - 33: {fileID: 695396975} + - 23: {fileID: 695396974} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &695396973 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 695396972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 1 +--- !u!23 &695396974 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 695396972} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &695396975 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 695396972} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &697907465 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 697907466} + - 33: {fileID: 697907468} + - 23: {fileID: 697907467} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &697907466 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 697907465} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 5 +--- !u!23 &697907467 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 697907465} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &697907468 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 697907465} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &698956159 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 698956160} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &698956160 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 698956159} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1979134599} + - {fileID: 1446319686} + - {fileID: 591298306} + - {fileID: 66939663} + - {fileID: 1825854681} + - {fileID: 950671321} + - {fileID: 471620196} + - {fileID: 60223818} + - {fileID: 260159409} + m_Father: {fileID: 1288823789} + m_RootOrder: 4 +--- !u!1 &704930281 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 704930282} + - 33: {fileID: 704930284} + - 23: {fileID: 704930283} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &704930282 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 704930281} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 1 +--- !u!23 &704930283 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 704930281} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &704930284 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 704930281} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &707099599 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 707099600} + - 33: {fileID: 707099602} + - 23: {fileID: 707099601} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &707099600 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 707099599} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 8 +--- !u!23 &707099601 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 707099599} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &707099602 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 707099599} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &710806380 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 710806381} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &710806381 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 710806380} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1506383276} + - {fileID: 671668763} + - {fileID: 1913051230} + - {fileID: 1954311486} + - {fileID: 1494943606} + - {fileID: 1181315792} + - {fileID: 690061370} + - {fileID: 81328367} + - {fileID: 921992683} + m_Father: {fileID: 1288823789} + m_RootOrder: 1 +--- !u!1 &711857078 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 711857079} + - 33: {fileID: 711857081} + - 23: {fileID: 711857080} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &711857079 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 711857078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 4 +--- !u!23 &711857080 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 711857078} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &711857081 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 711857078} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &712597645 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 712597646} + - 33: {fileID: 712597648} + - 23: {fileID: 712597647} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &712597646 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 712597645} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 6 +--- !u!23 &712597647 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 712597645} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &712597648 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 712597645} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &714657755 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 714657756} + - 33: {fileID: 714657758} + - 23: {fileID: 714657757} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &714657756 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 714657755} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 1 +--- !u!23 &714657757 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 714657755} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &714657758 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 714657755} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &715690332 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 715690333} + - 33: {fileID: 715690335} + - 23: {fileID: 715690334} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &715690333 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 715690332} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 8 +--- !u!23 &715690334 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 715690332} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &715690335 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 715690332} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &716723408 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 716723409} + - 33: {fileID: 716723411} + - 23: {fileID: 716723410} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &716723409 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 716723408} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 6 +--- !u!23 &716723410 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 716723408} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &716723411 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 716723408} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &719486258 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 719486259} + - 33: {fileID: 719486261} + - 23: {fileID: 719486260} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &719486259 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719486258} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 5 +--- !u!23 &719486260 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719486258} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &719486261 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719486258} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &723900744 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 723900745} + - 33: {fileID: 723900747} + - 23: {fileID: 723900746} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &723900745 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 723900744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 1 +--- !u!23 &723900746 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 723900744} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &723900747 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 723900744} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &726430107 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 726430108} + - 33: {fileID: 726430110} + - 23: {fileID: 726430109} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &726430108 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 726430107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 1 +--- !u!23 &726430109 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 726430107} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &726430110 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 726430107} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &728103436 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 728103437} + - 33: {fileID: 728103439} + - 23: {fileID: 728103438} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &728103437 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 728103436} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 0 +--- !u!23 &728103438 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 728103436} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &728103439 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 728103436} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &728585452 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 728585453} + - 33: {fileID: 728585455} + - 23: {fileID: 728585454} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &728585453 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 728585452} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 7 +--- !u!23 &728585454 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 728585452} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &728585455 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 728585452} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &729236453 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 729236454} + - 33: {fileID: 729236456} + - 23: {fileID: 729236455} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &729236454 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 729236453} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 3 +--- !u!23 &729236455 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 729236453} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &729236456 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 729236453} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &732523450 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 732523451} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &732523451 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 732523450} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 827734987} + - {fileID: 1608184003} + - {fileID: 1395995597} + - {fileID: 1444405829} + - {fileID: 881430522} + - {fileID: 2056972174} + - {fileID: 1942119077} + - {fileID: 1685836021} + - {fileID: 1961694172} + m_Father: {fileID: 320694060} + m_RootOrder: 5 +--- !u!1 &741110641 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 741110642} + - 33: {fileID: 741110644} + - 23: {fileID: 741110643} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &741110642 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 741110641} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 7 +--- !u!23 &741110643 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 741110641} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &741110644 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 741110641} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &741883664 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 741883665} + - 33: {fileID: 741883667} + - 23: {fileID: 741883666} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &741883665 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 741883664} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 3 +--- !u!23 &741883666 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 741883664} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &741883667 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 741883664} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &743617656 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 743617657} + - 33: {fileID: 743617659} + - 23: {fileID: 743617658} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &743617657 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 743617656} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 1 +--- !u!23 &743617658 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 743617656} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &743617659 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 743617656} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &744483483 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 744483484} + - 33: {fileID: 744483486} + - 23: {fileID: 744483485} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &744483484 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 744483483} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 4 +--- !u!23 &744483485 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 744483483} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &744483486 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 744483483} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &745174096 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 745174097} + - 33: {fileID: 745174099} + - 23: {fileID: 745174098} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &745174097 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 745174096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 2 +--- !u!23 &745174098 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 745174096} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &745174099 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 745174096} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &750480529 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 750480530} + - 33: {fileID: 750480532} + - 23: {fileID: 750480531} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &750480530 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 750480529} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 8 +--- !u!23 &750480531 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 750480529} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &750480532 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 750480529} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &751968217 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 751968218} + - 33: {fileID: 751968220} + - 23: {fileID: 751968219} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &751968218 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751968217} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 6 +--- !u!23 &751968219 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751968217} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &751968220 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751968217} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &754377027 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 754377028} + - 33: {fileID: 754377030} + - 23: {fileID: 754377029} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &754377028 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 754377027} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 2 +--- !u!23 &754377029 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 754377027} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &754377030 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 754377027} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &761392684 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 761392685} + - 33: {fileID: 761392687} + - 23: {fileID: 761392686} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &761392685 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 761392684} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 4 +--- !u!23 &761392686 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 761392684} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &761392687 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 761392684} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &764367997 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 764367998} + - 33: {fileID: 764368000} + - 23: {fileID: 764367999} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &764367998 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 764367997} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 0 +--- !u!23 &764367999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 764367997} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &764368000 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 764367997} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &768694474 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 768694475} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &768694475 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 768694474} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1017860057} + - {fileID: 964621625} + - {fileID: 831706930} + - {fileID: 133039177} + - {fileID: 216828087} + - {fileID: 185328092} + - {fileID: 1356626587} + - {fileID: 642335544} + - {fileID: 1438264998} + m_Father: {fileID: 416898948} + m_RootOrder: 0 +--- !u!1 &772855986 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 772855987} + - 33: {fileID: 772855989} + - 23: {fileID: 772855988} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &772855987 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 772855986} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 7 +--- !u!23 &772855988 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 772855986} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &772855989 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 772855986} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &774647435 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 774647436} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &774647436 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 774647435} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 608618475} + - {fileID: 548381934} + - {fileID: 1912384768} + - {fileID: 1597171771} + - {fileID: 711857079} + - {fileID: 610586811} + - {fileID: 787635895} + - {fileID: 1396544291} + - {fileID: 1548314696} + m_Father: {fileID: 1285129845} + m_RootOrder: 7 +--- !u!1 &776061701 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 776061702} + - 33: {fileID: 776061704} + - 23: {fileID: 776061703} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &776061702 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 776061701} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 3 +--- !u!23 &776061703 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 776061701} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &776061704 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 776061701} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &778259614 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 778259615} + - 33: {fileID: 778259617} + - 23: {fileID: 778259616} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &778259615 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 778259614} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 8 +--- !u!23 &778259616 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 778259614} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &778259617 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 778259614} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &784653060 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 784653061} + - 33: {fileID: 784653063} + - 23: {fileID: 784653062} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &784653061 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 784653060} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 8 +--- !u!23 &784653062 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 784653060} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &784653063 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 784653060} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &785564258 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 785564259} + - 33: {fileID: 785564261} + - 23: {fileID: 785564260} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &785564259 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 785564258} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 1 +--- !u!23 &785564260 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 785564258} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &785564261 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 785564258} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &787635894 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 787635895} + - 33: {fileID: 787635897} + - 23: {fileID: 787635896} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &787635895 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 787635894} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 6 +--- !u!23 &787635896 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 787635894} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &787635897 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 787635894} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &790229013 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 790229014} + - 33: {fileID: 790229016} + - 23: {fileID: 790229015} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &790229014 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 790229013} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 5 +--- !u!23 &790229015 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 790229013} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &790229016 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 790229013} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &790672578 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 790672579} + - 33: {fileID: 790672581} + - 23: {fileID: 790672580} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &790672579 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 790672578} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 3 +--- !u!23 &790672580 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 790672578} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &790672581 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 790672578} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &798455659 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 798455660} + - 33: {fileID: 798455662} + - 23: {fileID: 798455661} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &798455660 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 798455659} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 5 +--- !u!23 &798455661 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 798455659} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &798455662 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 798455659} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &799336606 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 799336607} + - 33: {fileID: 799336609} + - 23: {fileID: 799336608} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &799336607 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 799336606} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 7 +--- !u!23 &799336608 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 799336606} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &799336609 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 799336606} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &801635954 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 801635955} + - 33: {fileID: 801635957} + - 23: {fileID: 801635956} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &801635955 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 801635954} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 0 +--- !u!23 &801635956 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 801635954} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &801635957 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 801635954} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &803068173 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 803068174} + - 33: {fileID: 803068176} + - 23: {fileID: 803068175} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &803068174 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 803068173} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 7 +--- !u!23 &803068175 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 803068173} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &803068176 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 803068173} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &810814967 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 810814968} + - 33: {fileID: 810814970} + - 23: {fileID: 810814969} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &810814968 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 810814967} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 5 +--- !u!23 &810814969 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 810814967} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &810814970 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 810814967} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &813174887 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 813174888} + - 33: {fileID: 813174890} + - 23: {fileID: 813174889} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &813174888 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 813174887} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 3 +--- !u!23 &813174889 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 813174887} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &813174890 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 813174887} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &820016391 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 820016392} + - 33: {fileID: 820016394} + - 23: {fileID: 820016393} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &820016392 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 820016391} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 2 +--- !u!23 &820016393 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 820016391} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &820016394 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 820016391} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &821285324 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 821285325} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &821285325 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 821285324} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2055671388} + - {fileID: 1605042668} + - {fileID: 1921026973} + - {fileID: 1414446055} + - {fileID: 233977207} + - {fileID: 918680893} + - {fileID: 352977278} + - {fileID: 829114950} + - {fileID: 1171171817} + m_Father: {fileID: 1875085494} + m_RootOrder: 7 +--- !u!1 &821731845 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 821731846} + - 33: {fileID: 821731848} + - 23: {fileID: 821731847} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &821731846 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 821731845} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 3 +--- !u!23 &821731847 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 821731845} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &821731848 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 821731845} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &827734986 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 827734987} + - 33: {fileID: 827734989} + - 23: {fileID: 827734988} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &827734987 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 827734986} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 0 +--- !u!23 &827734988 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 827734986} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &827734989 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 827734986} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &829114949 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 829114950} + - 33: {fileID: 829114952} + - 23: {fileID: 829114951} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &829114950 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829114949} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 7 +--- !u!23 &829114951 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829114949} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &829114952 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 829114949} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &831706929 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 831706930} + - 33: {fileID: 831706932} + - 23: {fileID: 831706931} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &831706930 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831706929} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 2 +--- !u!23 &831706931 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831706929} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &831706932 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831706929} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &838733921 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 838733922} + - 33: {fileID: 838733924} + - 23: {fileID: 838733923} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &838733922 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 838733921} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 7 +--- !u!23 &838733923 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 838733921} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &838733924 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 838733921} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &840540658 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 840540659} + - 33: {fileID: 840540661} + - 23: {fileID: 840540660} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &840540659 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 840540658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 3 +--- !u!23 &840540660 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 840540658} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &840540661 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 840540658} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &843322474 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 843322475} + - 33: {fileID: 843322477} + - 23: {fileID: 843322476} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &843322475 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 843322474} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 4 +--- !u!23 &843322476 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 843322474} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &843322477 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 843322474} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &843886802 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 843886803} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &843886803 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 843886802} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2038017096} + - {fileID: 2136417289} + - {fileID: 484522388} + - {fileID: 1969505723} + - {fileID: 744483484} + - {fileID: 1645935153} + - {fileID: 597432348} + - {fileID: 1161507921} + - {fileID: 1285184253} + m_Father: {fileID: 1285129845} + m_RootOrder: 4 +--- !u!1 &846805636 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 846805637} + - 33: {fileID: 846805639} + - 23: {fileID: 846805638} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &846805637 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 846805636} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 3 +--- !u!23 &846805638 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 846805636} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &846805639 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 846805636} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &849571238 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 849571239} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &849571239 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 849571238} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 905063055} + - {fileID: 134224555} + - {fileID: 1916262351} + - {fileID: 1373919401} + - {fileID: 1532310221} + - {fileID: 415624978} + - {fileID: 934230524} + - {fileID: 1630920717} + - {fileID: 1362136244} + m_Father: {fileID: 320694060} + m_RootOrder: 4 +--- !u!1 &850494879 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 850494880} + - 33: {fileID: 850494882} + - 23: {fileID: 850494881} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &850494880 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 850494879} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 6 +--- !u!23 &850494881 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 850494879} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &850494882 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 850494879} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &851576730 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 851576731} + - 33: {fileID: 851576733} + - 23: {fileID: 851576732} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &851576731 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 851576730} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 7 +--- !u!23 &851576732 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 851576730} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &851576733 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 851576730} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &854490569 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 854490570} + - 33: {fileID: 854490572} + - 23: {fileID: 854490571} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &854490570 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 854490569} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 2 +--- !u!23 &854490571 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 854490569} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &854490572 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 854490569} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &857026538 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 857026539} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &857026539 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857026538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1298782549} + - {fileID: 523985743} + - {fileID: 1318559587} + - {fileID: 2010793939} + - {fileID: 437676468} + - {fileID: 1462172971} + - {fileID: 1357123422} + - {fileID: 741110642} + - {fileID: 1074566051} + m_Father: {fileID: 311797878} + m_RootOrder: 2 +--- !u!1 &864853647 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 864853648} + - 33: {fileID: 864853650} + - 23: {fileID: 864853649} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &864853648 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 864853647} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 6 +--- !u!23 &864853649 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 864853647} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &864853650 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 864853647} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &865105501 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 865105502} + - 33: {fileID: 865105504} + - 23: {fileID: 865105503} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &865105502 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 865105501} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 7 +--- !u!23 &865105503 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 865105501} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &865105504 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 865105501} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &866611228 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 866611229} + - 33: {fileID: 866611231} + - 23: {fileID: 866611230} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &866611229 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 866611228} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 8 +--- !u!23 &866611230 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 866611228} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &866611231 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 866611228} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &869062403 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 869062404} + - 33: {fileID: 869062406} + - 23: {fileID: 869062405} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &869062404 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869062403} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 5 +--- !u!23 &869062405 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869062403} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &869062406 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869062403} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &869552658 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 869552659} + - 33: {fileID: 869552661} + - 23: {fileID: 869552660} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &869552659 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869552658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 6 +--- !u!23 &869552660 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869552658} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &869552661 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869552658} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &870806954 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 870806955} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &870806955 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 870806954} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1570922059} + - {fileID: 447053505} + - {fileID: 820016392} + - {fileID: 234401193} + - {fileID: 1249659886} + - {fileID: 1178177618} + - {fileID: 1736130680} + - {fileID: 363080943} + - {fileID: 750480530} + m_Father: {fileID: 1875085494} + m_RootOrder: 3 +--- !u!1 &872716103 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 872716104} + - 33: {fileID: 872716106} + - 23: {fileID: 872716105} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &872716104 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 872716103} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 7 +--- !u!23 &872716105 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 872716103} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &872716106 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 872716103} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &877289651 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 877289652} + - 33: {fileID: 877289654} + - 23: {fileID: 877289653} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &877289652 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 877289651} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 7 +--- !u!23 &877289653 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 877289651} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &877289654 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 877289651} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &881430521 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 881430522} + - 33: {fileID: 881430524} + - 23: {fileID: 881430523} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &881430522 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 881430521} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 4 +--- !u!23 &881430523 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 881430521} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &881430524 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 881430521} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &882231445 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 882231446} + - 33: {fileID: 882231448} + - 23: {fileID: 882231447} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &882231446 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 882231445} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 1 +--- !u!23 &882231447 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 882231445} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &882231448 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 882231445} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &882425813 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 882425814} + - 33: {fileID: 882425816} + - 23: {fileID: 882425815} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &882425814 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 882425813} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 3 +--- !u!23 &882425815 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 882425813} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &882425816 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 882425813} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &886402405 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 886402406} + - 33: {fileID: 886402408} + - 23: {fileID: 886402407} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &886402406 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 886402405} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 3 +--- !u!23 &886402407 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 886402405} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &886402408 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 886402405} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &887646774 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 887646775} + - 33: {fileID: 887646777} + - 23: {fileID: 887646776} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &887646775 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 887646774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 4 +--- !u!23 &887646776 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 887646774} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &887646777 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 887646774} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &893748540 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 893748541} + - 33: {fileID: 893748543} + - 23: {fileID: 893748542} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &893748541 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 893748540} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 4 +--- !u!23 &893748542 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 893748540} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &893748543 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 893748540} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &899438176 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 899438177} + - 33: {fileID: 899438179} + - 23: {fileID: 899438178} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &899438177 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 899438176} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 4 +--- !u!23 &899438178 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 899438176} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &899438179 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 899438176} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &900299405 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 900299406} + - 33: {fileID: 900299408} + - 23: {fileID: 900299407} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &900299406 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 900299405} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 4 +--- !u!23 &900299407 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 900299405} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &900299408 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 900299405} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &904842064 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 904842065} + - 33: {fileID: 904842067} + - 23: {fileID: 904842066} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &904842065 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 904842064} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 8 +--- !u!23 &904842066 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 904842064} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &904842067 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 904842064} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &905063054 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 905063055} + - 33: {fileID: 905063057} + - 23: {fileID: 905063056} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &905063055 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 905063054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 0 +--- !u!23 &905063056 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 905063054} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &905063057 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 905063054} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &905568584 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 905568585} + - 33: {fileID: 905568587} + - 23: {fileID: 905568586} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &905568585 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 905568584} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 0 +--- !u!23 &905568586 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 905568584} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &905568587 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 905568584} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &906056251 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 906056252} + - 33: {fileID: 906056254} + - 23: {fileID: 906056253} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &906056252 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 906056251} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 1 +--- !u!23 &906056253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 906056251} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &906056254 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 906056251} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &909924637 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 909924638} + - 33: {fileID: 909924640} + - 23: {fileID: 909924639} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &909924638 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 909924637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 0 +--- !u!23 &909924639 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 909924637} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &909924640 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 909924637} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &912679175 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 912679176} + - 33: {fileID: 912679178} + - 23: {fileID: 912679177} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &912679176 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 912679175} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 0 +--- !u!23 &912679177 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 912679175} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &912679178 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 912679175} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &918680892 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 918680893} + - 33: {fileID: 918680895} + - 23: {fileID: 918680894} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &918680893 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 918680892} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 5 +--- !u!23 &918680894 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 918680892} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &918680895 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 918680892} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &919535431 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 919535432} + - 33: {fileID: 919535434} + - 23: {fileID: 919535433} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &919535432 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 919535431} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 6 +--- !u!23 &919535433 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 919535431} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &919535434 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 919535431} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &920142117 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 920142118} + - 33: {fileID: 920142120} + - 23: {fileID: 920142119} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &920142118 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 920142117} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 2 +--- !u!23 &920142119 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 920142117} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &920142120 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 920142117} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &921388390 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 921388391} + - 33: {fileID: 921388393} + - 23: {fileID: 921388392} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &921388391 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 921388390} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 6 +--- !u!23 &921388392 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 921388390} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &921388393 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 921388390} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &921992682 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 921992683} + - 33: {fileID: 921992685} + - 23: {fileID: 921992684} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &921992683 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 921992682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 8 +--- !u!23 &921992684 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 921992682} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &921992685 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 921992682} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &925124720 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 925124721} + - 33: {fileID: 925124723} + - 23: {fileID: 925124722} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &925124721 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 925124720} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 1 +--- !u!23 &925124722 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 925124720} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &925124723 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 925124720} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &926533328 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 926533329} + - 33: {fileID: 926533331} + - 23: {fileID: 926533330} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &926533329 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 926533328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 0 +--- !u!23 &926533330 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 926533328} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &926533331 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 926533328} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &930170084 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 930170085} + - 33: {fileID: 930170087} + - 23: {fileID: 930170086} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &930170085 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 930170084} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 7 +--- !u!23 &930170086 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 930170084} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &930170087 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 930170084} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &930864240 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 930864241} + - 33: {fileID: 930864243} + - 23: {fileID: 930864242} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &930864241 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 930864240} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 3 +--- !u!23 &930864242 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 930864240} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &930864243 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 930864240} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &932174127 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 932174128} + - 33: {fileID: 932174130} + - 23: {fileID: 932174129} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &932174128 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 932174127} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 3 +--- !u!23 &932174129 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 932174127} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &932174130 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 932174127} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &933014247 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 933014248} + - 33: {fileID: 933014250} + - 23: {fileID: 933014249} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &933014248 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 933014247} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 4 +--- !u!23 &933014249 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 933014247} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &933014250 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 933014247} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &934230523 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 934230524} + - 33: {fileID: 934230526} + - 23: {fileID: 934230525} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &934230524 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 934230523} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 6 +--- !u!23 &934230525 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 934230523} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &934230526 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 934230523} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &937185859 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 937185860} + - 33: {fileID: 937185862} + - 23: {fileID: 937185861} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &937185860 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 937185859} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 6 +--- !u!23 &937185861 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 937185859} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &937185862 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 937185859} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &941245591 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 941245592} + - 33: {fileID: 941245594} + - 23: {fileID: 941245593} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &941245592 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 941245591} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 4 +--- !u!23 &941245593 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 941245591} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &941245594 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 941245591} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &944018027 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 944018028} + - 33: {fileID: 944018030} + - 23: {fileID: 944018029} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &944018028 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944018027} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 3 +--- !u!23 &944018029 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944018027} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &944018030 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944018027} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &944084775 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 944084776} + - 33: {fileID: 944084778} + - 23: {fileID: 944084777} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &944084776 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944084775} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 0 +--- !u!23 &944084777 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944084775} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &944084778 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 944084775} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &950492261 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 950492262} + - 33: {fileID: 950492264} + - 23: {fileID: 950492263} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &950492262 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950492261} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 5 +--- !u!23 &950492263 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950492261} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &950492264 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950492261} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &950631282 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 950631283} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &950631283 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950631282} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1206665284} + - {fileID: 227008744} + - {fileID: 688419948} + - {fileID: 813174888} + - {fileID: 893748541} + - {fileID: 798455660} + - {fileID: 155545762} + - {fileID: 688604066} + - {fileID: 52357633} + m_Father: {fileID: 2047955730} + m_RootOrder: 4 +--- !u!1 &950671320 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 950671321} + - 33: {fileID: 950671323} + - 23: {fileID: 950671322} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &950671321 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950671320} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 5 +--- !u!23 &950671322 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950671320} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &950671323 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950671320} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &950889723 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 950889724} + - 33: {fileID: 950889726} + - 23: {fileID: 950889725} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &950889724 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950889723} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 5 +--- !u!23 &950889725 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950889723} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &950889726 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 950889723} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &952424227 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 952424228} + - 33: {fileID: 952424230} + - 23: {fileID: 952424229} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &952424228 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 952424227} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 0 +--- !u!23 &952424229 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 952424227} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &952424230 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 952424227} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &964621624 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 964621625} + - 33: {fileID: 964621627} + - 23: {fileID: 964621626} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &964621625 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964621624} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 1 +--- !u!23 &964621626 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964621624} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &964621627 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964621624} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &969739217 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 969739218} + - 33: {fileID: 969739220} + - 23: {fileID: 969739219} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &969739218 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 969739217} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 2 +--- !u!23 &969739219 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 969739217} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &969739220 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 969739217} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &969754909 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 969754910} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &969754910 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 969754909} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 628298919} + - {fileID: 1164755370} + - {fileID: 354724696} + - {fileID: 229979266} + - {fileID: 1548254633} + - {fileID: 209477140} + - {fileID: 276138907} + - {fileID: 694065973} + - {fileID: 1185660834} + m_Father: {fileID: 1906654409} + m_RootOrder: 8 +--- !u!1 &970902514 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 970902515} + - 33: {fileID: 970902517} + - 23: {fileID: 970902516} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &970902515 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 970902514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 8 +--- !u!23 &970902516 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 970902514} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &970902517 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 970902514} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &978106560 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 978106561} + - 33: {fileID: 978106563} + - 23: {fileID: 978106562} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &978106561 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 978106560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 3 +--- !u!23 &978106562 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 978106560} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &978106563 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 978106560} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &979464283 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 979464284} + - 33: {fileID: 979464286} + - 23: {fileID: 979464285} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &979464284 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 979464283} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 3 +--- !u!23 &979464285 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 979464283} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &979464286 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 979464283} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &981850442 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 981850443} + - 33: {fileID: 981850445} + - 23: {fileID: 981850444} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &981850443 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 981850442} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 2 +--- !u!23 &981850444 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 981850442} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &981850445 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 981850442} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &986720924 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 986720925} + - 33: {fileID: 986720927} + - 23: {fileID: 986720926} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &986720925 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 986720924} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 4 +--- !u!23 &986720926 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 986720924} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &986720927 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 986720924} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &988035053 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 988035054} + - 33: {fileID: 988035056} + - 23: {fileID: 988035055} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &988035054 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 988035053} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 5 +--- !u!23 &988035055 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 988035053} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &988035056 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 988035053} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &989992469 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 989992470} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &989992470 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 989992469} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1802005357} + - {fileID: 205582492} + - {fileID: 268222375} + - {fileID: 1164068985} + - {fileID: 1792245261} + - {fileID: 61856427} + - {fileID: 1424197207} + - {fileID: 585764507} + - {fileID: 1220977469} + m_Father: {fileID: 1875085494} + m_RootOrder: 8 +--- !u!1 &997052065 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 997052066} + - 33: {fileID: 997052068} + - 23: {fileID: 997052067} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &997052066 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997052065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 1 +--- !u!23 &997052067 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997052065} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &997052068 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997052065} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &997973276 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 997973277} + - 33: {fileID: 997973279} + - 23: {fileID: 997973278} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &997973277 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997973276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 5 +--- !u!23 &997973278 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997973276} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &997973279 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 997973276} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1001880623 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1001880624} + - 33: {fileID: 1001880626} + - 23: {fileID: 1001880625} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1001880624 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1001880623} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 0 +--- !u!23 &1001880625 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1001880623} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1001880626 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1001880623} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1009138637 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1009138638} + - 33: {fileID: 1009138640} + - 23: {fileID: 1009138639} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1009138638 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1009138637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 8 +--- !u!23 &1009138639 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1009138637} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1009138640 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1009138637} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1013698093 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1013698094} + - 33: {fileID: 1013698096} + - 23: {fileID: 1013698095} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1013698094 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1013698093} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 4 +--- !u!23 &1013698095 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1013698093} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1013698096 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1013698093} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1017860056 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1017860057} + - 33: {fileID: 1017860059} + - 23: {fileID: 1017860058} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1017860057 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1017860056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 0 +--- !u!23 &1017860058 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1017860056} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1017860059 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1017860056} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1022286118 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1022286119} + - 33: {fileID: 1022286121} + - 23: {fileID: 1022286120} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1022286119 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1022286118} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 1 +--- !u!23 &1022286120 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1022286118} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1022286121 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1022286118} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1025853054 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1025853055} + - 33: {fileID: 1025853057} + - 23: {fileID: 1025853056} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1025853055 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025853054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 2 +--- !u!23 &1025853056 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025853054} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1025853057 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025853054} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1026110226 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1026110227} + - 33: {fileID: 1026110229} + - 23: {fileID: 1026110228} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1026110227 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1026110226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 2 +--- !u!23 &1026110228 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1026110226} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1026110229 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1026110226} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1029417252 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1029417253} + - 33: {fileID: 1029417255} + - 23: {fileID: 1029417254} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1029417253 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1029417252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 5 +--- !u!23 &1029417254 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1029417252} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1029417255 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1029417252} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1033298435 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1033298436} + - 33: {fileID: 1033298438} + - 23: {fileID: 1033298437} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1033298436 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1033298435} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 5 +--- !u!23 &1033298437 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1033298435} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1033298438 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1033298435} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1038701521 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1038701522} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1038701522 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1038701521} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 416384453} + - {fileID: 1275270260} + - {fileID: 18047733} + - {fileID: 2136117257} + - {fileID: 899438177} + - {fileID: 1997209207} + - {fileID: 484195584} + - {fileID: 292936480} + - {fileID: 2121867677} + m_Father: {fileID: 357871943} + m_RootOrder: 3 +--- !u!1 &1041296207 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1041296208} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1041296208 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1041296207} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2025153729} + - {fileID: 1703452020} + - {fileID: 451337795} + - {fileID: 882425814} + - {fileID: 986720925} + - {fileID: 433647462} + - {fileID: 2091783723} + - {fileID: 930170085} + - {fileID: 433220172} + m_Father: {fileID: 416898948} + m_RootOrder: 1 +--- !u!1 &1044959948 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1044959949} + - 33: {fileID: 1044959951} + - 23: {fileID: 1044959950} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1044959949 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1044959948} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 6 +--- !u!23 &1044959950 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1044959948} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1044959951 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1044959948} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1049063298 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1049063299} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1049063299 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1049063298} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 287649693} + - {fileID: 785564259} + - {fileID: 404626640} + - {fileID: 1138680043} + - {fileID: 1938902971} + - {fileID: 810814968} + - {fileID: 2129935185} + - {fileID: 1631514759} + - {fileID: 430685319} + m_Father: {fileID: 357871943} + m_RootOrder: 4 +--- !u!1 &1050258139 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1050258140} + - 33: {fileID: 1050258142} + - 23: {fileID: 1050258141} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1050258140 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1050258139} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 1 +--- !u!23 &1050258141 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1050258139} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1050258142 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1050258139} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1052080522 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1052080523} + - 33: {fileID: 1052080525} + - 23: {fileID: 1052080524} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1052080523 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1052080522} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 4 +--- !u!23 &1052080524 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1052080522} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1052080525 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1052080522} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1053463224 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1053463225} + - 33: {fileID: 1053463227} + - 23: {fileID: 1053463226} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1053463225 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053463224} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 3 +--- !u!23 &1053463226 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053463224} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1053463227 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053463224} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1059390652 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1059390653} + - 33: {fileID: 1059390655} + - 23: {fileID: 1059390654} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1059390653 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1059390652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 7 +--- !u!23 &1059390654 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1059390652} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1059390655 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1059390652} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1059900641 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1059900642} + - 33: {fileID: 1059900644} + - 23: {fileID: 1059900643} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1059900642 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1059900641} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 6 +--- !u!23 &1059900643 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1059900641} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1059900644 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1059900641} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1061289306 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1061289307} + - 33: {fileID: 1061289309} + - 23: {fileID: 1061289308} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1061289307 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1061289306} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 1 +--- !u!23 &1061289308 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1061289306} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1061289309 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1061289306} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1063450512 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1063450513} + - 33: {fileID: 1063450515} + - 23: {fileID: 1063450514} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1063450513 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1063450512} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 1 +--- !u!23 &1063450514 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1063450512} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1063450515 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1063450512} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1068914480 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1068914481} + - 33: {fileID: 1068914483} + - 23: {fileID: 1068914482} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1068914481 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068914480} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 7 +--- !u!23 &1068914482 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068914480} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1068914483 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1068914480} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1074566050 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1074566051} + - 33: {fileID: 1074566053} + - 23: {fileID: 1074566052} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1074566051 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1074566050} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 8 +--- !u!23 &1074566052 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1074566050} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1074566053 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1074566050} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1074652778 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1074652779} + - 33: {fileID: 1074652781} + - 23: {fileID: 1074652780} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1074652779 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1074652778} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 5 +--- !u!23 &1074652780 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1074652778} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1074652781 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1074652778} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1082956370 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1082956371} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1082956371 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1082956370} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1556928009} + - {fileID: 51436668} + - {fileID: 1427766161} + - {fileID: 886402406} + - {fileID: 68974763} + - {fileID: 1834653030} + - {fileID: 1271373334} + - {fileID: 567130467} + - {fileID: 24304358} + m_Father: {fileID: 2047955730} + m_RootOrder: 8 +--- !u!1 &1086529297 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1086529298} + - 33: {fileID: 1086529300} + - 23: {fileID: 1086529299} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1086529298 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1086529297} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 7 +--- !u!23 &1086529299 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1086529297} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1086529300 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1086529297} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1087830974 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1087830975} + - 33: {fileID: 1087830977} + - 23: {fileID: 1087830976} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1087830975 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1087830974} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 6 +--- !u!23 &1087830976 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1087830974} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1087830977 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1087830974} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1094574350 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1094574351} + - 33: {fileID: 1094574353} + - 23: {fileID: 1094574352} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1094574351 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1094574350} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 5 +--- !u!23 &1094574352 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1094574350} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1094574353 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1094574350} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1102846824 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1102846825} + - 33: {fileID: 1102846827} + - 23: {fileID: 1102846826} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1102846825 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1102846824} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 3 +--- !u!23 &1102846826 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1102846824} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1102846827 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1102846824} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1106686635 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1106686636} + - 33: {fileID: 1106686638} + - 23: {fileID: 1106686637} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1106686636 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1106686635} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 6 +--- !u!23 &1106686637 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1106686635} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1106686638 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1106686635} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1108133970 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1108133971} + - 33: {fileID: 1108133973} + - 23: {fileID: 1108133972} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1108133971 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1108133970} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 7 +--- !u!23 &1108133972 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1108133970} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1108133973 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1108133970} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1113415721 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1113415722} + - 33: {fileID: 1113415724} + - 23: {fileID: 1113415723} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1113415722 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1113415721} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 6 +--- !u!23 &1113415723 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1113415721} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1113415724 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1113415721} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1114328168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1114328169} + - 33: {fileID: 1114328171} + - 23: {fileID: 1114328170} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1114328169 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1114328168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 4 +--- !u!23 &1114328170 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1114328168} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1114328171 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1114328168} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1116037528 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1116037529} + - 33: {fileID: 1116037531} + - 23: {fileID: 1116037530} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1116037529 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1116037528} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 5 +--- !u!23 &1116037530 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1116037528} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1116037531 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1116037528} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1116708661 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1116708662} + - 33: {fileID: 1116708664} + - 23: {fileID: 1116708663} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1116708662 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1116708661} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 5 +--- !u!23 &1116708663 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1116708661} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1116708664 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1116708661} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1124369258 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1124369259} + - 33: {fileID: 1124369261} + - 23: {fileID: 1124369260} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1124369259 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1124369258} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 2 +--- !u!23 &1124369260 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1124369258} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1124369261 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1124369258} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1127960876 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1127960877} + - 33: {fileID: 1127960879} + - 23: {fileID: 1127960878} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1127960877 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1127960876} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 6 +--- !u!23 &1127960878 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1127960876} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1127960879 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1127960876} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1128731189 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1128731190} + - 33: {fileID: 1128731192} + - 23: {fileID: 1128731191} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1128731190 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1128731189} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 6 +--- !u!23 &1128731191 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1128731189} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1128731192 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1128731189} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1129404312 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1129404313} + - 33: {fileID: 1129404315} + - 23: {fileID: 1129404314} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1129404313 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1129404312} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 0 +--- !u!23 &1129404314 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1129404312} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1129404315 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1129404312} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1136402242 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1136402243} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1136402243 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136402242} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 368109054} + - {fileID: 1339390101} + - {fileID: 118428096} + - {fileID: 1913048508} + - {fileID: 1856202064} + - {fileID: 1172780683} + - {fileID: 32676781} + - {fileID: 877289652} + - {fileID: 1844490899} + m_Father: {fileID: 1285129845} + m_RootOrder: 6 +--- !u!1 &1136746722 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1136746723} + - 33: {fileID: 1136746725} + - 23: {fileID: 1136746724} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1136746723 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136746722} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 7 +--- !u!23 &1136746724 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136746722} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1136746725 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136746722} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1138680042 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1138680043} + - 33: {fileID: 1138680045} + - 23: {fileID: 1138680044} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1138680043 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138680042} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 3 +--- !u!23 &1138680044 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138680042} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1138680045 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138680042} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1138922967 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1138922968} + - 33: {fileID: 1138922970} + - 23: {fileID: 1138922969} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1138922968 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138922967} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 6 +--- !u!23 &1138922969 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138922967} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1138922970 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1138922967} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1142309781 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1142309782} + - 33: {fileID: 1142309784} + - 23: {fileID: 1142309783} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1142309782 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1142309781} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 3 +--- !u!23 &1142309783 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1142309781} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1142309784 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1142309781} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1145749505 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1145749506} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1145749506 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1145749505} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 926533329} + - {fileID: 1652927164} + - {fileID: 316302725} + - {fileID: 1593517168} + - {fileID: 484418415} + - {fileID: 997973277} + - {fileID: 919535432} + - {fileID: 608429981} + - {fileID: 1853333956} + m_Father: {fileID: 1875085494} + m_RootOrder: 6 +--- !u!1 &1146317989 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1146317990} + - 33: {fileID: 1146317992} + - 23: {fileID: 1146317991} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1146317990 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1146317989} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 1 +--- !u!23 &1146317991 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1146317989} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1146317992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1146317989} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1161408033 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1161408034} + - 33: {fileID: 1161408036} + - 23: {fileID: 1161408035} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1161408034 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161408033} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 6 +--- !u!23 &1161408035 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161408033} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1161408036 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161408033} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1161507920 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1161507921} + - 33: {fileID: 1161507923} + - 23: {fileID: 1161507922} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1161507921 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161507920} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 7 +--- !u!23 &1161507922 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161507920} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1161507923 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161507920} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1161644335 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1161644336} + - 33: {fileID: 1161644338} + - 23: {fileID: 1161644337} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1161644336 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161644335} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 3 +--- !u!23 &1161644337 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161644335} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1161644338 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1161644335} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1163212112 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1163212113} + - 33: {fileID: 1163212115} + - 23: {fileID: 1163212114} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1163212113 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1163212112} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 6 +--- !u!23 &1163212114 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1163212112} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1163212115 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1163212112} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1164068984 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1164068985} + - 33: {fileID: 1164068987} + - 23: {fileID: 1164068986} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1164068985 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1164068984} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 3 +--- !u!23 &1164068986 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1164068984} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1164068987 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1164068984} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1164755369 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1164755370} + - 33: {fileID: 1164755372} + - 23: {fileID: 1164755371} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1164755370 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1164755369} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 1 +--- !u!23 &1164755371 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1164755369} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1164755372 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1164755369} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1167775414 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1167775415} + - 33: {fileID: 1167775417} + - 23: {fileID: 1167775416} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1167775415 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1167775414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 6 +--- !u!23 &1167775416 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1167775414} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1167775417 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1167775414} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1169682651 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1169682652} + - 33: {fileID: 1169682654} + - 23: {fileID: 1169682653} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1169682652 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169682651} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 8 +--- !u!23 &1169682653 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169682651} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1169682654 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169682651} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1171171816 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1171171817} + - 33: {fileID: 1171171819} + - 23: {fileID: 1171171818} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1171171817 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1171171816} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 8 +--- !u!23 &1171171818 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1171171816} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1171171819 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1171171816} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1171733633 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1171733634} + - 33: {fileID: 1171733636} + - 23: {fileID: 1171733635} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1171733634 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1171733633} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 1 +--- !u!23 &1171733635 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1171733633} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1171733636 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1171733633} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1172780682 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1172780683} + - 33: {fileID: 1172780685} + - 23: {fileID: 1172780684} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1172780683 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1172780682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 5 +--- !u!23 &1172780684 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1172780682} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1172780685 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1172780682} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1173828075 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1173828076} + - 33: {fileID: 1173828078} + - 23: {fileID: 1173828077} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1173828076 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1173828075} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 3 +--- !u!23 &1173828077 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1173828075} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1173828078 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1173828075} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1178177617 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1178177618} + - 33: {fileID: 1178177620} + - 23: {fileID: 1178177619} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1178177618 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1178177617} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 5 +--- !u!23 &1178177619 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1178177617} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1178177620 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1178177617} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1181315791 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1181315792} + - 33: {fileID: 1181315794} + - 23: {fileID: 1181315793} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1181315792 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181315791} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 5 +--- !u!23 &1181315793 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181315791} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1181315794 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181315791} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1183162455 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1183162456} + - 33: {fileID: 1183162458} + - 23: {fileID: 1183162457} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1183162456 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1183162455} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 7 +--- !u!23 &1183162457 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1183162455} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1183162458 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1183162455} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1185660833 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1185660834} + - 33: {fileID: 1185660836} + - 23: {fileID: 1185660835} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1185660834 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1185660833} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 8 +--- !u!23 &1185660835 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1185660833} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1185660836 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1185660833} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1188557688 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1188557689} + - 33: {fileID: 1188557691} + - 23: {fileID: 1188557690} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1188557689 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1188557688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 1 +--- !u!23 &1188557690 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1188557688} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1188557691 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1188557688} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1190442268 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1190442269} + - 33: {fileID: 1190442271} + - 23: {fileID: 1190442270} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1190442269 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1190442268} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 1 +--- !u!23 &1190442270 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1190442268} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1190442271 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1190442268} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1195783901 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1195783902} + - 33: {fileID: 1195783904} + - 23: {fileID: 1195783903} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1195783902 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1195783901} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 6 +--- !u!23 &1195783903 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1195783901} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1195783904 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1195783901} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1202756944 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1202756945} + - 33: {fileID: 1202756947} + - 23: {fileID: 1202756946} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202756945 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202756944} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 5 +--- !u!23 &1202756946 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202756944} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1202756947 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202756944} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1206665283 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1206665284} + - 33: {fileID: 1206665286} + - 23: {fileID: 1206665285} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1206665284 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206665283} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 950631283} + m_RootOrder: 0 +--- !u!23 &1206665285 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206665283} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1206665286 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206665283} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1206765016 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1206765017} + - 33: {fileID: 1206765019} + - 23: {fileID: 1206765018} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1206765017 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206765016} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 1 +--- !u!23 &1206765018 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206765016} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1206765019 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206765016} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1209329982 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1209329983} + - 33: {fileID: 1209329985} + - 23: {fileID: 1209329984} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1209329983 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1209329982} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 4 +--- !u!23 &1209329984 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1209329982} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1209329985 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1209329982} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1210024156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1210024157} + - 33: {fileID: 1210024159} + - 23: {fileID: 1210024158} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1210024157 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1210024156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 2 +--- !u!23 &1210024158 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1210024156} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1210024159 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1210024156} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1211858529 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1211858530} + - 33: {fileID: 1211858532} + - 23: {fileID: 1211858531} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1211858530 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1211858529} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 8 +--- !u!23 &1211858531 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1211858529} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1211858532 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1211858529} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1215951043 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1215951044} + - 33: {fileID: 1215951046} + - 23: {fileID: 1215951045} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1215951044 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1215951043} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 0 +--- !u!23 &1215951045 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1215951043} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1215951046 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1215951043} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1220977468 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1220977469} + - 33: {fileID: 1220977471} + - 23: {fileID: 1220977470} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1220977469 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1220977468} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 8 +--- !u!23 &1220977470 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1220977468} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1220977471 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1220977468} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1227423407 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1227423408} + - 33: {fileID: 1227423410} + - 23: {fileID: 1227423409} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1227423408 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1227423407} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 1 +--- !u!23 &1227423409 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1227423407} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1227423410 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1227423407} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1227646395 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1227646396} + - 33: {fileID: 1227646398} + - 23: {fileID: 1227646397} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1227646396 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1227646395} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 0 +--- !u!23 &1227646397 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1227646395} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1227646398 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1227646395} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1233842171 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1233842172} + - 33: {fileID: 1233842174} + - 23: {fileID: 1233842173} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1233842172 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1233842171} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 0 +--- !u!23 &1233842173 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1233842171} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1233842174 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1233842171} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1234331062 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1234331063} + - 33: {fileID: 1234331065} + - 23: {fileID: 1234331064} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1234331063 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1234331062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 5 +--- !u!23 &1234331064 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1234331062} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1234331065 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1234331062} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1235025734 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1235025735} + - 33: {fileID: 1235025737} + - 23: {fileID: 1235025736} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1235025735 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1235025734} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 5 +--- !u!23 &1235025736 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1235025734} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1235025737 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1235025734} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1239907697 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1239907698} + - 33: {fileID: 1239907700} + - 23: {fileID: 1239907699} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1239907698 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1239907697} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 5 +--- !u!23 &1239907699 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1239907697} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1239907700 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1239907697} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1240836680 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1240836681} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1240836681 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1240836680} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 952424228} + - {fileID: 2135229808} + - {fileID: 2046589814} + - {fileID: 846805637} + - {fileID: 1979390745} + - {fileID: 333333698} + - {fileID: 1167775415} + - {fileID: 132263419} + - {fileID: 664229994} + m_Father: {fileID: 311797878} + m_RootOrder: 8 +--- !u!1 &1243272143 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1243272144} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1243272144 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1243272143} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1755673663} + - {fileID: 2080097013} + - {fileID: 1875242169} + - {fileID: 249804279} + - {fileID: 1860104359} + - {fileID: 1404137074} + - {fileID: 751968218} + - {fileID: 445368524} + - {fileID: 1850445106} + m_Father: {fileID: 357871943} + m_RootOrder: 2 +--- !u!1 &1245497274 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1245497275} + - 33: {fileID: 1245497277} + - 23: {fileID: 1245497276} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1245497275 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1245497274} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 2 +--- !u!23 &1245497276 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1245497274} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1245497277 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1245497274} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1249280388 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1249280389} + - 33: {fileID: 1249280391} + - 23: {fileID: 1249280390} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1249280389 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1249280388} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 8 +--- !u!23 &1249280390 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1249280388} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1249280391 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1249280388} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1249659885 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1249659886} + - 33: {fileID: 1249659888} + - 23: {fileID: 1249659887} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1249659886 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1249659885} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 4 +--- !u!23 &1249659887 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1249659885} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1249659888 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1249659885} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1251486546 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1251486547} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1251486547 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251486546} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1546548683} + - {fileID: 695396973} + - {fileID: 1210024157} + - {fileID: 201332832} + - {fileID: 1316770378} + - {fileID: 153267157} + - {fileID: 2134487187} + - {fileID: 1059390653} + - {fileID: 514001097} + m_Father: {fileID: 1875085494} + m_RootOrder: 5 +--- !u!1 &1257843376 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1257843377} + - 33: {fileID: 1257843379} + - 23: {fileID: 1257843378} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1257843377 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1257843376} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 4 +--- !u!23 &1257843378 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1257843376} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1257843379 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1257843376} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1269069111 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1269069112} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1269069112 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1269069111} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 728103437} + - {fileID: 47951525} + - {fileID: 1328647144} + - {fileID: 1839525250} + - {fileID: 1995638828} + - {fileID: 621882598} + - {fileID: 1960183756} + - {fileID: 540681794} + - {fileID: 1523936020} + m_Father: {fileID: 1285129845} + m_RootOrder: 3 +--- !u!1 &1271373333 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1271373334} + - 33: {fileID: 1271373336} + - 23: {fileID: 1271373335} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1271373334 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1271373333} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 6 +--- !u!23 &1271373335 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1271373333} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1271373336 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1271373333} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1274924129 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1274924130} + - 33: {fileID: 1274924132} + - 23: {fileID: 1274924131} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1274924130 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1274924129} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 6 +--- !u!23 &1274924131 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1274924129} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1274924132 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1274924129} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1275248165 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1275248166} + - 33: {fileID: 1275248168} + - 23: {fileID: 1275248167} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1275248166 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1275248165} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 4 +--- !u!23 &1275248167 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1275248165} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1275248168 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1275248165} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1275270259 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1275270260} + - 33: {fileID: 1275270262} + - 23: {fileID: 1275270261} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1275270260 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1275270259} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 1 +--- !u!23 &1275270261 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1275270259} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1275270262 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1275270259} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1276774528 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1276774529} + - 33: {fileID: 1276774531} + - 23: {fileID: 1276774530} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1276774529 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1276774528} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 4 +--- !u!23 &1276774530 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1276774528} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1276774531 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1276774528} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1283742114 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1283742115} + - 33: {fileID: 1283742117} + - 23: {fileID: 1283742116} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1283742115 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1283742114} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 6 +--- !u!23 &1283742116 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1283742114} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1283742117 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1283742114} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1285129844 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1285129845} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1285129845 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1285129844} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -3.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 440610438} + - {fileID: 1991877734} + - {fileID: 1758170125} + - {fileID: 1269069112} + - {fileID: 843886803} + - {fileID: 309447440} + - {fileID: 1136402243} + - {fileID: 774647436} + - {fileID: 433168050} + m_Father: {fileID: 1335403818} + m_RootOrder: 2 +--- !u!1 &1285184252 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1285184253} + - 33: {fileID: 1285184255} + - 23: {fileID: 1285184254} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1285184253 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1285184252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 8 +--- !u!23 &1285184254 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1285184252} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1285184255 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1285184252} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1288023953 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1288023954} + - 33: {fileID: 1288023956} + - 23: {fileID: 1288023955} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1288023954 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1288023953} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 1 +--- !u!23 &1288023955 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1288023953} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1288023956 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1288023953} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1288823788 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1288823789} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1288823789 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1288823788} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -4.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 191837273} + - {fileID: 710806381} + - {fileID: 2070993649} + - {fileID: 1550093339} + - {fileID: 698956160} + - {fileID: 349606543} + - {fileID: 1633108726} + - {fileID: 1413035099} + - {fileID: 366225505} + m_Father: {fileID: 1335403818} + m_RootOrder: 8 +--- !u!1 &1291389606 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1291389607} + - 33: {fileID: 1291389609} + - 23: {fileID: 1291389608} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1291389607 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1291389606} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 6 +--- !u!23 &1291389608 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1291389606} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1291389609 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1291389606} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1294857583 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1294857584} + - 33: {fileID: 1294857586} + - 23: {fileID: 1294857585} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1294857584 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1294857583} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 7 +--- !u!23 &1294857585 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1294857583} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1294857586 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1294857583} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1298782548 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1298782549} + - 33: {fileID: 1298782551} + - 23: {fileID: 1298782550} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1298782549 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1298782548} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 0 +--- !u!23 &1298782550 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1298782548} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1298782551 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1298782548} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1305541518 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1305541519} + - 33: {fileID: 1305541521} + - 23: {fileID: 1305541520} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1305541519 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1305541518} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 8 +--- !u!23 &1305541520 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1305541518} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1305541521 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1305541518} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1307348600 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1307348601} + - 33: {fileID: 1307348603} + - 23: {fileID: 1307348602} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1307348601 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307348600} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 6 +--- !u!23 &1307348602 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307348600} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1307348603 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307348600} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1307516387 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1307516388} + - 33: {fileID: 1307516390} + - 23: {fileID: 1307516389} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1307516388 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307516387} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 4 +--- !u!23 &1307516389 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307516387} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1307516390 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307516387} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1307719058 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1307719059} + - 33: {fileID: 1307719061} + - 23: {fileID: 1307719060} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1307719059 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307719058} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 5 +--- !u!23 &1307719060 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307719058} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1307719061 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1307719058} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1314660167 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1314660168} + - 33: {fileID: 1314660170} + - 23: {fileID: 1314660169} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1314660168 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1314660167} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 7 +--- !u!23 &1314660169 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1314660167} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1314660170 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1314660167} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1316770377 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1316770378} + - 33: {fileID: 1316770380} + - 23: {fileID: 1316770379} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1316770378 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1316770377} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 4 +--- !u!23 &1316770379 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1316770377} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1316770380 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1316770377} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1318505278 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1318505279} + - 33: {fileID: 1318505281} + - 23: {fileID: 1318505280} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1318505279 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318505278} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 6 +--- !u!23 &1318505280 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318505278} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1318505281 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318505278} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1318559586 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1318559587} + - 33: {fileID: 1318559589} + - 23: {fileID: 1318559588} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1318559587 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318559586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 2 +--- !u!23 &1318559588 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318559586} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1318559589 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318559586} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1318928927 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1318928928} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1318928928 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318928927} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4240589} + - {fileID: 1394467957} + - {fileID: 1956088724} + - {fileID: 32196261} + - {fileID: 1114328169} + - {fileID: 1525434092} + - {fileID: 617739923} + - {fileID: 31880376} + - {fileID: 1650041202} + m_Father: {fileID: 2047955730} + m_RootOrder: 2 +--- !u!1 &1319814372 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1319814373} + - 33: {fileID: 1319814375} + - 23: {fileID: 1319814374} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1319814373 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1319814372} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 3 +--- !u!23 &1319814374 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1319814372} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1319814375 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1319814372} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1325847476 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1325847477} + - 33: {fileID: 1325847479} + - 23: {fileID: 1325847478} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1325847477 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1325847476} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 3 +--- !u!23 &1325847478 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1325847476} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1325847479 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1325847476} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1328647143 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1328647144} + - 33: {fileID: 1328647146} + - 23: {fileID: 1328647145} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1328647144 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1328647143} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 2 +--- !u!23 &1328647145 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1328647143} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1328647146 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1328647143} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1330598093 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1330598094} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1330598094 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1330598093} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 124953303} + - {fileID: 1050258140} + - {fileID: 633738328} + - {fileID: 469176262} + - {fileID: 335083540} + - {fileID: 1365593391} + - {fileID: 1980932116} + - {fileID: 155157967} + - {fileID: 707099600} + m_Father: {fileID: 2047955730} + m_RootOrder: 6 +--- !u!1 &1332082080 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1332082081} + - 33: {fileID: 1332082083} + - 23: {fileID: 1332082082} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1332082081 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1332082080} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 4 +--- !u!23 &1332082082 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1332082080} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1332082083 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1332082080} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1334569732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1334569733} + - 33: {fileID: 1334569735} + - 23: {fileID: 1334569734} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1334569733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1334569732} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 3 +--- !u!23 &1334569734 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1334569732} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1334569735 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1334569732} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1335403817 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1335403818} + m_Layer: 0 + m_Name: FullCubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1335403818 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335403817} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.02090001, y: .402413607, z: 3.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 320694060} + - {fileID: 1875085494} + - {fileID: 1285129845} + - {fileID: 1906654409} + - {fileID: 357871943} + - {fileID: 311797878} + - {fileID: 2047955730} + - {fileID: 416898948} + - {fileID: 1288823789} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &1337936968 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1337936969} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1337936969 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1337936968} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 162559258} + - {fileID: 743617657} + - {fileID: 2080981882} + - {fileID: 668452300} + - {fileID: 306662445} + - {fileID: 1029417253} + - {fileID: 656027563} + - {fileID: 803068174} + - {fileID: 614301048} + m_Father: {fileID: 320694060} + m_RootOrder: 2 +--- !u!1 &1339390100 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1339390101} + - 33: {fileID: 1339390103} + - 23: {fileID: 1339390102} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1339390101 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1339390100} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 1 +--- !u!23 &1339390102 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1339390100} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1339390103 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1339390100} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1345266610 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1345266611} + - 33: {fileID: 1345266613} + - 23: {fileID: 1345266612} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1345266611 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1345266610} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 0 +--- !u!23 &1345266612 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1345266610} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1345266613 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1345266610} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1348129137 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1348129138} + - 33: {fileID: 1348129140} + - 23: {fileID: 1348129139} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1348129138 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1348129137} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1711378518} + m_RootOrder: 0 +--- !u!23 &1348129139 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1348129137} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1348129140 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1348129137} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1349524316 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1349524317} + - 33: {fileID: 1349524319} + - 23: {fileID: 1349524318} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1349524317 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1349524316} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 8 +--- !u!23 &1349524318 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1349524316} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1349524319 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1349524316} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1350275574 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1350275575} + - 33: {fileID: 1350275577} + - 23: {fileID: 1350275576} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1350275575 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1350275574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 7 +--- !u!23 &1350275576 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1350275574} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1350275577 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1350275574} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1350385640 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1350385641} + - 33: {fileID: 1350385643} + - 23: {fileID: 1350385642} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1350385641 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1350385640} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 4 +--- !u!23 &1350385642 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1350385640} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1350385643 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1350385640} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1352935614 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1352935615} + - 33: {fileID: 1352935617} + - 23: {fileID: 1352935616} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1352935615 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1352935614} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 2 +--- !u!23 &1352935616 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1352935614} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1352935617 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1352935614} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1354454585 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1354454586} + - 33: {fileID: 1354454588} + - 23: {fileID: 1354454587} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1354454586 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1354454585} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 2 +--- !u!23 &1354454587 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1354454585} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1354454588 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1354454585} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1355525085 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1355525086} + - 33: {fileID: 1355525088} + - 23: {fileID: 1355525087} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1355525086 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1355525085} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 4 +--- !u!23 &1355525087 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1355525085} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1355525088 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1355525085} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1356626586 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1356626587} + - 33: {fileID: 1356626589} + - 23: {fileID: 1356626588} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1356626587 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1356626586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 6 +--- !u!23 &1356626588 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1356626586} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1356626589 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1356626586} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1357123421 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1357123422} + - 33: {fileID: 1357123424} + - 23: {fileID: 1357123423} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1357123422 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1357123421} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 6 +--- !u!23 &1357123423 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1357123421} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1357123424 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1357123421} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1357615427 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1357615428} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1357615428 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1357615427} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1491400366} + - {fileID: 2087000649} + - {fileID: 1868659282} + - {fileID: 729236454} + - {fileID: 887646775} + - {fileID: 1560013112} + - {fileID: 548293212} + - {fileID: 1923092696} + - {fileID: 150190142} + m_Father: {fileID: 357871943} + m_RootOrder: 7 +--- !u!1 &1360348675 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1360348676} + - 33: {fileID: 1360348678} + - 23: {fileID: 1360348677} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1360348676 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1360348675} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 5 +--- !u!23 &1360348677 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1360348675} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1360348678 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1360348675} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1362136243 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1362136244} + - 33: {fileID: 1362136246} + - 23: {fileID: 1362136245} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1362136244 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362136243} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 8 +--- !u!23 &1362136245 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362136243} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1362136246 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362136243} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1362344586 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1362344587} + - 33: {fileID: 1362344589} + - 23: {fileID: 1362344588} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1362344587 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362344586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 6 +--- !u!23 &1362344588 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362344586} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1362344589 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362344586} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1362647241 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1362647242} + - 33: {fileID: 1362647244} + - 23: {fileID: 1362647243} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1362647242 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362647241} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 3 +--- !u!23 &1362647243 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362647241} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1362647244 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1362647241} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1364969515 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1364969516} + - 33: {fileID: 1364969518} + - 23: {fileID: 1364969517} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1364969516 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1364969515} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 2 +--- !u!23 &1364969517 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1364969515} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1364969518 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1364969515} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1365593390 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1365593391} + - 33: {fileID: 1365593393} + - 23: {fileID: 1365593392} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1365593391 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365593390} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 5 +--- !u!23 &1365593392 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365593390} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1365593393 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365593390} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1366031034 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1366031035} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1366031035 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1366031034} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1730739918} + - {fileID: 1171733634} + - {fileID: 1721123157} + - {fileID: 978106561} + - {fileID: 1581096373} + - {fileID: 1116708662} + - {fileID: 921388391} + - {fileID: 1294857584} + - {fileID: 1803047123} + m_Father: {fileID: 357871943} + m_RootOrder: 1 +--- !u!1 &1368997099 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1368997100} + - 33: {fileID: 1368997102} + - 23: {fileID: 1368997101} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1368997100 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1368997099} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 2 +--- !u!23 &1368997101 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1368997099} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1368997102 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1368997099} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1371947163 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1371947164} + - 33: {fileID: 1371947166} + - 23: {fileID: 1371947165} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1371947164 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1371947163} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 1 +--- !u!23 &1371947165 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1371947163} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1371947166 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1371947163} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1373919400 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1373919401} + - 33: {fileID: 1373919403} + - 23: {fileID: 1373919402} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1373919401 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1373919400} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 3 +--- !u!23 &1373919402 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1373919400} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1373919403 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1373919400} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1374736383 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1374736384} + - 33: {fileID: 1374736386} + - 23: {fileID: 1374736385} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1374736384 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1374736383} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 7 +--- !u!23 &1374736385 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1374736383} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1374736386 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1374736383} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1388392808 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1388392809} + - 33: {fileID: 1388392811} + - 23: {fileID: 1388392810} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1388392809 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1388392808} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 7 +--- !u!23 &1388392810 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1388392808} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1388392811 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1388392808} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1389388061 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1389388062} + - 33: {fileID: 1389388064} + - 23: {fileID: 1389388063} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1389388062 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1389388061} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 2 +--- !u!23 &1389388063 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1389388061} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1389388064 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1389388061} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1389778214 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1389778215} + - 33: {fileID: 1389778217} + - 23: {fileID: 1389778216} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1389778215 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1389778214} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 3 +--- !u!23 &1389778216 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1389778214} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1389778217 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1389778214} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1392306389 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1392306390} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1392306390 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1392306389} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 99675307} + - {fileID: 1227423408} + - {fileID: 13932140} + - {fileID: 1972144157} + - {fileID: 900299406} + - {fileID: 2087585606} + - {fileID: 1087830975} + - {fileID: 2099650449} + - {fileID: 1931155964} + m_Father: {fileID: 320694060} + m_RootOrder: 7 +--- !u!1 &1394467956 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1394467957} + - 33: {fileID: 1394467959} + - 23: {fileID: 1394467958} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1394467957 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1394467956} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 1 +--- !u!23 &1394467958 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1394467956} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1394467959 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1394467956} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1395995596 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1395995597} + - 33: {fileID: 1395995599} + - 23: {fileID: 1395995598} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1395995597 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1395995596} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 2 +--- !u!23 &1395995598 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1395995596} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1395995599 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1395995596} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1396288339 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1396288340} + - 33: {fileID: 1396288342} + - 23: {fileID: 1396288341} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1396288340 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1396288339} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 7 +--- !u!23 &1396288341 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1396288339} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1396288342 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1396288339} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1396544290 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1396544291} + - 33: {fileID: 1396544293} + - 23: {fileID: 1396544292} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1396544291 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1396544290} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 7 +--- !u!23 &1396544292 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1396544290} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1396544293 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1396544290} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1396826706 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1396826707} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1396826707 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1396826706} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1407376152} + - {fileID: 608944953} + - {fileID: 546913080} + - {fileID: 1053463225} + - {fileID: 1651113725} + - {fileID: 89611126} + - {fileID: 1106686636} + - {fileID: 1814604996} + - {fileID: 592028979} + m_Father: {fileID: 311797878} + m_RootOrder: 1 +--- !u!1 &1397087031 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1397087032} + - 33: {fileID: 1397087034} + - 23: {fileID: 1397087033} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1397087032 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1397087031} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 8 +--- !u!23 &1397087033 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1397087031} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1397087034 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1397087031} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1400544810 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1400544811} + - 33: {fileID: 1400544813} + - 23: {fileID: 1400544812} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1400544811 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1400544810} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 4 +--- !u!23 &1400544812 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1400544810} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1400544813 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1400544810} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1402568965 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1402568966} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1402568966 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402568965} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1729114802} + - {fileID: 2056503529} + - {fileID: 1645729896} + - {fileID: 932174128} + - {fileID: 463653236} + - {fileID: 1601487170} + - {fileID: 232827030} + - {fileID: 1758280295} + - {fileID: 1974779908} + m_Father: {fileID: 1906654409} + m_RootOrder: 3 +--- !u!1 &1402866201 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1402866202} + - 33: {fileID: 1402866204} + - 23: {fileID: 1402866203} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1402866202 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402866201} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 0 +--- !u!23 &1402866203 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402866201} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1402866204 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1402866201} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1404137073 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1404137074} + - 33: {fileID: 1404137076} + - 23: {fileID: 1404137075} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1404137074 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1404137073} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 5 +--- !u!23 &1404137075 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1404137073} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1404137076 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1404137073} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1407376151 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1407376152} + - 33: {fileID: 1407376154} + - 23: {fileID: 1407376153} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1407376152 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1407376151} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 0 +--- !u!23 &1407376153 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1407376151} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1407376154 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1407376151} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1410625549 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1410625550} + - 33: {fileID: 1410625552} + - 23: {fileID: 1410625551} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1410625550 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1410625549} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 3 +--- !u!23 &1410625551 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1410625549} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1410625552 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1410625549} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1410998028 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1410998029} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1410998029 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1410998028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 426250121} + - {fileID: 1423351329} + - {fileID: 1615833740} + - {fileID: 448229886} + - {fileID: 427916689} + - {fileID: 477954935} + - {fileID: 937185860} + - {fileID: 214908235} + - {fileID: 1886985853} + m_Father: {fileID: 2047955730} + m_RootOrder: 5 +--- !u!1 &1413035098 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1413035099} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1413035099 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1413035098} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 387035447} + - {fileID: 2033352913} + - {fileID: 745174097} + - {fileID: 741883665} + - {fileID: 49728984} + - {fileID: 22254242} + - {fileID: 1922963495} + - {fileID: 772855987} + - {fileID: 277228140} + m_Father: {fileID: 1288823789} + m_RootOrder: 7 +--- !u!1 &1414375559 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1414375560} + - 33: {fileID: 1414375562} + - 23: {fileID: 1414375561} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1414375560 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1414375559} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 7 +--- !u!23 &1414375561 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1414375559} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1414375562 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1414375559} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1414446054 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1414446055} + - 33: {fileID: 1414446057} + - 23: {fileID: 1414446056} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1414446055 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1414446054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 3 +--- !u!23 &1414446056 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1414446054} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1414446057 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1414446054} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1423351328 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1423351329} + - 33: {fileID: 1423351331} + - 23: {fileID: 1423351330} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1423351329 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423351328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 1 +--- !u!23 &1423351330 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423351328} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1423351331 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423351328} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1423757291 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1423757292} + - 33: {fileID: 1423757294} + - 23: {fileID: 1423757293} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1423757292 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423757291} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 7 +--- !u!23 &1423757293 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423757291} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1423757294 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423757291} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1424159263 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1424159264} + - 33: {fileID: 1424159266} + - 23: {fileID: 1424159265} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1424159264 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424159263} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 5 +--- !u!23 &1424159265 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424159263} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1424159266 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424159263} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1424197206 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1424197207} + - 33: {fileID: 1424197209} + - 23: {fileID: 1424197208} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1424197207 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424197206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 6 +--- !u!23 &1424197208 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424197206} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1424197209 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1424197206} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1427766160 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1427766161} + - 33: {fileID: 1427766163} + - 23: {fileID: 1427766162} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1427766161 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1427766160} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 2 +--- !u!23 &1427766162 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1427766160} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1427766163 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1427766160} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1435433902 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1435433903} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1435433903 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1435433902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1820456659} + - {fileID: 1146317990} + - {fileID: 1950717896} + - {fileID: 6176331} + - {fileID: 1461556913} + - {fileID: 1600012675} + - {fileID: 1752355734} + - {fileID: 1900178042} + - {fileID: 1009138638} + m_Father: {fileID: 320694060} + m_RootOrder: 3 +--- !u!1 &1438264997 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1438264998} + - 33: {fileID: 1438265000} + - 23: {fileID: 1438264999} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1438264998 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438264997} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 768694475} + m_RootOrder: 8 +--- !u!23 &1438264999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438264997} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1438265000 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438264997} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1438931483 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1438931484} + - 33: {fileID: 1438931486} + - 23: {fileID: 1438931485} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1438931484 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438931483} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 0 +--- !u!23 &1438931485 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438931483} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1438931486 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438931483} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1439132006 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1439132007} + - 33: {fileID: 1439132009} + - 23: {fileID: 1439132008} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1439132007 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1439132006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 7 +--- !u!23 &1439132008 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1439132006} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1439132009 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1439132006} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1444405828 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1444405829} + - 33: {fileID: 1444405831} + - 23: {fileID: 1444405830} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1444405829 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1444405828} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 3 +--- !u!23 &1444405830 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1444405828} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1444405831 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1444405828} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1445022527 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1445022528} + - 33: {fileID: 1445022530} + - 23: {fileID: 1445022529} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1445022528 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445022527} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 2 +--- !u!23 &1445022529 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445022527} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1445022530 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445022527} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1445609285 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1445609286} + - 33: {fileID: 1445609288} + - 23: {fileID: 1445609287} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1445609286 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445609285} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 7 +--- !u!23 &1445609287 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445609285} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1445609288 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445609285} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1445696864 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1445696865} + - 33: {fileID: 1445696867} + - 23: {fileID: 1445696866} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1445696865 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445696864} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 6 +--- !u!23 &1445696866 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445696864} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1445696867 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445696864} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1446319685 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1446319686} + - 33: {fileID: 1446319688} + - 23: {fileID: 1446319687} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1446319686 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1446319685} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 1 +--- !u!23 &1446319687 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1446319685} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1446319688 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1446319685} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1448535560 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1448535561} + - 33: {fileID: 1448535563} + - 23: {fileID: 1448535562} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1448535561 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1448535560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 6 +--- !u!23 &1448535562 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1448535560} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1448535563 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1448535560} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1455756222 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1455756223} + - 33: {fileID: 1455756225} + - 23: {fileID: 1455756224} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1455756223 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1455756222} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 5 +--- !u!23 &1455756224 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1455756222} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1455756225 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1455756222} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1457726231 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1457726232} + - 33: {fileID: 1457726234} + - 23: {fileID: 1457726233} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1457726232 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1457726231} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 7 +--- !u!23 &1457726233 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1457726231} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1457726234 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1457726231} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1459732961 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1459732962} + - 33: {fileID: 1459732964} + - 23: {fileID: 1459732963} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1459732962 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1459732961} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 8 +--- !u!23 &1459732963 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1459732961} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1459732964 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1459732961} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1460781735 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1460781736} + - 33: {fileID: 1460781738} + - 23: {fileID: 1460781737} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1460781736 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1460781735} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 4 +--- !u!23 &1460781737 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1460781735} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1460781738 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1460781735} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1461556912 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1461556913} + - 33: {fileID: 1461556915} + - 23: {fileID: 1461556914} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1461556913 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1461556912} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 4 +--- !u!23 &1461556914 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1461556912} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1461556915 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1461556912} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1462172970 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1462172971} + - 33: {fileID: 1462172973} + - 23: {fileID: 1462172972} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1462172971 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1462172970} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 5 +--- !u!23 &1462172972 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1462172970} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1462172973 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1462172970} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1462913750 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1462913751} + - 33: {fileID: 1462913753} + - 23: {fileID: 1462913752} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1462913751 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1462913750} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 7 +--- !u!23 &1462913752 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1462913750} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1462913753 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1462913750} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1465525030 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1465525031} + - 33: {fileID: 1465525033} + - 23: {fileID: 1465525032} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1465525031 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1465525030} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 7 +--- !u!23 &1465525032 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1465525030} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1465525033 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1465525030} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1470668111 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1470668112} + - 33: {fileID: 1470668114} + - 23: {fileID: 1470668113} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1470668112 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470668111} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 2 +--- !u!23 &1470668113 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470668111} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1470668114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470668111} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1471964765 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1471964766} + - 33: {fileID: 1471964768} + - 23: {fileID: 1471964767} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1471964766 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1471964765} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 2 +--- !u!23 &1471964767 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1471964765} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1471964768 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1471964765} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1472923030 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1472923031} + - 33: {fileID: 1472923033} + - 23: {fileID: 1472923032} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1472923031 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1472923030} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 146325016} + m_RootOrder: 2 +--- !u!23 &1472923032 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1472923030} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1472923033 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1472923030} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1475028432 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1475028433} + - 33: {fileID: 1475028435} + - 23: {fileID: 1475028434} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1475028433 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475028432} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 3 +--- !u!23 &1475028434 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475028432} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1475028435 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475028432} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1475464808 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1475464809} + - 33: {fileID: 1475464811} + - 23: {fileID: 1475464810} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1475464809 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475464808} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 8 +--- !u!23 &1475464810 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475464808} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1475464811 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475464808} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1475930362 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1475930363} + - 33: {fileID: 1475930365} + - 23: {fileID: 1475930364} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1475930363 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475930362} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 0 +--- !u!23 &1475930364 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475930362} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1475930365 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475930362} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1478520777 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1478520778} + - 33: {fileID: 1478520780} + - 23: {fileID: 1478520779} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1478520778 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1478520777} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 7 +--- !u!23 &1478520779 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1478520777} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1478520780 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1478520777} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1479376375 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1479376376} + - 33: {fileID: 1479376378} + - 23: {fileID: 1479376377} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1479376376 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1479376375} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 5 +--- !u!23 &1479376377 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1479376375} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1479376378 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1479376375} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1483046243 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1483046244} + - 33: {fileID: 1483046246} + - 23: {fileID: 1483046245} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1483046244 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483046243} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 7 +--- !u!23 &1483046245 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483046243} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1483046246 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483046243} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1484333753 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1484333754} + - 33: {fileID: 1484333756} + - 23: {fileID: 1484333755} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1484333754 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484333753} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 0 +--- !u!23 &1484333755 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484333753} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1484333756 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484333753} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1484629979 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1484629980} + - 33: {fileID: 1484629982} + - 23: {fileID: 1484629981} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1484629980 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484629979} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 6 +--- !u!23 &1484629981 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484629979} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1484629982 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484629979} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1487009762 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1487009763} + - 33: {fileID: 1487009765} + - 23: {fileID: 1487009764} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1487009763 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1487009762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 3 +--- !u!23 &1487009764 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1487009762} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1487009765 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1487009762} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1491400365 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1491400366} + - 33: {fileID: 1491400368} + - 23: {fileID: 1491400367} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1491400366 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1491400365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 0 +--- !u!23 &1491400367 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1491400365} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1491400368 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1491400365} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1492260307 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1492260308} + - 33: {fileID: 1492260310} + - 23: {fileID: 1492260309} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1492260308 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1492260307} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 1 +--- !u!23 &1492260309 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1492260307} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1492260310 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1492260307} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1493653993 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1493653994} + - 33: {fileID: 1493653996} + - 23: {fileID: 1493653995} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1493653994 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1493653993} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 1 +--- !u!23 &1493653995 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1493653993} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1493653996 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1493653993} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1494943605 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1494943606} + - 33: {fileID: 1494943608} + - 23: {fileID: 1494943607} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1494943606 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1494943605} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 4 +--- !u!23 &1494943607 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1494943605} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1494943608 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1494943605} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1504082959 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1504082960} + - 33: {fileID: 1504082962} + - 23: {fileID: 1504082961} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1504082960 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1504082959} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 1 +--- !u!23 &1504082961 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1504082959} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1504082962 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1504082959} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1505898925 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1505898926} + - 33: {fileID: 1505898928} + - 23: {fileID: 1505898927} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1505898926 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1505898925} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 2 +--- !u!23 &1505898927 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1505898925} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1505898928 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1505898925} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1506383275 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1506383276} + - 33: {fileID: 1506383278} + - 23: {fileID: 1506383277} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1506383276 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1506383275} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 0 +--- !u!23 &1506383277 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1506383275} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1506383278 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1506383275} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1507586982 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1507586983} + - 33: {fileID: 1507586985} + - 23: {fileID: 1507586984} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1507586983 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1507586982} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 4 +--- !u!23 &1507586984 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1507586982} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1507586985 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1507586982} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1512158321 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1512158322} + - 33: {fileID: 1512158324} + - 23: {fileID: 1512158323} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1512158322 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1512158321} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 0 +--- !u!23 &1512158323 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1512158321} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1512158324 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1512158321} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1515367541 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1515367542} + - 33: {fileID: 1515367544} + - 23: {fileID: 1515367543} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1515367542 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1515367541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 8 +--- !u!23 &1515367543 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1515367541} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1515367544 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1515367541} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1520303004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1520303005} + - 33: {fileID: 1520303007} + - 23: {fileID: 1520303006} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1520303005 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1520303004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 5 +--- !u!23 &1520303006 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1520303004} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1520303007 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1520303004} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1523936019 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1523936020} + - 33: {fileID: 1523936022} + - 23: {fileID: 1523936021} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1523936020 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1523936019} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 8 +--- !u!23 &1523936021 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1523936019} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1523936022 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1523936019} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1524800846 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1524800847} + - 33: {fileID: 1524800849} + - 23: {fileID: 1524800848} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1524800847 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1524800846} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 3 +--- !u!23 &1524800848 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1524800846} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1524800849 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1524800846} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525434091 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1525434092} + - 33: {fileID: 1525434094} + - 23: {fileID: 1525434093} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1525434092 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525434091} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 5 +--- !u!23 &1525434093 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525434091} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1525434094 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525434091} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525654003 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1525654004} + - 33: {fileID: 1525654006} + - 23: {fileID: 1525654005} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1525654004 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525654003} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 2 +--- !u!23 &1525654005 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525654003} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1525654006 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525654003} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1528982993 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1528982994} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1528982994 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1528982993} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1227646396} + - {fileID: 1022286119} + - {fileID: 2033597957} + - {fileID: 2058419006} + - {fileID: 1307516388} + - {fileID: 1307719059} + - {fileID: 1161408034} + - {fileID: 1183162456} + - {fileID: 1545214687} + m_Father: {fileID: 311797878} + m_RootOrder: 5 +--- !u!1 &1532310220 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1532310221} + - 33: {fileID: 1532310223} + - 23: {fileID: 1532310222} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1532310221 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1532310220} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 4 +--- !u!23 &1532310222 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1532310220} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1532310223 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1532310220} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1533958429 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1533958430} + - 33: {fileID: 1533958432} + - 23: {fileID: 1533958431} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1533958430 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1533958429} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 3 +--- !u!23 &1533958431 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1533958429} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1533958432 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1533958429} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1536546682 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1536546683} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1536546683 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1536546682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1754871150} + - {fileID: 250318199} + - {fileID: 1846421688} + - {fileID: 1410625550} + - {fileID: 1711567330} + - {fileID: 1965897961} + - {fileID: 1138922968} + - {fileID: 75920195} + - {fileID: 1397087032} + m_Father: {fileID: 357871943} + m_RootOrder: 6 +--- !u!1 &1539671134 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1539671135} + - 33: {fileID: 1539671137} + - 23: {fileID: 1539671136} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1539671135 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539671134} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 3 +--- !u!23 &1539671136 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539671134} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1539671137 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539671134} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1545214686 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1545214687} + - 33: {fileID: 1545214689} + - 23: {fileID: 1545214688} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1545214687 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1545214686} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 8 +--- !u!23 &1545214688 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1545214686} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1545214689 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1545214686} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1546548682 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1546548683} + - 33: {fileID: 1546548685} + - 23: {fileID: 1546548684} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1546548683 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1546548682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 0 +--- !u!23 &1546548684 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1546548682} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1546548685 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1546548682} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1548254632 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1548254633} + - 33: {fileID: 1548254635} + - 23: {fileID: 1548254634} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1548254633 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1548254632} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 969754910} + m_RootOrder: 4 +--- !u!23 &1548254634 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1548254632} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1548254635 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1548254632} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1548314695 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1548314696} + - 33: {fileID: 1548314698} + - 23: {fileID: 1548314697} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1548314696 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1548314695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 8 +--- !u!23 &1548314697 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1548314695} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1548314698 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1548314695} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1550093338 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1550093339} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1550093339 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1550093338} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 434164393} + - {fileID: 122792864} + - {fileID: 1352935615} + - {fileID: 944018028} + - {fileID: 564326638} + - {fileID: 1094574351} + - {fileID: 864853648} + - {fileID: 1478520778} + - {fileID: 2037708930} + m_Father: {fileID: 1288823789} + m_RootOrder: 3 +--- !u!1 &1552181539 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1552181540} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1552181540 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1552181539} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 225483472} + - {fileID: 2115837886} + - {fileID: 2091853998} + - {fileID: 930864241} + - {fileID: 2029131286} + - {fileID: 950492262} + - {fileID: 869552659} + - {fileID: 1736648754} + - {fileID: 1623881286} + m_Father: {fileID: 1875085494} + m_RootOrder: 0 +--- !u!1 &1553925359 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1553925360} + - 33: {fileID: 1553925362} + - 23: {fileID: 1553925361} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1553925360 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1553925359} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 6 +--- !u!23 &1553925361 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1553925359} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1553925362 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1553925359} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1556928008 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1556928009} + - 33: {fileID: 1556928011} + - 23: {fileID: 1556928010} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1556928009 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1556928008} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 0 +--- !u!23 &1556928010 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1556928008} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1556928011 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1556928008} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1560013111 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1560013112} + - 33: {fileID: 1560013114} + - 23: {fileID: 1560013113} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1560013112 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1560013111} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 5 +--- !u!23 &1560013113 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1560013111} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1560013114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1560013111} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1563197118 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1563197119} + - 33: {fileID: 1563197121} + - 23: {fileID: 1563197120} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1563197119 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1563197118} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 4 +--- !u!23 &1563197120 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1563197118} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1563197121 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1563197118} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1567144311 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1567144312} + - 33: {fileID: 1567144314} + - 23: {fileID: 1567144313} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1567144312 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1567144311} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 2 +--- !u!23 &1567144313 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1567144311} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1567144314 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1567144311} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1570922058 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1570922059} + - 33: {fileID: 1570922061} + - 23: {fileID: 1570922060} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1570922059 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1570922058} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 0 +--- !u!23 &1570922060 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1570922058} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1570922061 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1570922058} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1571448785 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1571448786} + - 33: {fileID: 1571448788} + - 23: {fileID: 1571448787} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1571448786 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1571448785} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 0 +--- !u!23 &1571448787 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1571448785} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1571448788 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1571448785} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1574493099 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1574493100} + - 33: {fileID: 1574493102} + - 23: {fileID: 1574493101} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1574493100 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1574493099} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1687020670} + m_RootOrder: 2 +--- !u!23 &1574493101 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1574493099} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1574493102 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1574493099} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1574963637 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1574963638} + - 33: {fileID: 1574963640} + - 23: {fileID: 1574963639} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1574963638 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1574963637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 0 +--- !u!23 &1574963639 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1574963637} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1574963640 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1574963637} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1581096372 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1581096373} + - 33: {fileID: 1581096375} + - 23: {fileID: 1581096374} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1581096373 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1581096372} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 4 +--- !u!23 &1581096374 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1581096372} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1581096375 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1581096372} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1585804691 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1585804692} + - 33: {fileID: 1585804694} + - 23: {fileID: 1585804693} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1585804692 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585804691} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 0 +--- !u!23 &1585804693 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585804691} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1585804694 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585804691} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1587156215 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1587156216} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1587156216 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1587156215} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1129404313} + - {fileID: 723900745} + - {fileID: 304245274} + - {fileID: 1897181989} + - {fileID: 1350385641} + - {fileID: 532371072} + - {fileID: 161900532} + - {fileID: 1068914481} + - {fileID: 1515367542} + m_Father: {fileID: 1906654409} + m_RootOrder: 2 +--- !u!1 &1587431537 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1587431538} + - 33: {fileID: 1587431540} + - 23: {fileID: 1587431539} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1587431538 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1587431537} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 8 +--- !u!23 &1587431539 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1587431537} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1587431540 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1587431537} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1591077533 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1591077534} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1591077534 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1591077533} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1233842172} + - {fileID: 646509306} + - {fileID: 121895492} + - {fileID: 1596187163} + - {fileID: 418861002} + - {fileID: 589321230} + - {fileID: 1553925360} + - {fileID: 1439132007} + - {fileID: 352927686} + m_Father: {fileID: 1906654409} + m_RootOrder: 5 +--- !u!1 &1592857979 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1592857980} + - 33: {fileID: 1592857982} + - 23: {fileID: 1592857981} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1592857980 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1592857979} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 4 +--- !u!23 &1592857981 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1592857979} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1592857982 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1592857979} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1593517167 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1593517168} + - 33: {fileID: 1593517170} + - 23: {fileID: 1593517169} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1593517168 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1593517167} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 3 +--- !u!23 &1593517169 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1593517167} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1593517170 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1593517167} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1595097605 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1595097606} + - 33: {fileID: 1595097608} + - 23: {fileID: 1595097607} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1595097606 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1595097605} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 5 +--- !u!23 &1595097607 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1595097605} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1595097608 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1595097605} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1596187162 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1596187163} + - 33: {fileID: 1596187165} + - 23: {fileID: 1596187164} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1596187163 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1596187162} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1591077534} + m_RootOrder: 3 +--- !u!23 &1596187164 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1596187162} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1596187165 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1596187162} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1597171770 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1597171771} + - 33: {fileID: 1597171773} + - 23: {fileID: 1597171772} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1597171771 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1597171770} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 3 +--- !u!23 &1597171772 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1597171770} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1597171773 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1597171770} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1600012674 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1600012675} + - 33: {fileID: 1600012677} + - 23: {fileID: 1600012676} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1600012675 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1600012674} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 5 +--- !u!23 &1600012676 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1600012674} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1600012677 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1600012674} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1601450018 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1601450019} + - 33: {fileID: 1601450021} + - 23: {fileID: 1601450020} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1601450019 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1601450018} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 6 +--- !u!23 &1601450020 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1601450018} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1601450021 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1601450018} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1601487169 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1601487170} + - 33: {fileID: 1601487172} + - 23: {fileID: 1601487171} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1601487170 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1601487169} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 5 +--- !u!23 &1601487171 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1601487169} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1601487172 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1601487169} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1602538142 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1602538143} + - 33: {fileID: 1602538145} + - 23: {fileID: 1602538144} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1602538143 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1602538142} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 1 +--- !u!23 &1602538144 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1602538142} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1602538145 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1602538142} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1605042667 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1605042668} + - 33: {fileID: 1605042670} + - 23: {fileID: 1605042669} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1605042668 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605042667} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 1 +--- !u!23 &1605042669 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605042667} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1605042670 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605042667} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1606405212 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1606405213} + - 33: {fileID: 1606405215} + - 23: {fileID: 1606405214} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1606405213 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1606405212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 5 +--- !u!23 &1606405214 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1606405212} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1606405215 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1606405212} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1608184002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1608184003} + - 33: {fileID: 1608184005} + - 23: {fileID: 1608184004} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1608184003 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1608184002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 1 +--- !u!23 &1608184004 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1608184002} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1608184005 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1608184002} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1610958732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1610958733} + - 33: {fileID: 1610958735} + - 23: {fileID: 1610958734} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1610958733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1610958732} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 4 +--- !u!23 &1610958734 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1610958732} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1610958735 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1610958732} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1613309482 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1613309483} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1613309483 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1613309482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 283747329} + - {fileID: 1872063052} + - {fileID: 1445022528} + - {fileID: 351209546} + - {fileID: 607719588} + - {fileID: 511402744} + - {fileID: 1601450019} + - {fileID: 1683129561} + - {fileID: 1849951075} + m_Father: {fileID: 320694060} + m_RootOrder: 1 +--- !u!1 &1615833739 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1615833740} + - 33: {fileID: 1615833742} + - 23: {fileID: 1615833741} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1615833740 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1615833739} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 2 +--- !u!23 &1615833741 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1615833739} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1615833742 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1615833739} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1622807705 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1622807706} + - 33: {fileID: 1622807708} + - 23: {fileID: 1622807707} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1622807706 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1622807705} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 8 +--- !u!23 &1622807707 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1622807705} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1622807708 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1622807705} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1623881285 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1623881286} + - 33: {fileID: 1623881288} + - 23: {fileID: 1623881287} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1623881286 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1623881285} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 8 +--- !u!23 &1623881287 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1623881285} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1623881288 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1623881285} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1624250638 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1624250639} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1624250639 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1624250638} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1402866202} + - {fileID: 1891078375} + - {fileID: 1025853055} + - {fileID: 790672579} + - {fileID: 1732926627} + - {fileID: 2008569424} + - {fileID: 1790590802} + - {fileID: 264309450} + - {fileID: 405307838} + m_Father: {fileID: 357871943} + m_RootOrder: 0 +--- !u!1 &1630920716 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1630920717} + - 33: {fileID: 1630920719} + - 23: {fileID: 1630920718} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630920717 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1630920716} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 7 +--- !u!23 &1630920718 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1630920716} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1630920719 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1630920716} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1631514758 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1631514759} + - 33: {fileID: 1631514761} + - 23: {fileID: 1631514760} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1631514759 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1631514758} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 7 +--- !u!23 &1631514760 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1631514758} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1631514761 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1631514758} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1633108725 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1633108726} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1633108726 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1633108725} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2051291023} + - {fileID: 2020642359} + - {fileID: 1525654004} + - {fileID: 1362647242} + - {fileID: 1460781736} + - {fileID: 1830645292} + - {fileID: 2079882518} + - {fileID: 1423757292} + - {fileID: 1932418424} + m_Father: {fileID: 1288823789} + m_RootOrder: 6 +--- !u!1 &1645729895 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1645729896} + - 33: {fileID: 1645729898} + - 23: {fileID: 1645729897} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1645729896 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1645729895} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 2 +--- !u!23 &1645729897 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1645729895} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1645729898 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1645729895} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1645935152 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1645935153} + - 33: {fileID: 1645935155} + - 23: {fileID: 1645935154} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1645935153 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1645935152} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 5 +--- !u!23 &1645935154 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1645935152} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1645935155 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1645935152} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1646787809 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1646787810} + - 33: {fileID: 1646787812} + - 23: {fileID: 1646787811} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1646787810 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1646787809} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 191837273} + m_RootOrder: 5 +--- !u!23 &1646787811 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1646787809} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1646787812 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1646787809} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1646799000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1646799001} + - 33: {fileID: 1646799003} + - 23: {fileID: 1646799002} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1646799001 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1646799000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 332742599} + m_RootOrder: 0 +--- !u!23 &1646799002 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1646799000} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1646799003 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1646799000} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1650041201 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1650041202} + - 33: {fileID: 1650041204} + - 23: {fileID: 1650041203} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1650041202 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1650041201} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 8 +--- !u!23 &1650041203 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1650041201} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1650041204 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1650041201} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1651113724 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1651113725} + - 33: {fileID: 1651113727} + - 23: {fileID: 1651113726} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1651113725 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1651113724} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 4 +--- !u!23 &1651113726 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1651113724} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1651113727 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1651113724} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1652927163 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1652927164} + - 33: {fileID: 1652927166} + - 23: {fileID: 1652927165} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1652927164 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1652927163} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 1 +--- !u!23 &1652927165 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1652927163} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1652927166 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1652927163} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1655346523 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1655346524} + - 33: {fileID: 1655346526} + - 23: {fileID: 1655346525} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1655346524 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1655346523} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 5 +--- !u!23 &1655346525 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1655346523} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1655346526 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1655346523} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1660802534 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1660802535} + - 33: {fileID: 1660802537} + - 23: {fileID: 1660802536} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1660802535 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1660802534} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 604038727} + m_RootOrder: 7 +--- !u!23 &1660802536 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1660802534} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1660802537 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1660802534} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1662872401 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1662872402} + - 33: {fileID: 1662872404} + - 23: {fileID: 1662872403} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1662872402 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1662872401} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 8 +--- !u!23 &1662872403 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1662872401} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1662872404 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1662872401} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1665684507 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1665684508} + - 33: {fileID: 1665684510} + - 23: {fileID: 1665684509} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1665684508 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1665684507} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 5 +--- !u!23 &1665684509 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1665684507} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1665684510 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1665684507} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1673459333 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1673459334} + - 33: {fileID: 1673459336} + - 23: {fileID: 1673459335} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1673459334 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1673459333} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1802157139} + m_RootOrder: 4 +--- !u!23 &1673459335 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1673459333} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1673459336 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1673459333} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1675013452 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1675013453} + - 33: {fileID: 1675013455} + - 23: {fileID: 1675013454} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1675013453 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1675013452} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 6 +--- !u!23 &1675013454 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1675013452} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1675013455 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1675013452} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1679991483 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1679991484} + - 33: {fileID: 1679991486} + - 23: {fileID: 1679991485} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1679991484 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1679991483} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 3 +--- !u!23 &1679991485 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1679991483} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1679991486 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1679991483} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1683129560 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1683129561} + - 33: {fileID: 1683129563} + - 23: {fileID: 1683129562} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1683129561 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1683129560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 7 +--- !u!23 &1683129562 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1683129560} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1683129563 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1683129560} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1685836020 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1685836021} + - 33: {fileID: 1685836023} + - 23: {fileID: 1685836022} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1685836021 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1685836020} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 7 +--- !u!23 &1685836022 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1685836020} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1685836023 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1685836020} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1687020669 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1687020670} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1687020670 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1687020669} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1484333754} + - {fileID: 670426899} + - {fileID: 1574493100} + - {fileID: 531698857} + - {fileID: 761392685} + - {fileID: 790229014} + - {fileID: 423336367} + - {fileID: 728585453} + - {fileID: 970902515} + m_Father: {fileID: 1906654409} + m_RootOrder: 7 +--- !u!1 &1700747217 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1700747218} + - 33: {fileID: 1700747220} + - 23: {fileID: 1700747219} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1700747218 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1700747217} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 4 +--- !u!23 &1700747219 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1700747217} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1700747220 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1700747217} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1702680168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1702680169} + - 33: {fileID: 1702680171} + - 23: {fileID: 1702680170} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1702680169 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702680168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 8 +--- !u!23 &1702680170 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702680168} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1702680171 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702680168} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1703452019 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1703452020} + - 33: {fileID: 1703452022} + - 23: {fileID: 1703452021} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1703452020 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1703452019} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 1 +--- !u!23 &1703452021 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1703452019} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1703452022 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1703452019} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1711378517 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1711378518} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1711378518 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1711378517} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1348129138} + - {fileID: 906056252} + - {fileID: 283110881} + - {fileID: 307869078} + - {fileID: 933014248} + - {fileID: 719486259} + - {fileID: 173812877} + - {fileID: 1108133971} + - {fileID: 91951654} + m_Father: {fileID: 311797878} + m_RootOrder: 3 +--- !u!1 &1711515863 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1711515864} + - 33: {fileID: 1711515866} + - 23: {fileID: 1711515865} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1711515864 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1711515863} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 358145806} + m_RootOrder: 1 +--- !u!23 &1711515865 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1711515863} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1711515866 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1711515863} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1711567329 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1711567330} + - 33: {fileID: 1711567332} + - 23: {fileID: 1711567331} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1711567330 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1711567329} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 4 +--- !u!23 &1711567331 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1711567329} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1711567332 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1711567329} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1717160739 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1717160740} + - 33: {fileID: 1717160742} + - 23: {fileID: 1717160741} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1717160740 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1717160739} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 8 +--- !u!23 &1717160741 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1717160739} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1717160742 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1717160739} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1721123156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1721123157} + - 33: {fileID: 1721123159} + - 23: {fileID: 1721123158} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1721123157 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1721123156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 2 +--- !u!23 &1721123158 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1721123156} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1721123159 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1721123156} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1729114801 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1729114802} + - 33: {fileID: 1729114804} + - 23: {fileID: 1729114803} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1729114802 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729114801} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 0 +--- !u!23 &1729114803 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729114801} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1729114804 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729114801} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1729768772 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1729768773} + - 33: {fileID: 1729768775} + - 23: {fileID: 1729768774} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1729768773 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729768772} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 4 +--- !u!23 &1729768774 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729768772} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1729768775 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729768772} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1730739917 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1730739918} + - 33: {fileID: 1730739920} + - 23: {fileID: 1730739919} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1730739918 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1730739917} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 0 +--- !u!23 &1730739919 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1730739917} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1730739920 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1730739917} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1732926626 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1732926627} + - 33: {fileID: 1732926629} + - 23: {fileID: 1732926628} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1732926627 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1732926626} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 4 +--- !u!23 &1732926628 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1732926626} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1732926629 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1732926626} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1736130679 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1736130680} + - 33: {fileID: 1736130682} + - 23: {fileID: 1736130681} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1736130680 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736130679} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 870806955} + m_RootOrder: 6 +--- !u!23 &1736130681 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736130679} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1736130682 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736130679} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1736648753 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1736648754} + - 33: {fileID: 1736648756} + - 23: {fileID: 1736648755} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1736648754 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736648753} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 7 +--- !u!23 &1736648755 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736648753} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1736648756 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736648753} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1737309124 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1737309125} + - 33: {fileID: 1737309127} + - 23: {fileID: 1737309126} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1737309125 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1737309124} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 2 +--- !u!23 &1737309126 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1737309124} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1737309127 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1737309124} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1741033991 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1741033992} + - 33: {fileID: 1741033994} + - 23: {fileID: 1741033993} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1741033992 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741033991} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 7 +--- !u!23 &1741033993 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741033991} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1741033994 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741033991} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1741551534 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1741551535} + - 33: {fileID: 1741551537} + - 23: {fileID: 1741551536} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1741551535 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741551534} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 433168050} + m_RootOrder: 7 +--- !u!23 &1741551536 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741551534} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1741551537 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741551534} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1748920385 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1748920386} + - 33: {fileID: 1748920388} + - 23: {fileID: 1748920387} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1748920386 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1748920385} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 6 +--- !u!23 &1748920387 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1748920385} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1748920388 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1748920385} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1752355733 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1752355734} + - 33: {fileID: 1752355736} + - 23: {fileID: 1752355735} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1752355734 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1752355733} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 6 +--- !u!23 &1752355735 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1752355733} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1752355736 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1752355733} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1754474687 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1754474688} + - 33: {fileID: 1754474690} + - 23: {fileID: 1754474689} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1754474688 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1754474687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 2 +--- !u!23 &1754474689 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1754474687} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1754474690 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1754474687} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1754871149 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1754871150} + - 33: {fileID: 1754871152} + - 23: {fileID: 1754871151} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1754871150 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1754871149} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 0 +--- !u!23 &1754871151 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1754871149} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1754871152 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1754871149} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1755673662 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1755673663} + - 33: {fileID: 1755673665} + - 23: {fileID: 1755673664} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1755673663 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1755673662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 0 +--- !u!23 &1755673664 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1755673662} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1755673665 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1755673662} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1755946757 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1755946758} + - 33: {fileID: 1755946760} + - 23: {fileID: 1755946759} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1755946758 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1755946757} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 3 +--- !u!23 &1755946759 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1755946757} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1755946760 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1755946757} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1758170124 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1758170125} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1758170125 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1758170124} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2092823651} + - {fileID: 704930282} + - {fileID: 571634748} + - {fileID: 211645512} + - {fileID: 2142769701} + - {fileID: 1455756223} + - {fileID: 506744597} + - {fileID: 24013133} + - {fileID: 128223066} + m_Father: {fileID: 1285129845} + m_RootOrder: 2 +--- !u!1 &1758280294 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1758280295} + - 33: {fileID: 1758280297} + - 23: {fileID: 1758280296} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1758280295 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1758280294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 7 +--- !u!23 &1758280296 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1758280294} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1758280297 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1758280294} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1767762800 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1767762801} + - 33: {fileID: 1767762803} + - 23: {fileID: 1767762802} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1767762801 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1767762800} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 412002962} + m_RootOrder: 2 +--- !u!23 &1767762802 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1767762800} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1767762803 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1767762800} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1779963276 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1779963277} + - 33: {fileID: 1779963279} + - 23: {fileID: 1779963278} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1779963277 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1779963276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 0 +--- !u!23 &1779963278 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1779963276} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1779963279 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1779963276} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1787459734 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1787459735} + - 33: {fileID: 1787459737} + - 23: {fileID: 1787459736} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1787459735 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787459734} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 6 +--- !u!23 &1787459736 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787459734} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1787459737 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1787459734} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1790590801 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1790590802} + - 33: {fileID: 1790590804} + - 23: {fileID: 1790590803} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1790590802 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1790590801} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 6 +--- !u!23 &1790590803 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1790590801} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1790590804 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1790590801} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1792245260 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1792245261} + - 33: {fileID: 1792245263} + - 23: {fileID: 1792245262} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1792245261 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792245260} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 4 +--- !u!23 &1792245262 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792245260} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1792245263 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792245260} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1793642499 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1793642500} + - 33: {fileID: 1793642502} + - 23: {fileID: 1793642501} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1793642500 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1793642499} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 157447699} + m_RootOrder: 0 +--- !u!23 &1793642501 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1793642499} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1793642502 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1793642499} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1798609836 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1798609837} + - 33: {fileID: 1798609839} + - 23: {fileID: 1798609838} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1798609837 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1798609836} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 2 +--- !u!23 &1798609838 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1798609836} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1798609839 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1798609836} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1800441099 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1800441100} + - 33: {fileID: 1800441102} + - 23: {fileID: 1800441101} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1800441100 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800441099} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 6 +--- !u!23 &1800441101 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800441099} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1800441102 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800441099} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1802005356 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1802005357} + - 33: {fileID: 1802005359} + - 23: {fileID: 1802005358} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1802005357 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1802005356} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 989992470} + m_RootOrder: 0 +--- !u!23 &1802005358 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1802005356} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1802005359 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1802005356} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1802157138 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1802157139} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1802157139 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1802157138} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 909924638} + - {fileID: 1206765017} + - {fileID: 969739218} + - {fileID: 199543577} + - {fileID: 1673459334} + - {fileID: 52129121} + - {fileID: 123976717} + - {fileID: 1374736384} + - {fileID: 272056894} + m_Father: {fileID: 357871943} + m_RootOrder: 5 +--- !u!1 &1803047122 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1803047123} + - 33: {fileID: 1803047125} + - 23: {fileID: 1803047124} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1803047123 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1803047122} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1366031035} + m_RootOrder: 8 +--- !u!23 &1803047124 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1803047122} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1803047125 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1803047122} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1808457318 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1808457319} + - 33: {fileID: 1808457321} + - 23: {fileID: 1808457320} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1808457319 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1808457318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 1 +--- !u!23 &1808457320 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1808457318} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1808457321 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1808457318} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1809721790 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1809721791} + - 33: {fileID: 1809721793} + - 23: {fileID: 1809721792} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1809721791 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1809721790} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 138445035} + m_RootOrder: 8 +--- !u!23 &1809721792 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1809721790} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1809721793 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1809721790} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1814604995 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1814604996} + - 33: {fileID: 1814604998} + - 23: {fileID: 1814604997} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1814604996 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1814604995} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1396826707} + m_RootOrder: 7 +--- !u!23 &1814604997 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1814604995} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1814604998 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1814604995} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1820456658 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1820456659} + - 33: {fileID: 1820456661} + - 23: {fileID: 1820456660} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1820456659 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1820456658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 0 +--- !u!23 &1820456660 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1820456658} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1820456661 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1820456658} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1822101653 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1822101654} + - 33: {fileID: 1822101656} + - 23: {fileID: 1822101655} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1822101654 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1822101653} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 554489815} + m_RootOrder: 8 +--- !u!23 &1822101655 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1822101653} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1822101656 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1822101653} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1825222276 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1825222277} + - 33: {fileID: 1825222279} + - 23: {fileID: 1825222278} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1825222277 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1825222276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 309447440} + m_RootOrder: 0 +--- !u!23 &1825222278 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1825222276} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1825222279 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1825222276} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1825854680 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1825854681} + - 33: {fileID: 1825854683} + - 23: {fileID: 1825854682} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1825854681 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1825854680} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 4 +--- !u!23 &1825854682 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1825854680} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1825854683 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1825854680} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1827989465 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1827989466} + - 33: {fileID: 1827989468} + - 23: {fileID: 1827989467} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1827989466 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1827989465} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 471463405} + m_RootOrder: 2 +--- !u!23 &1827989467 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1827989465} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1827989468 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1827989465} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1830645291 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1830645292} + - 33: {fileID: 1830645294} + - 23: {fileID: 1830645293} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1830645292 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1830645291} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 5 +--- !u!23 &1830645293 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1830645291} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1830645294 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1830645291} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1834334018 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1834334019} + - 33: {fileID: 1834334021} + - 23: {fileID: 1834334020} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1834334019 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1834334018} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 440610438} + m_RootOrder: 5 +--- !u!23 &1834334020 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1834334018} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1834334021 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1834334018} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1834653029 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1834653030} + - 33: {fileID: 1834653032} + - 23: {fileID: 1834653031} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1834653030 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1834653029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1082956371} + m_RootOrder: 5 +--- !u!23 &1834653031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1834653029} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1834653032 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1834653029} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1839525249 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1839525250} + - 33: {fileID: 1839525252} + - 23: {fileID: 1839525251} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1839525250 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1839525249} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 3 +--- !u!23 &1839525251 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1839525249} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1839525252 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1839525249} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1844490898 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1844490899} + - 33: {fileID: 1844490901} + - 23: {fileID: 1844490900} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1844490899 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1844490898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 8 +--- !u!23 &1844490900 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1844490898} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1844490901 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1844490898} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1846421687 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1846421688} + - 33: {fileID: 1846421690} + - 23: {fileID: 1846421689} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1846421688 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1846421687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 2 +--- !u!23 &1846421689 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1846421687} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1846421690 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1846421687} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1849914201 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1849914202} + - 33: {fileID: 1849914204} + - 23: {fileID: 1849914203} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1849914202 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1849914201} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1965163931} + m_RootOrder: 6 +--- !u!23 &1849914203 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1849914201} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1849914204 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1849914201} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1849951074 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1849951075} + - 33: {fileID: 1849951077} + - 23: {fileID: 1849951076} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1849951075 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1849951074} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 8 +--- !u!23 &1849951076 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1849951074} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1849951077 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1849951074} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1850445105 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1850445106} + - 33: {fileID: 1850445108} + - 23: {fileID: 1850445107} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1850445106 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1850445105} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 8 +--- !u!23 &1850445107 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1850445105} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1850445108 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1850445105} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1853333955 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1853333956} + - 33: {fileID: 1853333958} + - 23: {fileID: 1853333957} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1853333956 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1853333955} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1145749506} + m_RootOrder: 8 +--- !u!23 &1853333957 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1853333955} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1853333958 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1853333955} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1856202063 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1856202064} + - 33: {fileID: 1856202066} + - 23: {fileID: 1856202065} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1856202064 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1856202063} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 4 +--- !u!23 &1856202065 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1856202063} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1856202066 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1856202063} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1860104358 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1860104359} + - 33: {fileID: 1860104361} + - 23: {fileID: 1860104360} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1860104359 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1860104358} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 4 +--- !u!23 &1860104360 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1860104358} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1860104361 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1860104358} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1861128535 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1861128536} + - 33: {fileID: 1861128538} + - 23: {fileID: 1861128537} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1861128536 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1861128535} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 1 +--- !u!23 &1861128537 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1861128535} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1861128538 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1861128535} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1861844908 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1861844911} + - 33: {fileID: 1861844910} + - 23: {fileID: 1861844909} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1861844909 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1861844908} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1861844910 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1861844908} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1861844911 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1861844908} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 5 +--- !u!1 &1865533534 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1865533535} + - 33: {fileID: 1865533537} + - 23: {fileID: 1865533536} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1865533535 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1865533534} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 7 +--- !u!23 &1865533536 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1865533534} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1865533537 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1865533534} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1868659281 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1868659282} + - 33: {fileID: 1868659284} + - 23: {fileID: 1868659283} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1868659282 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1868659281} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 2 +--- !u!23 &1868659283 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1868659281} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1868659284 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1868659281} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1872063051 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1872063052} + - 33: {fileID: 1872063054} + - 23: {fileID: 1872063053} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1872063052 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1872063051} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1613309483} + m_RootOrder: 1 +--- !u!23 &1872063053 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1872063051} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1872063054 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1872063051} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1875085493 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1875085494} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1875085494 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1875085493} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: .478583336} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1552181540} + - {fileID: 231626962} + - {fileID: 604038727} + - {fileID: 870806955} + - {fileID: 146325016} + - {fileID: 1251486547} + - {fileID: 1145749506} + - {fileID: 821285325} + - {fileID: 989992470} + m_Father: {fileID: 1335403818} + m_RootOrder: 1 +--- !u!1 &1875242168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1875242169} + - 33: {fileID: 1875242171} + - 23: {fileID: 1875242170} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1875242169 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1875242168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 2 +--- !u!23 &1875242170 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1875242168} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1875242171 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1875242168} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1881349946 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1881349947} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1881349947 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1881349946} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1891805611} + - {fileID: 546731476} + - {fileID: 285840097} + - {fileID: 1533958430} + - {fileID: 1507586983} + - {fileID: 692314446} + - {fileID: 1748920386} + - {fileID: 1483046244} + - {fileID: 904842065} + m_Father: {fileID: 311797878} + m_RootOrder: 6 +--- !u!1 &1882555734 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1882555735} + - 33: {fileID: 1882555737} + - 23: {fileID: 1882555736} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1882555735 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1882555734} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 8 +--- !u!23 &1882555736 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1882555734} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1882555737 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1882555734} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1883108105 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1883108106} + - 33: {fileID: 1883108108} + - 23: {fileID: 1883108107} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1883108106 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1883108105} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 3 +--- !u!23 &1883108107 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1883108105} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1883108108 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1883108105} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1886985852 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1886985853} + - 33: {fileID: 1886985855} + - 23: {fileID: 1886985854} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1886985853 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1886985852} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1410998029} + m_RootOrder: 8 +--- !u!23 &1886985854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1886985852} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1886985855 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1886985852} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1887303631 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1887303632} + - 33: {fileID: 1887303634} + - 23: {fileID: 1887303633} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1887303632 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1887303631} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 379543545} + m_RootOrder: 2 +--- !u!23 &1887303633 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1887303631} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1887303634 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1887303631} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1891078374 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1891078375} + - 33: {fileID: 1891078377} + - 23: {fileID: 1891078376} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1891078375 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1891078374} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 1 +--- !u!23 &1891078376 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1891078374} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1891078377 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1891078374} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1891805610 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1891805611} + - 33: {fileID: 1891805613} + - 23: {fileID: 1891805612} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1891805611 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1891805610} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1881349947} + m_RootOrder: 0 +--- !u!23 &1891805612 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1891805610} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1891805613 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1891805610} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1897181988 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1897181989} + - 33: {fileID: 1897181991} + - 23: {fileID: 1897181990} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1897181989 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1897181988} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1587156216} + m_RootOrder: 3 +--- !u!23 &1897181990 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1897181988} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1897181991 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1897181988} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1899159633 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1899159634} + - 33: {fileID: 1899159636} + - 23: {fileID: 1899159635} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1899159634 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1899159633} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 6 +--- !u!23 &1899159635 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1899159633} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1899159636 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1899159633} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1900178041 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1900178042} + - 33: {fileID: 1900178044} + - 23: {fileID: 1900178043} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1900178042 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900178041} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 7 +--- !u!23 &1900178043 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900178041} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1900178044 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900178041} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1902281419 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1902281420} + - 33: {fileID: 1902281422} + - 23: {fileID: 1902281421} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1902281420 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902281419} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 352349652} + m_RootOrder: 5 +--- !u!23 &1902281421 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902281419} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1902281422 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902281419} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1903182220 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1903182221} + - 33: {fileID: 1903182223} + - 23: {fileID: 1903182222} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1903182221 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1903182220} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 4 +--- !u!23 &1903182222 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1903182220} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1903182223 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1903182220} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1906654408 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1906654409} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1906654409 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1906654408} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -.521416664} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2049357828} + - {fileID: 352349652} + - {fileID: 1587156216} + - {fileID: 1402568966} + - {fileID: 484270180} + - {fileID: 1591077534} + - {fileID: 217104405} + - {fileID: 1687020670} + - {fileID: 969754910} + m_Father: {fileID: 1335403818} + m_RootOrder: 3 +--- !u!1 &1912384767 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1912384768} + - 33: {fileID: 1912384770} + - 23: {fileID: 1912384769} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1912384768 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1912384767} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 774647436} + m_RootOrder: 2 +--- !u!23 &1912384769 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1912384767} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1912384770 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1912384767} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1913048507 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1913048508} + - 33: {fileID: 1913048510} + - 23: {fileID: 1913048509} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1913048508 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1913048507} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1136402243} + m_RootOrder: 3 +--- !u!23 &1913048509 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1913048507} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1913048510 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1913048507} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1913051229 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1913051230} + - 33: {fileID: 1913051232} + - 23: {fileID: 1913051231} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1913051230 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1913051229} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 2 +--- !u!23 &1913051231 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1913051229} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1913051232 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1913051229} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1916262350 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1916262351} + - 33: {fileID: 1916262353} + - 23: {fileID: 1916262352} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1916262351 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1916262350} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 849571239} + m_RootOrder: 2 +--- !u!23 &1916262352 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1916262350} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1916262353 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1916262350} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1921026972 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1921026973} + - 33: {fileID: 1921026975} + - 23: {fileID: 1921026974} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1921026973 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1921026972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 2 +--- !u!23 &1921026974 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1921026972} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1921026975 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1921026972} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1922963494 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1922963495} + - 33: {fileID: 1922963497} + - 23: {fileID: 1922963496} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1922963495 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1922963494} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 6 +--- !u!23 &1922963496 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1922963494} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1922963497 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1922963494} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1923092695 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1923092696} + - 33: {fileID: 1923092698} + - 23: {fileID: 1923092697} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1923092696 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1923092695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 7 +--- !u!23 &1923092697 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1923092695} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1923092698 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1923092695} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1925558713 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1925558714} + - 33: {fileID: 1925558716} + - 23: {fileID: 1925558715} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1925558714 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1925558713} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1950362483} + m_RootOrder: 3 +--- !u!23 &1925558715 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1925558713} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1925558716 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1925558713} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1931155963 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1931155964} + - 33: {fileID: 1931155966} + - 23: {fileID: 1931155965} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1931155964 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1931155963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 8 +--- !u!23 &1931155965 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1931155963} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1931155966 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1931155963} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1932418423 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1932418424} + - 33: {fileID: 1932418426} + - 23: {fileID: 1932418425} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1932418424 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1932418423} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 8 +--- !u!23 &1932418425 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1932418423} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1932418426 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1932418423} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1938902970 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1938902971} + - 33: {fileID: 1938902973} + - 23: {fileID: 1938902972} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1938902971 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1938902970} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 4 +--- !u!23 &1938902972 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1938902970} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1938902973 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1938902970} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1942119076 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1942119077} + - 33: {fileID: 1942119079} + - 23: {fileID: 1942119078} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1942119077 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1942119076} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 6 +--- !u!23 &1942119078 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1942119076} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1942119079 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1942119076} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1948389797 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1948389798} + - 33: {fileID: 1948389800} + - 23: {fileID: 1948389799} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1948389798 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1948389797} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 1 +--- !u!23 &1948389799 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1948389797} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1948389800 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1948389797} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1950362482 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1950362483} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1950362483 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1950362482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 413262254} + - {fileID: 254407489} + - {fileID: 854490570} + - {fileID: 1925558714} + - {fileID: 1592857980} + - {fileID: 60943539} + - {fileID: 1484629980} + - {fileID: 214705700} + - {fileID: 1349524317} + m_Father: {fileID: 320694060} + m_RootOrder: 6 +--- !u!1 &1950717895 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1950717896} + - 33: {fileID: 1950717898} + - 23: {fileID: 1950717897} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1950717896 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1950717895} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1435433903} + m_RootOrder: 2 +--- !u!23 &1950717897 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1950717895} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1950717898 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1950717895} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1952045472 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1952045473} + - 33: {fileID: 1952045475} + - 23: {fileID: 1952045474} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1952045473 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1952045472} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231738743} + m_RootOrder: 4 +--- !u!23 &1952045474 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1952045472} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1952045475 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1952045472} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1953469276 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1953469277} + - 33: {fileID: 1953469279} + - 23: {fileID: 1953469278} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1953469277 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953469276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2070993649} + m_RootOrder: 0 +--- !u!23 &1953469278 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953469276} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1953469279 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953469276} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1954311485 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1954311486} + - 33: {fileID: 1954311488} + - 23: {fileID: 1954311487} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1954311486 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1954311485} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 710806381} + m_RootOrder: 3 +--- !u!23 &1954311487 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1954311485} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1954311488 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1954311485} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1956088723 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1956088724} + - 33: {fileID: 1956088726} + - 23: {fileID: 1956088725} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1956088724 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1956088723} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1318928928} + m_RootOrder: 2 +--- !u!23 &1956088725 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1956088723} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1956088726 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1956088723} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1960183755 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1960183756} + - 33: {fileID: 1960183758} + - 23: {fileID: 1960183757} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1960183756 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1960183755} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 6 +--- !u!23 &1960183757 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1960183755} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1960183758 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1960183755} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1961106352 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1961106353} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1961106353 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1961106352} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1215951044} + - {fileID: 1061289307} + - {fileID: 1798609837} + - {fileID: 979464284} + - {fileID: 406100771} + - {fileID: 988035054} + - {fileID: 1899159634} + - {fileID: 1314660168} + - {fileID: 1967484968} + m_Father: {fileID: 2047955730} + m_RootOrder: 0 +--- !u!1 &1961694171 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1961694172} + - 33: {fileID: 1961694174} + - 23: {fileID: 1961694173} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1961694172 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1961694171} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 8 +--- !u!23 &1961694173 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1961694171} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1961694174 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1961694171} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1965163930 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1965163931} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1965163931 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1965163930} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 178633824} + - {fileID: 1188557689} + - {fileID: 63880795} + - {fileID: 1319814373} + - {fileID: 39903541} + - {fileID: 1235025735} + - {fileID: 1849914202} + - {fileID: 838733922} + - {fileID: 429781488} + m_Father: {fileID: 416898948} + m_RootOrder: 4 +--- !u!1 &1965897960 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1965897961} + - 33: {fileID: 1965897963} + - 23: {fileID: 1965897962} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1965897961 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1965897960} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1536546683} + m_RootOrder: 5 +--- !u!23 &1965897962 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1965897960} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1965897963 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1965897960} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1967484967 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1967484968} + - 33: {fileID: 1967484970} + - 23: {fileID: 1967484969} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1967484968 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967484967} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1961106353} + m_RootOrder: 8 +--- !u!23 &1967484969 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967484967} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1967484970 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967484967} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1969505722 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1969505723} + - 33: {fileID: 1969505725} + - 23: {fileID: 1969505724} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1969505723 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1969505722} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 3 +--- !u!23 &1969505724 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1969505722} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1969505725 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1969505722} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1972144156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1972144157} + - 33: {fileID: 1972144159} + - 23: {fileID: 1972144158} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1972144157 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1972144156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 3 +--- !u!23 &1972144158 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1972144156} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1972144159 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1972144156} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1974779907 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1974779908} + - 33: {fileID: 1974779910} + - 23: {fileID: 1974779909} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1974779908 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1974779907} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 8 +--- !u!23 &1974779909 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1974779907} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1974779910 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1974779907} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1977979796 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1977979797} + - 33: {fileID: 1977979799} + - 23: {fileID: 1977979798} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1977979797 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1977979796} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 2 +--- !u!23 &1977979798 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1977979796} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1977979799 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1977979796} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1979134598 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1979134599} + - 33: {fileID: 1979134601} + - 23: {fileID: 1979134600} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1979134599 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979134598} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 698956160} + m_RootOrder: 0 +--- !u!23 &1979134600 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979134598} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1979134601 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979134598} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1979390744 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1979390745} + - 33: {fileID: 1979390747} + - 23: {fileID: 1979390746} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1979390745 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979390744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 4 +--- !u!23 &1979390746 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979390744} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1979390747 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979390744} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1980932115 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1980932116} + - 33: {fileID: 1980932118} + - 23: {fileID: 1980932117} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1980932116 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980932115} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1330598094} + m_RootOrder: 6 +--- !u!23 &1980932117 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980932115} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1980932118 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1980932115} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1986362226 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1986362227} + - 33: {fileID: 1986362229} + - 23: {fileID: 1986362228} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1986362227 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1986362226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 0 +--- !u!23 &1986362228 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1986362226} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1986362229 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1986362226} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1991666045 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1991666046} + - 33: {fileID: 1991666048} + - 23: {fileID: 1991666047} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1991666046 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1991666045} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 72504183} + m_RootOrder: 2 +--- !u!23 &1991666047 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1991666045} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1991666048 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1991666045} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1991877733 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1991877734} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1991877734 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1991877733} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1986362227} + - {fileID: 2077132620} + - {fileID: 1737309125} + - {fileID: 2013232999} + - {fileID: 1332082081} + - {fileID: 1033298436} + - {fileID: 73591253} + - {fileID: 10900167} + - {fileID: 1882555735} + m_Father: {fileID: 1285129845} + m_RootOrder: 1 +--- !u!1 &1995638827 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1995638828} + - 33: {fileID: 1995638830} + - 23: {fileID: 1995638829} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1995638828 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1995638827} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1269069112} + m_RootOrder: 4 +--- !u!23 &1995638829 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1995638827} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1995638830 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1995638827} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1997209206 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1997209207} + - 33: {fileID: 1997209209} + - 23: {fileID: 1997209208} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1997209207 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1997209206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 5 +--- !u!23 &1997209208 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1997209206} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1997209209 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1997209206} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2004483207 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2004483208} + - 33: {fileID: 2004483210} + - 23: {fileID: 2004483209} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2004483208 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2004483207} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 484270180} + m_RootOrder: 7 +--- !u!23 &2004483209 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2004483207} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2004483210 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2004483207} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2008569423 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2008569424} + - 33: {fileID: 2008569426} + - 23: {fileID: 2008569425} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2008569424 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2008569423} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1624250639} + m_RootOrder: 5 +--- !u!23 &2008569425 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2008569423} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2008569426 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2008569423} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2010793938 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2010793939} + - 33: {fileID: 2010793941} + - 23: {fileID: 2010793940} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2010793939 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2010793938} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 857026539} + m_RootOrder: 3 +--- !u!23 &2010793940 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2010793938} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2010793941 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2010793938} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2013232998 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2013232999} + - 33: {fileID: 2013233001} + - 23: {fileID: 2013233000} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2013232999 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013232998} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 3 +--- !u!23 &2013233000 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013232998} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2013233001 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013232998} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2020642358 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2020642359} + - 33: {fileID: 2020642361} + - 23: {fileID: 2020642360} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2020642359 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2020642358} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 1 +--- !u!23 &2020642360 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2020642358} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2020642361 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2020642358} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2025153728 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2025153729} + - 33: {fileID: 2025153731} + - 23: {fileID: 2025153730} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2025153729 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2025153728} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 0 +--- !u!23 &2025153730 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2025153728} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2025153731 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2025153728} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2026052348 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2026052349} + - 33: {fileID: 2026052351} + - 23: {fileID: 2026052350} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2026052349 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026052348} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2097222327} + m_RootOrder: 8 +--- !u!23 &2026052350 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026052348} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2026052351 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026052348} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2029131285 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2029131286} + - 33: {fileID: 2029131288} + - 23: {fileID: 2029131287} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2029131286 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2029131285} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 4 +--- !u!23 &2029131287 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2029131285} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2029131288 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2029131285} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2033352912 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2033352913} + - 33: {fileID: 2033352915} + - 23: {fileID: 2033352914} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2033352913 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2033352912} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1413035099} + m_RootOrder: 1 +--- !u!23 &2033352914 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2033352912} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2033352915 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2033352912} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2033597956 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2033597957} + - 33: {fileID: 2033597959} + - 23: {fileID: 2033597958} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2033597957 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2033597956} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 2 +--- !u!23 &2033597958 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2033597956} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2033597959 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2033597956} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2037708929 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2037708930} + - 33: {fileID: 2037708932} + - 23: {fileID: 2037708931} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2037708930 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2037708929} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1550093339} + m_RootOrder: 8 +--- !u!23 &2037708931 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2037708929} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2037708932 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2037708929} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2038017095 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2038017096} + - 33: {fileID: 2038017098} + - 23: {fileID: 2038017097} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2038017096 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2038017095} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 0 +--- !u!23 &2038017097 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2038017095} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2038017098 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2038017095} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2040025848 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2040025849} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2040025849 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2040025848} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 433219886} + - {fileID: 2122151701} + - {fileID: 1124369259} + - {fileID: 1539671135} + - {fileID: 1610958733} + - {fileID: 950889724} + - {fileID: 1675013453} + - {fileID: 79316880} + - {fileID: 1702680169} + m_Father: {fileID: 311797878} + m_RootOrder: 4 +--- !u!1 &2045179445 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2045179446} + - 33: {fileID: 2045179448} + - 23: {fileID: 2045179447} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2045179446 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2045179445} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 499152561} + m_RootOrder: 3 +--- !u!23 &2045179447 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2045179445} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2045179448 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2045179445} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2046589813 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2046589814} + - 33: {fileID: 2046589816} + - 23: {fileID: 2046589815} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2046589814 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2046589813} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 2 +--- !u!23 &2046589815 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2046589813} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2046589816 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2046589813} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2047955729 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2047955730} + m_Layer: 0 + m_Name: CubeGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2047955730 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2047955729} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.02090001, y: -.402413607, z: -6.52141666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1961106353} + - {fileID: 332742599} + - {fileID: 1318928928} + - {fileID: 358145806} + - {fileID: 950631283} + - {fileID: 1410998029} + - {fileID: 1330598094} + - {fileID: 412002962} + - {fileID: 1082956371} + m_Father: {fileID: 1335403818} + m_RootOrder: 6 +--- !u!1 &2049357827 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2049357828} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049357828 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2049357827} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 670736873} + - {fileID: 1504082960} + - {fileID: 1471964766} + - {fileID: 2122632236} + - {fileID: 1257843377} + - {fileID: 1861844911} + - {fileID: 1163212113} + - {fileID: 872716104} + - {fileID: 485922319} + m_Father: {fileID: 1906654409} + m_RootOrder: 0 +--- !u!1 &2051291022 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2051291023} + - 33: {fileID: 2051291025} + - 23: {fileID: 2051291024} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2051291023 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051291022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -.0442743301, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 0 +--- !u!23 &2051291024 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051291022} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2051291025 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051291022} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2055671387 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2055671388} + - 33: {fileID: 2055671390} + - 23: {fileID: 2055671389} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2055671388 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055671387} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 821285325} + m_RootOrder: 0 +--- !u!23 &2055671389 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055671387} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2055671390 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055671387} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2056503528 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2056503529} + - 33: {fileID: 2056503531} + - 23: {fileID: 2056503530} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2056503529 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2056503528} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1402568966} + m_RootOrder: 1 +--- !u!23 &2056503530 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2056503528} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2056503531 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2056503528} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2056972173 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2056972174} + - 33: {fileID: 2056972176} + - 23: {fileID: 2056972175} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2056972174 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2056972173} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 732523451} + m_RootOrder: 5 +--- !u!23 &2056972175 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2056972173} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2056972176 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2056972173} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2057664974 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2057664975} + - 33: {fileID: 2057664977} + - 23: {fileID: 2057664976} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2057664975 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057664974} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 6 +--- !u!23 &2057664976 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057664974} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2057664977 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2057664974} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2058419005 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2058419006} + - 33: {fileID: 2058419008} + - 23: {fileID: 2058419007} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2058419006 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2058419005} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1528982994} + m_RootOrder: 3 +--- !u!23 &2058419007 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2058419005} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2058419008 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2058419005} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2062746975 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2062746976} + - 33: {fileID: 2062746978} + - 23: {fileID: 2062746977} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2062746976 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2062746975} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 2 +--- !u!23 &2062746977 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2062746975} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2062746978 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2062746975} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2064792705 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2064792706} + - 33: {fileID: 2064792708} + - 23: {fileID: 2064792707} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2064792706 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2064792705} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 231626962} + m_RootOrder: 0 +--- !u!23 &2064792707 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2064792705} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2064792708 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2064792705} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2068883890 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2068883891} + - 33: {fileID: 2068883893} + - 23: {fileID: 2068883892} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2068883891 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2068883890} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 498431041} + m_RootOrder: 4 +--- !u!23 &2068883892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2068883890} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2068883893 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2068883890} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2070993648 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2070993649} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2070993649 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2070993648} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1953469277} + - {fileID: 210983308} + - {fileID: 520605639} + - {fileID: 1679991484} + - {fileID: 1275248166} + - {fileID: 1655346524} + - {fileID: 712597646} + - {fileID: 653981194} + - {fileID: 1249280389} + m_Father: {fileID: 1288823789} + m_RootOrder: 2 +--- !u!1 &2077132619 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2077132620} + - 33: {fileID: 2077132622} + - 23: {fileID: 2077132621} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2077132620 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2077132619} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1991877734} + m_RootOrder: 1 +--- !u!23 &2077132621 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2077132619} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2077132622 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2077132619} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2079882517 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2079882518} + - 33: {fileID: 2079882520} + - 23: {fileID: 2079882519} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2079882518 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2079882517} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1633108726} + m_RootOrder: 6 +--- !u!23 &2079882519 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2079882517} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2079882520 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2079882517} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2080097012 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2080097013} + - 33: {fileID: 2080097015} + - 23: {fileID: 2080097014} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2080097013 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080097012} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1243272144} + m_RootOrder: 1 +--- !u!23 &2080097014 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080097012} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2080097015 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080097012} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2080981881 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2080981882} + - 33: {fileID: 2080981884} + - 23: {fileID: 2080981883} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2080981882 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080981881} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1337936969} + m_RootOrder: 2 +--- !u!23 &2080981883 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080981881} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2080981884 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080981881} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2085279770 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2085279771} + - 33: {fileID: 2085279773} + - 23: {fileID: 2085279772} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2085279771 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2085279770} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 415594698} + m_RootOrder: 2 +--- !u!23 &2085279772 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2085279770} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2085279773 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2085279770} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2087000648 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2087000649} + - 33: {fileID: 2087000651} + - 23: {fileID: 2087000650} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2087000649 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087000648} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1357615428} + m_RootOrder: 1 +--- !u!23 &2087000650 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087000648} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2087000651 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087000648} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2087585605 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2087585606} + - 33: {fileID: 2087585608} + - 23: {fileID: 2087585607} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2087585606 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087585605} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 5 +--- !u!23 &2087585607 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087585605} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2087585608 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087585605} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2091783722 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2091783723} + - 33: {fileID: 2091783725} + - 23: {fileID: 2091783724} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2091783723 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2091783722} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1041296208} + m_RootOrder: 6 +--- !u!23 &2091783724 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2091783722} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2091783725 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2091783722} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2091853997 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2091853998} + - 33: {fileID: 2091854000} + - 23: {fileID: 2091853999} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2091853998 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2091853997} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 2 +--- !u!23 &2091853999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2091853997} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2091854000 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2091853997} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2092823650 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2092823651} + - 33: {fileID: 2092823653} + - 23: {fileID: 2092823652} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2092823651 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2092823650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 0 +--- !u!23 &2092823652 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2092823650} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2092823653 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2092823650} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2093071928 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2093071929} + - 33: {fileID: 2093071931} + - 23: {fileID: 2093071930} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2093071929 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093071928} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 366225505} + m_RootOrder: 8 +--- !u!23 &2093071930 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093071928} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2093071931 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093071928} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2097222326 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2097222327} + m_Layer: 0 + m_Name: CubeArray1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2097222327 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2097222326} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 398582823} + - {fileID: 997052066} + - {fileID: 1567144312} + - {fileID: 1524800847} + - {fileID: 941245592} + - {fileID: 190771844} + - {fileID: 1800441100} + - {fileID: 1086529298} + - {fileID: 2026052349} + m_Father: {fileID: 311797878} + m_RootOrder: 0 +--- !u!1 &2099444888 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2099444889} + - 33: {fileID: 2099444891} + - 23: {fileID: 2099444890} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2099444889 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2099444888} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 217104405} + m_RootOrder: 3 +--- !u!23 &2099444890 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2099444888} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2099444891 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2099444888} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2099650448 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2099650449} + - 33: {fileID: 2099650451} + - 23: {fileID: 2099650450} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2099650449 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2099650448} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1392306390} + m_RootOrder: 7 +--- !u!23 &2099650450 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2099650448} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2099650451 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2099650448} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2115837885 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2115837886} + - 33: {fileID: 2115837888} + - 23: {fileID: 2115837887} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2115837886 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2115837885} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1552181540} + m_RootOrder: 1 +--- !u!23 &2115837887 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2115837885} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2115837888 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2115837885} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2121867676 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2121867677} + - 33: {fileID: 2121867679} + - 23: {fileID: 2121867678} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2121867677 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2121867676} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 8 +--- !u!23 &2121867678 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2121867676} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2121867679 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2121867676} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2122151700 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2122151701} + - 33: {fileID: 2122151703} + - 23: {fileID: 2122151702} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2122151701 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2122151700} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2040025849} + m_RootOrder: 1 +--- !u!23 &2122151702 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2122151700} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2122151703 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2122151700} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2122632235 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2122632236} + - 33: {fileID: 2122632238} + - 23: {fileID: 2122632237} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2122632236 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2122632235} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 2049357828} + m_RootOrder: 3 +--- !u!23 &2122632237 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2122632235} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2122632238 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2122632235} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2129935184 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2129935185} + - 33: {fileID: 2129935187} + - 23: {fileID: 2129935186} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2129935185 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2129935184} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1049063299} + m_RootOrder: 6 +--- !u!23 &2129935186 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2129935184} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2129935187 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2129935184} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2134487186 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2134487187} + - 33: {fileID: 2134487189} + - 23: {fileID: 2134487188} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2134487187 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2134487186} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1251486547} + m_RootOrder: 6 +--- !u!23 &2134487188 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2134487186} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2134487189 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2134487186} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2135229807 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2135229808} + - 33: {fileID: 2135229810} + - 23: {fileID: 2135229809} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2135229808 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2135229807} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1240836681} + m_RootOrder: 1 +--- !u!23 &2135229809 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2135229807} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2135229810 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2135229807} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2136117256 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2136117257} + - 33: {fileID: 2136117259} + - 23: {fileID: 2136117258} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2136117257 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2136117256} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1038701522} + m_RootOrder: 3 +--- !u!23 &2136117258 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2136117256} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2136117259 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2136117256} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2136417288 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2136417289} + - 33: {fileID: 2136417291} + - 23: {fileID: 2136417290} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2136417289 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2136417288} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 843886803} + m_RootOrder: 1 +--- !u!23 &2136417290 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2136417288} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2136417291 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2136417288} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2139240984 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2139240985} + - 33: {fileID: 2139240987} + - 23: {fileID: 2139240986} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2139240985 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2139240984} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 349606543} + m_RootOrder: 5 +--- !u!23 &2139240986 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2139240984} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2139240987 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2139240984} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2142769700 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2142769701} + - 33: {fileID: 2142769703} + - 23: {fileID: 2142769702} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2142769701 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2142769700} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: 0, z: 0} + m_LocalScale: {x: .25, y: .25, z: .25} + m_Children: [] + m_Father: {fileID: 1758170125} + m_RootOrder: 4 +--- !u!23 &2142769702 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2142769700} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2142769703 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2142769700} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Assets/Oculus/VR/Scenes/Cubes.unity.meta b/Assets/Oculus/VR/Scenes/Cubes.unity.meta new file mode 100644 index 0000000..3e768fe --- /dev/null +++ b/Assets/Oculus/VR/Scenes/Cubes.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: d920b3d2525670f4abad3d20eda3b349 +DefaultImporter: + userData: diff --git a/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity b/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity new file mode 100644 index 0000000..44448f1 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity @@ -0,0 +1,1105 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &265337587 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 265337588} + - component: {fileID: 265337590} + - component: {fileID: 265337589} + - component: {fileID: 265337591} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &265337588 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 265337587} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 2100857862} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 250, y: 700} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &265337589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 265337587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &265337590 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 265337587} +--- !u!114 &265337591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 265337587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7acc4619d4cb5e64e9ed05e5a7a8099f, type: 3} + m_Name: + m_EditorClassIdentifier: + uiText: {fileID: 265337589} +--- !u!1 &358702056 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100012, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 358702057} + - component: {fileID: 358702060} + - component: {fileID: 358702059} + - component: {fileID: 358702058} + m_Layer: 0 + m_Name: CenterEyeAnchor + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &358702057 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400012, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358702056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2100857862} + m_Father: {fileID: 863221866} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &358702058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11414578, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358702056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df8e1d778abf442e4bec449c360e9e1c, type: 3} + m_Name: + m_EditorClassIdentifier: + fadeTime: 2 + fadeColor: {r: 0.01, g: 0.01, b: 0.01, a: 1} + fadeOnStart: 1 +--- !u!20 &358702059 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2015248, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358702056} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 90 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: 1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!81 &358702060 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358702056} + m_Enabled: 1 +--- !u!1 &432959205 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 168962, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1594308570} + m_Layer: 0 + m_Name: LeftHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &654211503 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 134650, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1594308569} + m_Layer: 0 + m_Name: RightHandAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1001 &678225789 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1594308570} + m_Modifications: + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11479374, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_controller + value: 16777216 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &678225790 stripped +Transform: + m_PrefabParentObject: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_PrefabInternal: {fileID: 678225789} +--- !u!1 &863221865 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 162066, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 863221866} + m_Layer: 0 + m_Name: TrackingSpace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &863221866 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 462066, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 863221865} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1568687149} + - {fileID: 358702057} + - {fileID: 1795229448} + - {fileID: 1277714291} + - {fileID: 1594308570} + - {fileID: 1594308569} + m_Father: {fileID: 1594308573} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &887455119 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1594308569} + m_Modifications: + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11479374, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_controller + value: 33554432 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1007573585 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1007573588} + - component: {fileID: 1007573587} + - component: {fileID: 1007573586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1007573586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1007573585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1007573587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1007573585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1007573588 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1007573585} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1117748289 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1117748290} + - component: {fileID: 1117748292} + - component: {fileID: 1117748291} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1117748290 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1117748289} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.3, y: 0.9, z: 0.1} + m_Children: [] + m_Father: {fileID: 2100857862} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1117748291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1117748289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.909} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1117748292 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1117748289} +--- !u!4 &1212613231 stripped +Transform: + m_PrefabParentObject: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_PrefabInternal: {fileID: 887455119} +--- !u!1 &1277714290 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 162068, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1277714291} + m_Layer: 0 + m_Name: TrackerAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1277714291 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 462068, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1277714290} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 863221866} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1444637086 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1444637088} + - component: {fileID: 1444637087} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1444637087 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1444637086} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1444637088 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1444637086} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1445337725 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1445337729} + - component: {fileID: 1445337728} + - component: {fileID: 1445337727} + - component: {fileID: 1445337726} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1445337726 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445337725} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1445337727 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445337725} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1445337728 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445337725} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1445337729 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1445337725} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -5.97, z: 0} + m_LocalScale: {x: 10, y: 10, z: 10} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1568687148 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1568687149} + - component: {fileID: 1568687150} + m_Layer: 0 + m_Name: LeftEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1568687149 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1568687148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 863221866} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &1568687150 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1568687148} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &1594308569 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 481164, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 654211503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1212613231} + m_Father: {fileID: 863221866} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &1594308570 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 477154, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 432959205} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 678225790} + m_Father: {fileID: 863221866} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1594308571 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1594308573} + - component: {fileID: 1594308576} + - component: {fileID: 1594308575} + m_Layer: 0 + m_Name: OVRCameraRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1594308573 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400008, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1594308571} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 863221866} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1594308575 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400002, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1594308571} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + _trackingOriginType: 1 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 1 +--- !u!114 &1594308576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11400020, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1594308571} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df9f338034892c44ebb62d97894772f1, type: 3} + m_Name: + m_EditorClassIdentifier: + usePerEyeCameras: 0 + useFixedUpdateForTracking: 0 +--- !u!1 &1795229447 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100014, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1795229448} + - component: {fileID: 1795229449} + m_Layer: 0 + m_Name: RightEyeAnchor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1795229448 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400014, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1795229447} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 863221866} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &1795229449 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1795229447} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &2100857858 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2100857862} + - component: {fileID: 2100857861} + - component: {fileID: 2100857860} + - component: {fileID: 2100857859} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2100857859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2100857858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2100857860 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2100857858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &2100857861 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2100857858} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &2100857862 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2100857858} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_Children: + - {fileID: 1117748290} + - {fileID: 265337588} + m_Father: {fileID: 358702057} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 125} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity.meta b/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity.meta new file mode 100644 index 0000000..a377707 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/GearVrControllerTest.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d56af3aeb2176e7459f753c1c2e2dd97 +timeCreated: 1486173281 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scenes/MRC.unity b/Assets/Oculus/VR/Scenes/MRC.unity new file mode 100644 index 0000000..ae84d89 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/MRC.unity @@ -0,0 +1,6274 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 9 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &36454512 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 36454513} + - component: {fileID: 36454516} + - component: {fileID: 36454515} + - component: {fileID: 36454514} + - component: {fileID: 36454518} + - component: {fileID: 36454517} + m_Layer: 0 + m_Name: Cube (20) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &36454513 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &36454514 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &36454515 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &36454516 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &36454517 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &36454518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &66877009 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 66877010} + - component: {fileID: 66877013} + - component: {fileID: 66877012} + - component: {fileID: 66877011} + - component: {fileID: 66877015} + - component: {fileID: 66877014} + m_Layer: 0 + m_Name: Cube (29) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &66877010 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &66877011 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &66877012 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &66877013 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &66877014 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &66877015 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &73524539 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 73524540} + - component: {fileID: 73524543} + - component: {fileID: 73524542} + - component: {fileID: 73524541} + - component: {fileID: 73524545} + - component: {fileID: 73524544} + m_Layer: 0 + m_Name: Cube (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &73524540 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &73524541 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &73524542 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &73524543 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &73524544 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &73524545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &81954963 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 81954964} + m_Layer: 0 + m_Name: Grabbables + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &81954964 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 81954963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &103704585 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1430582761} + m_Modifications: + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &107656903 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 107656907} + - component: {fileID: 107656906} + - component: {fileID: 107656905} + - component: {fileID: 107656904} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &107656904 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 26cadeeaa29498d4889f43542f3add58, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &107656905 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &107656906 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &107656907 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &113500680 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 113500681} + - component: {fileID: 113500684} + - component: {fileID: 113500683} + - component: {fileID: 113500682} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &113500681 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &113500682 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &113500683 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &113500684 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &156189377 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 156189378} + - component: {fileID: 156189381} + - component: {fileID: 156189380} + - component: {fileID: 156189379} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &156189378 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &156189379 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &156189380 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &156189381 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &166120574 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 166120575} + m_Layer: 0 + m_Name: Counter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &166120575 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 166120574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1605028847} + - {fileID: 524771733} + - {fileID: 1519282573} + - {fileID: 1055723252} + - {fileID: 755868679} + - {fileID: 1962295111} + - {fileID: 243097430} + - {fileID: 261327897} + - {fileID: 383385450} + - {fileID: 1702096973} + - {fileID: 948387091} + - {fileID: 113500681} + - {fileID: 156189378} + - {fileID: 1500551998} + - {fileID: 907087224} + - {fileID: 580231891} + m_Father: {fileID: 346664030} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &204679842 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 204679846} + - component: {fileID: 204679845} + - component: {fileID: 204679844} + - component: {fileID: 204679843} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &204679843 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 26cadeeaa29498d4889f43542f3add58, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &204679844 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &204679845 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &204679846 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &206189564 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 206189565} + - component: {fileID: 206189568} + - component: {fileID: 206189567} + - component: {fileID: 206189566} + - component: {fileID: 206189570} + - component: {fileID: 206189569} + m_Layer: 0 + m_Name: Cube (12) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &206189565 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &206189566 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &206189567 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &206189568 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &206189569 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &206189570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &210993500 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 210993504} + - component: {fileID: 210993503} + - component: {fileID: 210993502} + - component: {fileID: 210993501} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &210993501 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 26cadeeaa29498d4889f43542f3add58, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &210993502 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &210993503 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &210993504 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &224673155 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 224673156} + - component: {fileID: 224673159} + - component: {fileID: 224673158} + - component: {fileID: 224673157} + - component: {fileID: 224673161} + - component: {fileID: 224673160} + m_Layer: 0 + m_Name: Cube (11) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &224673156 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &224673157 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &224673158 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &224673159 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &224673160 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &224673161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &243097429 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 243097430} + - component: {fileID: 243097433} + - component: {fileID: 243097432} + - component: {fileID: 243097431} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &243097430 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &243097431 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &243097432 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &243097433 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &261327896 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 261327897} + - component: {fileID: 261327900} + - component: {fileID: 261327899} + - component: {fileID: 261327898} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &261327897 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &261327898 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &261327899 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &261327900 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &329624603 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 329624604} + - component: {fileID: 329624607} + - component: {fileID: 329624606} + - component: {fileID: 329624605} + - component: {fileID: 329624609} + - component: {fileID: 329624608} + m_Layer: 0 + m_Name: Cube (14) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &329624604 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &329624605 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &329624606 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &329624607 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &329624608 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &329624609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &346664029 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 346664030} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &346664030 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 346664029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 537728712} + - {fileID: 166120575} + - {fileID: 1925469568} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &358988759 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 358988760} + - component: {fileID: 358988763} + - component: {fileID: 358988762} + - component: {fileID: 358988761} + - component: {fileID: 358988765} + - component: {fileID: 358988764} + m_Layer: 0 + m_Name: Cube (26) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &358988760 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &358988761 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &358988762 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &358988763 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &358988764 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &358988765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &383385449 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 383385450} + - component: {fileID: 383385453} + - component: {fileID: 383385452} + - component: {fileID: 383385451} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &383385450 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &383385451 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &383385452 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &383385453 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &383999543 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 383999547} + - component: {fileID: 383999546} + - component: {fileID: 383999545} + - component: {fileID: 383999544} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &383999544 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 26cadeeaa29498d4889f43542f3add58, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &383999545 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &383999546 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &383999547 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &406692678 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 406692683} + - component: {fileID: 406692682} + - component: {fileID: 406692680} + - component: {fileID: 406692679} + - component: {fileID: 406692681} + m_Layer: 0 + m_Name: AudioSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!82 &406692679 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406692678} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: d716392289ac6764994885f5821f7d7b, type: 3} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!23 &406692680 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406692678} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 26cadeeaa29498d4889f43542f3add58, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!114 &406692681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406692678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 358b12a21a8aa9540b435051f334fe9b, type: 3} + m_Name: + m_EditorClassIdentifier: + period: 2 +--- !u!33 &406692682 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406692678} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &406692683 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 406692678} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.102, y: -0.472, z: 0.162} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &452902406 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 452902407} + - component: {fileID: 452902410} + - component: {fileID: 452902409} + - component: {fileID: 452902408} + - component: {fileID: 452902412} + - component: {fileID: 452902411} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &452902407 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &452902408 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &452902409 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &452902410 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &452902411 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &452902412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &467809853 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 467809857} + - component: {fileID: 467809856} + - component: {fileID: 467809855} + - component: {fileID: 467809854} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &467809854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 26cadeeaa29498d4889f43542f3add58, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &467809855 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &467809856 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &467809857 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &496004193 stripped +Transform: + m_PrefabParentObject: {fileID: 4188412984752900, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 1441110968} +--- !u!1 &524771732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 524771733} + - component: {fileID: 524771736} + - component: {fileID: 524771735} + - component: {fileID: 524771734} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &524771733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &524771734 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &524771735 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &524771736 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &537728711 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 537728712} + m_Layer: 0 + m_Name: Room + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &537728712 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537728711} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 204679846} + - {fileID: 383999547} + - {fileID: 107656907} + - {fileID: 2026317950} + - {fileID: 210993504} + - {fileID: 467809857} + m_Father: {fileID: 346664030} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &568642233 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 568642234} + - component: {fileID: 568642237} + - component: {fileID: 568642236} + - component: {fileID: 568642235} + - component: {fileID: 568642239} + - component: {fileID: 568642238} + m_Layer: 0 + m_Name: Cube (31) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &568642234 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &568642235 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &568642236 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &568642237 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &568642238 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &568642239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &575655890 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 575655891} + - component: {fileID: 575655894} + - component: {fileID: 575655893} + - component: {fileID: 575655892} + - component: {fileID: 575655896} + - component: {fileID: 575655895} + m_Layer: 0 + m_Name: Cube (16) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &575655891 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &575655892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &575655893 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &575655894 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &575655895 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &575655896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &580231890 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 580231891} + - component: {fileID: 580231894} + - component: {fileID: 580231893} + - component: {fileID: 580231892} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &580231891 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &580231892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &580231893 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &580231894 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &617808497 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 617808498} + - component: {fileID: 617808501} + - component: {fileID: 617808500} + - component: {fileID: 617808499} + - component: {fileID: 617808503} + - component: {fileID: 617808502} + m_Layer: 0 + m_Name: Cube (32) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617808498 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &617808499 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &617808500 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &617808501 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &617808502 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &617808503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &663437231 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 663437232} + - component: {fileID: 663437235} + - component: {fileID: 663437234} + - component: {fileID: 663437233} + - component: {fileID: 663437237} + - component: {fileID: 663437236} + m_Layer: 0 + m_Name: Cube (18) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &663437232 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &663437233 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &663437234 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &663437235 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &663437236 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &663437237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &684017681 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 684017682} + - component: {fileID: 684017685} + - component: {fileID: 684017684} + - component: {fileID: 684017683} + - component: {fileID: 684017687} + - component: {fileID: 684017686} + m_Layer: 0 + m_Name: Cube (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &684017682 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &684017683 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &684017684 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &684017685 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &684017686 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &684017687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &719105579 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 719105580} + - component: {fileID: 719105583} + - component: {fileID: 719105582} + - component: {fileID: 719105581} + - component: {fileID: 719105585} + - component: {fileID: 719105584} + m_Layer: 0 + m_Name: Cube (19) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &719105580 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &719105581 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &719105582 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &719105583 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &719105584 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &719105585 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &755868678 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 755868679} + - component: {fileID: 755868682} + - component: {fileID: 755868681} + - component: {fileID: 755868680} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &755868679 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &755868680 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &755868681 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &755868682 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &857705792 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 857705793} + - component: {fileID: 857705796} + - component: {fileID: 857705795} + - component: {fileID: 857705794} + - component: {fileID: 857705798} + - component: {fileID: 857705797} + m_Layer: 0 + m_Name: Cube (10) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &857705793 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &857705794 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &857705795 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &857705796 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &857705797 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &857705798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &907087223 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 907087224} + - component: {fileID: 907087227} + - component: {fileID: 907087226} + - component: {fileID: 907087225} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907087224 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &907087225 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &907087226 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &907087227 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &943102110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 943102111} + - component: {fileID: 943102114} + - component: {fileID: 943102113} + - component: {fileID: 943102112} + - component: {fileID: 943102116} + - component: {fileID: 943102115} + m_Layer: 0 + m_Name: Cube (27) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &943102111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &943102112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &943102113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &943102114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &943102115 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &943102116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &948387090 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 948387091} + - component: {fileID: 948387094} + - component: {fileID: 948387093} + - component: {fileID: 948387092} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &948387091 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &948387092 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &948387093 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &948387094 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1055723251 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1055723252} + - component: {fileID: 1055723255} + - component: {fileID: 1055723254} + - component: {fileID: 1055723253} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1055723252 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1055723253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1055723254 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1055723255 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1065364693 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1065364694} + - component: {fileID: 1065364697} + - component: {fileID: 1065364696} + - component: {fileID: 1065364695} + - component: {fileID: 1065364699} + - component: {fileID: 1065364698} + m_Layer: 0 + m_Name: Cube (28) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1065364694 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1065364695 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1065364696 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1065364697 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1065364698 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1065364699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1107310626 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1107310627} + - component: {fileID: 1107310630} + - component: {fileID: 1107310629} + - component: {fileID: 1107310628} + - component: {fileID: 1107310632} + - component: {fileID: 1107310631} + m_Layer: 0 + m_Name: Cube (17) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1107310627 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1107310628 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1107310629 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1107310630 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1107310631 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1107310632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1206777512 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1206777513} + - component: {fileID: 1206777516} + - component: {fileID: 1206777515} + - component: {fileID: 1206777514} + - component: {fileID: 1206777518} + - component: {fileID: 1206777517} + m_Layer: 0 + m_Name: Cube (23) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1206777513 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1206777514 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1206777515 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1206777516 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1206777517 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1206777518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1267950892 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1267950893} + - component: {fileID: 1267950896} + - component: {fileID: 1267950895} + - component: {fileID: 1267950894} + - component: {fileID: 1267950898} + - component: {fileID: 1267950897} + m_Layer: 0 + m_Name: Cube (24) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1267950893 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1267950894 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1267950895 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1267950896 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1267950897 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1267950898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1353144165 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1353144166} + - component: {fileID: 1353144169} + - component: {fileID: 1353144168} + - component: {fileID: 1353144167} + - component: {fileID: 1353144171} + - component: {fileID: 1353144170} + m_Layer: 0 + m_Name: Cube (13) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1353144166 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1353144167 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1353144168 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1353144169 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1353144170 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1353144171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1380377873 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1380377874} + - component: {fileID: 1380377877} + - component: {fileID: 1380377876} + - component: {fileID: 1380377875} + - component: {fileID: 1380377879} + - component: {fileID: 1380377878} + m_Layer: 0 + m_Name: Cube (21) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1380377874 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1380377875 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1380377876 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1380377877 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1380377878 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1380377879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!4 &1430582761 stripped +Transform: + m_PrefabParentObject: {fileID: 4471613377008970, guid: ce816f2e6abb0504092c23ed9b970dfd, + type: 2} + m_PrefabInternal: {fileID: 1441110968} +--- !u!1001 &1441110968 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1470509161 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1470509163} + - component: {fileID: 1470509162} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1470509162 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1470509163 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.10938166, w: 0.8754261} + m_LocalPosition: {x: 0.2, y: 0.61, z: 0.208} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1500117049 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1500117050} + - component: {fileID: 1500117053} + - component: {fileID: 1500117052} + - component: {fileID: 1500117051} + - component: {fileID: 1500117055} + - component: {fileID: 1500117054} + m_Layer: 0 + m_Name: Cube (9) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1500117050 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1500117051 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1500117052 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1500117053 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1500117054 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1500117055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1500551997 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1500551998} + - component: {fileID: 1500552001} + - component: {fileID: 1500552000} + - component: {fileID: 1500551999} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1500551998 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1500551999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1500552000 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1500552001 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1519282572 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1519282573} + - component: {fileID: 1519282576} + - component: {fileID: 1519282575} + - component: {fileID: 1519282574} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1519282573 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1519282574 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1519282575 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1519282576 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525608981 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1525608982} + - component: {fileID: 1525608985} + - component: {fileID: 1525608984} + - component: {fileID: 1525608983} + - component: {fileID: 1525608987} + - component: {fileID: 1525608986} + m_Layer: 0 + m_Name: Cube (30) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1525608982 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1525608983 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1525608984 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1525608985 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1525608986 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1525608987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1605028846 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1605028847} + - component: {fileID: 1605028850} + - component: {fileID: 1605028849} + - component: {fileID: 1605028848} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1605028847 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1605028848 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1605028849 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1605028850 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1657719772 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1657719773} + - component: {fileID: 1657719776} + - component: {fileID: 1657719775} + - component: {fileID: 1657719774} + - component: {fileID: 1657719778} + - component: {fileID: 1657719777} + m_Layer: 0 + m_Name: Cube (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1657719773 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1657719774 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1657719775 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1657719776 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1657719777 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1657719778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1702096972 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1702096973} + - component: {fileID: 1702096976} + - component: {fileID: 1702096975} + - component: {fileID: 1702096974} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1702096973 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1702096974 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1702096975 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1702096976 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1725458243 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 496004193} + m_Modifications: + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 488160, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11479374, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + propertyPath: m_controller + value: 16777216 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d9809c5e8418bb047bf2c8ba1d1a2cec, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1744811460 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1744811461} + - component: {fileID: 1744811464} + - component: {fileID: 1744811463} + - component: {fileID: 1744811462} + - component: {fileID: 1744811466} + - component: {fileID: 1744811465} + m_Layer: 0 + m_Name: Cube (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1744811461 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1744811462 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1744811463 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1744811464 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1744811465 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1744811466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1840087110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1840087111} + - component: {fileID: 1840087114} + - component: {fileID: 1840087113} + - component: {fileID: 1840087112} + - component: {fileID: 1840087116} + - component: {fileID: 1840087115} + m_Layer: 0 + m_Name: Cube (15) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1840087111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1840087112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1840087113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1840087114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1840087115 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1840087116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1908482354 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1908482355} + - component: {fileID: 1908482358} + - component: {fileID: 1908482357} + - component: {fileID: 1908482356} + - component: {fileID: 1908482360} + - component: {fileID: 1908482359} + m_Layer: 0 + m_Name: Cube (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1908482355 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1908482356 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1908482357 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1908482358 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1908482359 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1908482360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1925469567 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1925469568} + m_Layer: 0 + m_Name: Grabbables + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1925469568 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1925469567} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 452902407} + - {fileID: 1657719773} + - {fileID: 2013597838} + - {fileID: 2055358989} + - {fileID: 1908482355} + - {fileID: 1744811461} + - {fileID: 684017682} + - {fileID: 73524540} + - {fileID: 1500117050} + - {fileID: 857705793} + - {fileID: 224673156} + - {fileID: 206189565} + - {fileID: 1353144166} + - {fileID: 329624604} + - {fileID: 1840087111} + - {fileID: 575655891} + - {fileID: 1107310627} + - {fileID: 663437232} + - {fileID: 719105580} + - {fileID: 36454513} + - {fileID: 1380377874} + - {fileID: 2137937538} + - {fileID: 1206777513} + - {fileID: 1267950893} + - {fileID: 1967851989} + - {fileID: 358988760} + - {fileID: 943102111} + - {fileID: 1065364694} + - {fileID: 66877010} + - {fileID: 1525608982} + - {fileID: 568642234} + - {fileID: 617808498} + m_Father: {fileID: 346664030} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1962295110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1962295111} + - component: {fileID: 1962295114} + - component: {fileID: 1962295113} + - component: {fileID: 1962295112} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1962295111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1962295112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1962295113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1962295114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1967851988 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1967851989} + - component: {fileID: 1967851992} + - component: {fileID: 1967851991} + - component: {fileID: 1967851990} + - component: {fileID: 1967851994} + - component: {fileID: 1967851993} + m_Layer: 0 + m_Name: Cube (25) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1967851989 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1967851990 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &1967851991 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1967851992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1967851993 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1967851994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &2013597837 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2013597838} + - component: {fileID: 2013597841} + - component: {fileID: 2013597840} + - component: {fileID: 2013597839} + - component: {fileID: 2013597843} + - component: {fileID: 2013597842} + m_Layer: 0 + m_Name: Cube (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2013597838 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2013597839 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2013597840 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2013597841 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2013597842 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2013597843 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &2026317946 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2026317950} + - component: {fileID: 2026317949} + - component: {fileID: 2026317948} + - component: {fileID: 2026317947} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2026317947 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 26cadeeaa29498d4889f43542f3add58, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2026317948 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2026317949 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2026317950 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2055358988 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2055358989} + - component: {fileID: 2055358992} + - component: {fileID: 2055358991} + - component: {fileID: 2055358990} + - component: {fileID: 2055358994} + - component: {fileID: 2055358993} + m_Layer: 0 + m_Name: Cube (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2055358989 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2055358990 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2055358991 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2055358992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2055358993 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2055358994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &2137937537 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2137937538} + - component: {fileID: 2137937541} + - component: {fileID: 2137937540} + - component: {fileID: 2137937539} + - component: {fileID: 2137937543} + - component: {fileID: 2137937542} + m_Layer: 0 + m_Name: Cube (22) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2137937538 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2137937539 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2137937540 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2137937541 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2137937542 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2137937543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] diff --git a/Assets/Oculus/VR/Scenes/MRC.unity.meta b/Assets/Oculus/VR/Scenes/MRC.unity.meta new file mode 100644 index 0000000..2944d64 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/MRC.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c249320cff740054f973da7f7e24bd1f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scenes/Room.unity b/Assets/Oculus/VR/Scenes/Room.unity new file mode 100644 index 0000000..53960f2 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/Room.unity @@ -0,0 +1,6046 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 4 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666666 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &36454512 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 36454513} + - 33: {fileID: 36454516} + - 65: {fileID: 36454515} + - 23: {fileID: 36454514} + - 114: {fileID: 36454518} + - 54: {fileID: 36454517} + m_Layer: 0 + m_Name: Cube (20) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &36454513 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 19 +--- !u!23 &36454514 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &36454515 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &36454516 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &36454517 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &36454518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 36454512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &66877009 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 66877010} + - 33: {fileID: 66877013} + - 65: {fileID: 66877012} + - 23: {fileID: 66877011} + - 114: {fileID: 66877015} + - 54: {fileID: 66877014} + m_Layer: 0 + m_Name: Cube (29) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &66877010 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 28 +--- !u!23 &66877011 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &66877012 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &66877013 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &66877014 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &66877015 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66877009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &73524539 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 73524540} + - 33: {fileID: 73524543} + - 65: {fileID: 73524542} + - 23: {fileID: 73524541} + - 114: {fileID: 73524545} + - 54: {fileID: 73524544} + m_Layer: 0 + m_Name: Cube (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &73524540 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 7 +--- !u!23 &73524541 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &73524542 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &73524543 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &73524544 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &73524545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 73524539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &81954963 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 81954964} + m_Layer: 0 + m_Name: Grabbables + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &81954964 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 81954963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1 &107656903 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 107656907} + - 33: {fileID: 107656906} + - 65: {fileID: 107656905} + - 23: {fileID: 107656904} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &107656904 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &107656905 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &107656906 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &107656907 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 2 +--- !u!1 &113500680 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 113500681} + - 33: {fileID: 113500684} + - 65: {fileID: 113500683} + - 23: {fileID: 113500682} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &113500681 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 11 +--- !u!23 &113500682 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &113500683 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &113500684 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 113500680} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &156189377 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 156189378} + - 33: {fileID: 156189381} + - 65: {fileID: 156189380} + - 23: {fileID: 156189379} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &156189378 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 12 +--- !u!23 &156189379 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &156189380 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &156189381 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 156189377} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &166120574 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 166120575} + m_Layer: 0 + m_Name: Counter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &166120575 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 166120574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1605028847} + - {fileID: 524771733} + - {fileID: 1519282573} + - {fileID: 1055723252} + - {fileID: 755868679} + - {fileID: 1962295111} + - {fileID: 243097430} + - {fileID: 261327897} + - {fileID: 383385450} + - {fileID: 1702096973} + - {fileID: 948387091} + - {fileID: 113500681} + - {fileID: 156189378} + - {fileID: 1500551998} + - {fileID: 907087224} + - {fileID: 580231891} + m_Father: {fileID: 346664030} + m_RootOrder: 1 +--- !u!1 &204679842 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 204679846} + - 33: {fileID: 204679845} + - 65: {fileID: 204679844} + - 23: {fileID: 204679843} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &204679843 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &204679844 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &204679845 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &204679846 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 0 +--- !u!1 &206189564 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 206189565} + - 33: {fileID: 206189568} + - 65: {fileID: 206189567} + - 23: {fileID: 206189566} + - 114: {fileID: 206189570} + - 54: {fileID: 206189569} + m_Layer: 0 + m_Name: Cube (12) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &206189565 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 11 +--- !u!23 &206189566 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &206189567 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &206189568 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &206189569 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &206189570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 206189564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &210993500 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 210993504} + - 33: {fileID: 210993503} + - 65: {fileID: 210993502} + - 23: {fileID: 210993501} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &210993501 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &210993502 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &210993503 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &210993504 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 4 +--- !u!1 &224673155 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 224673156} + - 33: {fileID: 224673159} + - 65: {fileID: 224673158} + - 23: {fileID: 224673157} + - 114: {fileID: 224673161} + - 54: {fileID: 224673160} + m_Layer: 0 + m_Name: Cube (11) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &224673156 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 10 +--- !u!23 &224673157 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &224673158 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &224673159 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &224673160 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &224673161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224673155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &243097429 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 243097430} + - 33: {fileID: 243097433} + - 65: {fileID: 243097432} + - 23: {fileID: 243097431} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &243097430 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 6 +--- !u!23 &243097431 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &243097432 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &243097433 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 243097429} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &261327896 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 261327897} + - 33: {fileID: 261327900} + - 65: {fileID: 261327899} + - 23: {fileID: 261327898} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &261327897 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 7 +--- !u!23 &261327898 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &261327899 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &261327900 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 261327896} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &329624603 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 329624604} + - 33: {fileID: 329624607} + - 65: {fileID: 329624606} + - 23: {fileID: 329624605} + - 114: {fileID: 329624609} + - 54: {fileID: 329624608} + m_Layer: 0 + m_Name: Cube (14) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &329624604 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 13 +--- !u!23 &329624605 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &329624606 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &329624607 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &329624608 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &329624609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 329624603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &346664029 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 346664030} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &346664030 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 346664029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 537728712} + - {fileID: 166120575} + - {fileID: 1925469568} + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!1 &358988759 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 358988760} + - 33: {fileID: 358988763} + - 65: {fileID: 358988762} + - 23: {fileID: 358988761} + - 114: {fileID: 358988765} + - 54: {fileID: 358988764} + m_Layer: 0 + m_Name: Cube (26) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &358988760 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 25 +--- !u!23 &358988761 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &358988762 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &358988763 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &358988764 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &358988765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 358988759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &383385449 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 383385450} + - 33: {fileID: 383385453} + - 65: {fileID: 383385452} + - 23: {fileID: 383385451} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &383385450 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 8 +--- !u!23 &383385451 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &383385452 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &383385453 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383385449} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &383999543 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 383999547} + - 33: {fileID: 383999546} + - 65: {fileID: 383999545} + - 23: {fileID: 383999544} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &383999544 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &383999545 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &383999546 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &383999547 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 1 +--- !u!1 &452902406 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 452902407} + - 33: {fileID: 452902410} + - 65: {fileID: 452902409} + - 23: {fileID: 452902408} + - 114: {fileID: 452902412} + - 54: {fileID: 452902411} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &452902407 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 0 +--- !u!23 &452902408 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &452902409 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &452902410 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &452902411 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &452902412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 452902406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &467809853 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 467809857} + - 33: {fileID: 467809856} + - 65: {fileID: 467809855} + - 23: {fileID: 467809854} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &467809854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &467809855 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &467809856 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &467809857 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 5 +--- !u!1 &524771732 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 524771733} + - 33: {fileID: 524771736} + - 65: {fileID: 524771735} + - 23: {fileID: 524771734} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &524771733 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 1 +--- !u!23 &524771734 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &524771735 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &524771736 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 524771732} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &537728711 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 537728712} + m_Layer: 0 + m_Name: Room + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &537728712 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537728711} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 204679846} + - {fileID: 383999547} + - {fileID: 107656907} + - {fileID: 2026317950} + - {fileID: 210993504} + - {fileID: 467809857} + m_Father: {fileID: 346664030} + m_RootOrder: 0 +--- !u!1 &568642233 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 568642234} + - 33: {fileID: 568642237} + - 65: {fileID: 568642236} + - 23: {fileID: 568642235} + - 114: {fileID: 568642239} + - 54: {fileID: 568642238} + m_Layer: 0 + m_Name: Cube (31) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &568642234 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 30 +--- !u!23 &568642235 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &568642236 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &568642237 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &568642238 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &568642239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 568642233} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &575655890 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 575655891} + - 33: {fileID: 575655894} + - 65: {fileID: 575655893} + - 23: {fileID: 575655892} + - 114: {fileID: 575655896} + - 54: {fileID: 575655895} + m_Layer: 0 + m_Name: Cube (16) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &575655891 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 15 +--- !u!23 &575655892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &575655893 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &575655894 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &575655895 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &575655896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 575655890} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &580231890 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 580231891} + - 33: {fileID: 580231894} + - 65: {fileID: 580231893} + - 23: {fileID: 580231892} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &580231891 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 15 +--- !u!23 &580231892 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &580231893 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &580231894 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580231890} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &617808497 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 617808498} + - 33: {fileID: 617808501} + - 65: {fileID: 617808500} + - 23: {fileID: 617808499} + - 114: {fileID: 617808503} + - 54: {fileID: 617808502} + m_Layer: 0 + m_Name: Cube (32) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &617808498 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 31 +--- !u!23 &617808499 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &617808500 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &617808501 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &617808502 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &617808503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 617808497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &663437231 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 663437232} + - 33: {fileID: 663437235} + - 65: {fileID: 663437234} + - 23: {fileID: 663437233} + - 114: {fileID: 663437237} + - 54: {fileID: 663437236} + m_Layer: 0 + m_Name: Cube (18) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &663437232 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 17 +--- !u!23 &663437233 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &663437234 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &663437235 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &663437236 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &663437237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 663437231} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &684017681 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 684017682} + - 33: {fileID: 684017685} + - 65: {fileID: 684017684} + - 23: {fileID: 684017683} + - 114: {fileID: 684017687} + - 54: {fileID: 684017686} + m_Layer: 0 + m_Name: Cube (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &684017682 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 6 +--- !u!23 &684017683 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &684017684 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &684017685 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &684017686 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &684017687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 684017681} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &719105579 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 719105580} + - 33: {fileID: 719105583} + - 65: {fileID: 719105582} + - 23: {fileID: 719105581} + - 114: {fileID: 719105585} + - 54: {fileID: 719105584} + m_Layer: 0 + m_Name: Cube (19) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &719105580 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 18 +--- !u!23 &719105581 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &719105582 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &719105583 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &719105584 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &719105585 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 719105579} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &755868678 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 755868679} + - 33: {fileID: 755868682} + - 65: {fileID: 755868681} + - 23: {fileID: 755868680} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &755868679 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 4 +--- !u!23 &755868680 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &755868681 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &755868682 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 755868678} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &857705792 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 857705793} + - 33: {fileID: 857705796} + - 65: {fileID: 857705795} + - 23: {fileID: 857705794} + - 114: {fileID: 857705798} + - 54: {fileID: 857705797} + m_Layer: 0 + m_Name: Cube (10) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &857705793 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 9 +--- !u!23 &857705794 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &857705795 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &857705796 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &857705797 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &857705798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 857705792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &907087223 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 907087224} + - 33: {fileID: 907087227} + - 65: {fileID: 907087226} + - 23: {fileID: 907087225} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907087224 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 14 +--- !u!23 &907087225 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &907087226 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &907087227 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907087223} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &943102110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 943102111} + - 33: {fileID: 943102114} + - 65: {fileID: 943102113} + - 23: {fileID: 943102112} + - 114: {fileID: 943102116} + - 54: {fileID: 943102115} + m_Layer: 0 + m_Name: Cube (27) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &943102111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 26 +--- !u!23 &943102112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &943102113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &943102114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &943102115 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &943102116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 943102110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &948387090 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 948387091} + - 33: {fileID: 948387094} + - 65: {fileID: 948387093} + - 23: {fileID: 948387092} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &948387091 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -2, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 10 +--- !u!23 &948387092 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &948387093 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &948387094 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 948387090} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1055723251 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1055723252} + - 33: {fileID: 1055723255} + - 65: {fileID: 1055723254} + - 23: {fileID: 1055723253} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1055723252 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 3 +--- !u!23 &1055723253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1055723254 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1055723255 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1055723251} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1065364693 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1065364694} + - 33: {fileID: 1065364697} + - 65: {fileID: 1065364696} + - 23: {fileID: 1065364695} + - 114: {fileID: 1065364699} + - 54: {fileID: 1065364698} + m_Layer: 0 + m_Name: Cube (28) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1065364694 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 27 +--- !u!23 &1065364695 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1065364696 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1065364697 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1065364698 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1065364699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1065364693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1107310626 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1107310627} + - 33: {fileID: 1107310630} + - 65: {fileID: 1107310629} + - 23: {fileID: 1107310628} + - 114: {fileID: 1107310632} + - 54: {fileID: 1107310631} + m_Layer: 0 + m_Name: Cube (17) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1107310627 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 16 +--- !u!23 &1107310628 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1107310629 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1107310630 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1107310631 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1107310632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1107310626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1206777512 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1206777513} + - 33: {fileID: 1206777516} + - 65: {fileID: 1206777515} + - 23: {fileID: 1206777514} + - 114: {fileID: 1206777518} + - 54: {fileID: 1206777517} + m_Layer: 0 + m_Name: Cube (23) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1206777513 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 22 +--- !u!23 &1206777514 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1206777515 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1206777516 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1206777517 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1206777518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1206777512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1267950892 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1267950893} + - 33: {fileID: 1267950896} + - 65: {fileID: 1267950895} + - 23: {fileID: 1267950894} + - 114: {fileID: 1267950898} + - 54: {fileID: 1267950897} + m_Layer: 0 + m_Name: Cube (24) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1267950893 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 23 +--- !u!23 &1267950894 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1267950895 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1267950896 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1267950897 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1267950898 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1267950892} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1353144165 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1353144166} + - 33: {fileID: 1353144169} + - 65: {fileID: 1353144168} + - 23: {fileID: 1353144167} + - 114: {fileID: 1353144171} + - 54: {fileID: 1353144170} + m_Layer: 0 + m_Name: Cube (13) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1353144166 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 12 +--- !u!23 &1353144167 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1353144168 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1353144169 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1353144170 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1353144171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1353144165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1380377873 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1380377874} + - 33: {fileID: 1380377877} + - 65: {fileID: 1380377876} + - 23: {fileID: 1380377875} + - 114: {fileID: 1380377879} + - 54: {fileID: 1380377878} + m_Layer: 0 + m_Name: Cube (21) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1380377874 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 20 +--- !u!23 &1380377875 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1380377876 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1380377877 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1380377878 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1380377879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1380377873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1470509161 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1470509163} + - 108: {fileID: 1470509162} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1470509162 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1470509163 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.10938166, w: 0.8754261} + m_LocalPosition: {x: 0.2, y: 0.61, z: 0.208} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1500117049 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1500117050} + - 33: {fileID: 1500117053} + - 65: {fileID: 1500117052} + - 23: {fileID: 1500117051} + - 114: {fileID: 1500117055} + - 54: {fileID: 1500117054} + m_Layer: 0 + m_Name: Cube (9) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1500117050 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 8 +--- !u!23 &1500117051 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1500117052 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1500117053 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1500117054 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1500117055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500117049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1500551997 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1500551998} + - 33: {fileID: 1500552001} + - 65: {fileID: 1500552000} + - 23: {fileID: 1500551999} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1500551998 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 13 +--- !u!23 &1500551999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1500552000 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1500552001 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1500551997} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1519282572 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1519282573} + - 33: {fileID: 1519282576} + - 65: {fileID: 1519282575} + - 23: {fileID: 1519282574} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1519282573 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 2 +--- !u!23 &1519282574 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1519282575 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1519282576 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1519282572} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1525608981 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1525608982} + - 33: {fileID: 1525608985} + - 65: {fileID: 1525608984} + - 23: {fileID: 1525608983} + - 114: {fileID: 1525608987} + - 54: {fileID: 1525608986} + m_Layer: 0 + m_Name: Cube (30) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1525608982 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 29 +--- !u!23 &1525608983 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1525608984 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1525608985 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1525608986 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1525608987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525608981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1605028846 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1605028847} + - 33: {fileID: 1605028850} + - 65: {fileID: 1605028849} + - 23: {fileID: 1605028848} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1605028847 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -2, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 0 +--- !u!23 &1605028848 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1605028849 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1605028850 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1605028846} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1657719772 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1657719773} + - 33: {fileID: 1657719776} + - 65: {fileID: 1657719775} + - 23: {fileID: 1657719774} + - 114: {fileID: 1657719778} + - 54: {fileID: 1657719777} + m_Layer: 0 + m_Name: Cube (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1657719773 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 1 +--- !u!23 &1657719774 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1657719775 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1657719776 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1657719777 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1657719778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1657719772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1702096972 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1702096973} + - 33: {fileID: 1702096976} + - 65: {fileID: 1702096975} + - 23: {fileID: 1702096974} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1702096973 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 9 +--- !u!23 &1702096974 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1702096975 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1702096976 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1702096972} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1744811460 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1744811461} + - 33: {fileID: 1744811464} + - 65: {fileID: 1744811463} + - 23: {fileID: 1744811462} + - 114: {fileID: 1744811466} + - 54: {fileID: 1744811465} + m_Layer: 0 + m_Name: Cube (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1744811461 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 5 +--- !u!23 &1744811462 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1744811463 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1744811464 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1744811465 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1744811466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1744811460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1840087110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1840087111} + - 33: {fileID: 1840087114} + - 65: {fileID: 1840087113} + - 23: {fileID: 1840087112} + - 114: {fileID: 1840087116} + - 54: {fileID: 1840087115} + m_Layer: 0 + m_Name: Cube (15) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1840087111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -1.25, z: -2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 14 +--- !u!23 &1840087112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1840087113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1840087114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1840087115 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1840087116 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1840087110} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1908482354 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1908482355} + - 33: {fileID: 1908482358} + - 65: {fileID: 1908482357} + - 23: {fileID: 1908482356} + - 114: {fileID: 1908482360} + - 54: {fileID: 1908482359} + m_Layer: 0 + m_Name: Cube (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1908482355 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 4 +--- !u!23 &1908482356 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1908482357 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1908482358 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1908482359 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1908482360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908482354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &1925469567 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1925469568} + m_Layer: 0 + m_Name: Grabbables + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1925469568 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1925469567} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 452902407} + - {fileID: 1657719773} + - {fileID: 2013597838} + - {fileID: 2055358989} + - {fileID: 1908482355} + - {fileID: 1744811461} + - {fileID: 684017682} + - {fileID: 73524540} + - {fileID: 1500117050} + - {fileID: 857705793} + - {fileID: 224673156} + - {fileID: 206189565} + - {fileID: 1353144166} + - {fileID: 329624604} + - {fileID: 1840087111} + - {fileID: 575655891} + - {fileID: 1107310627} + - {fileID: 663437232} + - {fileID: 719105580} + - {fileID: 36454513} + - {fileID: 1380377874} + - {fileID: 2137937538} + - {fileID: 1206777513} + - {fileID: 1267950893} + - {fileID: 1967851989} + - {fileID: 358988760} + - {fileID: 943102111} + - {fileID: 1065364694} + - {fileID: 66877010} + - {fileID: 1525608982} + - {fileID: 568642234} + - {fileID: 617808498} + m_Father: {fileID: 346664030} + m_RootOrder: 2 +--- !u!1 &1931687996 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1931687997} + - 33: {fileID: 1931688002} + - 65: {fileID: 1931688001} + - 23: {fileID: 1931688000} + m_Layer: 0 + m_Name: R Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1931687997 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1931687996} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.2, z: 0.3} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2080101483} + m_RootOrder: 0 +--- !u!23 &1931688000 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1931687996} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1931688001 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1931687996} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1931688002 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1931687996} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1962295110 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1962295111} + - 33: {fileID: 1962295114} + - 65: {fileID: 1962295113} + - 23: {fileID: 1962295112} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1962295111 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -2, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 166120575} + m_RootOrder: 5 +--- !u!23 &1962295112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1962295113 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1962295114 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1962295110} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1967851988 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1967851989} + - 33: {fileID: 1967851992} + - 65: {fileID: 1967851991} + - 23: {fileID: 1967851990} + - 114: {fileID: 1967851994} + - 54: {fileID: 1967851993} + m_Layer: 0 + m_Name: Cube (25) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1967851989 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 24 +--- !u!23 &1967851990 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1967851991 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1967851992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1967851993 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1967851994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1967851988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &2013597837 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2013597838} + - 33: {fileID: 2013597841} + - 65: {fileID: 2013597840} + - 23: {fileID: 2013597839} + - 114: {fileID: 2013597843} + - 54: {fileID: 2013597842} + m_Layer: 0 + m_Name: Cube (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2013597838 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -1.25, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 2 +--- !u!23 &2013597839 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &2013597840 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2013597841 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2013597842 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2013597843 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2013597837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1 &2026317946 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2026317950} + - 33: {fileID: 2026317949} + - 65: {fileID: 2026317948} + - 23: {fileID: 2026317947} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2026317947 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &2026317948 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2026317949 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2026317950 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 3 +--- !u!1 &2050042247 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2050042248} + - 33: {fileID: 2050042253} + - 65: {fileID: 2050042252} + - 23: {fileID: 2050042251} + m_Layer: 0 + m_Name: L Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2050042248 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2050042247} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.2, z: 0.3} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2080101484} + m_RootOrder: 0 +--- !u!23 &2050042251 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2050042247} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &2050042252 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2050042247} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2050042253 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2050042247} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2055358988 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2055358989} + - 33: {fileID: 2055358992} + - 65: {fileID: 2055358991} + - 23: {fileID: 2055358990} + - 114: {fileID: 2055358994} + - 54: {fileID: 2055358993} + m_Layer: 0 + m_Name: Cube (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2055358989 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 2, y: -1.25, z: -1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 3 +--- !u!23 &2055358990 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &2055358991 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2055358992 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2055358993 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2055358994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2055358988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] +--- !u!1001 &2080101472 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11400010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: useProfileData + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400008, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &2080101473 stripped +GameObject: + m_PrefabParentObject: {fileID: 100014, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &2080101474 stripped +GameObject: + m_PrefabParentObject: {fileID: 100010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!20 &2080101475 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101473} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!20 &2080101476 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101474} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!1 &2080101477 stripped +GameObject: + m_PrefabParentObject: {fileID: 134650, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &2080101478 stripped +GameObject: + m_PrefabParentObject: {fileID: 168962, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!114 &2080101479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fd425c2d06f39bf4899d07c05d0f10eb, type: 3} + m_Name: + m_EditorClassIdentifier: + grabBegin: 0.55 + grabEnd: 0.35 + m_parentHeldObject: 0 + m_gripTransform: {fileID: 1931687997} + m_grabVolumes: + - {fileID: 1931688001} + m_controller: 2 + m_parentTransform: {fileID: 0} +--- !u!54 &2080101480 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101477} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2080101481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fd425c2d06f39bf4899d07c05d0f10eb, type: 3} + m_Name: + m_EditorClassIdentifier: + grabBegin: 0.55 + grabEnd: 0.35 + m_parentHeldObject: 0 + m_gripTransform: {fileID: 2050042248} + m_grabVolumes: + - {fileID: 2050042252} + m_controller: 1 + m_parentTransform: {fileID: 0} +--- !u!54 &2080101482 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101478} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!4 &2080101483 stripped +Transform: + m_PrefabParentObject: {fileID: 481164, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!4 &2080101484 stripped +Transform: + m_PrefabParentObject: {fileID: 477154, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &2137937537 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2137937538} + - 33: {fileID: 2137937541} + - 65: {fileID: 2137937540} + - 23: {fileID: 2137937539} + - 114: {fileID: 2137937543} + - 54: {fileID: 2137937542} + m_Layer: 0 + m_Name: Cube (22) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2137937538 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2, y: -0.75, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1925469568} + m_RootOrder: 21 +--- !u!23 &2137937539 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &2137937540 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2137937541 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &2137937542 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &2137937543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2137937537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d61468f8b77ae4b92c344bc9a600fb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_allowOffhandGrab: 1 + m_snapPosition: 0 + m_snapOrientation: 0 + m_snapOffset: {fileID: 0} + m_grabPoints: [] diff --git a/Assets/Oculus/VR/Scenes/Room.unity.meta b/Assets/Oculus/VR/Scenes/Room.unity.meta new file mode 100644 index 0000000..9ed7782 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/Room.unity.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 54445976c1dbf1c49bb38ba7eba558e8 +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Oculus/VR/Scenes/Trivial.unity b/Assets/Oculus/VR/Scenes/Trivial.unity new file mode 100644 index 0000000..5588612 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/Trivial.unity @@ -0,0 +1,306 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_Fog: 0 + m_FogColor: {r: .5, g: .5, b: .5, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: .211999997, g: .226999998, b: .259000003, a: 1} + m_AmbientEquatorColor: {r: .114, g: .125, b: .133000001, a: 1} + m_AmbientGroundColor: {r: .0469999984, g: .0430000015, b: .0350000001, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: .5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} +--- !u!127 &3 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_GIWorkflowMode: 0 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: .166666672 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &97357214 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 97357218} + - 33: {fileID: 97357217} + - 65: {fileID: 97357216} + - 23: {fileID: 97357215} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &97357215 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97357214} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &97357216 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97357214} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &97357217 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97357214} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &97357218 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 97357214} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1 &1437328436 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1437328441} + - 20: {fileID: 1437328440} + - 92: {fileID: 1437328439} + - 124: {fileID: 1437328438} + - 81: {fileID: 1437328437} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1437328437 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1437328436} + m_Enabled: 1 +--- !u!124 &1437328438 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1437328436} + m_Enabled: 1 +--- !u!92 &1437328439 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1437328436} + m_Enabled: 1 +--- !u!20 &1437328440 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1437328436} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 +--- !u!4 &1437328441 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1437328436} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &1781452261 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1781452263} + - 108: {fileID: 1781452262} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1781452262 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1781452261} + m_Enabled: 1 + serializedVersion: 6 + m_Type: 1 + m_Color: {r: 1, g: .956862748, b: .839215696, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_Strength: 1 + m_Bias: .0500000007 + m_NormalBias: .400000006 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_AreaSize: {x: 1, y: 1} +--- !u!4 &1781452263 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1781452261} + m_LocalRotation: {x: .408217937, y: -.234569728, z: .109381676, w: .875426054} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 diff --git a/Assets/Oculus/VR/Scenes/Trivial.unity.meta b/Assets/Oculus/VR/Scenes/Trivial.unity.meta new file mode 100644 index 0000000..73501c6 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/Trivial.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8d21f2460d13554780e4af04a9e0d6e +timeCreated: 1427350486 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scenes/UI.unity b/Assets/Oculus/VR/Scenes/UI.unity new file mode 100644 index 0000000..49c5154 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/UI.unity @@ -0,0 +1,2798 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 9 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &84518579 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1410866495189614, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 84518580} + - component: {fileID: 84518582} + - component: {fileID: 84518581} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &84518580 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224012455983107908, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 84518579} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 666710796} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &84518581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114149122066085498, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 84518579} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &84518582 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222168602258099800, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 84518579} +--- !u!1 &107656903 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 107656907} + - component: {fileID: 107656906} + - component: {fileID: 107656905} + - component: {fileID: 107656904} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &107656904 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &107656905 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &107656906 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &107656907 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 107656903} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &117158919 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1633363760512892, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 117158920} + - component: {fileID: 117158922} + - component: {fileID: 117158921} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &117158920 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224912351142567644, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 117158919} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1272495786} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &117158921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114738334104451478, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 117158919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &117158922 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222743391956064958, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 117158919} +--- !u!1 &154823736 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1793122948231964, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 154823737} + - component: {fileID: 154823739} + - component: {fileID: 154823738} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &154823737 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224627209805141530, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 154823736} + m_LocalRotation: {x: 0, y: 0.00000016048051, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.99972576, y: 0.99972415, z: 1} + m_Children: + - {fileID: 1484568472} + m_Father: {fileID: 314378549} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -51, y: 40} + m_SizeDelta: {x: 235.85, y: 69.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &154823738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114237797550994276, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 154823736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Strength +--- !u!222 &154823739 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222149160881046440, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 154823736} +--- !u!1 &204679842 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 204679846} + - component: {fileID: 204679845} + - component: {fileID: 204679844} + - component: {fileID: 204679843} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &204679843 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &204679844 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &204679845 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &204679846 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 204679842} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &210993500 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 210993504} + - component: {fileID: 210993503} + - component: {fileID: 210993502} + - component: {fileID: 210993501} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &210993501 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &210993502 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &210993503 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &210993504 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 210993500} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &232759347 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1951251448566104, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 232759348} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &232759348 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224877946070035678, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 232759347} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 308838376} + m_Father: {fileID: 1484568472} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &308838375 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1631452936649066, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 308838376} + - component: {fileID: 308838378} + - component: {fileID: 308838377} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &308838376 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224844702304561420, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 308838375} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 232759348} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &308838377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114443175932622302, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 308838375} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &308838378 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222379095727919406, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 308838375} +--- !u!1 &314378541 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1286466568756620, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 314378549} + - component: {fileID: 314378548} + - component: {fileID: 314378547} + - component: {fileID: 314378546} + - component: {fileID: 314378544} + - component: {fileID: 314378543} + - component: {fileID: 314378542} + m_Layer: 5 + m_Name: LightCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &314378542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114221050636851762, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 314378541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &314378543 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222790953300702258, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 314378541} +--- !u!114 &314378544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114079784262412058, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 314378541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 1 +--- !u!114 &314378546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114055190907109370, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 314378541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7aaf960227867044282d921171d2d7ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 3 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 + pointer: {fileID: 0} + sortOrder: 0 +--- !u!114 &314378547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114564601936112134, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 314378541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 10 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &314378548 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 223854308403297298, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 314378541} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 2080101476} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: -100 + m_TargetDisplay: 0 +--- !u!224 &314378549 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224936707579750852, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 314378541} + m_LocalRotation: {x: 0.30626857, y: 0, z: 0, w: 0.9519452} + m_LocalPosition: {x: 0, y: 0, z: 1.674} + m_LocalScale: {x: 0.0017944947, y: 0.0017944948, z: 2.0564146} + m_Children: + - {fileID: 1529239508} + - {fileID: 154823737} + - {fileID: 596084221} + - {fileID: 1211057214} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 35.669003, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0.4466219, y: -1.272} + m_SizeDelta: {x: 820.557, y: 350.614} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &346664029 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 346664030} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &346664030 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 346664029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 537728712} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &383999543 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 383999547} + - component: {fileID: 383999546} + - component: {fileID: 383999545} + - component: {fileID: 383999544} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &383999544 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &383999545 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &383999546 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &383999547 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383999543} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &467809853 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 467809857} + - component: {fileID: 467809856} + - component: {fileID: 467809855} + - component: {fileID: 467809854} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &467809854 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &467809855 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &467809856 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &467809857 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 467809853} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -5} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &529157269 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1851142746248022, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 529157270} + - component: {fileID: 529157272} + - component: {fileID: 529157271} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &529157270 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224250314531179288, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 529157269} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1365315845} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &529157271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114866530499855602, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 529157269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &529157272 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222738096033492602, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 529157269} +--- !u!1 &537728711 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 537728712} + m_Layer: 0 + m_Name: Room + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &537728712 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 537728711} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 204679846} + - {fileID: 383999547} + - {fileID: 107656907} + - {fileID: 2026317950} + - {fileID: 210993504} + - {fileID: 467809857} + m_Father: {fileID: 346664030} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &596084220 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1827637041739792, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 596084221} + - component: {fileID: 596084223} + - component: {fileID: 596084222} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &596084221 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224956884596539380, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 596084220} + m_LocalRotation: {x: 0, y: 0.00000016048051, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.99972576, y: 0.99972415, z: 1} + m_Children: + - {fileID: 1365315845} + m_Father: {fileID: 314378549} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -51, y: -10} + m_SizeDelta: {x: 235.85, y: 69.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &596084222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114717215169091202, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 596084220} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Size +--- !u!222 &596084223 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222227348137726606, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 596084220} +--- !u!1 &666710795 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1702945931632494, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 666710796} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &666710796 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224699324860666886, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 666710795} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 84518580} + m_Father: {fileID: 1365315845} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &671274187 stripped +GameObject: + m_PrefabParentObject: {fileID: 100004, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!114 &671274191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 671274187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8e7ff1cdf4c4e74db00c3684108bc9a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EventMask: + serializedVersion: 2 + m_Bits: 32 + sortOrder: 20 +--- !u!1 &746191968 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 168498, guid: b0528537cb83e274c845cae208d6f145, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 746191969} + - component: {fileID: 746191971} + - component: {fileID: 746191970} + - component: {fileID: 746191973} + m_Layer: 5 + m_Name: GazeIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &746191969 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 468498, guid: b0528537cb83e274c845cae208d6f145, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 746191968} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 3.5486445, y: 3.5486465, z: 3.5486465} + m_Children: [] + m_Father: {fileID: 851230874} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &746191970 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2368498, guid: b0528537cb83e274c845cae208d6f145, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 746191968} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 3fac3b9744290eb4c89b0e4ffd5fe085, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &746191971 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3368498, guid: b0528537cb83e274c845cae208d6f145, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 746191968} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &746191973 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 746191968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4444ce35d262aa648ad0c425a559b931, type: 3} + m_Name: + m_EditorClassIdentifier: + currentOverlayType: 2 + isDynamic: 0 + isProtectedContent: 0 + isExternalSurface: 0 + externalSurfaceWidth: 0 + externalSurfaceHeight: 0 + compositionDepth: 0 + noDepthBufferTesting: 0 + currentOverlayShape: 0 + textures: + - {fileID: 0} + - {fileID: 0} +--- !u!1 &851230871 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 168500, guid: b0528537cb83e274c845cae208d6f145, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 851230874} + - component: {fileID: 851230872} + m_Layer: 5 + m_Name: OVRGazePointer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &851230872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11454254, guid: b0528537cb83e274c845cae208d6f145, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 851230871} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30530ad0e40d0a64ea26d753ee4996ea, type: 3} + m_Name: + m_EditorClassIdentifier: + hideByDefault: 1 + showTimeoutPeriod: 1 + hideTimeoutPeriod: 0.1 + dimOnHideRequest: 1 + depthScaleMultiplier: 0.03 + matchNormalOnPhysicsColliders: 0 + rayTransform: {fileID: 2080101479} +--- !u!4 &851230874 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 468500, guid: b0528537cb83e274c845cae208d6f145, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 851230871} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: + - {fileID: 746191969} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &867158171 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1453575399696200, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 867158172} + - component: {fileID: 867158174} + - component: {fileID: 867158173} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &867158172 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224434444875997346, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 867158171} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.000000011789} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1211057214} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 23.4, y: -0.000056601} + m_SizeDelta: {x: -46.8, y: -0.000038147} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &867158173 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114327799110482470, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 867158171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 27 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enabled +--- !u!222 &867158174 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222319640404033962, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 867158171} +--- !u!1 &1035984978 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1211042071873416, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1035984979} + - component: {fileID: 1035984981} + - component: {fileID: 1035984980} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1035984979 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224934722846214142, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1035984978} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.000000039858} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1410257691} + m_Father: {fileID: 1211057214} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 17.5, y: -16.8} + m_SizeDelta: {x: 35, y: 33.6} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1035984980 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114950584601116014, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1035984978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1035984981 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222146609727379898, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1035984978} +--- !u!1 &1211057213 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1425299501438858, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1211057214} + - component: {fileID: 1211057215} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1211057214 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224921434058215820, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1211057213} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.0000000057843} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1035984979} + - {fileID: 867158172} + m_Father: {fileID: 314378549} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 30.4, y: -70.5} + m_SizeDelta: {x: 204, y: 33.6} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1211057215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114002572975853784, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1211057213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1035984980} + toggleTransition: 1 + graphic: {fileID: 1410257692} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1335849532} + m_MethodName: set_enabled + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!1 &1272495785 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1292208530939496, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1272495786} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1272495786 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224955942719613166, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1272495785} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 117158920} + m_Father: {fileID: 1484568472} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1281705319 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1869557937274144, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1281705320} + - component: {fileID: 1281705323} + - component: {fileID: 1281705322} + - component: {fileID: 1281705321} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1281705320 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4798649009198828, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1281705319} + m_LocalRotation: {x: 0.7071065, y: -0.00000018956948, z: -0.000000086186304, w: 0.7071072} + m_LocalPosition: {x: -0, y: -0, z: -0.28399992} + m_LocalScale: {x: 0.18982275, y: 0.18982278, z: 0.18982276} + m_Children: [] + m_Father: {fileID: 1335849533} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1281705321 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 23864222582684130, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1281705319} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!136 &1281705322 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 136812717881118166, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1281705319} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1281705323 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 33104462263267660, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1281705319} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1335849531 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1502986616194404, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1335849533} + - component: {fileID: 1335849532} + m_Layer: 0 + m_Name: Spotlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1335849532 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 108874713582670172, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335849531} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.4098544 + m_Range: 6.54 + m_SpotAngle: 45 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1335849533 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4853273549456900, guid: 50d41190501b1584a932188c446c4e52, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335849531} + m_LocalRotation: {x: -0.085366644, y: -0.35873595, z: -0.032966625, w: 0.92894256} + m_LocalPosition: {x: 0.712, y: -0.37, z: -0.879} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1281705320} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: -10.501, y: -42.231003, z: 0} +--- !u!1 &1365315844 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1467887161863668, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1365315845} + - component: {fileID: 1365315846} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1365315845 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224991194268729776, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365315844} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 2.5706496} + m_Children: + - {fileID: 529157270} + - {fileID: 1476285672} + - {fileID: 666710796} + m_Father: {fileID: 596084221} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 113, y: 9} + m_SizeDelta: {x: 215.3, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1365315846 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114974080304098144, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365315844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 84518581} + m_FillRect: {fileID: 1698888415} + m_HandleRect: {fileID: 84518580} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 180 + m_WholeNumbers: 0 + m_Value: 45 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1335849532} + m_MethodName: set_spotAngle + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1410257690 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1400426440437290, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1410257691} + - component: {fileID: 1410257693} + - component: {fileID: 1410257692} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1410257691 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224368407954141310, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1410257690} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1035984979} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1410257692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114351293870195126, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1410257690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1410257693 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222538107062299344, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1410257690} +--- !u!1 &1449092611 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1719239795085386, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1449092612} + - component: {fileID: 1449092614} + - component: {fileID: 1449092613} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1449092612 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224905620587183002, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1449092611} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1484568472} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1449092613 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114620956305824076, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1449092611} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1449092614 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222059916167625686, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1449092611} +--- !u!1 &1470509161 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1470509163} + - component: {fileID: 1470509162} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1470509162 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1470509163 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1470509161} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.10938166, w: 0.8754261} + m_LocalPosition: {x: 0.2, y: 0.61, z: 0.208} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1476285671 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1278096029339308, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1476285672} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1476285672 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224430737903737794, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1476285671} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1698888415} + m_Father: {fileID: 1365315845} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1484568471 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1332706582247612, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1484568472} + - component: {fileID: 1484568473} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1484568472 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224015012170540542, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484568471} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 2.5706496} + m_Children: + - {fileID: 1449092612} + - {fileID: 232759348} + - {fileID: 1272495786} + m_Father: {fileID: 154823737} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 113, y: 9} + m_SizeDelta: {x: 215.3, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1484568473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114792581645112844, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1484568471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 117158921} + m_FillRect: {fileID: 308838376} + m_HandleRect: {fileID: 117158920} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 8 + m_WholeNumbers: 0 + m_Value: 0.5 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1335849532} + m_MethodName: set_intensity + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0.5 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1529239507 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1297614045655638, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1529239508} + - component: {fileID: 1529239510} + - component: {fileID: 1529239509} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1529239508 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224040488474665906, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1529239507} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 314378549} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1529239509 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114857836229995698, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1529239507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: a26663690a6580440963aa46e582c35b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1529239510 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222447602114667058, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1529239507} +--- !u!1 &1698888414 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1165463738221572, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1698888415} + - component: {fileID: 1698888417} + - component: {fileID: 1698888416} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1698888415 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 224512758831307302, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1698888414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1476285672} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1698888416 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 114871144349642598, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1698888414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1698888417 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 222546118480493458, guid: c2f8d110e56579842ac6367b607a04c1, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1698888414} +--- !u!1 &1764992132 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1764992135} + - component: {fileID: 1764992134} + - component: {fileID: 1764992133} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1764992133 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1764992132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f1a9a1d119a5944aacfb87d1ec283a2, type: 3} + m_Name: + m_EditorClassIdentifier: + rayTransform: {fileID: 2080101479} + m_Cursor: {fileID: 851230872} + joyPadClickButton: 1 + gazeClickKey: 32 + performSphereCastForGazepointer: 1 + useRightStickScroll: 1 + rightStickDeadZone: 0.15 + useSwipeScroll: 1 + swipeDragThreshold: 1 + swipeDragScale: 1 + InvertSwipeXAxis: 1 + angleDragThreshold: 1 + m_SpherecastRadius: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_AllowActivationOnMobileDevice: 1 +--- !u!114 &1764992134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1764992132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 0 + m_DragThreshold: 5 +--- !u!4 &1764992135 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1764992132} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.0750911, y: 0.6187066, z: -1.8188953} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2026317946 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2026317950} + - component: {fileID: 2026317949} + - component: {fileID: 2026317948} + - component: {fileID: 2026317947} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2026317947 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 62db2d638434d5a488dfb1e789e34b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &2026317948 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2026317949 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2026317950 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2026317946} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 537728712} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &2080101472 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400006, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11400010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: useProfileData + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400008, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &2080101473 stripped +GameObject: + m_PrefabParentObject: {fileID: 100014, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &2080101474 stripped +GameObject: + m_PrefabParentObject: {fileID: 100010, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!20 &2080101475 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101473} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 2 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!20 &2080101476 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101474} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 1 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &2080101477 stripped +GameObject: + m_PrefabParentObject: {fileID: 134650, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!1 &2080101478 stripped +GameObject: + m_PrefabParentObject: {fileID: 168962, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!4 &2080101479 stripped +Transform: + m_PrefabParentObject: {fileID: 400012, guid: ce816f2e6abb0504092c23ed9b970dfd, type: 2} + m_PrefabInternal: {fileID: 2080101472} +--- !u!54 &2080101480 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101477} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!54 &2080101482 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2080101478} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 diff --git a/Assets/Oculus/VR/Scenes/UI.unity.meta b/Assets/Oculus/VR/Scenes/UI.unity.meta new file mode 100644 index 0000000..6ee77c3 --- /dev/null +++ b/Assets/Oculus/VR/Scenes/UI.unity.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 1f4d3ae64a10d434db219de8b14348e1 +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Oculus/VR/Scripts.meta b/Assets/Oculus/VR/Scripts.meta new file mode 100644 index 0000000..a99edcf --- /dev/null +++ b/Assets/Oculus/VR/Scripts.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 859d6d3fcffe1bb41ac06f93d267fc9d +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Oculus/VR/Scripts/Composition.meta b/Assets/Oculus/VR/Scripts/Composition.meta new file mode 100644 index 0000000..5eca0fe --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1f92828e69374384b8cb197653871a6e +folderAsset: yes +timeCreated: 1502989983 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs b/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs new file mode 100644 index 0000000..a35bd7c --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs @@ -0,0 +1,306 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + +public abstract class OVRCameraComposition : OVRComposition { + protected GameObject cameraFramePlaneObject = null; + protected float cameraFramePlaneDistance; + + protected readonly bool hasCameraDeviceOpened = false; + protected readonly bool useDynamicLighting = false; + + internal readonly OVRPlugin.CameraDevice cameraDevice = OVRPlugin.CameraDevice.WebCamera0; + + private Mesh boundaryMesh = null; + private float boundaryMeshTopY = 0.0f; + private float boundaryMeshBottomY = 0.0f; + private OVRManager.VirtualGreenScreenType boundaryMeshType = OVRManager.VirtualGreenScreenType.Off; + + protected OVRCameraComposition(GameObject parentObject, Camera mainCamera, OVRManager.CameraDevice inCameraDevice, bool inUseDynamicLighting, OVRManager.DepthQuality depthQuality) + : base(parentObject, mainCamera) + { + cameraDevice = OVRCompositionUtil.ConvertCameraDevice(inCameraDevice); + + Debug.Assert(!hasCameraDeviceOpened); + Debug.Assert(!OVRPlugin.IsCameraDeviceAvailable(cameraDevice) || !OVRPlugin.HasCameraDeviceOpened(cameraDevice)); + hasCameraDeviceOpened = false; + useDynamicLighting = inUseDynamicLighting; + + bool cameraSupportsDepth = OVRPlugin.DoesCameraDeviceSupportDepth(cameraDevice); + if (useDynamicLighting && !cameraSupportsDepth) + { + Debug.LogWarning("The camera device doesn't support depth. The result of dynamic lighting might not be correct"); + } + + if (OVRPlugin.IsCameraDeviceAvailable(cameraDevice)) + { + OVRPlugin.CameraExtrinsics extrinsics; + OVRPlugin.CameraIntrinsics intrinsics; + OVRPlugin.Posef calibrationRawPose; + if (OVRPlugin.GetExternalCameraCount() > 0 && OVRPlugin.GetMixedRealityCameraInfo(0, out extrinsics, out intrinsics, out calibrationRawPose)) + { + OVRPlugin.SetCameraDevicePreferredColorFrameSize(cameraDevice, intrinsics.ImageSensorPixelResolution.w, intrinsics.ImageSensorPixelResolution.h); + } + + if (useDynamicLighting) + { + OVRPlugin.SetCameraDeviceDepthSensingMode(cameraDevice, OVRPlugin.CameraDeviceDepthSensingMode.Fill); + OVRPlugin.CameraDeviceDepthQuality quality = OVRPlugin.CameraDeviceDepthQuality.Medium; + if (depthQuality == OVRManager.DepthQuality.Low) + { + quality = OVRPlugin.CameraDeviceDepthQuality.Low; + } + else if (depthQuality == OVRManager.DepthQuality.Medium) + { + quality = OVRPlugin.CameraDeviceDepthQuality.Medium; + } + else if (depthQuality == OVRManager.DepthQuality.High) + { + quality = OVRPlugin.CameraDeviceDepthQuality.High; + } + else + { + Debug.LogWarning("Unknown depth quality"); + } + OVRPlugin.SetCameraDevicePreferredDepthQuality(cameraDevice, quality); + } + + Debug.LogFormat("Opening camera device {0}", cameraDevice); + OVRPlugin.OpenCameraDevice(cameraDevice); + if (OVRPlugin.HasCameraDeviceOpened(cameraDevice)) + { + Debug.LogFormat("Opened camera device {0}", cameraDevice); + hasCameraDeviceOpened = true; + } + } + } + + public override void Cleanup() + { + OVRCompositionUtil.SafeDestroy(ref cameraFramePlaneObject); + if (hasCameraDeviceOpened) + { + Debug.LogFormat("Close camera device {0}", cameraDevice); + OVRPlugin.CloseCameraDevice(cameraDevice); + } + } + + public override void RecenterPose() + { + boundaryMesh = null; + } + + protected void RefreshCameraFramePlaneObject(GameObject parentObject, Camera mixedRealityCamera, bool useDynamicLighting) + { + OVRCompositionUtil.SafeDestroy(ref cameraFramePlaneObject); + + Debug.Assert(cameraFramePlaneObject == null); + cameraFramePlaneObject = GameObject.CreatePrimitive(PrimitiveType.Quad); + cameraFramePlaneObject.name = "OculusMRC_CameraFrame"; + cameraFramePlaneObject.transform.parent = cameraInTrackingSpace ? cameraRig.trackingSpace : parentObject.transform; + cameraFramePlaneObject.GetComponent().enabled = false; + cameraFramePlaneObject.GetComponent().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + Material cameraFrameMaterial = new Material(Shader.Find(useDynamicLighting ? "Oculus/OVRMRCameraFrameLit" : "Oculus/OVRMRCameraFrame")); + cameraFramePlaneObject.GetComponent().material = cameraFrameMaterial; + cameraFrameMaterial.SetColor("_Color", Color.white); + cameraFrameMaterial.SetFloat("_Visible", 0.0f); + cameraFramePlaneObject.transform.localScale = new Vector3(4, 4, 4); + cameraFramePlaneObject.SetActive(true); + OVRCameraFrameCompositionManager cameraFrameCompositionManager = mixedRealityCamera.gameObject.AddComponent(); + cameraFrameCompositionManager.cameraFrameGameObj = cameraFramePlaneObject; + cameraFrameCompositionManager.composition = this; + } + + private bool nullcameraRigWarningDisplayed = false; + protected void UpdateCameraFramePlaneObject(Camera mainCamera, Camera mixedRealityCamera, RenderTexture boundaryMeshMaskTexture) + { + bool hasError = false; + Material cameraFrameMaterial = cameraFramePlaneObject.GetComponent().material; + Texture2D colorTexture = Texture2D.blackTexture; + Texture2D depthTexture = Texture2D.whiteTexture; + if (OVRPlugin.IsCameraDeviceColorFrameAvailable(cameraDevice)) + { + colorTexture = OVRPlugin.GetCameraDeviceColorFrameTexture(cameraDevice); + } + else + { + Debug.LogWarning("Camera: color frame not ready"); + hasError = true; + } + bool cameraSupportsDepth = OVRPlugin.DoesCameraDeviceSupportDepth(cameraDevice); + if (useDynamicLighting && cameraSupportsDepth) + { + if (OVRPlugin.IsCameraDeviceDepthFrameAvailable(cameraDevice)) + { + depthTexture = OVRPlugin.GetCameraDeviceDepthFrameTexture(cameraDevice); + } + else + { + Debug.LogWarning("Camera: depth frame not ready"); + hasError = true; + } + } + if (!hasError) + { + Vector3 offset = mainCamera.transform.position - mixedRealityCamera.transform.position; + float distance = Vector3.Dot(mixedRealityCamera.transform.forward, offset); + cameraFramePlaneDistance = distance; + + cameraFramePlaneObject.transform.position = mixedRealityCamera.transform.position + mixedRealityCamera.transform.forward * distance; + cameraFramePlaneObject.transform.rotation = mixedRealityCamera.transform.rotation; + + float tanFov = Mathf.Tan(mixedRealityCamera.fieldOfView * Mathf.Deg2Rad * 0.5f); + cameraFramePlaneObject.transform.localScale = new Vector3(distance * mixedRealityCamera.aspect * tanFov * 2.0f, distance * tanFov * 2.0f, 1.0f); + + float worldHeight = distance * tanFov * 2.0f; + float worldWidth = worldHeight * mixedRealityCamera.aspect; + + float cullingDistance = float.MaxValue; + + if (OVRManager.instance.virtualGreenScreenType != OVRManager.VirtualGreenScreenType.Off) + { + RefreshBoundaryMesh(mixedRealityCamera, out cullingDistance); + } + + cameraFrameMaterial.mainTexture = colorTexture; + cameraFrameMaterial.SetTexture("_DepthTex", depthTexture); + cameraFrameMaterial.SetVector("_FlipParams", new Vector4((OVRManager.instance.flipCameraFrameHorizontally ? 1.0f : 0.0f), (OVRManager.instance.flipCameraFrameVertically ? 1.0f : 0.0f), 0.0f, 0.0f)); + cameraFrameMaterial.SetColor("_ChromaKeyColor", OVRManager.instance.chromaKeyColor); + cameraFrameMaterial.SetFloat("_ChromaKeySimilarity", OVRManager.instance.chromaKeySimilarity); + cameraFrameMaterial.SetFloat("_ChromaKeySmoothRange", OVRManager.instance.chromaKeySmoothRange); + cameraFrameMaterial.SetFloat("_ChromaKeySpillRange", OVRManager.instance.chromaKeySpillRange); + cameraFrameMaterial.SetVector("_TextureDimension", new Vector4(colorTexture.width, colorTexture.height, 1.0f / colorTexture.width, 1.0f / colorTexture.height)); + cameraFrameMaterial.SetVector("_TextureWorldSize", new Vector4(worldWidth, worldHeight, 0, 0)); + cameraFrameMaterial.SetFloat("_SmoothFactor", OVRManager.instance.dynamicLightingSmoothFactor); + cameraFrameMaterial.SetFloat("_DepthVariationClamp", OVRManager.instance.dynamicLightingDepthVariationClampingValue); + cameraFrameMaterial.SetFloat("_CullingDistance", cullingDistance); + if (OVRManager.instance.virtualGreenScreenType == OVRManager.VirtualGreenScreenType.Off || boundaryMesh == null || boundaryMeshMaskTexture == null) + { + cameraFrameMaterial.SetTexture("_MaskTex", Texture2D.whiteTexture); + } + else + { + if (cameraRig == null) + { + if (!nullcameraRigWarningDisplayed) + { + Debug.LogWarning("Could not find the OVRCameraRig/CenterEyeAnchor object. Please check if the OVRCameraRig has been setup properly. The virtual green screen has been temporarily disabled"); + nullcameraRigWarningDisplayed = true; + } + + cameraFrameMaterial.SetTexture("_MaskTex", Texture2D.whiteTexture); + } + else + { + if (nullcameraRigWarningDisplayed) + { + Debug.Log("OVRCameraRig/CenterEyeAnchor object found. Virtual green screen is activated"); + nullcameraRigWarningDisplayed = false; + } + + cameraFrameMaterial.SetTexture("_MaskTex", boundaryMeshMaskTexture); + } + } + } + } + + protected void RefreshBoundaryMesh(Camera camera, out float cullingDistance) + { + float depthTolerance = OVRManager.instance.virtualGreenScreenApplyDepthCulling ? OVRManager.instance.virtualGreenScreenDepthTolerance : float.PositiveInfinity; + cullingDistance = OVRCompositionUtil.GetMaximumBoundaryDistance(camera, OVRCompositionUtil.ToBoundaryType(OVRManager.instance.virtualGreenScreenType)) + depthTolerance; + if (boundaryMesh == null || boundaryMeshType != OVRManager.instance.virtualGreenScreenType || boundaryMeshTopY != OVRManager.instance.virtualGreenScreenTopY || boundaryMeshBottomY != OVRManager.instance.virtualGreenScreenBottomY) + { + boundaryMeshTopY = OVRManager.instance.virtualGreenScreenTopY; + boundaryMeshBottomY = OVRManager.instance.virtualGreenScreenBottomY; + boundaryMesh = OVRCompositionUtil.BuildBoundaryMesh(OVRCompositionUtil.ToBoundaryType(OVRManager.instance.virtualGreenScreenType), boundaryMeshTopY, boundaryMeshBottomY); + boundaryMeshType = OVRManager.instance.virtualGreenScreenType; + + // Creating GameObject for testing purpose only + //GameObject boundaryMeshObject = new GameObject("BoundaryMeshObject"); + //boundaryMeshObject.AddComponent().mesh = boundaryMesh; + //boundaryMeshObject.AddComponent(); + } + } + + public class OVRCameraFrameCompositionManager : MonoBehaviour + { + public GameObject cameraFrameGameObj; + public OVRCameraComposition composition; + public RenderTexture boundaryMeshMaskTexture; + private Material cameraFrameMaterial; + private Material whiteMaterial; + + void Start() + { + Shader shader = Shader.Find("Oculus/Unlit"); + if (!shader) + { + Debug.LogError("Oculus/Unlit shader does not exist"); + return; + } + whiteMaterial = new Material(shader); + whiteMaterial.color = Color.white; + } + + void OnPreRender() + { + if (OVRManager.instance.virtualGreenScreenType != OVRManager.VirtualGreenScreenType.Off && boundaryMeshMaskTexture != null && composition.boundaryMesh != null) + { + RenderTexture oldRT = RenderTexture.active; + RenderTexture.active = boundaryMeshMaskTexture; + + // The camera matrices haven't been setup when OnPreRender() is executed. Load the projection manually + GL.PushMatrix(); + GL.LoadProjectionMatrix(GetComponent().projectionMatrix); + + GL.Clear(false, true, Color.black); + + for (int i = 0; i < whiteMaterial.passCount; ++i) + { + if (whiteMaterial.SetPass(i)) + { + Graphics.DrawMeshNow(composition.boundaryMesh, composition.cameraRig.ComputeTrackReferenceMatrix()); + } + } + + GL.PopMatrix(); + RenderTexture.active = oldRT; + } + + if (cameraFrameGameObj) + { + if (cameraFrameMaterial == null) + cameraFrameMaterial = cameraFrameGameObj.GetComponent().material; + cameraFrameMaterial.SetFloat("_Visible", 1.0f); + } + } + void OnPostRender() + { + if (cameraFrameGameObj) + { + Debug.Assert(cameraFrameMaterial); + cameraFrameMaterial.SetFloat("_Visible", 0.0f); + } + } + } + +} + +#endif diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs.meta new file mode 100644 index 0000000..f2a171c --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRCameraComposition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 70818bad1fe6859439b190a61dfb6eb8 +timeCreated: 1503089686 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs b/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs new file mode 100644 index 0000000..e2b265e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs @@ -0,0 +1,105 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if UNITY_ANDROID && !UNITY_EDITOR +#define OVR_ANDROID_MRC +#endif + +using UnityEngine; +using System.Collections; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + +public abstract class OVRComposition { + + public bool cameraInTrackingSpace = false; + public OVRCameraRig cameraRig = null; + + protected OVRComposition(GameObject parentObject, Camera mainCamera) + { + RefreshCameraRig(parentObject, mainCamera); + } + + public abstract OVRManager.CompositionMethod CompositionMethod(); + + public abstract void Update(GameObject gameObject, Camera mainCamera); + public abstract void Cleanup(); + + public virtual void RecenterPose() { } + + protected bool usingLastAttachedNodePose = false; + protected OVRPose lastAttachedNodePose = new OVRPose(); // Sometimes the attach node pose is not readable (lose tracking, low battery, etc.) Use the last pose instead when it happens + + public void RefreshCameraRig(GameObject parentObject, Camera mainCamera) + { + OVRCameraRig cameraRig = mainCamera.GetComponentInParent(); + if (cameraRig == null) + { + cameraRig = parentObject.GetComponent(); + } + cameraInTrackingSpace = (cameraRig != null && cameraRig.trackingSpace != null); + this.cameraRig = cameraRig; + Debug.Log(cameraRig == null ? "[OVRComposition] CameraRig not found" : "[OVRComposition] CameraRig found"); + } + + public OVRPose ComputeCameraWorldSpacePose(OVRPlugin.CameraExtrinsics extrinsics, OVRPlugin.Posef calibrationRawPose) + { + OVRPose trackingSpacePose = ComputeCameraTrackingSpacePose(extrinsics, calibrationRawPose); + OVRPose worldSpacePose = OVRExtensions.ToWorldSpacePose(trackingSpacePose); + return worldSpacePose; + } + + public OVRPose ComputeCameraTrackingSpacePose(OVRPlugin.CameraExtrinsics extrinsics, OVRPlugin.Posef calibrationRawPose) + { + OVRPose trackingSpacePose = new OVRPose(); + + OVRPose cameraTrackingSpacePose = extrinsics.RelativePose.ToOVRPose(); +#if OVR_ANDROID_MRC + OVRPose rawPose = OVRPlugin.GetTrackingTransformRawPose().ToOVRPose(); + cameraTrackingSpacePose = rawPose * (calibrationRawPose.ToOVRPose().Inverse() * cameraTrackingSpacePose); +#endif + trackingSpacePose = cameraTrackingSpacePose; + + if (extrinsics.AttachedToNode != OVRPlugin.Node.None && OVRPlugin.GetNodePresent(extrinsics.AttachedToNode)) + { + if (usingLastAttachedNodePose) + { + Debug.Log("The camera attached node get tracked"); + usingLastAttachedNodePose = false; + } + OVRPose attachedNodePose = OVRPlugin.GetNodePose(extrinsics.AttachedToNode, OVRPlugin.Step.Render).ToOVRPose(); + lastAttachedNodePose = attachedNodePose; + trackingSpacePose = attachedNodePose * trackingSpacePose; + } + else + { + if (extrinsics.AttachedToNode != OVRPlugin.Node.None) + { + if (!usingLastAttachedNodePose) + { + Debug.LogWarning("The camera attached node could not be tracked, using the last pose"); + usingLastAttachedNodePose = true; + } + trackingSpacePose = lastAttachedNodePose * trackingSpacePose; + } + } + + return trackingSpacePose; + } + +} + +#endif diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs.meta new file mode 100644 index 0000000..9b04503 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRComposition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 829a382f3380d4b46ad9670463232a0b +timeCreated: 1502990005 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs b/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs new file mode 100644 index 0000000..e5ca057 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs @@ -0,0 +1,168 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections.Generic; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + +internal class OVRCompositionUtil { + + public static void SafeDestroy(GameObject obj) + { + if (Application.isPlaying) + { + GameObject.Destroy(obj); + } + else + { + GameObject.DestroyImmediate(obj); + } + } + + public static void SafeDestroy(ref GameObject obj) + { + if (obj != null) + { + SafeDestroy(obj); + obj = null; + } + } + + public static OVRPlugin.CameraDevice ConvertCameraDevice(OVRManager.CameraDevice cameraDevice) + { + if (cameraDevice == OVRManager.CameraDevice.WebCamera0) + { + return OVRPlugin.CameraDevice.WebCamera0; + } + else if (cameraDevice == OVRManager.CameraDevice.WebCamera1) + { + return OVRPlugin.CameraDevice.WebCamera1; + } + else if (cameraDevice == OVRManager.CameraDevice.ZEDCamera) + { + return OVRPlugin.CameraDevice.ZEDCamera; + } + else + { + return OVRPlugin.CameraDevice.None; + } + } + + public static OVRBoundary.BoundaryType ToBoundaryType(OVRManager.VirtualGreenScreenType type) + { + if (type == OVRManager.VirtualGreenScreenType.OuterBoundary) + { + return OVRBoundary.BoundaryType.OuterBoundary; + } + else if (type == OVRManager.VirtualGreenScreenType.PlayArea) + { + return OVRBoundary.BoundaryType.PlayArea; + } + else + { + Debug.LogWarning("Unmatched VirtualGreenScreenType"); + return OVRBoundary.BoundaryType.OuterBoundary; + } + } + + public static Vector3 GetWorldPosition(Vector3 trackingSpacePosition) + { + OVRPose tsPose; + tsPose.position = trackingSpacePosition; + tsPose.orientation = Quaternion.identity; + OVRPose wsPose = OVRExtensions.ToWorldSpacePose(tsPose); + Vector3 pos = wsPose.position; + return pos; + } + + public static float GetMaximumBoundaryDistance(Camera camera, OVRBoundary.BoundaryType boundaryType) + { + if (!OVRManager.boundary.GetConfigured()) + { + return float.MaxValue; + } + + Vector3[] geometry = OVRManager.boundary.GetGeometry(boundaryType); + if (geometry.Length == 0) + { + return float.MaxValue; + } + + float maxDistance = -float.MaxValue; + foreach (Vector3 v in geometry) + { + Vector3 pos = GetWorldPosition(v); + float distance = Vector3.Dot(camera.transform.forward, pos); + if (maxDistance < distance) + { + maxDistance = distance; + } + } + return maxDistance; + } + + public static Mesh BuildBoundaryMesh(OVRBoundary.BoundaryType boundaryType, float topY, float bottomY) + { + if (!OVRManager.boundary.GetConfigured()) + { + return null; + } + + List geometry = new List(OVRManager.boundary.GetGeometry(boundaryType)); + if (geometry.Count == 0) + { + return null; + } + + geometry.Add(geometry[0]); + int numPoints = geometry.Count; + + Vector3[] vertices = new Vector3[numPoints * 2]; + Vector2[] uvs = new Vector2[numPoints * 2]; + for (int i = 0; i < numPoints; ++i) + { + Vector3 v = geometry[i]; + vertices[i] = new Vector3(v.x, bottomY, v.z); + vertices[i + numPoints] = new Vector3(v.x, topY, v.z); + uvs[i] = new Vector2((float)i / (numPoints - 1), 0.0f); + uvs[i + numPoints] = new Vector2(uvs[i].x, 1.0f); + } + + int[] triangles = new int[(numPoints - 1) * 2 * 3]; + for (int i = 0; i < numPoints - 1; ++i) + { + // the geometry is built clockwised. only the back faces should be rendered in the camera frame mask + + triangles[i * 6 + 0] = i; + triangles[i * 6 + 1] = i + numPoints; + triangles[i * 6 + 2] = i + 1 + numPoints; + + triangles[i * 6 + 3] = i; + triangles[i * 6 + 4] = i + 1 + numPoints; + triangles[i * 6 + 5] = i + 1; + } + + Mesh mesh = new Mesh(); + mesh.vertices = vertices; + mesh.uv = uvs; + mesh.triangles = triangles; + return mesh; + } + +} + +#endif diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs.meta new file mode 100644 index 0000000..eac97a9 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRCompositionUtil.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 43bf91d46b2eb874a842be95aee2cc9a +timeCreated: 1502992822 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs b/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs new file mode 100644 index 0000000..19b39fb --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs @@ -0,0 +1,172 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + +public class OVRDirectComposition : OVRCameraComposition +{ + private GameObject previousMainCameraObject = null; + public GameObject directCompositionCameraGameObject = null; + public Camera directCompositionCamera = null; + public RenderTexture boundaryMeshMaskTexture = null; + + public override OVRManager.CompositionMethod CompositionMethod() { return OVRManager.CompositionMethod.Direct; } + + public OVRDirectComposition(GameObject parentObject, Camera mainCamera, OVRManager.CameraDevice cameraDevice, bool useDynamicLighting, OVRManager.DepthQuality depthQuality) + : base(parentObject, mainCamera, cameraDevice, useDynamicLighting, depthQuality) + { + RefreshCameraObjects(parentObject, mainCamera); + } + + private void RefreshCameraObjects(GameObject parentObject, Camera mainCamera) + { + if (!hasCameraDeviceOpened) + { + Debug.LogWarning("[OVRDirectComposition] RefreshCameraObjects(): Unable to open camera device " + cameraDevice); + return; + } + + if (mainCamera.gameObject != previousMainCameraObject) + { + Debug.LogFormat("[OVRDirectComposition] Camera refreshed. Rebind camera to {0}", mainCamera.gameObject.name); + + OVRCompositionUtil.SafeDestroy(ref directCompositionCameraGameObject); + directCompositionCamera = null; + + RefreshCameraRig(parentObject, mainCamera); + + Debug.Assert(directCompositionCameraGameObject == null); + directCompositionCameraGameObject = Object.Instantiate(mainCamera.gameObject); + directCompositionCameraGameObject.name = "OculusMRC_DirectCompositionCamera"; + directCompositionCameraGameObject.transform.parent = cameraInTrackingSpace ? cameraRig.trackingSpace : parentObject.transform; + if (directCompositionCameraGameObject.GetComponent()) + { + Object.Destroy(directCompositionCameraGameObject.GetComponent()); + } + if (directCompositionCameraGameObject.GetComponent()) + { + Object.Destroy(directCompositionCameraGameObject.GetComponent()); + } + directCompositionCamera = directCompositionCameraGameObject.GetComponent(); + directCompositionCamera.stereoTargetEye = StereoTargetEyeMask.None; + directCompositionCamera.depth = float.MaxValue; + directCompositionCamera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f); + directCompositionCamera.cullingMask = mainCamera.cullingMask & (~OVRManager.instance.extraHiddenLayers); + + Debug.Log("DirectComposition activated : useDynamicLighting " + (useDynamicLighting ? "ON" : "OFF")); + RefreshCameraFramePlaneObject(parentObject, directCompositionCamera, useDynamicLighting); + + previousMainCameraObject = mainCamera.gameObject; + } + } + + public override void Update(GameObject gameObject, Camera mainCamera) + { + if (!hasCameraDeviceOpened) + { + return; + } + + RefreshCameraObjects(gameObject, mainCamera); + + if (!OVRPlugin.SetHandNodePoseStateLatency(OVRManager.instance.handPoseStateLatency)) + { + Debug.LogWarning("HandPoseStateLatency is invalid. Expect a value between 0.0 to 0.5, get " + OVRManager.instance.handPoseStateLatency); + } + + directCompositionCamera.clearFlags = mainCamera.clearFlags; + directCompositionCamera.backgroundColor = mainCamera.backgroundColor; + directCompositionCamera.cullingMask = mainCamera.cullingMask & (~OVRManager.instance.extraHiddenLayers); + directCompositionCamera.nearClipPlane = mainCamera.nearClipPlane; + directCompositionCamera.farClipPlane = mainCamera.farClipPlane; + + if (OVRMixedReality.useFakeExternalCamera || OVRPlugin.GetExternalCameraCount() == 0) + { + OVRPose trackingSpacePose = new OVRPose(); + trackingSpacePose.position = OVRManager.instance.trackingOriginType == OVRManager.TrackingOrigin.EyeLevel ? + OVRMixedReality.fakeCameraEyeLevelPosition : + OVRMixedReality.fakeCameraFloorLevelPosition; + trackingSpacePose.orientation = OVRMixedReality.fakeCameraRotation; + directCompositionCamera.fieldOfView = OVRMixedReality.fakeCameraFov; + directCompositionCamera.aspect = OVRMixedReality.fakeCameraAspect; + if (cameraInTrackingSpace) + { + directCompositionCamera.transform.FromOVRPose(trackingSpacePose, true); + } + else + { + OVRPose worldSpacePose = new OVRPose(); + worldSpacePose = OVRExtensions.ToWorldSpacePose(trackingSpacePose); + directCompositionCamera.transform.FromOVRPose(worldSpacePose); + } + } + else + { + OVRPlugin.CameraExtrinsics extrinsics; + OVRPlugin.CameraIntrinsics intrinsics; + OVRPlugin.Posef calibrationRawPose; + + // So far, only support 1 camera for MR and always use camera index 0 + if (OVRPlugin.GetMixedRealityCameraInfo(0, out extrinsics, out intrinsics, out calibrationRawPose)) + { + float fovY = Mathf.Atan(intrinsics.FOVPort.UpTan) * Mathf.Rad2Deg * 2; + float aspect = intrinsics.FOVPort.LeftTan / intrinsics.FOVPort.UpTan; + directCompositionCamera.fieldOfView = fovY; + directCompositionCamera.aspect = aspect; + if (cameraInTrackingSpace) + { + OVRPose trackingSpacePose = ComputeCameraTrackingSpacePose(extrinsics, calibrationRawPose); + directCompositionCamera.transform.FromOVRPose(trackingSpacePose, true); + } + else + { + OVRPose worldSpacePose = ComputeCameraWorldSpacePose(extrinsics, calibrationRawPose); + directCompositionCamera.transform.FromOVRPose(worldSpacePose); + } + } + else + { + Debug.LogWarning("Failed to get external camera information"); + } + } + + if (hasCameraDeviceOpened) + { + if (boundaryMeshMaskTexture == null || boundaryMeshMaskTexture.width != Screen.width || boundaryMeshMaskTexture.height != Screen.height) + { + boundaryMeshMaskTexture = new RenderTexture(Screen.width, Screen.height, 0, RenderTextureFormat.R8); + boundaryMeshMaskTexture.Create(); + } + UpdateCameraFramePlaneObject(mainCamera, directCompositionCamera, boundaryMeshMaskTexture); + directCompositionCamera.GetComponent().boundaryMeshMaskTexture = boundaryMeshMaskTexture; + } + } + + public override void Cleanup() + { + base.Cleanup(); + + OVRCompositionUtil.SafeDestroy(ref directCompositionCameraGameObject); + directCompositionCamera = null; + + Debug.Log("DirectComposition deactivated"); + } +} + +#endif diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs.meta new file mode 100644 index 0000000..fadfd75 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRDirectComposition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8e9d1c62d6c68c7429ce265558cfd2b2 +timeCreated: 1502990248 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs b/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs new file mode 100644 index 0000000..9b5b05e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs @@ -0,0 +1,484 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if UNITY_ANDROID && !UNITY_EDITOR +#define OVR_ANDROID_MRC +#endif + +using UnityEngine; +using System.Collections.Generic; +using System.Threading; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + +public class OVRExternalComposition : OVRComposition +{ + private GameObject previousMainCameraObject = null; + public GameObject foregroundCameraGameObject = null; + public Camera foregroundCamera = null; + public GameObject backgroundCameraGameObject = null; + public Camera backgroundCamera = null; + public GameObject cameraProxyPlane = null; +#if OVR_ANDROID_MRC + public AudioListener audioListener; + public OVRMRAudioFilter audioFilter; + public RenderTexture[] mrcRenderTextureArray = new RenderTexture[2]; + public int frameIndex; + public int lastMrcEncodeFrameSyncId; +#endif + + public override OVRManager.CompositionMethod CompositionMethod() { return OVRManager.CompositionMethod.External; } + + public OVRExternalComposition(GameObject parentObject, Camera mainCamera) + : base(parentObject, mainCamera) + { +#if OVR_ANDROID_MRC + int frameWidth; + int frameHeight; + OVRPlugin.Media.GetMrcFrameSize(out frameWidth, out frameHeight); + Debug.LogFormat("[OVRExternalComposition] Create render texture {0}, {1}", frameWidth, frameHeight); + for (int i=0; i<2; ++i) + { + mrcRenderTextureArray[i] = new RenderTexture(frameWidth, frameHeight, 24, RenderTextureFormat.ARGB32); + mrcRenderTextureArray[i].Create(); + } + + frameIndex = 0; + lastMrcEncodeFrameSyncId = -1; +#endif + RefreshCameraObjects(parentObject, mainCamera); + } + + private void RefreshCameraObjects(GameObject parentObject, Camera mainCamera) + { + if (mainCamera.gameObject != previousMainCameraObject) + { + Debug.LogFormat("[OVRExternalComposition] Camera refreshed. Rebind camera to {0}", mainCamera.gameObject.name); + + OVRCompositionUtil.SafeDestroy(ref backgroundCameraGameObject); + backgroundCamera = null; + OVRCompositionUtil.SafeDestroy(ref foregroundCameraGameObject); + foregroundCamera = null; + OVRCompositionUtil.SafeDestroy(ref cameraProxyPlane); + + RefreshCameraRig(parentObject, mainCamera); + + Debug.Assert(backgroundCameraGameObject == null); + backgroundCameraGameObject = Object.Instantiate(mainCamera.gameObject); + backgroundCameraGameObject.name = "OculusMRC_BackgroundCamera"; + backgroundCameraGameObject.transform.parent = cameraInTrackingSpace ? cameraRig.trackingSpace : parentObject.transform; + if (backgroundCameraGameObject.GetComponent()) + { + Object.Destroy(backgroundCameraGameObject.GetComponent()); + } + if (backgroundCameraGameObject.GetComponent()) + { + Object.Destroy(backgroundCameraGameObject.GetComponent()); + } + backgroundCamera = backgroundCameraGameObject.GetComponent(); + backgroundCamera.tag = "Untagged"; + backgroundCamera.stereoTargetEye = StereoTargetEyeMask.None; + backgroundCamera.depth = 99990.0f; + backgroundCamera.rect = new Rect(0.0f, 0.0f, 0.5f, 1.0f); + backgroundCamera.cullingMask = mainCamera.cullingMask & (~OVRManager.instance.extraHiddenLayers); +#if OVR_ANDROID_MRC + backgroundCamera.targetTexture = mrcRenderTextureArray[0]; +#endif + + Debug.Assert(foregroundCameraGameObject == null); + foregroundCameraGameObject = Object.Instantiate(mainCamera.gameObject); + foregroundCameraGameObject.name = "OculusMRC_ForgroundCamera"; + foregroundCameraGameObject.transform.parent = cameraInTrackingSpace ? cameraRig.trackingSpace : parentObject.transform; + if (foregroundCameraGameObject.GetComponent()) + { + Object.Destroy(foregroundCameraGameObject.GetComponent()); + } + if (foregroundCameraGameObject.GetComponent()) + { + Object.Destroy(foregroundCameraGameObject.GetComponent()); + } + foregroundCamera = foregroundCameraGameObject.GetComponent(); + foregroundCamera.tag = "Untagged"; + foregroundCamera.stereoTargetEye = StereoTargetEyeMask.None; + foregroundCamera.depth = backgroundCamera.depth + 1.0f; // enforce the forground be rendered after the background + foregroundCamera.rect = new Rect(0.5f, 0.0f, 0.5f, 1.0f); + foregroundCamera.clearFlags = CameraClearFlags.Color; +#if OVR_ANDROID_MRC + foregroundCamera.backgroundColor = OVRManager.instance.externalCompositionBackdropColorQuest; +#else + foregroundCamera.backgroundColor = OVRManager.instance.externalCompositionBackdropColorRift; +#endif + foregroundCamera.cullingMask = mainCamera.cullingMask & (~OVRManager.instance.extraHiddenLayers); +#if OVR_ANDROID_MRC + foregroundCamera.targetTexture = mrcRenderTextureArray[0]; +#endif + + // Create cameraProxyPlane for clipping + Debug.Assert(cameraProxyPlane == null); + cameraProxyPlane = GameObject.CreatePrimitive(PrimitiveType.Quad); + cameraProxyPlane.name = "OculusMRC_ProxyClipPlane"; + cameraProxyPlane.transform.parent = cameraInTrackingSpace ? cameraRig.trackingSpace : parentObject.transform; + cameraProxyPlane.GetComponent().enabled = false; + cameraProxyPlane.GetComponent().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; + Material clipMaterial = new Material(Shader.Find("Oculus/OVRMRClipPlane")); + cameraProxyPlane.GetComponent().material = clipMaterial; +#if OVR_ANDROID_MRC + clipMaterial.SetColor("_Color", OVRManager.instance.externalCompositionBackdropColorQuest); +#else + clipMaterial.SetColor("_Color", OVRManager.instance.externalCompositionBackdropColorRift); +#endif + clipMaterial.SetFloat("_Visible", 0.0f); + cameraProxyPlane.transform.localScale = new Vector3(1000, 1000, 1000); + cameraProxyPlane.SetActive(true); + OVRMRForegroundCameraManager foregroundCameraManager = foregroundCameraGameObject.AddComponent(); + foregroundCameraManager.composition = this; + foregroundCameraManager.clipPlaneGameObj = cameraProxyPlane; + + previousMainCameraObject = mainCamera.gameObject; + } + } + +#if OVR_ANDROID_MRC + private void RefreshAudioFilter() + { + if (cameraRig != null && (audioListener == null || !audioListener.enabled || !audioListener.gameObject.activeInHierarchy)) + { + CleanupAudioFilter(); + + AudioListener tmpAudioListener = cameraRig.centerEyeAnchor.gameObject.activeInHierarchy ? cameraRig.centerEyeAnchor.GetComponent() : null; + if (tmpAudioListener != null && !tmpAudioListener.enabled) tmpAudioListener = null; + if (tmpAudioListener == null) + { + if (Camera.main != null && Camera.main.gameObject.activeInHierarchy) + { + tmpAudioListener = Camera.main.GetComponent(); + if (tmpAudioListener != null && !tmpAudioListener.enabled) tmpAudioListener = null; + } + } + if (tmpAudioListener == null) + { + Object[] allListeners = Object.FindObjectsOfType(); + foreach (var l in allListeners) + { + AudioListener al = l as AudioListener; + if (al != null && al.enabled && al.gameObject.activeInHierarchy) + { + tmpAudioListener = al; + break; + } + } + } + if (tmpAudioListener == null) + { + Debug.LogWarning("[OVRExternalComposition] No AudioListener in scene"); + } + else + { + Debug.LogFormat("[OVRExternalComposition] AudioListener found, obj {0}", tmpAudioListener.gameObject.name); + } + audioListener = tmpAudioListener; + + audioFilter = audioListener.gameObject.AddComponent(); + audioFilter.composition = this; + Debug.LogFormat("OVRMRAudioFilter added"); + } + } + + private float[] cachedAudioDataArray = null; + + private int CastMrcFrame(int castTextureIndex) + { + int audioFrames; + int audioChannels; + GetAndResetAudioData(ref cachedAudioDataArray, out audioFrames, out audioChannels); + + int syncId = -1; + //Debug.Log("EncodeFrameThreadObject EncodeMrcFrame"); + bool ret = false; + if (OVRPlugin.Media.GetMrcInputVideoBufferType() == OVRPlugin.Media.InputVideoBufferType.TextureHandle) + { + ret = OVRPlugin.Media.EncodeMrcFrame(mrcRenderTextureArray[castTextureIndex].GetNativeTexturePtr(), cachedAudioDataArray, audioFrames, audioChannels, AudioSettings.dspTime, ref syncId); + } + else + { + ret = OVRPlugin.Media.EncodeMrcFrame(mrcRenderTextureArray[castTextureIndex], cachedAudioDataArray, audioFrames, audioChannels, AudioSettings.dspTime, ref syncId); + } + + if (!ret) + { + Debug.LogWarning("EncodeMrcFrame failed. Likely caused by OBS plugin disconnection"); + return -1; + } + + return syncId; + } + + private void SetCameraTargetTexture(int drawTextureIndex) + { + RenderTexture texture = mrcRenderTextureArray[drawTextureIndex]; + if (backgroundCamera.targetTexture != texture) + { + backgroundCamera.targetTexture = texture; + } + if (foregroundCamera.targetTexture != texture) + { + foregroundCamera.targetTexture = texture; + } + } +#endif + + + public override void Update(GameObject gameObject, Camera mainCamera) + { + RefreshCameraObjects(gameObject, mainCamera); + + OVRPlugin.SetHandNodePoseStateLatency(0.0); // the HandNodePoseStateLatency doesn't apply to the external composition. Always enforce it to 0.0 + +#if OVR_ANDROID_MRC + RefreshAudioFilter(); + + int drawTextureIndex = (frameIndex / 2) % 2; + int castTextureIndex = 1 - drawTextureIndex; + + backgroundCamera.enabled = (frameIndex % 2) == 0; + foregroundCamera.enabled = (frameIndex % 2) == 1; + + if (frameIndex % 2 == 0) + { + if (lastMrcEncodeFrameSyncId != -1) + { + OVRPlugin.Media.SyncMrcFrame(lastMrcEncodeFrameSyncId); + lastMrcEncodeFrameSyncId = -1; + } + lastMrcEncodeFrameSyncId = CastMrcFrame(castTextureIndex); + SetCameraTargetTexture(drawTextureIndex); + } + + ++ frameIndex; +#endif + + backgroundCamera.clearFlags = mainCamera.clearFlags; + backgroundCamera.backgroundColor = mainCamera.backgroundColor; + backgroundCamera.cullingMask = mainCamera.cullingMask & (~OVRManager.instance.extraHiddenLayers); + backgroundCamera.nearClipPlane = mainCamera.nearClipPlane; + backgroundCamera.farClipPlane = mainCamera.farClipPlane; + + foregroundCamera.cullingMask = mainCamera.cullingMask & (~OVRManager.instance.extraHiddenLayers); + foregroundCamera.nearClipPlane = mainCamera.nearClipPlane; + foregroundCamera.farClipPlane = mainCamera.farClipPlane; + + if (OVRMixedReality.useFakeExternalCamera || OVRPlugin.GetExternalCameraCount() == 0) + { + OVRPose worldSpacePose = new OVRPose(); + OVRPose trackingSpacePose = new OVRPose(); + trackingSpacePose.position = OVRManager.instance.trackingOriginType == OVRManager.TrackingOrigin.EyeLevel ? + OVRMixedReality.fakeCameraEyeLevelPosition : + OVRMixedReality.fakeCameraFloorLevelPosition; + trackingSpacePose.orientation = OVRMixedReality.fakeCameraRotation; + worldSpacePose = OVRExtensions.ToWorldSpacePose(trackingSpacePose); + + backgroundCamera.fieldOfView = OVRMixedReality.fakeCameraFov; + backgroundCamera.aspect = OVRMixedReality.fakeCameraAspect; + foregroundCamera.fieldOfView = OVRMixedReality.fakeCameraFov; + foregroundCamera.aspect = OVRMixedReality.fakeCameraAspect; + + if (cameraInTrackingSpace) + { + backgroundCamera.transform.FromOVRPose(trackingSpacePose, true); + foregroundCamera.transform.FromOVRPose(trackingSpacePose, true); + } + else + { + backgroundCamera.transform.FromOVRPose(worldSpacePose); + foregroundCamera.transform.FromOVRPose(worldSpacePose); + } + } + else + { + OVRPlugin.CameraExtrinsics extrinsics; + OVRPlugin.CameraIntrinsics intrinsics; + OVRPlugin.Posef calibrationRawPose; + + // So far, only support 1 camera for MR and always use camera index 0 + if (OVRPlugin.GetMixedRealityCameraInfo(0, out extrinsics, out intrinsics, out calibrationRawPose)) + { + float fovY = Mathf.Atan(intrinsics.FOVPort.UpTan) * Mathf.Rad2Deg * 2; + float aspect = intrinsics.FOVPort.LeftTan / intrinsics.FOVPort.UpTan; + backgroundCamera.fieldOfView = fovY; + backgroundCamera.aspect = aspect; + foregroundCamera.fieldOfView = fovY; + foregroundCamera.aspect = intrinsics.FOVPort.LeftTan / intrinsics.FOVPort.UpTan; + + if (cameraInTrackingSpace) + { + OVRPose trackingSpacePose = ComputeCameraTrackingSpacePose(extrinsics, calibrationRawPose); + backgroundCamera.transform.FromOVRPose(trackingSpacePose, true); + foregroundCamera.transform.FromOVRPose(trackingSpacePose, true); + } + else + { + OVRPose worldSpacePose = ComputeCameraWorldSpacePose(extrinsics, calibrationRawPose); + backgroundCamera.transform.FromOVRPose(worldSpacePose); + foregroundCamera.transform.FromOVRPose(worldSpacePose); + } + } + else + { + Debug.LogError("Failed to get external camera information"); + return; + } + } + + // Assume player always standing straightly + Vector3 externalCameraToHeadXZ = mainCamera.transform.position - foregroundCamera.transform.position; + externalCameraToHeadXZ.y = 0; + cameraProxyPlane.transform.position = mainCamera.transform.position; + cameraProxyPlane.transform.LookAt(cameraProxyPlane.transform.position + externalCameraToHeadXZ); + } + +#if OVR_ANDROID_MRC + private void CleanupAudioFilter() + { + if (audioFilter) + { + audioFilter.composition = null; + Object.Destroy(audioFilter); + Debug.LogFormat("OVRMRAudioFilter destroyed"); + audioFilter = null; + } + + } +#endif + + public override void Cleanup() + { + OVRCompositionUtil.SafeDestroy(ref backgroundCameraGameObject); + backgroundCamera = null; + OVRCompositionUtil.SafeDestroy(ref foregroundCameraGameObject); + foregroundCamera = null; + OVRCompositionUtil.SafeDestroy(ref cameraProxyPlane); + Debug.Log("ExternalComposition deactivated"); + +#if OVR_ANDROID_MRC + if (lastMrcEncodeFrameSyncId != -1) + { + OVRPlugin.Media.SyncMrcFrame(lastMrcEncodeFrameSyncId); + lastMrcEncodeFrameSyncId = -1; + } + + CleanupAudioFilter(); + + for (int i=0; i<2; ++i) + { + mrcRenderTextureArray[i].Release(); + mrcRenderTextureArray[i] = null; + } + + frameIndex = 0; +#endif + } + + private readonly object audioDataLock = new object(); + private List cachedAudioData = new List(16384); + private int cachedChannels = 0; + + public void CacheAudioData(float[] data, int channels) + { + lock(audioDataLock) + { + if (channels != cachedChannels) + { + cachedAudioData.Clear(); + } + cachedChannels = channels; + cachedAudioData.AddRange(data); + //Debug.LogFormat("[CacheAudioData] dspTime {0} indata {1} channels {2} accu_len {3}", AudioSettings.dspTime, data.Length, channels, cachedAudioData.Count); + } + } + + public void GetAndResetAudioData(ref float[] audioData, out int audioFrames, out int channels) + { + lock(audioDataLock) + { + //Debug.LogFormat("[GetAndResetAudioData] dspTime {0} accu_len {1}", AudioSettings.dspTime, cachedAudioData.Count); + if (audioData == null || audioData.Length < cachedAudioData.Count) + { + audioData = new float[cachedAudioData.Capacity]; + } + cachedAudioData.CopyTo(audioData); + audioFrames = cachedAudioData.Count; + channels = cachedChannels; + cachedAudioData.Clear(); + } + } + +} + +/// +/// Helper internal class for foregroundCamera, don't call it outside +/// +internal class OVRMRForegroundCameraManager : MonoBehaviour +{ + public OVRExternalComposition composition; + public GameObject clipPlaneGameObj; + private Material clipPlaneMaterial; + void OnPreRender() + { + // the clipPlaneGameObj should be only visible to foreground camera + if (clipPlaneGameObj) + { + if (clipPlaneMaterial == null) + clipPlaneMaterial = clipPlaneGameObj.GetComponent().material; + clipPlaneGameObj.GetComponent().material.SetFloat("_Visible", 1.0f); + } + } + void OnPostRender() + { + if (clipPlaneGameObj) + { + Debug.Assert(clipPlaneMaterial); + clipPlaneGameObj.GetComponent().material.SetFloat("_Visible", 0.0f); + } + } +} + +#if OVR_ANDROID_MRC + +public class OVRMRAudioFilter : MonoBehaviour +{ + private bool running = false; + + public OVRExternalComposition composition; + + void Start() + { + running = true; + } + + void OnAudioFilterRead(float[] data, int channels) + { + if (!running) + return; + + if (composition != null) + { + composition.CacheAudioData(data, channels); + } + } +} +#endif + +#endif diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs.meta new file mode 100644 index 0000000..06890db --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRExternalComposition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2c109ff55176f71418ec2c06d1b5d28e +timeCreated: 1502990231 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs b/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs new file mode 100644 index 0000000..822fdab --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs @@ -0,0 +1,4 @@ +public class OVRSandwichComposition +{ + // deprecated since SDK 1.41 +} diff --git a/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs.meta b/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs.meta new file mode 100644 index 0000000..bb8858f --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Composition/OVRSandwichComposition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c02efcdd3fb2aa4e9c641b0c2a54b9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Editor.meta b/Assets/Oculus/VR/Scripts/Editor.meta new file mode 100644 index 0000000..375de4b --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e87d4bbdfc8d17445b4a41760b401026 +folderAsset: yes +timeCreated: 1510282190 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs b/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs new file mode 100644 index 0000000..d78b6d2 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs @@ -0,0 +1,293 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.Reflection; + +[CustomEditor(typeof(OVRManager))] +public class OVRManagerEditor : Editor +{ + override public void OnInspectorGUI() + { +#if UNITY_ANDROID + EditorGUILayout.LabelField("Target Devices"); + EditorGUI.indentLevel++; + OVRProjectConfig projectConfig = OVRProjectConfig.GetProjectConfig(); + List oldTargetDeviceTypes = projectConfig.targetDeviceTypes; + List targetDeviceTypes = new List(oldTargetDeviceTypes); + bool hasModified = false; + int newCount = Mathf.Max(0, EditorGUILayout.IntField("Size", targetDeviceTypes.Count)); + while (newCount < targetDeviceTypes.Count) + { + targetDeviceTypes.RemoveAt(targetDeviceTypes.Count - 1); + hasModified = true; + } + while (newCount > targetDeviceTypes.Count) + { + targetDeviceTypes.Add(OVRProjectConfig.DeviceType.Quest); + hasModified = true; + } + for (int i = 0; i < targetDeviceTypes.Count; i++) + { + var deviceType = (OVRProjectConfig.DeviceType)EditorGUILayout.EnumPopup(string.Format("Element {0}", i), targetDeviceTypes[i]); + if (deviceType != targetDeviceTypes[i]) + { + targetDeviceTypes[i] = deviceType; + hasModified = true; + } + } + if (hasModified) + { + projectConfig.targetDeviceTypes = targetDeviceTypes; + OVRProjectConfig.CommitProjectConfig(projectConfig); + } + EditorGUI.indentLevel--; + EditorGUILayout.Space(); +#endif + + DrawDefaultInspector(); + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + OVRManager manager = (OVRManager)target; +#endif + +#if UNITY_ANDROID + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Security", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + + bool disableBackups = projectConfig.disableBackups; + bool enableNSCConfig = projectConfig.enableNSCConfig; + SetupBoolField("Disable Backups", ref disableBackups); + SetupBoolField("Enable NSC Configuration", ref enableNSCConfig); + + if(EditorGUI.EndChangeCheck()) + { + projectConfig.disableBackups = disableBackups; + projectConfig.enableNSCConfig = enableNSCConfig; + OVRProjectConfig.CommitProjectConfig(projectConfig); + } + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Mixed Reality Capture for Quest (experimental)", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + SetupMrcActivationModeField("ActivationMode", ref manager.mrcActivationMode); + EditorGUI.indentLevel--; +#endif + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Mixed Reality Capture", EditorStyles.boldLabel); + SetupBoolField("Show Properties", ref manager.expandMixedRealityCapturePropertySheet); + if (manager.expandMixedRealityCapturePropertySheet) + { + string[] layerMaskOptions = new string[32]; + for (int i=0; i<32; ++i) + { + layerMaskOptions[i] = LayerMask.LayerToName(i); + if (layerMaskOptions[i].Length == 0) + { + layerMaskOptions[i] = ""; + } + } + + EditorGUI.indentLevel++; + + EditorGUILayout.Space(); + SetupBoolField("enableMixedReality", ref manager.enableMixedReality); + SetupCompositoinMethodField("compositionMethod", ref manager.compositionMethod); + SetupLayerMaskField("extraHiddenLayers", ref manager.extraHiddenLayers, layerMaskOptions); + + if (manager.compositionMethod == OVRManager.CompositionMethod.External) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("External Composition", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + + SetupColorField("backdropColor (Rift)", ref manager.externalCompositionBackdropColorRift); + SetupColorField("backdropColor (Quest)", ref manager.externalCompositionBackdropColorQuest); + } + + if (manager.compositionMethod == OVRManager.CompositionMethod.Direct) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Direct Composition", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Camera", EditorStyles.boldLabel); + SetupCameraDeviceField("capturingCameraDevice", ref manager.capturingCameraDevice); + SetupBoolField("flipCameraFrameHorizontally", ref manager.flipCameraFrameHorizontally); + SetupBoolField("flipCameraFrameVertically", ref manager.flipCameraFrameVertically); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Chroma Key", EditorStyles.boldLabel); + SetupColorField("chromaKeyColor", ref manager.chromaKeyColor); + SetupFloatField("chromaKeySimilarity", ref manager.chromaKeySimilarity); + SetupFloatField("chromaKeySmoothRange", ref manager.chromaKeySmoothRange); + SetupFloatField("chromaKeySpillRange", ref manager.chromaKeySpillRange); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Dynamic Lighting", EditorStyles.boldLabel); + SetupBoolField("useDynamicLighting", ref manager.useDynamicLighting); + SetupDepthQualityField("depthQuality", ref manager.depthQuality); + SetupFloatField("dynamicLightingSmoothFactor", ref manager.dynamicLightingSmoothFactor); + SetupFloatField("dynamicLightingDepthVariationClampingValue", ref manager.dynamicLightingDepthVariationClampingValue); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Virtual Green Screen", EditorStyles.boldLabel); + SetupVirtualGreenTypeField("virtualGreenScreenType", ref manager.virtualGreenScreenType); + SetupFloatField("virtualGreenScreenTopY", ref manager.virtualGreenScreenTopY); + SetupFloatField("virtualGreenScreenBottomY", ref manager.virtualGreenScreenBottomY); + SetupBoolField("virtualGreenScreenApplyDepthCulling", ref manager.virtualGreenScreenApplyDepthCulling); + SetupFloatField("virtualGreenScreenDepthTolerance", ref manager.virtualGreenScreenDepthTolerance); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Latency Control", EditorStyles.boldLabel); + SetupFloatField("handPoseStateLatency", ref manager.handPoseStateLatency); + EditorGUI.indentLevel--; + } + + EditorGUI.indentLevel--; + } +#endif + } + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + void SetupBoolField(string name, ref bool member) + { + EditorGUI.BeginChangeCheck(); + bool value = EditorGUILayout.Toggle(name, member); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + member = value; + } + } + + void SetupIntField(string name, ref int member) + { + EditorGUI.BeginChangeCheck(); + int value = EditorGUILayout.IntField(name, member); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + member = value; + } + } + + void SetupFloatField(string name, ref float member) + { + EditorGUI.BeginChangeCheck(); + float value = EditorGUILayout.FloatField(name, member); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + member = value; + } + } + + void SetupDoubleField(string name, ref double member) + { + EditorGUI.BeginChangeCheck(); + double value = EditorGUILayout.DoubleField(name, member); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + member = value; + } + } + void SetupColorField(string name, ref Color member) + { + EditorGUI.BeginChangeCheck(); + Color value = EditorGUILayout.ColorField(name, member); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + member = value; + } + } + + void SetupLayerMaskField(string name, ref LayerMask layerMask, string[] layerMaskOptions) + { + EditorGUI.BeginChangeCheck(); + int value = EditorGUILayout.MaskField(name, layerMask, layerMaskOptions); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + layerMask = value; + } + } + + void SetupCompositoinMethodField(string name, ref OVRManager.CompositionMethod method) + { + EditorGUI.BeginChangeCheck(); + OVRManager.CompositionMethod value = (OVRManager.CompositionMethod)EditorGUILayout.EnumPopup(name, method); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + method = value; + } + } + + void SetupCameraDeviceField(string name, ref OVRManager.CameraDevice device) + { + EditorGUI.BeginChangeCheck(); + OVRManager.CameraDevice value = (OVRManager.CameraDevice)EditorGUILayout.EnumPopup(name, device); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + device = value; + } + } + + void SetupDepthQualityField(string name, ref OVRManager.DepthQuality depthQuality) + { + EditorGUI.BeginChangeCheck(); + OVRManager.DepthQuality value = (OVRManager.DepthQuality)EditorGUILayout.EnumPopup(name, depthQuality); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + depthQuality = value; + } + } + + void SetupVirtualGreenTypeField(string name, ref OVRManager.VirtualGreenScreenType virtualGreenScreenType) + { + EditorGUI.BeginChangeCheck(); + OVRManager.VirtualGreenScreenType value = (OVRManager.VirtualGreenScreenType)EditorGUILayout.EnumPopup(name, virtualGreenScreenType); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + virtualGreenScreenType = value; + } + } + + void SetupMrcActivationModeField(string name, ref OVRManager.MrcActivationMode mrcActivationMode) + { + EditorGUI.BeginChangeCheck(); + OVRManager.MrcActivationMode value = (OVRManager.MrcActivationMode)EditorGUILayout.EnumPopup(name, mrcActivationMode); + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(target, "Changed " + name); + mrcActivationMode = value; + } + } + +#endif +} diff --git a/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs.meta b/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs.meta new file mode 100644 index 0000000..55eb5ed --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVRManagerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9b07d18088099f94fa00fc15e64b2b17 +timeCreated: 1502747851 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Editor/OVROverlayDestRectEditor.shader b/Assets/Oculus/VR/Scripts/Editor/OVROverlayDestRectEditor.shader new file mode 100644 index 0000000..49bf2a1 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVROverlayDestRectEditor.shader @@ -0,0 +1,162 @@ +Shader "Unlit/OVROverlayDestRectEditor" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + _SrcRectLeft("SrcRectLeft", Vector) = (0,0,1,1) + _SrcRectRight("SrcRectRight", Vector) = (0,0,1,1) + _DestRectLeft ("DestRectLeft", Vector) = (0,0,1,1) + _DestRectRight("DestRectRight", Vector) = (0,0,1,1) + _BackgroundColor("Background Color", Color) = (0.225, 0.225, 0.225, 1) + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 100 + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + float4 leftDragX : TEXCOORD1; + float4 leftDragY : TEXCOORD2; + float4 rightDragX : TEXCOORD3; + float4 rightDragY : TEXCOORD4; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + float4 _SrcRectLeft; + float4 _SrcRectRight; + float4 _DestRectLeft; + float4 _DestRectRight; + + fixed4 _BackgroundColor; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + // Add padding + o.uv = (o.uv - 0.5) * (256.0 + 8.0) / (256.0) + 0.5; + + // left + o.leftDragX.x = _DestRectLeft.x; + o.leftDragY.x = _DestRectLeft.y + _DestRectLeft.w * 0.5; + // right + o.leftDragX.y = _DestRectLeft.x + _DestRectLeft.z; + o.leftDragY.y = _DestRectLeft.y + _DestRectLeft.w * 0.5; + // top + o.leftDragX.z = _DestRectLeft.x + _DestRectLeft.z * 0.5; + o.leftDragY.z = _DestRectLeft.y; + // bottom + o.leftDragX.w = _DestRectLeft.x + _DestRectLeft.z * 0.5; + o.leftDragY.w = _DestRectLeft.y + _DestRectLeft.w; + // right + o.rightDragX.x = _DestRectRight.x; + o.rightDragY.x = _DestRectRight.y + _DestRectRight.w * 0.5; + // right + o.rightDragX.y = _DestRectRight.x + _DestRectRight.z; + o.rightDragY.y = _DestRectRight.y + _DestRectRight.w * 0.5; + // top + o.rightDragX.z = _DestRectRight.x + _DestRectRight.z * 0.5; + o.rightDragY.z = _DestRectRight.y; + // bottom + o.rightDragX.w = _DestRectRight.x + _DestRectRight.z * 0.5; + o.rightDragY.w = _DestRectRight.y + _DestRectRight.w; + + return o; + } + + float onDrag(float2 uv, float x, float y) + { + const float pixelSize = 6; + return abs(uv.x - x) < ((pixelSize / 2) / 128.0) && abs(uv.y - y) < ((pixelSize / 2) / 128.0); + } + + float onLine(float2 uv, float4 rect) + { + return + (abs(uv.x - rect.x) < (1 / 128.0) && uv.y >= rect.y && uv.y <= rect.y + rect.w) || + (abs(uv.x - rect.x - rect.z) < (1 / 128.0) && uv.y >= rect.y && uv.y <= rect.y + rect.w) || + (abs(uv.y - rect.y) < (1 / 128.0) && uv.x >= rect.x && uv.x <= rect.x + rect.z) || + (abs(uv.y - rect.y - rect.w) < (1 / 128.0) && uv.x >= rect.x && uv.x <= rect.x + rect.z); + } + + float checkerboard(float2 uv) + { + float x = floor(uv.x * (16 + 2)); + float y = floor(uv.y * 8); + + return 2 * ((x + y) / 2.0 - floor((x + y) / 2.0)); + } + + fixed4 frag (v2f i) : SV_Target + { + float isLeftEye = i.uv < 0.5; + float2 leftUV = float2(i.uv.x * (256.0 + 32.0) / 128.0, 1 - i.uv.y); + float2 rightUV = float2(1 - ((1 - i.uv.x) * (256.0 + 32.0) / 128.0), 1 - i.uv.y); + + float2 uv = i.uv; + float2 textureUV = i.uv; + if (isLeftEye) + { + uv = (leftUV - _DestRectLeft.xy) / _DestRectLeft.zw; + textureUV = uv * _SrcRectLeft.zw + _SrcRectLeft.xy; + } + else + { + uv = (rightUV - _DestRectRight.xy) / _DestRectRight.zw; + textureUV = uv * _SrcRectRight.zw + _SrcRectRight.xy; + } + + // sample the texture + fixed4 col = tex2D(_MainTex, float2(textureUV.x, 1 - textureUV.y)); + + if (uv.x < 0 || uv.x > 1 || uv.y < 0 || uv.y > 1) + { + col.a = 0; + } + + col.rgb = lerp(0.41 - 0.13 * checkerboard(i.uv), col.rgb, col.a); + + if (i.uv.x < 0 || i.uv.x > 1 || i.uv.y < 0 || i.uv.y > 1 || abs(i.uv.x - 0.5) < (14 / 256.0)) + { + col = _BackgroundColor; + } + + // now draw clipping objects + float left = isLeftEye && (onLine(leftUV, _DestRectLeft) || + onDrag(leftUV, i.leftDragX.x, i.leftDragY.x) || + onDrag(leftUV, i.leftDragX.y, i.leftDragY.y) || + onDrag(leftUV, i.leftDragX.z, i.leftDragY.z) || + onDrag(leftUV, i.leftDragX.w, i.leftDragY.w)); + + float right = (!isLeftEye) && (onLine(rightUV, _DestRectRight) || + onDrag(rightUV, i.rightDragX.x, i.rightDragY.x) || + onDrag(rightUV, i.rightDragX.y, i.rightDragY.y) || + onDrag(rightUV, i.rightDragX.z, i.rightDragY.z) || + onDrag(rightUV, i.rightDragX.w, i.rightDragY.w)); + + return lerp(col, fixed4(left, right, 0, 1), left || right); + } + ENDCG + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Editor/OVROverlayDestRectEditor.shader.meta b/Assets/Oculus/VR/Scripts/Editor/OVROverlayDestRectEditor.shader.meta new file mode 100644 index 0000000..5d8ba6d --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVROverlayDestRectEditor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7c52c9bacdbb59f4a973dd1849d03106 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Editor/OVROverlayEditor.cs b/Assets/Oculus/VR/Scripts/Editor/OVROverlayEditor.cs new file mode 100644 index 0000000..7be846f --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVROverlayEditor.cs @@ -0,0 +1,524 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +[CustomEditor(typeof(OVROverlay))] +public class OVROverlayEditor : Editor +{ + + /// + /// Common Video Types, to ease source and dest rect creation + /// + public enum StereoType + { + Custom = 0, + Mono = 1, + Stereo = 2, + StereoLeftRight = 3, + StereoTopBottom = 4, + } + + public enum DisplayType + { + Custom = 0, + Full = 1, + Half = 2 + } + + private bool sourceRectsVisible = false; + private bool destRectsVisible = false; + + private Material _SrcRectMaterial; + protected Material SrcRectMaterial + { + get + { + if (_SrcRectMaterial == null) + { + string[] shaders = AssetDatabase.FindAssets("OVROverlaySrcRectEditor"); + + if (shaders.Length > 0) + { + Shader shader = (Shader)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(shaders[0]), typeof(Shader)); + + if (shader != null) + { + _SrcRectMaterial = new Material(shader); + } + } + } + return _SrcRectMaterial; + } + } + + private Material _DestRectMaterial; + protected Material DestRectMaterial + { + get + { + if (_DestRectMaterial == null) + { + string[] shaders = AssetDatabase.FindAssets("OVROverlayDestRectEditor"); + + if (shaders.Length > 0) + { + Shader shader = (Shader)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(shaders[0]), typeof(Shader)); + + if (shader != null) + { + _DestRectMaterial = new Material(shader); + } + } + } + return _DestRectMaterial; + } + } + + private TextureRect _DraggingRect; + private Side _DraggingSide; + + enum TextureRect + { + None, + SrcLeft, + SrcRight, + DestLeft, + DestRight + } + + enum Side + { + Left, + Right, + Top, + Bottom + } + + public override void OnInspectorGUI() + { + OVROverlay overlay = (OVROverlay)target; + if (overlay == null) + { + return; + } + + EditorGUILayout.LabelField("Display Order", EditorStyles.boldLabel); + overlay.currentOverlayType = (OVROverlay.OverlayType)EditorGUILayout.EnumPopup(new GUIContent("Current Overlay Type", "Whether this overlay should layer behind the scene or in front of it"), overlay.currentOverlayType); + overlay.compositionDepth = EditorGUILayout.IntField(new GUIContent("Composition Depth", "Depth value used to sort OVROverlays in the scene, smaller value appears in front"), overlay.compositionDepth); + overlay.noDepthBufferTesting = EditorGUILayout.Toggle(new GUIContent("No Depth Buffer Testing", "The noDepthBufferTesting will stop layer's depth buffer compositing even if the engine has \"Shared Depth Buffer\" enabled"), overlay.noDepthBufferTesting); + EditorGUILayout.Space(); + + EditorGUILayout.LabelField(new GUIContent("Overlay Shape", "The shape of this overlay"), EditorStyles.boldLabel); + overlay.currentOverlayShape = (OVROverlay.OverlayShape)EditorGUILayout.EnumPopup(new GUIContent("Overlay Shape", "The shape of this overlay"), overlay.currentOverlayShape); + EditorGUILayout.Space(); + + EditorGUILayout.Separator(); + EditorGUILayout.LabelField("Textures", EditorStyles.boldLabel); + +#if UNITY_ANDROID + bool lastIsExternalSurface = overlay.isExternalSurface; + overlay.isExternalSurface = EditorGUILayout.Toggle(new GUIContent("Is External Surface", "On Android, retrieve an Android Surface object to render to (e.g., video playback)"), overlay.isExternalSurface); + + if (lastIsExternalSurface) + { + overlay.externalSurfaceWidth = EditorGUILayout.IntField("External Surface Width", overlay.externalSurfaceWidth); + overlay.externalSurfaceHeight = EditorGUILayout.IntField("External Surface Height", overlay.externalSurfaceHeight); + overlay.isProtectedContent = EditorGUILayout.Toggle(new GUIContent("Is Protected Content", "The external surface has L1 widevine protection."), overlay.isProtectedContent); + } + else +#endif + { + if (overlay.textures == null) + { + overlay.textures = new Texture[2]; + } + if (overlay.textures.Length < 2) + { + Texture[] tmp = new Texture[2]; + for (int i = 0; i < overlay.textures.Length; i++) + { + tmp[i] = overlay.textures[i]; + } + overlay.textures = tmp; + } + + var labelControlRect = EditorGUILayout.GetControlRect(); + EditorGUI.LabelField(new Rect(labelControlRect.x, labelControlRect.y, labelControlRect.width / 2, labelControlRect.height), new GUIContent("Left Texture", "Texture used for the left eye")); + EditorGUI.LabelField(new Rect(labelControlRect.x + labelControlRect.width / 2, labelControlRect.y, labelControlRect.width / 2, labelControlRect.height), new GUIContent("Right Texture", "Texture used for the right eye")); + + + var textureControlRect = EditorGUILayout.GetControlRect(GUILayout.Height(64)); + + overlay.textures[0] = (Texture)EditorGUI.ObjectField(new Rect(textureControlRect.x, textureControlRect.y, 64, textureControlRect.height), overlay.textures[0], typeof(Texture), true); + Texture right = (Texture)EditorGUI.ObjectField(new Rect(textureControlRect.x + textureControlRect.width / 2, textureControlRect.y, 64, textureControlRect.height), overlay.textures[1] != null ? overlay.textures[1] : overlay.textures[0], typeof(Texture), true); + if (right == overlay.textures[0]) + { + overlay.textures[1] = null; + } + else + { + overlay.textures[1] = right; + } + + overlay.isDynamic = EditorGUILayout.Toggle(new GUIContent("Dynamic Texture", "This texture will be updated dynamically at runtime (e.g., Video)"), overlay.isDynamic); +#if !UNITY_ANDROID + overlay.isProtectedContent = EditorGUILayout.Toggle(new GUIContent("Is Protected Content", "The texture has copy protection, e.g., HDCP"), overlay.isProtectedContent); +#endif + } + if (overlay.currentOverlayShape == OVROverlay.OverlayShape.Cylinder || overlay.currentOverlayShape == OVROverlay.OverlayShape.Equirect || overlay.currentOverlayShape == OVROverlay.OverlayShape.Quad) { + + EditorGUILayout.Separator(); + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Texture Rects", EditorStyles.boldLabel); + + bool lastOverrideTextureRectMatrix = overlay.overrideTextureRectMatrix; + overlay.overrideTextureRectMatrix = !EditorGUILayout.Toggle(new GUIContent("Use Default Rects", overlay.textures[1] == null ? "If you need to use a single texture as a stereo image, uncheck this box" : "Uncheck this box if you need to clip you textures or layer"), !overlay.overrideTextureRectMatrix); + + if (lastOverrideTextureRectMatrix) + { + sourceRectsVisible = EditorGUILayout.Foldout(sourceRectsVisible, new GUIContent("Source Rects", "What portion of the source texture will ultimately be shown in each eye.")); + + if (sourceRectsVisible) + { + var mat = SrcRectMaterial; + + if (mat != null) + { + Rect drawRect = EditorGUILayout.GetControlRect(GUILayout.Height(128 + 8)); + mat.SetVector("_SrcRectLeft", new Vector4(Mathf.Max(0.0f, overlay.srcRectLeft.x), Mathf.Max(0.0f, overlay.srcRectLeft.y), Mathf.Min(1.0f - overlay.srcRectLeft.x, overlay.srcRectLeft.width), Mathf.Min(1.0f - overlay.srcRectLeft.y, overlay.srcRectLeft.height))); + mat.SetVector("_SrcRectRight", new Vector4(Mathf.Max(0.0f, overlay.srcRectRight.x), Mathf.Max(0.0f, overlay.srcRectRight.y), Mathf.Min(1.0f - overlay.srcRectRight.x, overlay.srcRectRight.width), Mathf.Min(1.0f - overlay.srcRectRight.y, overlay.srcRectRight.height))); + // center our draw rect + var drawRectCentered = new Rect(drawRect.x + drawRect.width / 2 - 128 - 4, drawRect.y, 256 + 8, drawRect.height); + EditorGUI.DrawPreviewTexture(drawRectCentered, overlay.textures[0] ?? Texture2D.blackTexture, mat); + + var drawRectInset = new Rect(drawRectCentered.x + 4, drawRectCentered.y + 4, drawRectCentered.width - 8, drawRectCentered.height - 8); + UpdateRectDragging(drawRectInset, drawRectInset, TextureRect.SrcLeft, TextureRect.SrcRight, ref overlay.srcRectLeft, ref overlay.srcRectRight); + CreateCursorRects(drawRectInset, overlay.srcRectLeft); + CreateCursorRects(drawRectInset, overlay.srcRectRight); + } + + var labelControlRect = EditorGUILayout.GetControlRect(); + EditorGUI.LabelField(new Rect(labelControlRect.x, labelControlRect.y, labelControlRect.width / 2, labelControlRect.height), new GUIContent("Left Source Rect", "The rect in the source image that will be displayed on the left eye layer")); + EditorGUI.LabelField(new Rect(labelControlRect.x + labelControlRect.width / 2, labelControlRect.y, labelControlRect.width / 2, labelControlRect.height), new GUIContent("Right Source Rect", "The rect in the source image that will be displayed on the right eye layer")); + + var rectControlRect = EditorGUILayout.GetControlRect(GUILayout.Height(34)); + + overlay.srcRectLeft = Clamp01(EditorGUI.RectField(new Rect(rectControlRect.x, rectControlRect.y, rectControlRect.width / 2 - 20, rectControlRect.height), overlay.srcRectLeft)); + overlay.srcRectRight = Clamp01(EditorGUI.RectField(new Rect(rectControlRect.x + rectControlRect.width / 2, rectControlRect.y, rectControlRect.width / 2 - 20, rectControlRect.height), overlay.srcRectRight)); + + + EditorGUILayout.BeginHorizontal(); + if (overlay.textures[1] != null) + { + if (GUILayout.Button(new GUIContent("Reset To Default", "Reset Source Rects to default"))) + { + SetRectsByVideoType(overlay, StereoType.Stereo, DisplayType.Custom); + } + } + else + { + if (GUILayout.Button(new GUIContent("Monoscopic", "Display the full Texture in both eyes"))) + { + SetRectsByVideoType(overlay, StereoType.Mono, DisplayType.Custom); + } + if (GUILayout.Button(new GUIContent("Stereo Left/Right", "The left half of the texture is displayed in the left eye, and the right half in the right eye"))) + { + SetRectsByVideoType(overlay, StereoType.StereoLeftRight, DisplayType.Custom); + } + if (GUILayout.Button(new GUIContent("Stereo Top/Bottom", "The top half of the texture is displayed in the left eye, and the bottom half in the right eye"))) + { + SetRectsByVideoType(overlay, StereoType.StereoTopBottom, DisplayType.Custom); + } + } + EditorGUILayout.EndHorizontal(); + + } + destRectsVisible = EditorGUILayout.Foldout(destRectsVisible, new GUIContent("Destination Rects", "What portion of the destination texture that the source will be rendered into.")); + if (destRectsVisible) + { + + var mat = DestRectMaterial; + + if (mat != null) + { + Rect drawRect = EditorGUILayout.GetControlRect(GUILayout.Height(128 + 8)); + mat.SetVector("_SrcRectLeft", new Vector4(Mathf.Max(0.0f, overlay.srcRectLeft.x), Mathf.Max(0.0f, overlay.srcRectLeft.y), Mathf.Min(1.0f - overlay.srcRectLeft.x, overlay.srcRectLeft.width), Mathf.Min(1.0f - overlay.srcRectLeft.y, overlay.srcRectLeft.height))); + mat.SetVector("_SrcRectRight", new Vector4(Mathf.Max(0.0f, overlay.srcRectRight.x), Mathf.Max(0.0f, overlay.srcRectRight.y), Mathf.Min(1.0f - overlay.srcRectRight.x, overlay.srcRectRight.width), Mathf.Min(1.0f - overlay.srcRectRight.y, overlay.srcRectRight.height))); + mat.SetVector("_DestRectLeft", new Vector4(Mathf.Max(0.0f, overlay.destRectLeft.x), Mathf.Max(0.0f, overlay.destRectLeft.y), Mathf.Min(1.0f - overlay.destRectLeft.x, overlay.destRectLeft.width), Mathf.Min(1.0f - overlay.destRectLeft.y, overlay.destRectLeft.height))); + mat.SetVector("_DestRectRight", new Vector4(Mathf.Max(0.0f, overlay.destRectRight.x), Mathf.Max(0.0f, overlay.destRectRight.y), Mathf.Min(1.0f - overlay.destRectRight.x, overlay.destRectRight.width), Mathf.Min(1.0f - overlay.destRectRight.y, overlay.destRectRight.height))); + mat.SetColor("_BackgroundColor", EditorGUIUtility.isProSkin ? (Color)new Color32(56, 56, 56, 255) : (Color)new Color32(194, 194, 194, 255)); + + var drawRectCentered = new Rect(drawRect.x + drawRect.width / 2 - 128 - 16 - 4, drawRect.y, 256 + 32 + 8, drawRect.height); + // center our draw rect + EditorGUI.DrawPreviewTexture(drawRectCentered, overlay.textures[0] ?? Texture2D.blackTexture, mat); + + var drawRectInsetLeft = new Rect(drawRectCentered.x + 4, drawRectCentered.y + 4, drawRectCentered.width / 2 - 20, drawRectCentered.height - 8); + var drawRectInsetRight = new Rect(drawRectCentered.x + drawRectCentered.width / 2 + 16, drawRectCentered.y + 4, drawRectCentered.width / 2 - 20, drawRectCentered.height - 8); + UpdateRectDragging(drawRectInsetLeft, drawRectInsetRight, TextureRect.DestLeft, TextureRect.DestRight, ref overlay.destRectLeft, ref overlay.destRectRight); + + CreateCursorRects(drawRectInsetLeft, overlay.destRectLeft); + CreateCursorRects(drawRectInsetRight, overlay.destRectRight); + + } + + var labelControlRect = EditorGUILayout.GetControlRect(); + EditorGUI.LabelField(new Rect(labelControlRect.x, labelControlRect.y, labelControlRect.width / 2, labelControlRect.height), new GUIContent("Left Destination Rect", "The rect in the destination layer the left eye will display to")); + EditorGUI.LabelField(new Rect(labelControlRect.x + labelControlRect.width / 2, labelControlRect.y, labelControlRect.width / 2, labelControlRect.height), new GUIContent("Right Destination Rect", "The rect in the destination layer the right eye will display to")); + + var rectControlRect = EditorGUILayout.GetControlRect(GUILayout.Height(34)); + + overlay.destRectLeft = Clamp01(EditorGUI.RectField(new Rect(rectControlRect.x, rectControlRect.y, rectControlRect.width / 2 - 20, rectControlRect.height), overlay.destRectLeft)); + overlay.destRectRight = Clamp01(EditorGUI.RectField(new Rect(rectControlRect.x + rectControlRect.width / 2, rectControlRect.y, rectControlRect.width / 2 - 20, rectControlRect.height), overlay.destRectRight)); + + + if (overlay.currentOverlayShape == OVROverlay.OverlayShape.Equirect) + { + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button(new GUIContent("360 Video", "Display the full 360 layer"))) + { + SetRectsByVideoType(overlay, StereoType.Custom, DisplayType.Full); + } + if (GUILayout.Button(new GUIContent("180 Video", "Display the front 180 layer"))) + { + SetRectsByVideoType(overlay, StereoType.Custom, DisplayType.Half); + } + EditorGUILayout.EndHorizontal(); + } + else + { + if (GUILayout.Button(new GUIContent("Reset To Default", "Reset Source Rects to default"))) + { + SetRectsByVideoType(overlay, StereoType.Custom, DisplayType.Full); + } + } + } + } + } + EditorGUILayout.Separator(); + EditorGUILayout.LabelField("Color Scale", EditorStyles.boldLabel); + EditorGUILayout.Space(); + overlay.overridePerLayerColorScaleAndOffset = EditorGUILayout.Toggle(new GUIContent("Override Color Scale", "Manually set color scale and offset of this layer, regardless of what the global values are from OVRManager.SetColorScaleAndOffset()."), overlay.overridePerLayerColorScaleAndOffset); + if (overlay.overridePerLayerColorScaleAndOffset) + { + Vector4 colorScale = EditorGUILayout.Vector4Field(new GUIContent("Color Scale", "Scale that the color values for this overlay will be multiplied by."), overlay.colorScale); + Vector4 colorOffset = EditorGUILayout.Vector4Field(new GUIContent("Color Offset", "Offset that the color values for this overlay will be added to."), overlay.colorOffset); + overlay.SetPerLayerColorScaleAndOffset(colorScale, colorOffset); + } + + EditorUtility.SetDirty(overlay); + } + + private Rect Clamp01(Rect rect) + { + rect.x = Mathf.Clamp01(rect.x); + rect.y = Mathf.Clamp01(rect.y); + rect.width = Mathf.Clamp01(rect.width); + rect.height = Mathf.Clamp01(rect.height); + return rect; + } + + private bool IsUnitRect(Rect rect) + { + return IsRect(rect, 0, 0, 1, 1); + } + + private bool IsRect(Rect rect, float x, float y, float w, float h) + { + return rect.x == x && rect.y == y && rect.width == w && rect.height == h; + } + + private StereoType GetStereoType(OVROverlay overlay) + { + if (overlay.textures[0] != null && overlay.textures[1] != null) + { + if (IsUnitRect(overlay.srcRectLeft) && IsUnitRect(overlay.srcRectRight)) + { + return StereoType.Stereo; + } + else + { + return StereoType.Custom; + } + } + else if (overlay.textures[0] != null) + { + if (IsUnitRect(overlay.srcRectLeft) && IsUnitRect(overlay.srcRectRight)) + { + return StereoType.Mono; + } + else if (IsRect(overlay.srcRectLeft, 0, 0, 0.5f, 1f) && IsRect(overlay.srcRectRight, 0.5f, 0, 0.5f, 1f)) + { + return StereoType.StereoLeftRight; + } + else if (IsRect(overlay.srcRectLeft, 0, 0, 1f, 0.5f) && IsRect(overlay.srcRectRight, 0f, 0.5f, 1f, 0.5f)) + { + return StereoType.StereoTopBottom; + } + else + { + return StereoType.Custom; + } + } + else + { + return StereoType.Mono; + } + } + + private void SetRectsByVideoType(OVROverlay overlay, StereoType stereoType, DisplayType displayType) + { + Rect srcRectLeft, srcRectRight, destRectLeft, destRectRight; + + switch (displayType) + { + case DisplayType.Full: + destRectLeft = destRectRight = new Rect(0, 0, 1, 1); + break; + + case DisplayType.Half: + destRectLeft = destRectRight = new Rect(0.25f, 0, 0.5f, 1); + break; + default: + destRectLeft = overlay.destRectLeft; + destRectRight = overlay.destRectRight; + break; + } + + switch (stereoType) + { + case StereoType.Mono: + case StereoType.Stereo: + srcRectLeft = srcRectRight = new Rect(0, 0, 1, 1); + break; + + case StereoType.StereoTopBottom: + srcRectLeft = new Rect(0, 0, 1, 0.5f); + srcRectRight = new Rect(0, 0.5f, 1, 0.5f); + break; + + case StereoType.StereoLeftRight: + srcRectLeft = new Rect(0, 0, 0.5f, 1); + srcRectRight = new Rect(0.5f, 0, 0.5f, 1); + break; + default: + srcRectLeft = overlay.srcRectLeft; + srcRectRight = overlay.srcRectRight; + break; + } + overlay.SetSrcDestRects(srcRectLeft, srcRectRight, destRectLeft, destRectRight); + } + + private void GetCursorPoints(Rect drawRect, Rect selectRect, out Vector2 leftPos, out Vector2 rightPos, out Vector2 topPos, out Vector2 bottomPos) + { + leftPos = new Vector2(drawRect.x + selectRect.x * drawRect.width, drawRect.y + (selectRect.y + selectRect.height / 2) * drawRect.height); + rightPos = new Vector2(drawRect.x + (selectRect.x + selectRect.width) * drawRect.width, drawRect.y + (selectRect.y + selectRect.height / 2) * drawRect.height); + topPos = new Vector2(drawRect.x + (selectRect.x + selectRect.width / 2) * drawRect.width, drawRect.y + (selectRect.y) * drawRect.height); + bottomPos = new Vector2(drawRect.x + (selectRect.x + selectRect.width / 2) * drawRect.width, drawRect.y + (selectRect.y + selectRect.height) * drawRect.height); + } + + private void CreateCursorRects(Rect drawRect, Rect selectRect) + { + Vector2 leftPos, rightPos, topPos, bottomPos; + GetCursorPoints(drawRect, selectRect, out leftPos, out rightPos, out topPos, out bottomPos); + + EditorGUIUtility.AddCursorRect(new Rect(leftPos - 5 * Vector2.one, 10 * Vector2.one), MouseCursor.ResizeHorizontal); + EditorGUIUtility.AddCursorRect(new Rect(rightPos - 5 * Vector2.one, 10 * Vector2.one), MouseCursor.ResizeHorizontal); + EditorGUIUtility.AddCursorRect(new Rect(topPos - 5 * Vector2.one, 10 * Vector2.one), MouseCursor.ResizeVertical); + EditorGUIUtility.AddCursorRect(new Rect(bottomPos - 5 * Vector2.one, 10 * Vector2.one), MouseCursor.ResizeVertical); + } + + private bool IsOverRectControls(Rect drawRect, Vector2 mousePos, Rect selectRect, ref Side side) + { + Vector2 leftPos, rightPos, topPos, bottomPos; + GetCursorPoints(drawRect, selectRect, out leftPos, out rightPos, out topPos, out bottomPos); + + if ((leftPos - mousePos).sqrMagnitude <= 25) + { + side = Side.Left; + return true; + } + if ((rightPos - mousePos).sqrMagnitude <= 25) + { + side = Side.Right; + return true; + } + if ((topPos - mousePos).sqrMagnitude <= 25) + { + side = Side.Top; + return true; + } + if ((bottomPos - mousePos).sqrMagnitude <= 25) + { + side = Side.Bottom; + return true; + } + return false; + } + + private void UpdateRectDragging(Rect drawingRectLeft, Rect drawingRectRight, TextureRect rectLeftType, TextureRect rectRightType, ref Rect rectLeft, ref Rect rectRight) + { + if (!Event.current.isMouse || Event.current.button != 0) + { + return; + } + + if (Event.current.type == EventType.MouseUp) + { + _DraggingRect = TextureRect.None; + return; + } + + Vector2 mousePos = Event.current.mousePosition; + if (_DraggingRect == TextureRect.None && Event.current.type == EventType.MouseDown) + { + if (IsOverRectControls(drawingRectLeft, mousePos, rectLeft, ref _DraggingSide)) + { + _DraggingRect = rectLeftType; + } + if (_DraggingRect == TextureRect.None || Event.current.shift) + { + if (IsOverRectControls(drawingRectRight, mousePos, rectRight, ref _DraggingSide)) + { + _DraggingRect = rectRightType; + } + } + } + + if (_DraggingRect == rectLeftType) + { + SetRectSideValue(drawingRectLeft, mousePos, _DraggingSide, ref rectLeft); + } + if (_DraggingRect == rectRightType) + { + SetRectSideValue(drawingRectRight, mousePos, _DraggingSide, ref rectRight); + } + } + + private void SetRectSideValue(Rect drawingRect, Vector2 mousePos, Side side, ref Rect rect) + { + // quantize to 1/32 + float x = Mathf.Clamp01(Mathf.Round(((mousePos.x - drawingRect.x) / drawingRect.width) * 32) / 32.0f); + float y = Mathf.Clamp01(Mathf.Round(((mousePos.y - drawingRect.y) / drawingRect.height) * 32) / 32.0f); + + switch (side) + { + case Side.Left: + float xMax = rect.xMax; + rect.x = Mathf.Min(x, xMax); + rect.width = xMax - rect.x; + break; + case Side.Right: + rect.width = Mathf.Max(0, x - rect.x); + break; + case Side.Top: + float yMax = rect.yMax; + rect.y = Mathf.Min(y, yMax); + rect.height = yMax - rect.y; + break; + case Side.Bottom: + rect.height = Mathf.Max(0, y - rect.y); + break; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Editor/OVROverlayEditor.cs.meta b/Assets/Oculus/VR/Scripts/Editor/OVROverlayEditor.cs.meta new file mode 100644 index 0000000..d9c9ab2 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVROverlayEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fde3aeb28643f6c48a48f926ac7207e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Editor/OVROverlaySrcRectEditor.shader b/Assets/Oculus/VR/Scripts/Editor/OVROverlaySrcRectEditor.shader new file mode 100644 index 0000000..96fc293 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVROverlaySrcRectEditor.shader @@ -0,0 +1,138 @@ +Shader "Unlit/OVROverlaySrcRectEditor" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + _SrcRectLeft ("SrcRectLeft", Vector) = (0,0,1,1) + _SrcRectRight("SrcRectRight", Vector) = (0,0,1,1) + _BackgroundColor("Background Color", Color) = (0.225, 0.225, 0.225, 1) + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 100 + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + float4 leftDragX : TEXCOORD1; + float4 leftDragY : TEXCOORD2; + float4 rightDragX : TEXCOORD3; + float4 rightDragY : TEXCOORD4; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + float4 _SrcRectLeft; + float4 _SrcRectRight; + + fixed4 _BackgroundColor; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + // Add padding + o.uv = (o.uv - 0.5) * (256.0 + 8.0) / (256.0) + 0.5; + + // left + o.leftDragX.x = _SrcRectLeft.x; + o.leftDragY.x = _SrcRectLeft.y + _SrcRectLeft.w * 0.5; + // right + o.leftDragX.y = _SrcRectLeft.x + _SrcRectLeft.z; + o.leftDragY.y = _SrcRectLeft.y + _SrcRectLeft.w * 0.5; + // top + o.leftDragX.z = _SrcRectLeft.x + _SrcRectLeft.z * 0.5; + o.leftDragY.z = _SrcRectLeft.y; + // bottom + o.leftDragX.w = _SrcRectLeft.x + _SrcRectLeft.z * 0.5; + o.leftDragY.w = _SrcRectLeft.y + _SrcRectLeft.w; + // right + o.rightDragX.x = _SrcRectRight.x; + o.rightDragY.x = _SrcRectRight.y + _SrcRectRight.w * 0.5; + // right + o.rightDragX.y = _SrcRectRight.x + _SrcRectRight.z; + o.rightDragY.y = _SrcRectRight.y + _SrcRectRight.w * 0.5; + // top + o.rightDragX.z = _SrcRectRight.x + _SrcRectRight.z * 0.5; + o.rightDragY.z = _SrcRectRight.y; + // bottom + o.rightDragX.w = _SrcRectRight.x + _SrcRectRight.z * 0.5; + o.rightDragY.w = _SrcRectRight.y + _SrcRectRight.w; + + return o; + } + + float onDrag(float2 uv, float x, float y) + { + const float pixelSize = 6; + return abs(uv.x - x) < ((pixelSize / 2) / 256.0) && abs(uv.y - y) < ((pixelSize / 2) / 128.0); + } + + float onLine(float2 uv, float4 rect) + { + return + (abs(uv.x - rect.x) < (1 / 256.0) && uv.y >= rect.y && uv.y <= rect.y + rect.w) || + (abs(uv.x - rect.x - rect.z) < (1 / 256.0) && uv.y >= rect.y && uv.y <= rect.y + rect.w) || + (abs(uv.y - rect.y) < (1 / 128.0) && uv.x >= rect.x && uv.x <= rect.x + rect.z) || + (abs(uv.y - rect.y - rect.w) < (1 / 128.0) && uv.x >= rect.x && uv.x <= rect.x + rect.z); + } + + float checkerboard(float2 uv) + { + float x = floor(uv.x * (16)); + float y = floor(uv.y * 8); + + return 2 * ((x + y) / 2.0 - floor((x + y) / 2.0)); + } + + fixed4 frag (v2f i) : SV_Target + { + // sample the texture + fixed4 col = tex2D(_MainTex, i.uv); + + col.rgb = lerp(0.41 - 0.13 * checkerboard(i.uv), col.rgb, col.a); + + if (i.uv.x < 0 || i.uv.x > 1 || i.uv.y < 0 || i.uv.y > 1) + { + col = _BackgroundColor; + } + + float2 uv = float2(i.uv.x, 1 - i.uv.y); + + // now draw clipping objects + float left = onLine(uv, _SrcRectLeft) || + onDrag(uv, i.leftDragX.x, i.leftDragY.x) || + onDrag(uv, i.leftDragX.y, i.leftDragY.y) || + onDrag(uv, i.leftDragX.z, i.leftDragY.z) || + onDrag(uv, i.leftDragX.w, i.leftDragY.w); + + float right = onLine(uv, _SrcRectRight) || + onDrag(uv, i.rightDragX.x, i.rightDragY.x) || + onDrag(uv, i.rightDragX.y, i.rightDragY.y) || + onDrag(uv, i.rightDragX.z, i.rightDragY.z) || + onDrag(uv, i.rightDragX.w, i.rightDragY.w); + + return lerp(col, fixed4(left, right, 0, 1), left || right); + } + ENDCG + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Editor/OVROverlaySrcRectEditor.shader.meta b/Assets/Oculus/VR/Scripts/Editor/OVROverlaySrcRectEditor.shader.meta new file mode 100644 index 0000000..019de65 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/OVROverlaySrcRectEditor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 589b36d0aa66c7349bcff8750b670434 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Editor/Oculus.VR.Scripts.Editor.asmdef b/Assets/Oculus/VR/Scripts/Editor/Oculus.VR.Scripts.Editor.asmdef new file mode 100644 index 0000000..4aa87b5 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/Oculus.VR.Scripts.Editor.asmdef @@ -0,0 +1,17 @@ +{ + "name": "Oculus.VR.Scripts.Editor", + "references": [ + "Oculus.VR", + "Oculus.VR.Editor" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/Oculus/VR/Scripts/Editor/Oculus.VR.Scripts.Editor.asmdef.meta b/Assets/Oculus/VR/Scripts/Editor/Oculus.VR.Scripts.Editor.asmdef.meta new file mode 100644 index 0000000..98bc1e9 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Editor/Oculus.VR.Scripts.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7305c54a43f3814439df347c7519653e +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRBoundary.cs b/Assets/Oculus/VR/Scripts/OVRBoundary.cs new file mode 100644 index 0000000..9c24c28 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRBoundary.cs @@ -0,0 +1,231 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + + +using System; +using System.Collections.Generic; +using UnityEngine; +using VR = UnityEngine.VR; +using System.Runtime.InteropServices; +#if UNITY_2017_2_OR_NEWER +using Boundary = UnityEngine.Experimental.XR.Boundary; +#elif UNITY_2017_1_OR_NEWER +using Boundary = UnityEngine.Experimental.VR.Boundary; +#endif + +/// +/// Provides access to the Oculus boundary system. +/// +public class OVRBoundary +{ + /// + /// Specifies a tracked node that can be queried through the boundary system. + /// + public enum Node + { + HandLeft = OVRPlugin.Node.HandLeft, ///< Tracks the left hand node. + HandRight = OVRPlugin.Node.HandRight, ///< Tracks the right hand node. + Head = OVRPlugin.Node.Head, ///< Tracks the head node. + } + + /// + /// Specifies a boundary type surface. + /// + public enum BoundaryType + { + OuterBoundary = OVRPlugin.BoundaryType.OuterBoundary, ///< Outer boundary that closely matches the user's configured walls. + PlayArea = OVRPlugin.BoundaryType.PlayArea, ///< Smaller convex area inset within the outer boundary. + } + + /// + /// Provides test results of boundary system queries. + /// + public struct BoundaryTestResult + { + public bool IsTriggering; ///< Returns true if the queried test would violate and/or trigger the tested boundary types. + public float ClosestDistance; ///< Returns the distance between the queried test object and the closest tested boundary type. + public Vector3 ClosestPoint; ///< Returns the closest point to the queried test object. + public Vector3 ClosestPointNormal; ///< Returns the normal of the closest point to the queried test object. + } + + /// + /// Returns true if the boundary system is currently configured with valid boundary data. + /// + public bool GetConfigured() + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.GetBoundaryConfigured(); + else + { +#if UNITY_2017_1_OR_NEWER + return Boundary.configured; +#else + return false; +#endif + } + } + + /// + /// Returns the results of testing a tracked node against the specified boundary type. + /// All points are returned in local tracking space shared by tracked nodes and accessible through OVRCameraRig's trackingSpace anchor. + /// + public OVRBoundary.BoundaryTestResult TestNode(OVRBoundary.Node node, OVRBoundary.BoundaryType boundaryType) + { + OVRPlugin.BoundaryTestResult ovrpRes = OVRPlugin.TestBoundaryNode((OVRPlugin.Node)node, (OVRPlugin.BoundaryType)boundaryType); + + OVRBoundary.BoundaryTestResult res = new OVRBoundary.BoundaryTestResult() + { + IsTriggering = (ovrpRes.IsTriggering == OVRPlugin.Bool.True), + ClosestDistance = ovrpRes.ClosestDistance, + ClosestPoint = ovrpRes.ClosestPoint.FromFlippedZVector3f(), + ClosestPointNormal = ovrpRes.ClosestPointNormal.FromFlippedZVector3f(), + }; + + return res; + } + + /// + /// Returns the results of testing a 3d point against the specified boundary type. + /// The test point is expected in local tracking space. + /// All points are returned in local tracking space shared by tracked nodes and accessible through OVRCameraRig's trackingSpace anchor. + /// + public OVRBoundary.BoundaryTestResult TestPoint(Vector3 point, OVRBoundary.BoundaryType boundaryType) + { + OVRPlugin.BoundaryTestResult ovrpRes = OVRPlugin.TestBoundaryPoint(point.ToFlippedZVector3f(), (OVRPlugin.BoundaryType)boundaryType); + + OVRBoundary.BoundaryTestResult res = new OVRBoundary.BoundaryTestResult() + { + IsTriggering = (ovrpRes.IsTriggering == OVRPlugin.Bool.True), + ClosestDistance = ovrpRes.ClosestDistance, + ClosestPoint = ovrpRes.ClosestPoint.FromFlippedZVector3f(), + ClosestPointNormal = ovrpRes.ClosestPointNormal.FromFlippedZVector3f(), + }; + + return res; + } + + private static int cachedVector3fSize = Marshal.SizeOf(typeof(OVRPlugin.Vector3f)); + private static OVRNativeBuffer cachedGeometryNativeBuffer = new OVRNativeBuffer(0); + private static float[] cachedGeometryManagedBuffer = new float[0]; + private List cachedGeometryList = new List(); + /// + /// Returns an array of 3d points (in clockwise order) that define the specified boundary type. + /// All points are returned in local tracking space shared by tracked nodes and accessible through OVRCameraRig's trackingSpace anchor. + /// + public Vector3[] GetGeometry(OVRBoundary.BoundaryType boundaryType) + { + if (OVRManager.loadedXRDevice != OVRManager.XRDevice.Oculus) + { +#if UNITY_2017_1_OR_NEWER + if (Boundary.TryGetGeometry(cachedGeometryList, (boundaryType == BoundaryType.PlayArea) ? Boundary.Type.PlayArea : Boundary.Type.TrackedArea)) + { + Vector3[] arr = cachedGeometryList.ToArray(); + return arr; + } +#endif + Debug.LogError("This functionality is not supported in your current version of Unity."); + return null; + } + + int pointsCount = 0; + if (OVRPlugin.GetBoundaryGeometry2((OVRPlugin.BoundaryType)boundaryType, IntPtr.Zero, ref pointsCount)) + { + if (pointsCount > 0) + { + int requiredNativeBufferCapacity = pointsCount * cachedVector3fSize; + if (cachedGeometryNativeBuffer.GetCapacity() < requiredNativeBufferCapacity) + cachedGeometryNativeBuffer.Reset(requiredNativeBufferCapacity); + + int requiredManagedBufferCapacity = pointsCount * 3; + if (cachedGeometryManagedBuffer.Length < requiredManagedBufferCapacity) + cachedGeometryManagedBuffer = new float[requiredManagedBufferCapacity]; + + if (OVRPlugin.GetBoundaryGeometry2((OVRPlugin.BoundaryType)boundaryType, cachedGeometryNativeBuffer.GetPointer(), ref pointsCount)) + { + Marshal.Copy(cachedGeometryNativeBuffer.GetPointer(), cachedGeometryManagedBuffer, 0, requiredManagedBufferCapacity); + + Vector3[] points = new Vector3[pointsCount]; + + for (int i = 0; i < pointsCount; i++) + { + points[i] = new OVRPlugin.Vector3f() + { + x = cachedGeometryManagedBuffer[3 * i + 0], + y = cachedGeometryManagedBuffer[3 * i + 1], + z = cachedGeometryManagedBuffer[3 * i + 2], + }.FromFlippedZVector3f(); + } + + return points; + } + } + } + + return new Vector3[0]; + } + + /// + /// Returns a vector that indicates the spatial dimensions of the specified boundary type. (x = width, y = height, z = depth) + /// + public Vector3 GetDimensions(OVRBoundary.BoundaryType boundaryType) + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.GetBoundaryDimensions((OVRPlugin.BoundaryType)boundaryType).FromVector3f(); + + else + { +#if UNITY_2017_1_OR_NEWER + Vector3 dimensions; + if (Boundary.TryGetDimensions(out dimensions, (boundaryType == BoundaryType.PlayArea) ? Boundary.Type.PlayArea : Boundary.Type.TrackedArea)) + return dimensions; +#endif + return Vector3.zero; + } + } + + /// + /// Returns true if the boundary system is currently visible. + /// + public bool GetVisible() + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.GetBoundaryVisible(); + else + { +#if UNITY_2017_1_OR_NEWER + return Boundary.visible; +#else + return false; +#endif + } + } + + /// + /// Requests that the boundary system visibility be set to the specified value. + /// The actual visibility can be overridden by the system (i.e., proximity trigger) or by the user (boundary system disabled) + /// + public void SetVisible(bool value) + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + OVRPlugin.SetBoundaryVisible(value); + else + { +#if UNITY_2017_1_OR_NEWER + Boundary.visible = value; +#endif + } + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRBoundary.cs.meta b/Assets/Oculus/VR/Scripts/OVRBoundary.cs.meta new file mode 100644 index 0000000..fbb138b --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRBoundary.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 332b8e08854932543ba356eec601c0ef +timeCreated: 1470352252 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRCameraRig.cs b/Assets/Oculus/VR/Scripts/OVRCameraRig.cs new file mode 100644 index 0000000..0c3b33e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRCameraRig.cs @@ -0,0 +1,447 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +#else +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +#endif + +/// +/// A head-tracked stereoscopic virtual reality camera rig. +/// +[ExecuteInEditMode] +public class OVRCameraRig : MonoBehaviour +{ + /// + /// The left eye camera. + /// + public Camera leftEyeCamera { get { return (usePerEyeCameras) ? _leftEyeCamera : _centerEyeCamera; } } + /// + /// The right eye camera. + /// + public Camera rightEyeCamera { get { return (usePerEyeCameras) ? _rightEyeCamera : _centerEyeCamera; } } + /// + /// Provides a root transform for all anchors in tracking space. + /// + public Transform trackingSpace { get; private set; } + /// + /// Always coincides with the pose of the left eye. + /// + public Transform leftEyeAnchor { get; private set; } + /// + /// Always coincides with average of the left and right eye poses. + /// + public Transform centerEyeAnchor { get; private set; } + /// + /// Always coincides with the pose of the right eye. + /// + public Transform rightEyeAnchor { get; private set; } + /// + /// Always coincides with the pose of the left hand. + /// + public Transform leftHandAnchor { get; private set; } + /// + /// Always coincides with the pose of the right hand. + /// + public Transform rightHandAnchor { get; private set; } + /// + /// Anchors controller pose to fix offset issues for the left hand. + /// + public Transform leftControllerAnchor { get; private set; } + /// + /// Anchors controller pose to fix offset issues for the right hand. + /// + public Transform rightControllerAnchor { get; private set; } + /// + /// Always coincides with the pose of the sensor. + /// + public Transform trackerAnchor { get; private set; } + /// + /// Occurs when the eye pose anchors have been set. + /// + public event System.Action UpdatedAnchors; + /// + /// If true, separate cameras will be used for the left and right eyes. + /// + public bool usePerEyeCameras = false; + /// + /// If true, all tracked anchors are updated in FixedUpdate instead of Update to favor physics fidelity. + /// \note: If the fixed update rate doesn't match the rendering framerate (OVRManager.display.appFramerate), the anchors will visibly judder. + /// + public bool useFixedUpdateForTracking = false; + /// + /// If true, the cameras on the eyeAnchors will be disabled. + /// \note: The main camera of the game will be used to provide VR rendering. And the tracking space anchors will still be updated to provide reference poses. + /// + public bool disableEyeAnchorCameras = false; + + + protected bool _skipUpdate = false; + protected readonly string trackingSpaceName = "TrackingSpace"; + protected readonly string trackerAnchorName = "TrackerAnchor"; + protected readonly string leftEyeAnchorName = "LeftEyeAnchor"; + protected readonly string centerEyeAnchorName = "CenterEyeAnchor"; + protected readonly string rightEyeAnchorName = "RightEyeAnchor"; + protected readonly string leftHandAnchorName = "LeftHandAnchor"; + protected readonly string rightHandAnchorName = "RightHandAnchor"; + protected readonly string leftControllerAnchorName = "LeftControllerAnchor"; + protected readonly string rightControllerAnchorName = "RightControllerAnchor"; + protected Camera _centerEyeCamera; + protected Camera _leftEyeCamera; + protected Camera _rightEyeCamera; + +#region Unity Messages + protected virtual void Awake() + { + _skipUpdate = true; + EnsureGameObjectIntegrity(); + } + + protected virtual void Start() + { + UpdateAnchors(true, true); + Application.onBeforeRender += OnBeforeRenderCallback; + } + + protected virtual void FixedUpdate() + { + if (useFixedUpdateForTracking) + UpdateAnchors(true, true); + } + + protected virtual void Update() + { + _skipUpdate = false; + + if (!useFixedUpdateForTracking) + UpdateAnchors(true, true); + } + + protected virtual void OnDestroy() + { + Application.onBeforeRender -= OnBeforeRenderCallback; + } +#endregion + + protected virtual void UpdateAnchors(bool updateEyeAnchors, bool updateHandAnchors) + { + if (!OVRManager.OVRManagerinitialized) + return; + + EnsureGameObjectIntegrity(); + + if (!Application.isPlaying) + return; + + if (_skipUpdate) + { + centerEyeAnchor.FromOVRPose(OVRPose.identity, true); + leftEyeAnchor.FromOVRPose(OVRPose.identity, true); + rightEyeAnchor.FromOVRPose(OVRPose.identity, true); + + return; + } + + bool monoscopic = OVRManager.instance.monoscopic; + bool hmdPresent = OVRNodeStateProperties.IsHmdPresent(); + + OVRPose tracker = OVRManager.tracker.GetPose(); + + trackerAnchor.localRotation = tracker.orientation; + + Quaternion emulatedRotation = Quaternion.Euler(-OVRManager.instance.headPoseRelativeOffsetRotation.x, -OVRManager.instance.headPoseRelativeOffsetRotation.y, OVRManager.instance.headPoseRelativeOffsetRotation.z); + + //Note: in the below code, when using UnityEngine's API, we only update anchor transforms if we have a new, fresh value this frame. + //If we don't, it could mean that tracking is lost, etc. so the pose should not change in the virtual world. + //This can be thought of as similar to calling InputTracking GetLocalPosition and Rotation, but only for doing so when the pose is valid. + //If false is returned for any of these calls, then a new pose is not valid and thus should not be updated. + if (updateEyeAnchors) + { + if (hmdPresent) + { + Vector3 centerEyePosition = Vector3.zero; + Quaternion centerEyeRotation = Quaternion.identity; + + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.CenterEye, NodeStatePropertyType.Position, OVRPlugin.Node.EyeCenter, OVRPlugin.Step.Render, out centerEyePosition)) + centerEyeAnchor.localPosition = centerEyePosition; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.CenterEye, NodeStatePropertyType.Orientation, OVRPlugin.Node.EyeCenter, OVRPlugin.Step.Render, out centerEyeRotation)) + centerEyeAnchor.localRotation = centerEyeRotation; + } + else + { + centerEyeAnchor.localRotation = emulatedRotation; + centerEyeAnchor.localPosition = OVRManager.instance.headPoseRelativeOffsetTranslation; + } + + if (!hmdPresent || monoscopic) + { + leftEyeAnchor.localPosition = centerEyeAnchor.localPosition; + rightEyeAnchor.localPosition = centerEyeAnchor.localPosition; + leftEyeAnchor.localRotation = centerEyeAnchor.localRotation; + rightEyeAnchor.localRotation = centerEyeAnchor.localRotation; + } + else + { + Vector3 leftEyePosition = Vector3.zero; + Vector3 rightEyePosition = Vector3.zero; + Quaternion leftEyeRotation = Quaternion.identity; + Quaternion rightEyeRotation = Quaternion.identity; + + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.LeftEye, NodeStatePropertyType.Position, OVRPlugin.Node.EyeLeft, OVRPlugin.Step.Render, out leftEyePosition)) + leftEyeAnchor.localPosition = leftEyePosition; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.RightEye, NodeStatePropertyType.Position, OVRPlugin.Node.EyeRight, OVRPlugin.Step.Render, out rightEyePosition)) + rightEyeAnchor.localPosition = rightEyePosition; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.LeftEye, NodeStatePropertyType.Orientation, OVRPlugin.Node.EyeLeft, OVRPlugin.Step.Render, out leftEyeRotation)) + leftEyeAnchor.localRotation = leftEyeRotation; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.RightEye, NodeStatePropertyType.Orientation, OVRPlugin.Node.EyeRight, OVRPlugin.Step.Render, out rightEyeRotation)) + rightEyeAnchor.localRotation = rightEyeRotation; + } + } + + if (updateHandAnchors) + { + //Need this for controller offset because if we're on OpenVR, we want to set the local poses as specified by Unity, but if we're not, OVRInput local position is the right anchor + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + Vector3 leftPos = Vector3.zero; + Vector3 rightPos = Vector3.zero; + Quaternion leftQuat = Quaternion.identity; + Quaternion rightQuat = Quaternion.identity; + + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.LeftHand, NodeStatePropertyType.Position, OVRPlugin.Node.HandLeft, OVRPlugin.Step.Render, out leftPos)) + leftHandAnchor.localPosition = leftPos; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.RightHand, NodeStatePropertyType.Position, OVRPlugin.Node.HandRight, OVRPlugin.Step.Render, out rightPos)) + rightHandAnchor.localPosition = rightPos; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.LeftHand, NodeStatePropertyType.Orientation, OVRPlugin.Node.HandLeft, OVRPlugin.Step.Render, out leftQuat)) + leftHandAnchor.localRotation = leftQuat; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.RightHand, NodeStatePropertyType.Orientation, OVRPlugin.Node.HandRight, OVRPlugin.Step.Render, out rightQuat)) + rightHandAnchor.localRotation = rightQuat; + + } + else + { + leftHandAnchor.localPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.LTouch); + rightHandAnchor.localPosition = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch); + leftHandAnchor.localRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.LTouch); + rightHandAnchor.localRotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTouch); + } + + trackerAnchor.localPosition = tracker.position; + + OVRPose leftOffsetPose = OVRPose.identity; + OVRPose rightOffsetPose = OVRPose.identity; + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + leftOffsetPose = OVRManager.GetOpenVRControllerOffset(Node.LeftHand); + rightOffsetPose = OVRManager.GetOpenVRControllerOffset(Node.RightHand); + + //Sets poses of left and right nodes, local to the tracking space. + OVRManager.SetOpenVRLocalPose(trackingSpace.InverseTransformPoint(leftControllerAnchor.position), + trackingSpace.InverseTransformPoint(rightControllerAnchor.position), + Quaternion.Inverse(trackingSpace.rotation) * leftControllerAnchor.rotation, + Quaternion.Inverse(trackingSpace.rotation) * rightControllerAnchor.rotation); + } + rightControllerAnchor.localPosition = rightOffsetPose.position; + rightControllerAnchor.localRotation = rightOffsetPose.orientation; + leftControllerAnchor.localPosition = leftOffsetPose.position; + leftControllerAnchor.localRotation = leftOffsetPose.orientation; + } + + RaiseUpdatedAnchorsEvent(); + } + + protected virtual void OnBeforeRenderCallback() + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) //Restrict late-update to only Oculus devices + { + bool controllersNeedUpdate = OVRManager.instance.LateControllerUpdate; +#if USING_XR_SDK + //For the XR SDK, we need to late update head pose, not just the controllers, because the functionality + //is no longer built-in to the Engine. Under legacy, late camera update is done by default. In the XR SDK, you must use + //Tracked Pose Driver to get this by default, which we do not use. So, we have to manually late update camera poses. + UpdateAnchors(true, controllersNeedUpdate); +#else + if (controllersNeedUpdate) + UpdateAnchors(false, true); +#endif + } + } + + protected virtual void RaiseUpdatedAnchorsEvent() + { + if (UpdatedAnchors != null) + { + UpdatedAnchors(this); + } + } + + public virtual void EnsureGameObjectIntegrity() + { + bool monoscopic = OVRManager.instance != null ? OVRManager.instance.monoscopic : false; + + if (trackingSpace == null) + trackingSpace = ConfigureAnchor(null, trackingSpaceName); + + if (leftEyeAnchor == null) + leftEyeAnchor = ConfigureAnchor(trackingSpace, leftEyeAnchorName); + + if (centerEyeAnchor == null) + centerEyeAnchor = ConfigureAnchor(trackingSpace, centerEyeAnchorName); + + if (rightEyeAnchor == null) + rightEyeAnchor = ConfigureAnchor(trackingSpace, rightEyeAnchorName); + + if (leftHandAnchor == null) + leftHandAnchor = ConfigureAnchor(trackingSpace, leftHandAnchorName); + + if (rightHandAnchor == null) + rightHandAnchor = ConfigureAnchor(trackingSpace, rightHandAnchorName); + + if (trackerAnchor == null) + trackerAnchor = ConfigureAnchor(trackingSpace, trackerAnchorName); + + if (leftControllerAnchor == null) + leftControllerAnchor = ConfigureAnchor(leftHandAnchor, leftControllerAnchorName); + + if (rightControllerAnchor == null) + rightControllerAnchor = ConfigureAnchor(rightHandAnchor, rightControllerAnchorName); + + if (_centerEyeCamera == null || _leftEyeCamera == null || _rightEyeCamera == null) + { + _centerEyeCamera = centerEyeAnchor.GetComponent(); + _leftEyeCamera = leftEyeAnchor.GetComponent(); + _rightEyeCamera = rightEyeAnchor.GetComponent(); + + if (_centerEyeCamera == null) + { + _centerEyeCamera = centerEyeAnchor.gameObject.AddComponent(); + _centerEyeCamera.tag = "MainCamera"; + } + + if (_leftEyeCamera == null) + { + _leftEyeCamera = leftEyeAnchor.gameObject.AddComponent(); + _leftEyeCamera.tag = "MainCamera"; + } + + if (_rightEyeCamera == null) + { + _rightEyeCamera = rightEyeAnchor.gameObject.AddComponent(); + _rightEyeCamera.tag = "MainCamera"; + } + + _centerEyeCamera.stereoTargetEye = StereoTargetEyeMask.Both; + _leftEyeCamera.stereoTargetEye = StereoTargetEyeMask.Left; + _rightEyeCamera.stereoTargetEye = StereoTargetEyeMask.Right; + } + + if (monoscopic && !OVRPlugin.EyeTextureArrayEnabled) + { + // Output to left eye only when in monoscopic mode + if (_centerEyeCamera.stereoTargetEye != StereoTargetEyeMask.Left) + { + _centerEyeCamera.stereoTargetEye = StereoTargetEyeMask.Left; + } + } + else + { + if (_centerEyeCamera.stereoTargetEye != StereoTargetEyeMask.Both) + { + _centerEyeCamera.stereoTargetEye = StereoTargetEyeMask.Both; + } + } + + if (disableEyeAnchorCameras) + { + _centerEyeCamera.enabled = false; + _leftEyeCamera.enabled = false; + _rightEyeCamera.enabled = false; + } + else + { + // disable the right eye camera when in monoscopic mode + if (_centerEyeCamera.enabled == usePerEyeCameras || + _leftEyeCamera.enabled == !usePerEyeCameras || + _rightEyeCamera.enabled == !(usePerEyeCameras && (!monoscopic || OVRPlugin.EyeTextureArrayEnabled))) + { + _skipUpdate = true; + } + + _centerEyeCamera.enabled = !usePerEyeCameras; + _leftEyeCamera.enabled = usePerEyeCameras; + _rightEyeCamera.enabled = (usePerEyeCameras && (!monoscopic || OVRPlugin.EyeTextureArrayEnabled)); + + } + } + + protected virtual Transform ConfigureAnchor(Transform root, string name) + { + Transform anchor = (root != null) ? root.Find(name) : null; + + if (anchor == null) + { + anchor = transform.Find(name); + } + + if (anchor == null) + { + anchor = new GameObject(name).transform; + } + + anchor.name = name; + anchor.parent = (root != null) ? root : transform; + anchor.localScale = Vector3.one; + anchor.localPosition = Vector3.zero; + anchor.localRotation = Quaternion.identity; + + return anchor; + } + + public virtual Matrix4x4 ComputeTrackReferenceMatrix() + { + if (centerEyeAnchor == null) + { + Debug.LogError("centerEyeAnchor is required"); + return Matrix4x4.identity; + } + + // The ideal approach would be using UnityEngine.VR.VRNode.TrackingReference, then we would not have to depend on the OVRCameraRig. Unfortunately, it is not available in Unity 5.4.3 + + OVRPose headPose = OVRPose.identity; + + Vector3 pos; + Quaternion rot; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.Head, NodeStatePropertyType.Position, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out pos)) + headPose.position = pos; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.Head, NodeStatePropertyType.Orientation, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out rot)) + headPose.orientation = rot; + + OVRPose invHeadPose = headPose.Inverse(); + Matrix4x4 invHeadMatrix = Matrix4x4.TRS(invHeadPose.position, invHeadPose.orientation, Vector3.one); + + Matrix4x4 ret = centerEyeAnchor.localToWorldMatrix * invHeadMatrix; + + return ret; + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRCameraRig.cs.meta b/Assets/Oculus/VR/Scripts/OVRCameraRig.cs.meta new file mode 100644 index 0000000..0f3217c --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRCameraRig.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df9f338034892c44ebb62d97894772f1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRCommon.cs b/Assets/Oculus/VR/Scripts/OVRCommon.cs new file mode 100644 index 0000000..b7b2cc5 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRCommon.cs @@ -0,0 +1,643 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +#if USING_XR_SDK +using UnityEngine.XR; +using UnityEngine.Experimental.XR; +#endif + +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +using NodeState = UnityEngine.XR.XRNodeState; +using Device = UnityEngine.XR.XRDevice; +#elif UNITY_2017_1_OR_NEWER +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +using NodeState = UnityEngine.VR.VRNodeState; +using Device = UnityEngine.VR.VRDevice; +#else +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +using Device = UnityEngine.VR.VRDevice; +#endif + +/// +/// Miscellaneous extension methods that any script can use. +/// +public static class OVRExtensions +{ + /// + /// Converts the given world-space transform to an OVRPose in tracking space. + /// + public static OVRPose ToTrackingSpacePose(this Transform transform, Camera camera) + { + //Initializing to identity, but for all Oculus headsets, down below the pose will be initialized to the runtime's pose value, so identity will never be returned. + OVRPose headPose = OVRPose.identity; + + Vector3 pos; + Quaternion rot; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.Head, NodeStatePropertyType.Position, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out pos)) + headPose.position = pos; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.Head, NodeStatePropertyType.Orientation, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out rot)) + headPose.orientation = rot; + + var ret = headPose * transform.ToHeadSpacePose(camera); + + return ret; + } + + + /// + /// Converts the given pose from tracking-space to world-space. + /// + public static OVRPose ToWorldSpacePose(OVRPose trackingSpacePose) + { + OVRPose headPose = OVRPose.identity; + + Vector3 pos; + Quaternion rot; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.Head, NodeStatePropertyType.Position, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out pos)) + headPose.position = pos; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.Head, NodeStatePropertyType.Orientation, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out rot)) + headPose.orientation = rot; + + // Transform from tracking-Space to head-Space + OVRPose poseInHeadSpace = headPose.Inverse() * trackingSpacePose; + + // Transform from head space to world space + OVRPose ret = Camera.main.transform.ToOVRPose() * poseInHeadSpace; + + return ret; + } + + /// + /// Converts the given world-space transform to an OVRPose in head space. + /// + public static OVRPose ToHeadSpacePose(this Transform transform, Camera camera) + { + return camera.transform.ToOVRPose().Inverse() * transform.ToOVRPose(); + } + + public static OVRPose ToOVRPose(this Transform t, bool isLocal = false) + { + OVRPose pose; + pose.orientation = (isLocal) ? t.localRotation : t.rotation; + pose.position = (isLocal) ? t.localPosition : t.position; + return pose; + } + + public static void FromOVRPose(this Transform t, OVRPose pose, bool isLocal = false) + { + if (isLocal) + { + t.localRotation = pose.orientation; + t.localPosition = pose.position; + } + else + { + t.rotation = pose.orientation; + t.position = pose.position; + } + } + + public static OVRPose ToOVRPose(this OVRPlugin.Posef p) + { + return new OVRPose() + { + position = new Vector3(p.Position.x, p.Position.y, -p.Position.z), + orientation = new Quaternion(-p.Orientation.x, -p.Orientation.y, p.Orientation.z, p.Orientation.w) + }; + } + + public static OVRTracker.Frustum ToFrustum(this OVRPlugin.Frustumf f) + { + return new OVRTracker.Frustum() + { + nearZ = f.zNear, + farZ = f.zFar, + + fov = new Vector2() + { + x = Mathf.Rad2Deg * f.fovX, + y = Mathf.Rad2Deg * f.fovY + } + }; + } + + public static Color FromColorf(this OVRPlugin.Colorf c) + { + return new Color() { r = c.r, g = c.g, b = c.b, a = c.a }; + } + + public static OVRPlugin.Colorf ToColorf(this Color c) + { + return new OVRPlugin.Colorf() { r = c.r, g = c.g, b = c.b, a = c.a }; + } + + public static Vector3 FromVector3f(this OVRPlugin.Vector3f v) + { + return new Vector3() { x = v.x, y = v.y, z = v.z }; + } + + public static Vector3 FromFlippedZVector3f(this OVRPlugin.Vector3f v) + { + return new Vector3() { x = v.x, y = v.y, z = -v.z }; + } + + public static OVRPlugin.Vector3f ToVector3f(this Vector3 v) + { + return new OVRPlugin.Vector3f() { x = v.x, y = v.y, z = v.z }; + } + + public static OVRPlugin.Vector3f ToFlippedZVector3f(this Vector3 v) + { + return new OVRPlugin.Vector3f() { x = v.x, y = v.y, z = -v.z }; + } + + public static Quaternion FromQuatf(this OVRPlugin.Quatf q) + { + return new Quaternion() { x = q.x, y = q.y, z = q.z, w = q.w }; + } + + public static Quaternion FromFlippedZQuatf(this OVRPlugin.Quatf q) + { + return new Quaternion() { x = -q.x, y = -q.y, z = q.z, w = q.w }; + } + + public static OVRPlugin.Quatf ToQuatf(this Quaternion q) + { + return new OVRPlugin.Quatf() { x = q.x, y = q.y, z = q.z, w = q.w }; + } + + public static OVRPlugin.Quatf ToFlippedZQuatf(this Quaternion q) + { + return new OVRPlugin.Quatf() { x = -q.x, y = -q.y, z = q.z, w = q.w }; + } + + public static OVR.OpenVR.HmdMatrix34_t ConvertToHMDMatrix34(this Matrix4x4 m) + { + OVR.OpenVR.HmdMatrix34_t pose = new OVR.OpenVR.HmdMatrix34_t(); + + pose.m0 = m[0, 0]; + pose.m1 = m[0, 1]; + pose.m2 = -m[0, 2]; + pose.m3 = m[0, 3]; + + pose.m4 = m[1, 0]; + pose.m5 = m[1, 1]; + pose.m6 = -m[1, 2]; + pose.m7 = m[1, 3]; + + pose.m8 = -m[2, 0]; + pose.m9 = -m[2, 1]; + pose.m10 = m[2, 2]; + pose.m11 = -m[2, 3]; + + return pose; + } + +} + +//4 types of node state properties that can be queried with UnityEngine.XR +public enum NodeStatePropertyType +{ + Acceleration, + AngularAcceleration, + Velocity, + AngularVelocity, + Position, + Orientation +} + +public static class OVRNodeStateProperties +{ +#if UNITY_2017_1_OR_NEWER + private static List nodeStateList = new List(); +#endif + + public static bool IsHmdPresent() + { + if (OVRManager.OVRManagerinitialized && OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.hmdPresent; +#if USING_XR_SDK + XRDisplaySubsystem currentDisplaySubsystem = OVRManager.GetCurrentDisplaySubsystem(); + if (currentDisplaySubsystem != null) + return currentDisplaySubsystem.running; //In 2019.3, this should be changed to currentDisplaySubsystem.isConnected, but this is a fine placeholder for now. + return false; +#else + return Device.isPresent; +#endif + } + + public static bool GetNodeStatePropertyVector3(Node nodeType, NodeStatePropertyType propertyType, OVRPlugin.Node ovrpNodeType, OVRPlugin.Step stepType, out Vector3 retVec) + { + retVec = Vector3.zero; + switch (propertyType) + { + case NodeStatePropertyType.Acceleration: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + retVec = OVRPlugin.GetNodeAcceleration(ovrpNodeType, stepType).FromFlippedZVector3f(); + return true; + } +#if UNITY_2017_1_OR_NEWER + if (GetUnityXRNodeStateVector3(nodeType, NodeStatePropertyType.Acceleration, out retVec)) + return true; +#endif + break; + + case NodeStatePropertyType.AngularAcceleration: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + retVec = OVRPlugin.GetNodeAngularAcceleration(ovrpNodeType, stepType).FromFlippedZVector3f(); + return true; + } +#if UNITY_2017_2_OR_NEWER + if (GetUnityXRNodeStateVector3(nodeType, NodeStatePropertyType.AngularAcceleration, out retVec)) + return true; +#endif + break; + + case NodeStatePropertyType.Velocity: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + retVec = OVRPlugin.GetNodeVelocity(ovrpNodeType, stepType).FromFlippedZVector3f(); + return true; + } +#if UNITY_2017_1_OR_NEWER + if (GetUnityXRNodeStateVector3(nodeType, NodeStatePropertyType.Velocity, out retVec)) + return true; +#endif + break; + + case NodeStatePropertyType.AngularVelocity: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + retVec = OVRPlugin.GetNodeAngularVelocity(ovrpNodeType, stepType).FromFlippedZVector3f(); + return true; + } +#if UNITY_2017_2_OR_NEWER + if (GetUnityXRNodeStateVector3(nodeType, NodeStatePropertyType.AngularVelocity, out retVec)) + return true; +#endif + break; + + case NodeStatePropertyType.Position: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + retVec = OVRPlugin.GetNodePose(ovrpNodeType, stepType).ToOVRPose().position; + return true; + } +#if UNITY_2017_1_OR_NEWER + if (GetUnityXRNodeStateVector3(nodeType, NodeStatePropertyType.Position, out retVec)) + return true; +#endif + break; + } + + return false; + } + + public static bool GetNodeStatePropertyQuaternion(Node nodeType, NodeStatePropertyType propertyType, OVRPlugin.Node ovrpNodeType, OVRPlugin.Step stepType, out Quaternion retQuat) + { + retQuat = Quaternion.identity; + switch (propertyType) + { + case NodeStatePropertyType.Orientation: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + retQuat = OVRPlugin.GetNodePose(ovrpNodeType, stepType).ToOVRPose().orientation; + return true; + } +#if UNITY_2017_1_OR_NEWER + if (GetUnityXRNodeStateQuaternion(nodeType, NodeStatePropertyType.Orientation, out retQuat)) + return true; +#endif + break; + } + return false; + } + +#if UNITY_2017_1_OR_NEWER + private static bool ValidateProperty(Node nodeType, ref NodeState requestedNodeState) + { + InputTracking.GetNodeStates(nodeStateList); + + if (nodeStateList.Count == 0) + return false; + + bool nodeStateFound = false; + requestedNodeState = nodeStateList[0]; + + for (int i = 0; i < nodeStateList.Count; i++) + { + if (nodeStateList[i].nodeType == nodeType) + { + requestedNodeState = nodeStateList[i]; + nodeStateFound = true; + break; + } + } + + return nodeStateFound; + } +#endif + +#if UNITY_2017_1_OR_NEWER + private static bool GetUnityXRNodeStateVector3(Node nodeType, NodeStatePropertyType propertyType, out Vector3 retVec) + { + retVec = Vector3.zero; + + NodeState requestedNodeState = default(NodeState); + + if (!ValidateProperty(nodeType, ref requestedNodeState)) + return false; + + if (propertyType == NodeStatePropertyType.Acceleration) + { + if (requestedNodeState.TryGetAcceleration(out retVec)) + { + return true; + } + } + else if (propertyType == NodeStatePropertyType.AngularAcceleration) + { +#if UNITY_2017_2_OR_NEWER + if (requestedNodeState.TryGetAngularAcceleration(out retVec)) + { + return true; + } +#endif + } + else if (propertyType == NodeStatePropertyType.Velocity) + { + if (requestedNodeState.TryGetVelocity(out retVec)) + { + return true; + } + } + else if (propertyType == NodeStatePropertyType.AngularVelocity) + { +#if UNITY_2017_2_OR_NEWER + if (requestedNodeState.TryGetAngularVelocity(out retVec)) + { + return true; + } +#endif + } + else if (propertyType == NodeStatePropertyType.Position) + { + if (requestedNodeState.TryGetPosition(out retVec)) + { + return true; + } + } + + return false; + } +#endif + +#if UNITY_2017_1_OR_NEWER + private static bool GetUnityXRNodeStateQuaternion(Node nodeType, NodeStatePropertyType propertyType, out Quaternion retQuat) + { + retQuat = Quaternion.identity; + + NodeState requestedNodeState = default(NodeState); + + if (!ValidateProperty(nodeType, ref requestedNodeState)) + return false; + + if (propertyType == NodeStatePropertyType.Orientation) + { + if (requestedNodeState.TryGetRotation(out retQuat)) + { + return true; + } + } + + return false; + } +#endif + +} + +/// +/// An affine transformation built from a Unity position and orientation. +/// +[System.Serializable] +public struct OVRPose +{ + /// + /// A pose with no translation or rotation. + /// + public static OVRPose identity + { + get { + return new OVRPose() + { + position = Vector3.zero, + orientation = Quaternion.identity + }; + } + } + + public override bool Equals(System.Object obj) + { + return obj is OVRPose && this == (OVRPose)obj; + } + + public override int GetHashCode() + { + return position.GetHashCode() ^ orientation.GetHashCode(); + } + + public static bool operator ==(OVRPose x, OVRPose y) + { + return x.position == y.position && x.orientation == y.orientation; + } + + public static bool operator !=(OVRPose x, OVRPose y) + { + return !(x == y); + } + + /// + /// The position. + /// + public Vector3 position; + + /// + /// The orientation. + /// + public Quaternion orientation; + + /// + /// Multiplies two poses. + /// + public static OVRPose operator*(OVRPose lhs, OVRPose rhs) + { + var ret = new OVRPose(); + ret.position = lhs.position + lhs.orientation * rhs.position; + ret.orientation = lhs.orientation * rhs.orientation; + return ret; + } + + /// + /// Computes the inverse of the given pose. + /// + public OVRPose Inverse() + { + OVRPose ret; + ret.orientation = Quaternion.Inverse(orientation); + ret.position = ret.orientation * -position; + return ret; + } + + /// + /// Converts the pose from left- to right-handed or vice-versa. + /// + public OVRPose flipZ() + { + var ret = this; + ret.position.z = -ret.position.z; + ret.orientation.z = -ret.orientation.z; + ret.orientation.w = -ret.orientation.w; + return ret; + } + + public OVRPlugin.Posef ToPosef() + { + return new OVRPlugin.Posef() + { + Position = position.ToVector3f(), + Orientation = orientation.ToQuatf() + }; + } +} + +/// +/// Encapsulates an 8-byte-aligned of unmanaged memory. +/// +public class OVRNativeBuffer : IDisposable +{ + private bool disposed = false; + private int m_numBytes = 0; + private IntPtr m_ptr = IntPtr.Zero; + + /// + /// Creates a buffer of the specified size. + /// + public OVRNativeBuffer(int numBytes) + { + Reallocate(numBytes); + } + + /// + /// Releases unmanaged resources and performs other cleanup operations before the is + /// reclaimed by garbage collection. + /// + ~OVRNativeBuffer() + { + Dispose(false); + } + + /// + /// Reallocates the buffer with the specified new size. + /// + public void Reset(int numBytes) + { + Reallocate(numBytes); + } + + /// + /// The current number of bytes in the buffer. + /// + public int GetCapacity() + { + return m_numBytes; + } + + /// + /// A pointer to the unmanaged memory in the buffer, starting at the given offset in bytes. + /// + public IntPtr GetPointer(int byteOffset = 0) + { + if (byteOffset < 0 || byteOffset >= m_numBytes) + return IntPtr.Zero; + return (byteOffset == 0) ? m_ptr : new IntPtr(m_ptr.ToInt64() + byteOffset); + } + + /// + /// Releases all resource used by the object. + /// + /// Call when you are finished using the . The + /// method leaves the in an unusable state. After calling , you must + /// release all references to the so the garbage collector can reclaim the memory that + /// the was occupying. + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + private void Dispose(bool disposing) + { + if (disposed) + return; + + if (disposing) + { + // dispose managed resources + } + + // dispose unmanaged resources + Release(); + + disposed = true; + } + + private void Reallocate(int numBytes) + { + Release(); + + if (numBytes > 0) + { + m_ptr = Marshal.AllocHGlobal(numBytes); + m_numBytes = numBytes; + } + else + { + m_ptr = IntPtr.Zero; + m_numBytes = 0; + } + } + + private void Release() + { + if (m_ptr != IntPtr.Zero) + { + Marshal.FreeHGlobal(m_ptr); + m_ptr = IntPtr.Zero; + m_numBytes = 0; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRCommon.cs.meta b/Assets/Oculus/VR/Scripts/OVRCommon.cs.meta new file mode 100644 index 0000000..94d3e50 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRCommon.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 176f8d665b1d78048b1e87956698df6b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs new file mode 100644 index 0000000..0b39f23 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs @@ -0,0 +1,119 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +/// +/// This is a simple behavior that can be attached to a parent of the CameraRig in order +/// to provide movement via the gamepad. This is useful when testing an application in +/// the Unity editor without the HMD. +/// To use it, create a game object in your scene and drag your CameraRig to be a child +/// of the game object. Then, add the OVRDebugHeadController behavior to the game object. +/// Alternatively, this behavior can be placed directly on the OVRCameraRig object, but +/// that is not guaranteed to work if OVRCameraRig functionality changes in the future. +/// In the parent case, the object with OVRDebugHeadController can be thougt of as a +/// platform that your camera is attached to. When the platform moves or rotates, the +/// camera moves or rotates, but the camera can still move independently while "on" the +/// platform. +/// In general, this behavior should be disabled when not debugging. +/// +public class OVRDebugHeadController : MonoBehaviour +{ + [SerializeField] + public bool AllowPitchLook = false; + [SerializeField] + public bool AllowYawLook = true; + [SerializeField] + public bool InvertPitch = false; + [SerializeField] + public float GamePad_PitchDegreesPerSec = 90.0f; + [SerializeField] + public float GamePad_YawDegreesPerSec = 90.0f; + [SerializeField] + public bool AllowMovement = false; + [SerializeField] + public float ForwardSpeed = 2.0f; + [SerializeField] + public float StrafeSpeed = 2.0f; + + protected OVRCameraRig CameraRig = null; + + void Awake() + { + // locate the camera rig so we can use it to get the current camera transform each frame + OVRCameraRig[] CameraRigs = gameObject.GetComponentsInChildren(); + + if( CameraRigs.Length == 0 ) + Debug.LogWarning("OVRCamParent: No OVRCameraRig attached."); + else if (CameraRigs.Length > 1) + Debug.LogWarning("OVRCamParent: More then 1 OVRCameraRig attached."); + else + CameraRig = CameraRigs[0]; + } + + // Use this for initialization + void Start () + { + + } + + // Update is called once per frame + void Update () + { + if ( AllowMovement ) + { + float gamePad_FwdAxis = OVRInput.Get(OVRInput.RawAxis2D.LThumbstick).y; + float gamePad_StrafeAxis = OVRInput.Get(OVRInput.RawAxis2D.LThumbstick).x; + + Vector3 fwdMove = ( CameraRig.centerEyeAnchor.rotation * Vector3.forward ) * gamePad_FwdAxis * Time.deltaTime * ForwardSpeed; + Vector3 strafeMove = ( CameraRig.centerEyeAnchor.rotation * Vector3.right ) * gamePad_StrafeAxis * Time.deltaTime * StrafeSpeed; + transform.position += fwdMove + strafeMove; + } + +#if UNITY_2017_2_OR_NEWER + if ( !UnityEngine.XR.XRDevice.isPresent && ( AllowYawLook || AllowPitchLook ) ) +#else + if ( !UnityEngine.VR.VRDevice.isPresent && ( AllowYawLook || AllowPitchLook ) ) +#endif + { + Quaternion r = transform.rotation; + if ( AllowYawLook ) + { + float gamePadYaw = OVRInput.Get(OVRInput.RawAxis2D.RThumbstick).x; + float yawAmount = gamePadYaw * Time.deltaTime * GamePad_YawDegreesPerSec; + Quaternion yawRot = Quaternion.AngleAxis( yawAmount, Vector3.up ); + r = yawRot * r; + } + if ( AllowPitchLook ) + { + float gamePadPitch = OVRInput.Get(OVRInput.RawAxis2D.RThumbstick).y; + if ( Mathf.Abs( gamePadPitch ) > 0.0001f ) + { + if ( InvertPitch ) + { + gamePadPitch *= -1.0f; + } + float pitchAmount = gamePadPitch * Time.deltaTime * GamePad_PitchDegreesPerSec; + Quaternion pitchRot = Quaternion.AngleAxis( pitchAmount, Vector3.left ); + r = r * pitchRot; + } + } + + transform.rotation = r; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs.meta b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs.meta new file mode 100644 index 0000000..0d876dd --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRDebugHeadController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 563681618daa71b4c89f979b1fd7170b +timeCreated: 1433450365 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRDisplay.cs b/Assets/Oculus/VR/Scripts/OVRDisplay.cs new file mode 100644 index 0000000..1481f44 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRDisplay.cs @@ -0,0 +1,400 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Runtime.InteropServices; +using System.Text.RegularExpressions; +using UnityEngine; +using System.Collections.Generic; + +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +using NodeState = UnityEngine.XR.XRNodeState; +using Settings = UnityEngine.XR.XRSettings; +#elif UNITY_2017_1_OR_NEWER +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +using NodeState = UnityEngine.VR.VRNodeState; +using Settings = UnityEngine.VR.VRSettings; +#else +using Node = UnityEngine.VR.VRNode; +using Settings = UnityEngine.VR.VRSettings; +#endif + +/// +/// Manages an Oculus Rift head-mounted display (HMD). +/// +public class OVRDisplay +{ + /// + /// Contains full fov information per eye + /// Under Symmetric Fov mode, UpFov == DownFov and LeftFov == RightFov. + /// + public struct EyeFov + { + public float UpFov; + public float DownFov; + public float LeftFov; + public float RightFov; + } + + /// + /// Specifies the size and field-of-view for one eye texture. + /// + public struct EyeRenderDesc + { + /// + /// The horizontal and vertical size of the texture. + /// + public Vector2 resolution; + + /// + /// The angle of the horizontal and vertical field of view in degrees. + /// For Symmetric FOV interface compatibility + /// Note this includes the fov angle from both sides + /// + public Vector2 fov; + + /// + /// The full information of field of view in degrees. + /// When Asymmetric FOV isn't enabled, this returns the maximum fov angle + /// + public EyeFov fullFov; + } + + /// + /// Contains latency measurements for a single frame of rendering. + /// + public struct LatencyData + { + /// + /// The time it took to render both eyes in seconds. + /// + public float render; + + /// + /// The time it took to perform TimeWarp in seconds. + /// + public float timeWarp; + + /// + /// The time between the end of TimeWarp and scan-out in seconds. + /// + public float postPresent; + public float renderError; + public float timeWarpError; + } + + private bool needsConfigureTexture; + private EyeRenderDesc[] eyeDescs = new EyeRenderDesc[2]; + private bool recenterRequested = false; + private int recenterRequestedFrameCount = int.MaxValue; + private OVRPose previousRelativeTrackingSpacePose; + private OVRManager.TrackingOrigin previousTrackingOrigin; + + /// + /// Creates an instance of OVRDisplay. Called by OVRManager. + /// + public OVRDisplay() + { + UpdateTextures(); + if (OVRPlugin.GetSystemHeadsetType() == OVRPlugin.SystemHeadset.Oculus_Quest) + { + previousTrackingOrigin = OVRManager.instance.trackingOriginType; + OVRManager.TrackingOrigin relativeOrigin = (previousTrackingOrigin != OVRManager.TrackingOrigin.Stage) ? OVRManager.TrackingOrigin.Stage : OVRManager.TrackingOrigin.EyeLevel; + previousRelativeTrackingSpacePose = OVRPlugin.GetTrackingTransformRelativePose((OVRPlugin.TrackingOrigin)relativeOrigin).ToOVRPose(); + } + } + + /// + /// Updates the internal state of the OVRDisplay. Called by OVRManager. + /// + public void Update() + { + UpdateTextures(); + + if (recenterRequested && Time.frameCount > recenterRequestedFrameCount) + { + if (RecenteredPose != null) + { + RecenteredPose(); + } + recenterRequested = false; + recenterRequestedFrameCount = int.MaxValue; + } + if (OVRPlugin.GetSystemHeadsetType() == OVRPlugin.SystemHeadset.Oculus_Quest) + { + OVRManager.TrackingOrigin relativeOrigin = (OVRManager.instance.trackingOriginType != OVRManager.TrackingOrigin.Stage) ? OVRManager.TrackingOrigin.Stage : OVRManager.TrackingOrigin.EyeLevel; + OVRPose relativeTrackingSpacePose = OVRPlugin.GetTrackingTransformRelativePose((OVRPlugin.TrackingOrigin)relativeOrigin).ToOVRPose(); + //If the tracking origin type hasn't switched and the relative pose changes, a recenter occurred. + if (previousTrackingOrigin == OVRManager.instance.trackingOriginType && previousRelativeTrackingSpacePose != relativeTrackingSpacePose && RecenteredPose != null) + { + RecenteredPose(); + } + previousRelativeTrackingSpacePose = relativeTrackingSpacePose; + previousTrackingOrigin = OVRManager.instance.trackingOriginType; + } + } + + /// + /// Occurs when the head pose is reset. + /// + public event System.Action RecenteredPose; + + /// + /// Recenters the head pose. + /// + public void RecenterPose() + { +#if UNITY_2017_2_OR_NEWER + UnityEngine.XR.InputTracking.Recenter(); +#else + UnityEngine.VR.InputTracking.Recenter(); +#endif + + // The current poses are cached for the current frame and won't be updated immediately + // after UnityEngine.VR.InputTracking.Recenter(). So we need to wait until next frame + // to trigger the RecenteredPose delegate. The application could expect the correct pose + // when the RecenteredPose delegate get called. + recenterRequested = true; + recenterRequestedFrameCount = Time.frameCount; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + OVRMixedReality.RecenterPose(); +#endif + } + + /// + /// Gets the current linear acceleration of the head. + /// + public Vector3 acceleration + { + get { + if (!OVRManager.isHmdPresent) + return Vector3.zero; + + Vector3 retVec = Vector3.zero; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.Head, NodeStatePropertyType.Acceleration, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out retVec)) + return retVec; + return Vector3.zero; + } + } + + /// + /// Gets the current angular acceleration of the head in radians per second per second about each axis. + /// + public Vector3 angularAcceleration + { + get + { + if (!OVRManager.isHmdPresent) + return Vector3.zero; + + Vector3 retVec = Vector3.zero; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.Head, NodeStatePropertyType.AngularAcceleration, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out retVec)) + return retVec; + return Vector3.zero; + + } + } + + /// + /// Gets the current linear velocity of the head in meters per second. + /// + public Vector3 velocity + { + get + { + if (!OVRManager.isHmdPresent) + return Vector3.zero; + + Vector3 retVec = Vector3.zero; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.Head, NodeStatePropertyType.Velocity, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out retVec)) + return retVec; + return Vector3.zero; + } + } + + /// + /// Gets the current angular velocity of the head in radians per second about each axis. + /// + public Vector3 angularVelocity + { + get { + if (!OVRManager.isHmdPresent) + return Vector3.zero; + + Vector3 retVec = Vector3.zero; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.Head, NodeStatePropertyType.AngularVelocity, OVRPlugin.Node.Head, OVRPlugin.Step.Render, out retVec)) + return retVec; + return Vector3.zero; + } + } + + /// + /// Gets the resolution and field of view for the given eye. + /// +#if UNITY_2017_2_OR_NEWER + public EyeRenderDesc GetEyeRenderDesc(UnityEngine.XR.XRNode eye) +#else + public EyeRenderDesc GetEyeRenderDesc(UnityEngine.VR.VRNode eye) +#endif + { + return eyeDescs[(int)eye]; + } + + /// + /// Gets the current measured latency values. + /// + public LatencyData latency + { + get { + if (!OVRManager.isHmdPresent) + return new LatencyData(); + + string latency = OVRPlugin.latency; + + var r = new Regex("Render: ([0-9]+[.][0-9]+)ms, TimeWarp: ([0-9]+[.][0-9]+)ms, PostPresent: ([0-9]+[.][0-9]+)ms", RegexOptions.None); + + var ret = new LatencyData(); + + Match match = r.Match(latency); + if (match.Success) + { + ret.render = float.Parse(match.Groups[1].Value); + ret.timeWarp = float.Parse(match.Groups[2].Value); + ret.postPresent = float.Parse(match.Groups[3].Value); + } + + return ret; + } + } + + /// + /// Gets application's frame rate reported by oculus plugin + /// + public float appFramerate + { + get + { + if (!OVRManager.isHmdPresent) + return 0; + + return OVRPlugin.GetAppFramerate(); + } + } + + /// + /// Gets the recommended MSAA level for optimal quality/performance the current device. + /// + public int recommendedMSAALevel + { + get + { + int result = OVRPlugin.recommendedMSAALevel; + + if (result == 1) + result = 0; + + return result; + } + } + + /// + /// Gets the list of available display frequencies supported by this hardware. + /// + public float[] displayFrequenciesAvailable + { + get { return OVRPlugin.systemDisplayFrequenciesAvailable; } + } + + /// + /// Gets and sets the current display frequency. + /// + public float displayFrequency + { + get + { + return OVRPlugin.systemDisplayFrequency; + } + set + { + OVRPlugin.systemDisplayFrequency = value; + } + } + + private void UpdateTextures() + { +#if UNITY_2017_2_OR_NEWER + ConfigureEyeDesc(UnityEngine.XR.XRNode.LeftEye); + ConfigureEyeDesc(UnityEngine.XR.XRNode.RightEye); +#else + ConfigureEyeDesc(UnityEngine.VR.VRNode.LeftEye); + ConfigureEyeDesc(UnityEngine.VR.VRNode.RightEye); +#endif + } + +#if UNITY_2017_2_OR_NEWER + private void ConfigureEyeDesc(UnityEngine.XR.XRNode eye) +#else + private void ConfigureEyeDesc(UnityEngine.VR.VRNode eye) +#endif + { + if (!OVRManager.isHmdPresent) + return; + + int eyeTextureWidth = Settings.eyeTextureWidth; + int eyeTextureHeight = Settings.eyeTextureHeight; + + eyeDescs[(int)eye] = new EyeRenderDesc(); + eyeDescs[(int)eye].resolution = new Vector2(eyeTextureWidth, eyeTextureHeight); + + OVRPlugin.Frustumf2 frust; + if (OVRPlugin.GetNodeFrustum2((OVRPlugin.Node)eye, out frust)) + { + eyeDescs[(int)eye].fullFov.LeftFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.LeftTan); + eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.RightTan); + eyeDescs[(int)eye].fullFov.UpFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.UpTan); + eyeDescs[(int)eye].fullFov.DownFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.DownTan); + } + else + { + OVRPlugin.Frustumf frustOld = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye); + eyeDescs[(int)eye].fullFov.LeftFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f; + eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f; + eyeDescs[(int)eye].fullFov.UpFov = Mathf.Rad2Deg * frustOld.fovY * 0.5f; + eyeDescs[(int)eye].fullFov.DownFov = Mathf.Rad2Deg * frustOld.fovY * 0.5f; + } + + // Symmetric Fov uses the maximum fov angle + float maxFovX = Mathf.Max(eyeDescs[(int)eye].fullFov.LeftFov, eyeDescs[(int)eye].fullFov.RightFov); + float maxFovY = Mathf.Max(eyeDescs[(int)eye].fullFov.UpFov, eyeDescs[(int)eye].fullFov.DownFov); + eyeDescs[(int)eye].fov.x = maxFovX * 2.0f; + eyeDescs[(int)eye].fov.y = maxFovY * 2.0f; + + if (!OVRPlugin.AsymmetricFovEnabled) + { + eyeDescs[(int)eye].fullFov.LeftFov = maxFovX; + eyeDescs[(int)eye].fullFov.RightFov = maxFovX; + + eyeDescs[(int)eye].fullFov.UpFov = maxFovY; + eyeDescs[(int)eye].fullFov.DownFov = maxFovY; + } + + + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRDisplay.cs.meta b/Assets/Oculus/VR/Scripts/OVRDisplay.cs.meta new file mode 100644 index 0000000..d987173 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRDisplay.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb365ebe8e821fc4e81e9dca9d704357 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRHaptics.cs b/Assets/Oculus/VR/Scripts/OVRHaptics.cs new file mode 100644 index 0000000..f7305da --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHaptics.cs @@ -0,0 +1,388 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +/// +/// Plays tactile effects on a tracked VR controller. +/// +public static class OVRHaptics +{ + public readonly static OVRHapticsChannel[] Channels; + public readonly static OVRHapticsChannel LeftChannel; + public readonly static OVRHapticsChannel RightChannel; + + private readonly static OVRHapticsOutput[] m_outputs; + + static OVRHaptics() + { + Config.Load(); + + m_outputs = new OVRHapticsOutput[] + { + new OVRHapticsOutput((uint)OVRPlugin.Controller.LTouch), + new OVRHapticsOutput((uint)OVRPlugin.Controller.RTouch), + }; + + Channels = new OVRHapticsChannel[] + { + LeftChannel = new OVRHapticsChannel(0), + RightChannel = new OVRHapticsChannel(1), + }; + } + + /// + /// Determines the target format for haptics data on a specific device. + /// + public static class Config + { + public static int SampleRateHz { get; private set; } + public static int SampleSizeInBytes { get; private set; } + public static int MinimumSafeSamplesQueued { get; private set; } + public static int MinimumBufferSamplesCount { get; private set; } + public static int OptimalBufferSamplesCount { get; private set; } + public static int MaximumBufferSamplesCount { get; private set; } + + static Config() + { + Load(); + } + + public static void Load() + { + OVRPlugin.HapticsDesc desc = OVRPlugin.GetControllerHapticsDesc((uint)OVRPlugin.Controller.RTouch); + + SampleRateHz = desc.SampleRateHz; + SampleSizeInBytes = desc.SampleSizeInBytes; + MinimumSafeSamplesQueued = desc.MinimumSafeSamplesQueued; + MinimumBufferSamplesCount = desc.MinimumBufferSamplesCount; + OptimalBufferSamplesCount = desc.OptimalBufferSamplesCount; + MaximumBufferSamplesCount = desc.MaximumBufferSamplesCount; + } + } + + /// + /// A track of haptics data that can be mixed or sequenced with another track. + /// + public class OVRHapticsChannel + { + private OVRHapticsOutput m_output; + + /// + /// Constructs a channel targeting the specified output. + /// + public OVRHapticsChannel(uint outputIndex) + { + m_output = m_outputs[outputIndex]; + } + + /// + /// Cancels any currently-playing clips and immediatly plays the specified clip instead. + /// + public void Preempt(OVRHapticsClip clip) + { + m_output.Preempt(clip); + } + + /// + /// Enqueues the specified clip to play after any currently-playing clips finish. + /// + public void Queue(OVRHapticsClip clip) + { + m_output.Queue(clip); + } + + /// + /// Adds the specified clip to play simultaneously to the currently-playing clip(s). + /// + public void Mix(OVRHapticsClip clip) + { + m_output.Mix(clip); + } + + /// + /// Cancels any currently-playing clips. + /// + public void Clear() + { + m_output.Clear(); + } + } + + private class OVRHapticsOutput + { + private class ClipPlaybackTracker + { + public int ReadCount { get; set; } + public OVRHapticsClip Clip { get; set; } + + public ClipPlaybackTracker(OVRHapticsClip clip) + { + Clip = clip; + } + } + + private bool m_lowLatencyMode = true; + private bool m_paddingEnabled = true; + private int m_prevSamplesQueued = 0; + private float m_prevSamplesQueuedTime = 0; + private int m_numPredictionHits = 0; + private int m_numPredictionMisses = 0; + private int m_numUnderruns = 0; + private List m_pendingClips = new List(); + private uint m_controller = 0; + private OVRNativeBuffer m_nativeBuffer = new OVRNativeBuffer(OVRHaptics.Config.MaximumBufferSamplesCount * OVRHaptics.Config.SampleSizeInBytes); + private OVRHapticsClip m_paddingClip = new OVRHapticsClip(); + + public OVRHapticsOutput(uint controller) + { +#if UNITY_ANDROID + m_paddingEnabled = false; +#endif + m_controller = controller; + } + + /// + /// The system calls this each frame to update haptics playback. + /// + public void Process() + { + var hapticsState = OVRPlugin.GetControllerHapticsState(m_controller); + + float elapsedTime = Time.realtimeSinceStartup - m_prevSamplesQueuedTime; + if (m_prevSamplesQueued > 0) + { + int expectedSamples = m_prevSamplesQueued - (int)(elapsedTime * OVRHaptics.Config.SampleRateHz + 0.5f); + if (expectedSamples < 0) + expectedSamples = 0; + + if ((hapticsState.SamplesQueued - expectedSamples) == 0) + m_numPredictionHits++; + else + m_numPredictionMisses++; + + //Debug.Log(hapticsState.SamplesAvailable + "a " + hapticsState.SamplesQueued + "q " + expectedSamples + "e " + //+ "Prediction Accuracy: " + m_numPredictionHits / (float)(m_numPredictionMisses + m_numPredictionHits)); + + if ((expectedSamples > 0) && (hapticsState.SamplesQueued == 0)) + { + m_numUnderruns++; + //Debug.LogError("Samples Underrun (" + m_controller + " #" + m_numUnderruns + ") -" + // + " Expected: " + expectedSamples + // + " Actual: " + hapticsState.SamplesQueued); + } + + m_prevSamplesQueued = hapticsState.SamplesQueued; + m_prevSamplesQueuedTime = Time.realtimeSinceStartup; + } + + int desiredSamplesCount = OVRHaptics.Config.OptimalBufferSamplesCount; + if (m_lowLatencyMode) + { + float sampleRateMs = 1000.0f / (float)OVRHaptics.Config.SampleRateHz; + float elapsedMs = elapsedTime * 1000.0f; + int samplesNeededPerFrame = (int)Mathf.Ceil(elapsedMs / sampleRateMs); + int lowLatencySamplesCount = OVRHaptics.Config.MinimumSafeSamplesQueued + samplesNeededPerFrame; + + if (lowLatencySamplesCount < desiredSamplesCount) + desiredSamplesCount = lowLatencySamplesCount; + } + + if (hapticsState.SamplesQueued > desiredSamplesCount) + return; + + if (desiredSamplesCount > OVRHaptics.Config.MaximumBufferSamplesCount) + desiredSamplesCount = OVRHaptics.Config.MaximumBufferSamplesCount; + if (desiredSamplesCount > hapticsState.SamplesAvailable) + desiredSamplesCount = hapticsState.SamplesAvailable; + + int acquiredSamplesCount = 0; + int clipIndex = 0; + while(acquiredSamplesCount < desiredSamplesCount && clipIndex < m_pendingClips.Count) + { + int numSamplesToCopy = desiredSamplesCount - acquiredSamplesCount; + int remainingSamplesInClip = m_pendingClips[clipIndex].Clip.Count - m_pendingClips[clipIndex].ReadCount; + if (numSamplesToCopy > remainingSamplesInClip) + numSamplesToCopy = remainingSamplesInClip; + + if (numSamplesToCopy > 0) + { + int numBytes = numSamplesToCopy * OVRHaptics.Config.SampleSizeInBytes; + int dstOffset = acquiredSamplesCount * OVRHaptics.Config.SampleSizeInBytes; + int srcOffset = m_pendingClips[clipIndex].ReadCount * OVRHaptics.Config.SampleSizeInBytes; + Marshal.Copy(m_pendingClips[clipIndex].Clip.Samples, srcOffset, m_nativeBuffer.GetPointer(dstOffset), numBytes); + + m_pendingClips[clipIndex].ReadCount += numSamplesToCopy; + acquiredSamplesCount += numSamplesToCopy; + } + + clipIndex++; + } + + for (int i = m_pendingClips.Count - 1; i >= 0 && m_pendingClips.Count > 0; i--) + { + if (m_pendingClips[i].ReadCount >= m_pendingClips[i].Clip.Count) + m_pendingClips.RemoveAt(i); + } + + if (m_paddingEnabled) + { + int desiredPadding = desiredSamplesCount - (hapticsState.SamplesQueued + acquiredSamplesCount); + if (desiredPadding < (OVRHaptics.Config.MinimumBufferSamplesCount - acquiredSamplesCount)) + desiredPadding = (OVRHaptics.Config.MinimumBufferSamplesCount - acquiredSamplesCount); + if (desiredPadding > hapticsState.SamplesAvailable) + desiredPadding = hapticsState.SamplesAvailable; + + if (desiredPadding > 0) + { + int numBytes = desiredPadding * OVRHaptics.Config.SampleSizeInBytes; + int dstOffset = acquiredSamplesCount * OVRHaptics.Config.SampleSizeInBytes; + int srcOffset = 0; + Marshal.Copy(m_paddingClip.Samples, srcOffset, m_nativeBuffer.GetPointer(dstOffset), numBytes); + + acquiredSamplesCount += desiredPadding; + } + } + + if (acquiredSamplesCount > 0) + { + OVRPlugin.HapticsBuffer hapticsBuffer; + hapticsBuffer.Samples = m_nativeBuffer.GetPointer(); + hapticsBuffer.SamplesCount = acquiredSamplesCount; + + OVRPlugin.SetControllerHaptics(m_controller, hapticsBuffer); + + hapticsState = OVRPlugin.GetControllerHapticsState(m_controller); + m_prevSamplesQueued = hapticsState.SamplesQueued; + m_prevSamplesQueuedTime = Time.realtimeSinceStartup; + } + } + + /// + /// Immediately plays the specified clip without waiting for any currently-playing clip to finish. + /// + public void Preempt(OVRHapticsClip clip) + { + m_pendingClips.Clear(); + m_pendingClips.Add(new ClipPlaybackTracker(clip)); + } + + /// + /// Enqueues the specified clip to play after any currently-playing clip finishes. + /// + public void Queue(OVRHapticsClip clip) + { + m_pendingClips.Add(new ClipPlaybackTracker(clip)); + } + + /// + /// Adds the samples from the specified clip to the ones in the currently-playing clip(s). + /// + public void Mix(OVRHapticsClip clip) + { + int numClipsToMix = 0; + int numSamplesToMix = 0; + int numSamplesRemaining = clip.Count; + + while (numSamplesRemaining > 0 && numClipsToMix < m_pendingClips.Count) + { + int numSamplesRemainingInClip = m_pendingClips[numClipsToMix].Clip.Count - m_pendingClips[numClipsToMix].ReadCount; + numSamplesRemaining -= numSamplesRemainingInClip; + numSamplesToMix += numSamplesRemainingInClip; + numClipsToMix++; + } + + if (numSamplesRemaining > 0) + { + numSamplesToMix += numSamplesRemaining; + numSamplesRemaining = 0; + } + + if (numClipsToMix > 0) + { + OVRHapticsClip mixClip = new OVRHapticsClip(numSamplesToMix); + + OVRHapticsClip a = clip; + int aReadCount = 0; + + for (int i = 0; i < numClipsToMix; i++) + { + OVRHapticsClip b = m_pendingClips[i].Clip; + for(int bReadCount = m_pendingClips[i].ReadCount; bReadCount < b.Count; bReadCount++) + { + if (OVRHaptics.Config.SampleSizeInBytes == 1) + { + byte sample = 0; // TODO support multi-byte samples + if ((aReadCount < a.Count) && (bReadCount < b.Count)) + { + sample = (byte)(Mathf.Clamp(a.Samples[aReadCount] + b.Samples[bReadCount], 0, System.Byte.MaxValue)); // TODO support multi-byte samples + aReadCount++; + } + else if (bReadCount < b.Count) + { + sample = b.Samples[bReadCount]; // TODO support multi-byte samples + } + + mixClip.WriteSample(sample); // TODO support multi-byte samples + } + } + } + + while (aReadCount < a.Count) + { + if (OVRHaptics.Config.SampleSizeInBytes == 1) + { + mixClip.WriteSample(a.Samples[aReadCount]); // TODO support multi-byte samples + } + aReadCount++; + } + + m_pendingClips[0] = new ClipPlaybackTracker(mixClip); + for (int i = 1; i < numClipsToMix; i++) + { + m_pendingClips.RemoveAt(1); + } + } + else + { + m_pendingClips.Add(new ClipPlaybackTracker(clip)); + } + } + + public void Clear() + { + m_pendingClips.Clear(); + } + } + + /// + /// The system calls this each frame to update haptics playback. + /// + public static void Process() + { + Config.Load(); + + for (int i = 0; i < m_outputs.Length; i++) + { + m_outputs[i].Process(); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRHaptics.cs.meta b/Assets/Oculus/VR/Scripts/OVRHaptics.cs.meta new file mode 100644 index 0000000..af14af3 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHaptics.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d3b22b858e27329498781f145fa42610 +timeCreated: 1463018541 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs b/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs new file mode 100644 index 0000000..16854d5 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs @@ -0,0 +1,164 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +/// +/// A PCM buffer of data for a haptics effect. +/// +public class OVRHapticsClip +{ + /// + /// The current number of samples in the clip. + /// + public int Count { get; private set; } + + /// + /// The maximum number of samples the clip can store. + /// + public int Capacity { get; private set; } + + /// + /// The raw haptics data. + /// + public byte[] Samples { get; private set; } + + public OVRHapticsClip() + { + Capacity = OVRHaptics.Config.MaximumBufferSamplesCount; + Samples = new byte[Capacity * OVRHaptics.Config.SampleSizeInBytes]; + } + + /// + /// Creates a clip with the specified capacity. + /// + public OVRHapticsClip(int capacity) + { + Capacity = (capacity >= 0) ? capacity : 0; + Samples = new byte[Capacity * OVRHaptics.Config.SampleSizeInBytes]; + } + + /// + /// Creates a clip with the specified data. + /// + public OVRHapticsClip(byte[] samples, int samplesCount) + { + Samples = samples; + Capacity = Samples.Length / OVRHaptics.Config.SampleSizeInBytes; + Count = (samplesCount >= 0) ? samplesCount : 0; + } + + /// + /// Creates a clip by mixing the specified clips. + /// + public OVRHapticsClip(OVRHapticsClip a, OVRHapticsClip b) + { + int maxCount = a.Count; + if (b.Count > maxCount) + maxCount = b.Count; + + Capacity = maxCount; + Samples = new byte[Capacity * OVRHaptics.Config.SampleSizeInBytes]; + + for (int i = 0; i < a.Count || i < b.Count; i++) + { + if (OVRHaptics.Config.SampleSizeInBytes == 1) + { + byte sample = 0; // TODO support multi-byte samples + if ((i < a.Count) && (i < b.Count)) + sample = (byte)(Mathf.Clamp(a.Samples[i] + b.Samples[i], 0, System.Byte.MaxValue)); // TODO support multi-byte samples + else if (i < a.Count) + sample = a.Samples[i]; // TODO support multi-byte samples + else if (i < b.Count) + sample = b.Samples[i]; // TODO support multi-byte samples + + WriteSample(sample); // TODO support multi-byte samples + } + } + } + + /// + /// Creates a haptics clip from the specified audio clip. + /// + public OVRHapticsClip(AudioClip audioClip, int channel = 0) + { + float[] audioData = new float[audioClip.samples * audioClip.channels]; + audioClip.GetData(audioData, 0); + + InitializeFromAudioFloatTrack(audioData, audioClip.frequency, audioClip.channels, channel); + } + + /// + /// Adds the specified sample to the end of the clip. + /// + public void WriteSample(byte sample) // TODO support multi-byte samples + { + if (Count >= Capacity) + { + //Debug.LogError("Attempted to write OVRHapticsClip sample out of range - Count:" + Count + " Capacity:" + Capacity); + return; + } + + if (OVRHaptics.Config.SampleSizeInBytes == 1) + { + Samples[Count * OVRHaptics.Config.SampleSizeInBytes] = sample; // TODO support multi-byte samples + } + + Count++; + } + + /// + /// Clears the clip and resets its size to 0. + /// + public void Reset() + { + Count = 0; + } + + private void InitializeFromAudioFloatTrack(float[] sourceData, double sourceFrequency, int sourceChannelCount, int sourceChannel) + { + double stepSizePrecise = (sourceFrequency + 1e-6) / OVRHaptics.Config.SampleRateHz; + + if (stepSizePrecise < 1.0) + return; + + int stepSize = (int)stepSizePrecise; + double stepSizeError = stepSizePrecise - stepSize; + double accumulatedStepSizeError = 0.0f; + int length = sourceData.Length; + + Count = 0; + Capacity = length / sourceChannelCount / stepSize + 1; + Samples = new byte[Capacity * OVRHaptics.Config.SampleSizeInBytes]; + + int i = sourceChannel % sourceChannelCount; + while (i < length) + { + if (OVRHaptics.Config.SampleSizeInBytes == 1) + { + WriteSample((byte)(Mathf.Clamp01(Mathf.Abs(sourceData[i])) * System.Byte.MaxValue)); // TODO support multi-byte samples + } + i+= stepSize * sourceChannelCount; + accumulatedStepSizeError += stepSizeError; + if ((int)accumulatedStepSizeError > 0) + { + i+= (int)accumulatedStepSizeError * sourceChannelCount; + accumulatedStepSizeError = accumulatedStepSizeError - (int)accumulatedStepSizeError; + } + } + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs.meta b/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs.meta new file mode 100644 index 0000000..e367a61 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHapticsClip.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c123270a848515b458069b5242866451 +timeCreated: 1467575852 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs new file mode 100644 index 0000000..8b87dac --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs @@ -0,0 +1,173 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class OVRHeadsetEmulator : MonoBehaviour { + public enum OpMode + { + Off, + EditorOnly, + AlwaysOn + } + + public OpMode opMode = OpMode.EditorOnly; + public bool resetHmdPoseOnRelease = true; + public bool resetHmdPoseByMiddleMouseButton = true; + + public KeyCode[] activateKeys = new KeyCode[] { KeyCode.LeftControl, KeyCode.RightControl }; + + public KeyCode[] pitchKeys = new KeyCode[] { KeyCode.LeftAlt, KeyCode.RightAlt }; + + OVRManager manager; + + const float MOUSE_SCALE_X = -2.0f; + const float MOUSE_SCALE_X_PITCH = -2.0f; + const float MOUSE_SCALE_Y = 2.0f; + const float MOUSE_SCALE_HEIGHT = 1.0f; + const float MAX_ROLL = 85.0f; + + private bool lastFrameEmulationActivated = false; + + private Vector3 recordedHeadPoseRelativeOffsetTranslation; + private Vector3 recordedHeadPoseRelativeOffsetRotation; + + private bool hasSentEvent = false; + private bool emulatorHasInitialized = false; + + // Use this for initialization + void Start () { + } + + // Update is called once per frame + void Update () { + if (!emulatorHasInitialized) + { + if (OVRManager.OVRManagerinitialized) + { + Cursor.lockState = CursorLockMode.None; + manager = OVRManager.instance; + recordedHeadPoseRelativeOffsetTranslation = manager.headPoseRelativeOffsetTranslation; + recordedHeadPoseRelativeOffsetRotation = manager.headPoseRelativeOffsetRotation; + emulatorHasInitialized = true; + } + else + return; + } + bool emulationActivated = IsEmulationActivated(); + if (emulationActivated) + { + Cursor.lockState = CursorLockMode.Locked; + + if (!lastFrameEmulationActivated && resetHmdPoseOnRelease) + { + manager.headPoseRelativeOffsetTranslation = recordedHeadPoseRelativeOffsetTranslation; + manager.headPoseRelativeOffsetRotation = recordedHeadPoseRelativeOffsetRotation; + } + + if (resetHmdPoseByMiddleMouseButton && Input.GetMouseButton(2)) + { + manager.headPoseRelativeOffsetTranslation = Vector3.zero; + manager.headPoseRelativeOffsetRotation = Vector3.zero; + } + else + { + Vector3 emulatedTranslation = manager.headPoseRelativeOffsetTranslation; + float deltaMouseScrollWheel = Input.GetAxis("Mouse ScrollWheel"); + float emulatedHeight = deltaMouseScrollWheel * MOUSE_SCALE_HEIGHT; + emulatedTranslation.y += emulatedHeight; + manager.headPoseRelativeOffsetTranslation = emulatedTranslation; + + float deltaX = Input.GetAxis("Mouse X"); + float deltaY = Input.GetAxis("Mouse Y"); + + Vector3 emulatedAngles = manager.headPoseRelativeOffsetRotation; + float emulatedRoll = emulatedAngles.x; + float emulatedYaw = emulatedAngles.y; + float emulatedPitch = emulatedAngles.z; + if (IsTweakingPitch()) + { + emulatedPitch += deltaX * MOUSE_SCALE_X_PITCH; + } + else + { + emulatedRoll += deltaY * MOUSE_SCALE_Y; + emulatedYaw += deltaX * MOUSE_SCALE_X; + } + + manager.headPoseRelativeOffsetRotation = new Vector3(emulatedRoll, emulatedYaw, emulatedPitch); + } + + if (!hasSentEvent) + { + OVRPlugin.SendEvent("headset_emulator", "activated"); + hasSentEvent = true; + } + } + else + { + Cursor.lockState = CursorLockMode.None; + if (lastFrameEmulationActivated) + { + recordedHeadPoseRelativeOffsetTranslation = manager.headPoseRelativeOffsetTranslation; + recordedHeadPoseRelativeOffsetRotation = manager.headPoseRelativeOffsetRotation; + + if (resetHmdPoseOnRelease) + { + manager.headPoseRelativeOffsetTranslation = Vector3.zero; + manager.headPoseRelativeOffsetRotation = Vector3.zero; + } + } + } + lastFrameEmulationActivated = emulationActivated; + } + + bool IsEmulationActivated() + { + if (opMode == OpMode.Off) + { + return false; + } + else if (opMode == OpMode.EditorOnly && !Application.isEditor) + { + return false; + } + + foreach (KeyCode key in activateKeys) + { + if (Input.GetKey(key)) + return true; + } + + return false; + } + + bool IsTweakingPitch() + { + if (!IsEmulationActivated()) + return false; + + foreach (KeyCode key in pitchKeys) + { + if (Input.GetKey(key)) + return true; + } + + return false; + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs.meta b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs.meta new file mode 100644 index 0000000..56acace --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRHeadsetEmulator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5178bc8574ce2bf4388e787a2e2af326 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRInput.cs b/Assets/Oculus/VR/Scripts/OVRInput.cs new file mode 100644 index 0000000..b4c87bd --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRInput.cs @@ -0,0 +1,3438 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +#if UNITY_2017_2_OR_NEWER +using InputTracking = UnityEngine.XR.InputTracking; +using Node = UnityEngine.XR.XRNode; +using Settings = UnityEngine.XR.XRSettings; +#else +using InputTracking = UnityEngine.VR.InputTracking; +using Node = UnityEngine.VR.VRNode; +using Settings = UnityEngine.VR.VRSettings; +#endif + +/// +/// Provides a unified input system for Oculus controllers and gamepads. +/// +public static class OVRInput +{ + [Flags] + /// Virtual button mappings that allow the same input bindings to work across different controllers. + public enum Button + { + None = 0, ///< Maps to RawButton: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + One = 0x00000001, ///< Maps to RawButton: [Gamepad, Touch, RTouch: A], [LTouch: X], [LTrackedRemote: LTouchpad], [RTrackedRemote: RTouchpad], [Touchpad, Remote: Start] + Two = 0x00000002, ///< Maps to RawButton: [Gamepad, Touch, RTouch: B], [LTouch: Y], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: Back] + Three = 0x00000004, ///< Maps to RawButton: [Gamepad, Touch: X], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Four = 0x00000008, ///< Maps to RawButton: [Gamepad, Touch: Y], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Start = 0x00000100, ///< Maps to RawButton: [Gamepad: Start], [Touch, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: Start], [RTouch: None] + Back = 0x00000200, ///< Maps to RawButton: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: Back], [Touch, LTouch, RTouch: None] + PrimaryShoulder = 0x00001000, ///< Maps to RawButton: [Gamepad: LShoulder], [Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryIndexTrigger = 0x00002000, ///< Maps to RawButton: [Gamepad, Touch, LTouch, LTrackedRemote: LIndexTrigger], [RTouch, RTrackedRemote: RIndexTrigger], [Touchpad, Remote: None] + PrimaryHandTrigger = 0x00004000, ///< Maps to RawButton: [Touch, LTouch: LHandTrigger], [RTouch: RHandTrigger], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbstick = 0x00008000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstick], [RTouch: RThumbstick], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbstickUp = 0x00010000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickUp], [RTouch: RThumbstickUp], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbstickDown = 0x00020000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickDown], [RTouch: RThumbstickDown], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbstickLeft = 0x00040000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickLeft], [RTouch: RThumbstickLeft], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbstickRight = 0x00080000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickRight], [RTouch: RThumbstickRight], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryTouchpad = 0x00000400, ///< Maps to RawButton: [LTrackedRemote, Touchpad: LTouchpad], [RTrackedRemote: RTouchpad], [Gamepad, Touch, LTouch, RTouch, Remote: None] + SecondaryShoulder = 0x00100000, ///< Maps to RawButton: [Gamepad: RShoulder], [Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryIndexTrigger = 0x00200000, ///< Maps to RawButton: [Gamepad, Touch: RIndexTrigger], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryHandTrigger = 0x00400000, ///< Maps to RawButton: [Touch: RHandTrigger], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbstick = 0x00800000, ///< Maps to RawButton: [Gamepad, Touch: RThumbstick], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbstickUp = 0x01000000, ///< Maps to RawButton: [Gamepad, Touch: RThumbstickUp], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbstickDown = 0x02000000, ///< Maps to RawButton: [Gamepad, Touch: RThumbstickDown], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbstickLeft = 0x04000000, ///< Maps to RawButton: [Gamepad, Touch: RThumbstickLeft], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbstickRight = 0x08000000, ///< Maps to RawButton: [Gamepad, Touch: RThumbstickRight], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryTouchpad = 0x00000800, ///< Maps to RawButton: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + DpadUp = 0x00000010, ///< Maps to RawButton: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadUp], [Touch, LTouch, RTouch: None] + DpadDown = 0x00000020, ///< Maps to RawButton: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadDown], [Touch, LTouch, RTouch: None] + DpadLeft = 0x00000040, ///< Maps to RawButton: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadLeft], [Touch, LTouch, RTouch: None] + DpadRight = 0x00000080, ///< Maps to RawButton: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadRight], [Touch, LTouch, RTouch: None] + Up = 0x10000000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickUp], [RTouch: RThumbstickUp], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadUp] + Down = 0x20000000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickDown], [RTouch: RThumbstickDown], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadDown] + Left = 0x40000000, ///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickLeft], [RTouch: RThumbstickLeft], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadLeft] + Right = unchecked((int)0x80000000),///< Maps to RawButton: [Gamepad, Touch, LTouch: LThumbstickRight], [RTouch: RThumbstickRight], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadRight] + Any = ~None, ///< Maps to RawButton: [Gamepad, Touch, LTouch, RTouch: Any] + } + + [Flags] + /// Raw button mappings that can be used to directly query the state of a controller. + public enum RawButton + { + None = 0, ///< Maps to Physical Button: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + A = 0x00000001, ///< Maps to Physical Button: [Gamepad, Touch, RTouch: A], [LTrackedRemote: LIndexTrigger], [RTrackedRemote: RIndexTrigger], [LTouch, Touchpad, Remote: None] + B = 0x00000002, ///< Maps to Physical Button: [Gamepad, Touch, RTouch: B], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + X = 0x00000100, ///< Maps to Physical Button: [Gamepad, Touch, LTouch: X], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Y = 0x00000200, ///< Maps to Physical Button: [Gamepad, Touch, LTouch: Y], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Start = 0x00100000, ///< Maps to Physical Button: [Gamepad, Touch, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: Start], [RTouch: None] + Back = 0x00200000, ///< Maps to Physical Button: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: Back], [Touch, LTouch, RTouch: None] + LShoulder = 0x00000800, ///< Maps to Physical Button: [Gamepad: LShoulder], [Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LIndexTrigger = 0x10000000, ///< Maps to Physical Button: [Gamepad, Touch, LTouch, LTrackedRemote: LIndexTrigger], [RTouch, RTrackedRemote, Touchpad, Remote: None] + LHandTrigger = 0x20000000, ///< Maps to Physical Button: [Touch, LTouch: LHandTrigger], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbstick = 0x00000400, ///< Maps to Physical Button: [Gamepad, Touch, LTouch: LThumbstick], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbstickUp = 0x00000010, ///< Maps to Physical Button: [Gamepad, Touch, LTouch: LThumbstickUp], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbstickDown = 0x00000020, ///< Maps to Physical Button: [Gamepad, Touch, LTouch: LThumbstickDown], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbstickLeft = 0x00000040, ///< Maps to Physical Button: [Gamepad, Touch, LTouch: LThumbstickLeft], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbstickRight = 0x00000080, ///< Maps to Physical Button: [Gamepad, Touch, LTouch: LThumbstickRight], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LTouchpad = 0x40000000, ///< Maps to Physical Button: [LTrackedRemote: LTouchpad], [Gamepad, Touch, LTouch, RTouch, RTrackedRemote, Touchpad, Remote: None] + RShoulder = 0x00000008, ///< Maps to Physical Button: [Gamepad: RShoulder], [Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RIndexTrigger = 0x04000000, ///< Maps to Physical Button: [Gamepad, Touch, RTouch, RTrackedRemote: RIndexTrigger], [LTouch, LTrackedRemote, Touchpad, Remote: None] + RHandTrigger = 0x08000000, ///< Maps to Physical Button: [Touch, RTouch: RHandTrigger], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbstick = 0x00000004, ///< Maps to Physical Button: [Gamepad, Touch, RTouch: RThumbstick], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbstickUp = 0x00001000, ///< Maps to Physical Button: [Gamepad, Touch, RTouch: RThumbstickUp], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbstickDown = 0x00002000, ///< Maps to Physical Button: [Gamepad, Touch, RTouch: RThumbstickDown], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbstickLeft = 0x00004000, ///< Maps to Physical Button: [Gamepad, Touch, RTouch: RThumbstickLeft], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbstickRight = 0x00008000, ///< Maps to Physical Button: [Gamepad, Touch, RTouch: RThumbstickRight], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RTouchpad = unchecked((int)0x80000000),///< Maps to Physical Button: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + DpadUp = 0x00010000, ///< Maps to Physical Button: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadUp], [Touch, LTouch, RTouch: None] + DpadDown = 0x00020000, ///< Maps to Physical Button: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadDown], [Touch, LTouch, RTouch: None] + DpadLeft = 0x00040000, ///< Maps to Physical Button: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadLeft], [Touch, LTouch, RTouch: None] + DpadRight = 0x00080000, ///< Maps to Physical Button: [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: DpadRight], [Touch, LTouch, RTouch: None] + Any = ~None, ///< Maps to Physical Button: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: Any] + } + + [Flags] + /// Virtual capacitive touch mappings that allow the same input bindings to work across different controllers with capacitive touch support. + public enum Touch + { + None = 0, ///< Maps to RawTouch: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + One = Button.One, ///< Maps to RawTouch: [Touch, RTouch: A], [LTouch: X], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Two = Button.Two, ///< Maps to RawTouch: [Touch, RTouch: B], [LTouch: Y], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Three = Button.Three, ///< Maps to RawTouch: [Touch: X], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Four = Button.Four, ///< Maps to RawTouch: [Touch: Y], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryIndexTrigger = Button.PrimaryIndexTrigger, ///< Maps to RawTouch: [Touch, LTouch: LIndexTrigger], [RTouch: RIndexTrigger], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbstick = Button.PrimaryThumbstick, ///< Maps to RawTouch: [Touch, LTouch: LThumbstick], [RTouch: RThumbstick], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbRest = 0x00001000, ///< Maps to RawTouch: [Touch, LTouch: LThumbRest], [RTouch: RThumbRest], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryTouchpad = Button.PrimaryTouchpad, ///< Maps to RawTouch: [LTrackedRemote, Touchpad: LTouchpad], [RTrackedRemote: RTouchpad], [Gamepad, Touch, LTouch, RTouch, Remote: None] + SecondaryIndexTrigger = Button.SecondaryIndexTrigger, ///< Maps to RawTouch: [Touch: RIndexTrigger], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbstick = Button.SecondaryThumbstick, ///< Maps to RawTouch: [Touch: RThumbstick], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbRest = 0x00100000, ///< Maps to RawTouch: [Touch: RThumbRest], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryTouchpad = Button.SecondaryTouchpad, ///< Maps to RawTouch: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to RawTouch: [Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad: Any], [Gamepad, Remote: None] + } + + [Flags] + /// Raw capacitive touch mappings that can be used to directly query the state of a controller. + public enum RawTouch + { + None = 0, ///< Maps to Physical Touch: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + A = RawButton.A, ///< Maps to Physical Touch: [Touch, RTouch: A], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + B = RawButton.B, ///< Maps to Physical Touch: [Touch, RTouch: B], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + X = RawButton.X, ///< Maps to Physical Touch: [Touch, LTouch: X], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Y = RawButton.Y, ///< Maps to Physical Touch: [Touch, LTouch: Y], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LIndexTrigger = 0x00001000, ///< Maps to Physical Touch: [Touch, LTouch: LIndexTrigger], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbstick = RawButton.LThumbstick, ///< Maps to Physical Touch: [Touch, LTouch: LThumbstick], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbRest = 0x00000800, ///< Maps to Physical Touch: [Touch, LTouch: LThumbRest], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LTouchpad = RawButton.LTouchpad, ///< Maps to Physical Touch: [LTrackedRemote, Touchpad: LTouchpad], [Gamepad, Touch, LTouch, RTouch, RTrackedRemote, Remote: None] + RIndexTrigger = 0x00000010, ///< Maps to Physical Touch: [Touch, RTouch: RIndexTrigger], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbstick = RawButton.RThumbstick, ///< Maps to Physical Touch: [Touch, RTouch: RThumbstick], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbRest = 0x00000008, ///< Maps to Physical Touch: [Touch, RTouch: RThumbRest], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RTouchpad = RawButton.RTouchpad, ///< Maps to Physical Touch: [RTrackedRemote: RTouchpad], [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to Physical Touch: [Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad: Any], [Gamepad, Remote: None] + } + + [Flags] + /// Virtual near touch mappings that allow the same input bindings to work across different controllers with near touch support. + /// A near touch uses the capacitive touch sensors of a controller to detect approximate finger proximity prior to a full touch being reported. + public enum NearTouch + { + None = 0, ///< Maps to RawNearTouch: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryIndexTrigger = 0x00000001, ///< Maps to RawNearTouch: [Touch, LTouch: LIndexTrigger], [RTouch: RIndexTrigger], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbButtons = 0x00000002, ///< Maps to RawNearTouch: [Touch, LTouch: LThumbButtons], [RTouch: RThumbButtons], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryIndexTrigger = 0x00000004, ///< Maps to RawNearTouch: [Touch: RIndexTrigger], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryThumbButtons = 0x00000008, ///< Maps to RawNearTouch: [Touch: RThumbButtons], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to RawNearTouch: [Touch, LTouch, RTouch: Any], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + } + + [Flags] + /// Raw near touch mappings that can be used to directly query the state of a controller. + public enum RawNearTouch + { + None = 0, ///< Maps to Physical NearTouch: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LIndexTrigger = 0x00000001, ///< Maps to Physical NearTouch: [Touch, LTouch: Implies finger is in close proximity to LIndexTrigger.], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbButtons = 0x00000002, ///< Maps to Physical NearTouch: [Touch, LTouch: Implies thumb is in close proximity to LThumbstick OR X/Y buttons.], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RIndexTrigger = 0x00000004, ///< Maps to Physical NearTouch: [Touch, RTouch: Implies finger is in close proximity to RIndexTrigger.], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RThumbButtons = 0x00000008, ///< Maps to Physical NearTouch: [Touch, RTouch: Implies thumb is in close proximity to RThumbstick OR A/B buttons.], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to Physical NearTouch: [Touch, LTouch, RTouch: Any], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + } + + [Flags] + /// Virtual 1-dimensional axis (float) mappings that allow the same input bindings to work across different controllers. + public enum Axis1D + { + None = 0, ///< Maps to RawAxis1D: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryIndexTrigger = 0x01, ///< Maps to RawAxis1D: [Gamepad, Touch, LTouch: LIndexTrigger], [RTouch: RIndexTrigger], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryHandTrigger = 0x04, ///< Maps to RawAxis1D: [Touch, LTouch: LHandTrigger], [RTouch: RHandTrigger], [Gamepad, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryIndexTrigger = 0x02, ///< Maps to RawAxis1D: [Gamepad, Touch: RIndexTrigger], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryHandTrigger = 0x08, ///< Maps to RawAxis1D: [Touch: RHandTrigger], [Gamepad, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to RawAxis1D: [Gamepad, Touch, LTouch, RTouch: Any], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + } + + [Flags] + /// Raw 1-dimensional axis (float) mappings that can be used to directly query the state of a controller. + public enum RawAxis1D + { + None = 0, ///< Maps to Physical Axis1D: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LIndexTrigger = 0x01, ///< Maps to Physical Axis1D: [Gamepad, Touch, LTouch: LIndexTrigger], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LHandTrigger = 0x04, ///< Maps to Physical Axis1D: [Touch, LTouch: LHandTrigger], [Gamepad, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RIndexTrigger = 0x02, ///< Maps to Physical Axis1D: [Gamepad, Touch, RTouch: RIndexTrigger], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RHandTrigger = 0x08, ///< Maps to Physical Axis1D: [Touch, RTouch: RHandTrigger], [Gamepad, LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to Physical Axis1D: [Gamepad, Touch, LTouch, RTouch: Any], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + } + + [Flags] + /// Virtual 2-dimensional axis (Vector2) mappings that allow the same input bindings to work across different controllers. + public enum Axis2D + { + None = 0, ///< Maps to RawAxis2D: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryThumbstick = 0x01, ///< Maps to RawAxis2D: [Gamepad, Touch, LTouch: LThumbstick], [RTouch: RThumbstick], [LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + PrimaryTouchpad = 0x04, ///< Maps to RawAxis2D: [LTrackedRemote, Touchpad: LTouchpad], RTrackedRemote: RTouchpad], [Gamepad, Touch, LTouch, RTouch, Remote: None] + SecondaryThumbstick = 0x02, ///< Maps to RawAxis2D: [Gamepad, Touch: RThumbstick], [LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + SecondaryTouchpad = 0x08, ///< Maps to RawAxis2D: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to RawAxis2D: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad: Any], [Remote: None] + } + + [Flags] + /// Raw 2-dimensional axis (Vector2) mappings that can be used to directly query the state of a controller. + public enum RawAxis2D + { + None = 0, ///< Maps to Physical Axis2D: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LThumbstick = 0x01, ///< Maps to Physical Axis2D: [Gamepad, Touch, LTouch: LThumbstick], [RTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + LTouchpad = 0x04, ///< Maps to Physical Axis2D: [LTrackedRemote, Touchpad: LTouchpad], [Gamepad, Touch, LTouch, RTouch, RTrackedRemote, Remote: None] + RThumbstick = 0x02, ///< Maps to Physical Axis2D: [Gamepad, Touch, RTouch: RThumbstick], [LTouch, LTrackedRemote, RTrackedRemote, Touchpad, Remote: None] + RTouchpad = 0x08, ///< Maps to Physical Axis2D: [RTrackedRemote: RTouchpad], [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, Touchpad, Remote: None] + Any = ~None, ///< Maps to Physical Axis2D: [Gamepad, Touch, LTouch, RTouch, LTrackedRemote, RTrackedRemote: Any], [Touchpad, Remote: None] + } + + [Flags] + /// OpenVR Controller State Enum + public enum OpenVRButton : ulong + { + None = 0, + Two = 0x0002, + Thumbstick = 0x100000000, + Grip = 0x0004, + } + + [Flags] + /// Identifies a controller which can be used to query the virtual or raw input state. + public enum Controller + { + None = OVRPlugin.Controller.None, ///< Null controller. + LTouch = OVRPlugin.Controller.LTouch, ///< Left Oculus Touch controller. Virtual input mapping differs from the combined L/R Touch mapping. + RTouch = OVRPlugin.Controller.RTouch, ///< Right Oculus Touch controller. Virtual input mapping differs from the combined L/R Touch mapping. + Touch = OVRPlugin.Controller.Touch, ///< Combined Left/Right pair of Oculus Touch controllers. + Remote = OVRPlugin.Controller.Remote, ///< Oculus Remote controller. + Gamepad = OVRPlugin.Controller.Gamepad, ///< Xbox 360 or Xbox One gamepad on PC. Generic gamepad on Android. + Touchpad = OVRPlugin.Controller.Touchpad, ///< GearVR touchpad on Android. + LTrackedRemote = OVRPlugin.Controller.LTrackedRemote, ///< Left GearVR tracked remote on Android. + RTrackedRemote = OVRPlugin.Controller.RTrackedRemote, ///< Right GearVR tracked remote on Android. + Active = OVRPlugin.Controller.Active, ///< Default controller. Represents the controller that most recently registered a button press from the user. + All = OVRPlugin.Controller.All, ///< Represents the logical OR of all controllers. + } + + public enum Handedness + { + Unsupported = OVRPlugin.Handedness.Unsupported, + LeftHanded = OVRPlugin.Handedness.LeftHanded, + RightHanded = OVRPlugin.Handedness.RightHanded, + } + + private static readonly float AXIS_AS_BUTTON_THRESHOLD = 0.5f; + private static readonly float AXIS_DEADZONE_THRESHOLD = 0.2f; + private static List controllers; + private static Controller activeControllerType = Controller.None; + private static Controller connectedControllerTypes = Controller.None; + private static OVRPlugin.Step stepType = OVRPlugin.Step.Render; + private static int fixedUpdateCount = 0; + + + private static bool _pluginSupportsActiveController = false; + private static bool _pluginSupportsActiveControllerCached = false; + private static System.Version _pluginSupportsActiveControllerMinVersion = new System.Version(1, 9, 0); + private static bool pluginSupportsActiveController + { + get + { + if (!_pluginSupportsActiveControllerCached) + { + bool isSupportedPlatform = true; +#if (UNITY_ANDROID && !UNITY_EDITOR) || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX + isSupportedPlatform = false; +#endif + _pluginSupportsActiveController = isSupportedPlatform && (OVRPlugin.version >= _pluginSupportsActiveControllerMinVersion); + _pluginSupportsActiveControllerCached = true; + } + + return _pluginSupportsActiveController; + } + } + + /// + /// Creates an instance of OVRInput. + /// + static OVRInput() + { + controllers = new List + { +#if UNITY_ANDROID && !UNITY_EDITOR + new OVRControllerGamepadAndroid(), + new OVRControllerTouchpad(), + new OVRControllerLTrackedRemote(), + new OVRControllerRTrackedRemote(), + new OVRControllerTouch(), + new OVRControllerLTouch(), + new OVRControllerRTouch(), +#elif UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX + new OVRControllerGamepadMac(), +#else + new OVRControllerGamepadPC(), + new OVRControllerTouch(), + new OVRControllerLTouch(), + new OVRControllerRTouch(), + new OVRControllerRemote(), +#endif + }; + + InitHapticInfo(); + } + + /// + /// Updates the internal state of OVRInput. Must be called manually if used independently from OVRManager. + /// + public static void Update() + { + connectedControllerTypes = Controller.None; + stepType = OVRPlugin.Step.Render; + fixedUpdateCount = 0; + + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + UpdateXRControllerNodeIds(); + UpdateXRControllerHaptics(); + } + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + connectedControllerTypes |= controller.Update(); + + if ((connectedControllerTypes & controller.controllerType) != 0) + { + RawButton rawButtonMask = RawButton.Any; + RawTouch rawTouchMask = RawTouch.Any; + + if (Get(rawButtonMask, controller.controllerType) + || Get(rawTouchMask, controller.controllerType)) + { + activeControllerType = controller.controllerType; + } + } + } + + if ((activeControllerType == Controller.LTouch) || (activeControllerType == Controller.RTouch)) + { + if ((connectedControllerTypes & Controller.Touch) == Controller.Touch) + { + // If either Touch controller is Active and both Touch controllers are connected, set both to Active. + activeControllerType = Controller.Touch; + } + } + + if ((connectedControllerTypes & activeControllerType) == 0) + { + activeControllerType = Controller.None; + } + + // Promote TrackedRemote to Active if one is connected and no other controller is active + if (activeControllerType == Controller.None) + { + if ((connectedControllerTypes & Controller.RTrackedRemote) != 0) + { + activeControllerType = Controller.RTrackedRemote; + } + else if ((connectedControllerTypes & Controller.LTrackedRemote) != 0) + { + activeControllerType = Controller.LTrackedRemote; + } + } + + if ( OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus && pluginSupportsActiveController) + { + // override locally derived active and connected controllers if plugin provides more accurate data + connectedControllerTypes = (OVRInput.Controller)OVRPlugin.GetConnectedControllers(); + activeControllerType = (OVRInput.Controller)OVRPlugin.GetActiveController(); + } + else if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + activeControllerType = connectedControllerTypes; + } + + } + + /// + /// Updates the internal physics state of OVRInput. Must be called manually if used independently from OVRManager. + /// + public static void FixedUpdate() + { + stepType = OVRPlugin.Step.Physics; + + double predictionSeconds = (double)fixedUpdateCount * Time.fixedDeltaTime / Mathf.Max(Time.timeScale, 1e-6f); + fixedUpdateCount++; + + OVRPlugin.UpdateNodePhysicsPoses(0, predictionSeconds); + } + + /// + /// Returns true if the given Controller's orientation is currently tracked. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return false. + /// + public static bool GetControllerOrientationTracked(OVRInput.Controller controllerType) + { + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + return OVRPlugin.GetNodeOrientationTracked(OVRPlugin.Node.HandLeft); + case Controller.RTouch: + case Controller.RTrackedRemote: + return OVRPlugin.GetNodeOrientationTracked(OVRPlugin.Node.HandRight); + default: + return false; + } + } + + /// + /// Returns true if the given Controller's orientation is currently valid. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return false. + /// + public static bool GetControllerOrientationValid(OVRInput.Controller controllerType) + { + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + return OVRPlugin.GetNodeOrientationValid(OVRPlugin.Node.HandLeft); + case Controller.RTouch: + case Controller.RTrackedRemote: + return OVRPlugin.GetNodeOrientationValid(OVRPlugin.Node.HandRight); + default: + return false; + } + } + + + /// + /// Returns true if the given Controller's position is currently tracked. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return false. + /// + public static bool GetControllerPositionTracked(OVRInput.Controller controllerType) + { + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + return OVRPlugin.GetNodePositionTracked(OVRPlugin.Node.HandLeft); + case Controller.RTouch: + case Controller.RTrackedRemote: + return OVRPlugin.GetNodePositionTracked(OVRPlugin.Node.HandRight); + default: + return false; + } + } + + /// + /// Returns true if the given Controller's position is currently valid. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return false. + /// + public static bool GetControllerPositionValid(OVRInput.Controller controllerType) + { + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + return OVRPlugin.GetNodePositionValid(OVRPlugin.Node.HandLeft); + case Controller.RTouch: + case Controller.RTrackedRemote: + return OVRPlugin.GetNodePositionValid(OVRPlugin.Node.HandRight); + default: + return false; + } + } + + /// + /// Gets the position of the given Controller local to its tracking space. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. + /// + public static Vector3 GetLocalControllerPosition(OVRInput.Controller controllerType) + { + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.GetNodePose(OVRPlugin.Node.HandLeft, stepType).ToOVRPose().position; + else if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + return openVRControllerDetails[0].localPosition; + else + { + Vector3 retVec; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.LeftHand, NodeStatePropertyType.Position, OVRPlugin.Node.HandLeft, stepType, out retVec)) + return retVec; + return Vector3.zero; //Will never be hit, but is a final fallback. + } + case Controller.RTouch: + case Controller.RTrackedRemote: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.GetNodePose(OVRPlugin.Node.HandRight, stepType).ToOVRPose().position; + else if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + return openVRControllerDetails[1].localPosition; + else + { + Vector3 retVec; + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.RightHand, NodeStatePropertyType.Position, OVRPlugin.Node.HandRight, stepType, out retVec)) + return retVec; + return Vector3.zero; + } + default: + return Vector3.zero; + } + } + + /// + /// Gets the linear velocity of the given Controller local to its tracking space. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. + /// + public static Vector3 GetLocalControllerVelocity(OVRInput.Controller controllerType) + { + Vector3 velocity = Vector3.zero; + + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.LeftHand, NodeStatePropertyType.Velocity, OVRPlugin.Node.HandLeft, stepType, out velocity)) + { + return velocity; + } + else + { + return Vector3.zero; + } + case Controller.RTouch: + case Controller.RTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.RightHand, NodeStatePropertyType.Velocity, OVRPlugin.Node.HandRight, stepType, out velocity)) + { + return velocity; + } + else + { + return Vector3.zero; + } + default: + return Vector3.zero; + } + } + + /// + /// Gets the linear acceleration of the given Controller local to its tracking space. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. + /// + public static Vector3 GetLocalControllerAcceleration(OVRInput.Controller controllerType) + { + Vector3 accel = Vector3.zero; + + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.LeftHand, NodeStatePropertyType.Acceleration, OVRPlugin.Node.HandLeft, stepType, out accel)) + { + return accel; + } + else + { + return Vector3.zero; + } + case Controller.RTouch: + case Controller.RTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.RightHand, NodeStatePropertyType.Acceleration, OVRPlugin.Node.HandRight, stepType, out accel)) + { + return accel; + } + else + { + return Vector3.zero; + } + default: + return Vector3.zero; + } + } + + /// + /// Gets the rotation of the given Controller local to its tracking space. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Quaternion.identity. + /// + public static Quaternion GetLocalControllerRotation(OVRInput.Controller controllerType) + { + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.GetNodePose(OVRPlugin.Node.HandLeft, stepType).ToOVRPose().orientation; + else if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + return openVRControllerDetails[0].localOrientation; + else + { + Quaternion retQuat; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.LeftHand, NodeStatePropertyType.Orientation, OVRPlugin.Node.HandLeft, stepType, out retQuat)) + return retQuat; + return Quaternion.identity; + } + case Controller.RTouch: + case Controller.RTrackedRemote: + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + return OVRPlugin.GetNodePose(OVRPlugin.Node.HandRight, stepType).ToOVRPose().orientation; + else if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + return openVRControllerDetails[1].localOrientation; + else + { + Quaternion retQuat; + if (OVRNodeStateProperties.GetNodeStatePropertyQuaternion(Node.RightHand, NodeStatePropertyType.Orientation, OVRPlugin.Node.HandRight, stepType, out retQuat)) + return retQuat; + return Quaternion.identity; + } + default: + return Quaternion.identity; + } + } + + /// + /// Gets the angular velocity of the given Controller local to its tracking space in radians per second around each axis. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. + /// + public static Vector3 GetLocalControllerAngularVelocity(OVRInput.Controller controllerType) + { + Vector3 velocity = Vector3.zero; + + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.LeftHand, NodeStatePropertyType.AngularVelocity, OVRPlugin.Node.HandLeft, stepType, out velocity)) + { + return velocity; + } + else + { + return Vector3.zero; + } + case Controller.RTouch: + case Controller.RTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.RightHand, NodeStatePropertyType.AngularVelocity, OVRPlugin.Node.HandRight, stepType, out velocity)) + { + return velocity; + } + else + { + return Vector3.zero; + } + default: + return Vector3.zero; + } + } + + /// + /// Gets the angular acceleration of the given Controller local to its tracking space in radians per second per second around each axis. + /// Only supported for Oculus LTouch and RTouch controllers. Non-tracked controllers will return Vector3.zero. + /// + public static Vector3 GetLocalControllerAngularAcceleration(OVRInput.Controller controllerType) + { + Vector3 accel = Vector3.zero; + + switch (controllerType) + { + case Controller.LTouch: + case Controller.LTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.LeftHand, NodeStatePropertyType.AngularAcceleration, OVRPlugin.Node.HandLeft, stepType, out accel)) + { + return accel; + } + else + { + return Vector3.zero; + } + case Controller.RTouch: + case Controller.RTrackedRemote: + if (OVRNodeStateProperties.GetNodeStatePropertyVector3(Node.RightHand, NodeStatePropertyType.AngularAcceleration, OVRPlugin.Node.HandRight, stepType, out accel)) + { + return accel; + } + else + { + return Vector3.zero; + } + default: + return Vector3.zero; + } + } + + /// + /// Gets the dominant hand that the user has specified in settings, for mobile devices. + /// + public static Handedness GetDominantHand() + { + return (Handedness) OVRPlugin.GetDominantHand(); + } + + /// + /// Gets the current state of the given virtual button mask with the given controller mask. + /// Returns true if any masked button is down on any masked controller. + /// + public static bool Get(Button virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedButton(virtualMask, RawButton.None, controllerMask); + } + + /// + /// Gets the current state of the given raw button mask with the given controller mask. + /// Returns true if any masked button is down on any masked controllers. + /// + public static bool Get(RawButton rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedButton(Button.None, rawMask, controllerMask); + } + + private static bool GetResolvedButton(Button virtualMask, RawButton rawMask, Controller controllerMask) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawButton resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawButton)controller.currentState.Buttons & resolvedMask) != 0) + { + return true; + } + } + } + + return false; + } + + /// + /// Gets the current down state of the given virtual button mask with the given controller mask. + /// Returns true if any masked button was pressed this frame on any masked controller and no masked button was previously down last frame. + /// + public static bool GetDown(Button virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedButtonDown(virtualMask, RawButton.None, controllerMask); + } + + /// + /// Gets the current down state of the given raw button mask with the given controller mask. + /// Returns true if any masked button was pressed this frame on any masked controller and no masked button was previously down last frame. + /// + public static bool GetDown(RawButton rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedButtonDown(Button.None, rawMask, controllerMask); + } + + private static bool GetResolvedButtonDown(Button virtualMask, RawButton rawMask, Controller controllerMask) + { + bool down = false; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawButton resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawButton)controller.previousState.Buttons & resolvedMask) != 0) + { + return false; + } + + if ((((RawButton)controller.currentState.Buttons & resolvedMask) != 0) + && (((RawButton)controller.previousState.Buttons & resolvedMask) == 0)) + { + down = true; + } + } + } + + return down; + } + + /// + /// Gets the current up state of the given virtual button mask with the given controller mask. + /// Returns true if any masked button was released this frame on any masked controller and no other masked button is still down this frame. + /// + public static bool GetUp(Button virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedButtonUp(virtualMask, RawButton.None, controllerMask); + } + + /// + /// Gets the current up state of the given raw button mask with the given controller mask. + /// Returns true if any masked button was released this frame on any masked controller and no other masked button is still down this frame. + /// + public static bool GetUp(RawButton rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedButtonUp(Button.None, rawMask, controllerMask); + } + + private static bool GetResolvedButtonUp(Button virtualMask, RawButton rawMask, Controller controllerMask) + { + bool up = false; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawButton resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawButton)controller.currentState.Buttons & resolvedMask) != 0) + { + return false; + } + + if ((((RawButton)controller.currentState.Buttons & resolvedMask) == 0) + && (((RawButton)controller.previousState.Buttons & resolvedMask) != 0)) + { + up = true; + } + } + } + + return up; + } + + /// + /// Gets the current state of the given virtual touch mask with the given controller mask. + /// Returns true if any masked touch is down on any masked controller. + /// + public static bool Get(Touch virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedTouch(virtualMask, RawTouch.None, controllerMask); + } + + /// + /// Gets the current state of the given raw touch mask with the given controller mask. + /// Returns true if any masked touch is down on any masked controllers. + /// + public static bool Get(RawTouch rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedTouch(Touch.None, rawMask, controllerMask); + } + + private static bool GetResolvedTouch(Touch virtualMask, RawTouch rawMask, Controller controllerMask) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawTouch resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawTouch)controller.currentState.Touches & resolvedMask) != 0) + { + return true; + } + } + } + + return false; + } + + /// + /// Gets the current down state of the given virtual touch mask with the given controller mask. + /// Returns true if any masked touch was pressed this frame on any masked controller and no masked touch was previously down last frame. + /// + public static bool GetDown(Touch virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedTouchDown(virtualMask, RawTouch.None, controllerMask); + } + + /// + /// Gets the current down state of the given raw touch mask with the given controller mask. + /// Returns true if any masked touch was pressed this frame on any masked controller and no masked touch was previously down last frame. + /// + public static bool GetDown(RawTouch rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedTouchDown(Touch.None, rawMask, controllerMask); + } + + private static bool GetResolvedTouchDown(Touch virtualMask, RawTouch rawMask, Controller controllerMask) + { + bool down = false; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawTouch resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawTouch)controller.previousState.Touches & resolvedMask) != 0) + { + return false; + } + + if ((((RawTouch)controller.currentState.Touches & resolvedMask) != 0) + && (((RawTouch)controller.previousState.Touches & resolvedMask) == 0)) + { + down = true; + } + } + } + + return down; + } + + /// + /// Gets the current up state of the given virtual touch mask with the given controller mask. + /// Returns true if any masked touch was released this frame on any masked controller and no other masked touch is still down this frame. + /// + public static bool GetUp(Touch virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedTouchUp(virtualMask, RawTouch.None, controllerMask); + } + + /// + /// Gets the current up state of the given raw touch mask with the given controller mask. + /// Returns true if any masked touch was released this frame on any masked controller and no other masked touch is still down this frame. + /// + public static bool GetUp(RawTouch rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedTouchUp(Touch.None, rawMask, controllerMask); + } + + private static bool GetResolvedTouchUp(Touch virtualMask, RawTouch rawMask, Controller controllerMask) + { + bool up = false; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawTouch resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawTouch)controller.currentState.Touches & resolvedMask) != 0) + { + return false; + } + + if ((((RawTouch)controller.currentState.Touches & resolvedMask) == 0) + && (((RawTouch)controller.previousState.Touches & resolvedMask) != 0)) + { + up = true; + } + } + } + + return up; + } + + /// + /// Gets the current state of the given virtual near touch mask with the given controller mask. + /// Returns true if any masked near touch is down on any masked controller. + /// + public static bool Get(NearTouch virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedNearTouch(virtualMask, RawNearTouch.None, controllerMask); + } + + /// + /// Gets the current state of the given raw near touch mask with the given controller mask. + /// Returns true if any masked near touch is down on any masked controllers. + /// + public static bool Get(RawNearTouch rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedNearTouch(NearTouch.None, rawMask, controllerMask); + } + + private static bool GetResolvedNearTouch(NearTouch virtualMask, RawNearTouch rawMask, Controller controllerMask) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawNearTouch resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawNearTouch)controller.currentState.NearTouches & resolvedMask) != 0) + { + return true; + } + } + } + + return false; + } + + /// + /// Gets the current down state of the given virtual near touch mask with the given controller mask. + /// Returns true if any masked near touch was pressed this frame on any masked controller and no masked near touch was previously down last frame. + /// + public static bool GetDown(NearTouch virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedNearTouchDown(virtualMask, RawNearTouch.None, controllerMask); + } + + /// + /// Gets the current down state of the given raw near touch mask with the given controller mask. + /// Returns true if any masked near touch was pressed this frame on any masked controller and no masked near touch was previously down last frame. + /// + public static bool GetDown(RawNearTouch rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedNearTouchDown(NearTouch.None, rawMask, controllerMask); + } + + private static bool GetResolvedNearTouchDown(NearTouch virtualMask, RawNearTouch rawMask, Controller controllerMask) + { + bool down = false; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawNearTouch resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawNearTouch)controller.previousState.NearTouches & resolvedMask) != 0) + { + return false; + } + + if ((((RawNearTouch)controller.currentState.NearTouches & resolvedMask) != 0) + && (((RawNearTouch)controller.previousState.NearTouches & resolvedMask) == 0)) + { + down = true; + } + } + } + + return down; + } + + /// + /// Gets the current up state of the given virtual near touch mask with the given controller mask. + /// Returns true if any masked near touch was released this frame on any masked controller and no other masked near touch is still down this frame. + /// + public static bool GetUp(NearTouch virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedNearTouchUp(virtualMask, RawNearTouch.None, controllerMask); + } + + /// + /// Gets the current up state of the given raw near touch mask with the given controller mask. + /// Returns true if any masked near touch was released this frame on any masked controller and no other masked near touch is still down this frame. + /// + public static bool GetUp(RawNearTouch rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedNearTouchUp(NearTouch.None, rawMask, controllerMask); + } + + private static bool GetResolvedNearTouchUp(NearTouch virtualMask, RawNearTouch rawMask, Controller controllerMask) + { + bool up = false; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawNearTouch resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if (((RawNearTouch)controller.currentState.NearTouches & resolvedMask) != 0) + { + return false; + } + + if ((((RawNearTouch)controller.currentState.NearTouches & resolvedMask) == 0) + && (((RawNearTouch)controller.previousState.NearTouches & resolvedMask) != 0)) + { + up = true; + } + } + } + + return up; + } + + /// + /// Gets the current state of the given virtual 1-dimensional axis mask on the given controller mask. + /// Returns the value of the largest masked axis across all masked controllers. Values range from 0 to 1. + /// + public static float Get(Axis1D virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedAxis1D(virtualMask, RawAxis1D.None, controllerMask); + } + + /// + /// Gets the current state of the given raw 1-dimensional axis mask on the given controller mask. + /// Returns the value of the largest masked axis across all masked controllers. Values range from 0 to 1. + /// + public static float Get(RawAxis1D rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedAxis1D(Axis1D.None, rawMask, controllerMask); + } + + private static float GetResolvedAxis1D(Axis1D virtualMask, RawAxis1D rawMask, Controller controllerMask) + { + float maxAxis = 0.0f; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (OVRManager.loadedXRDevice != OVRManager.XRDevice.Oculus) + controller.shouldApplyDeadzone = false; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawAxis1D resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if ((RawAxis1D.LIndexTrigger & resolvedMask) != 0) + { + float axis = controller.currentState.LIndexTrigger; + + if (controller.shouldApplyDeadzone) + axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + if ((RawAxis1D.RIndexTrigger & resolvedMask) != 0) + { + float axis = controller.currentState.RIndexTrigger; + + if (controller.shouldApplyDeadzone) + axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + if ((RawAxis1D.LHandTrigger & resolvedMask) != 0) + { + float axis = controller.currentState.LHandTrigger; + + if (controller.shouldApplyDeadzone) + axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + if ((RawAxis1D.RHandTrigger & resolvedMask) != 0) + { + float axis = controller.currentState.RHandTrigger; + + if (controller.shouldApplyDeadzone) + axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + } + } + + return maxAxis; + } + + /// + /// Gets the current state of the given virtual 2-dimensional axis mask on the given controller mask. + /// Returns the vector of the largest masked axis across all masked controllers. Values range from -1 to 1. + /// + public static Vector2 Get(Axis2D virtualMask, Controller controllerMask = Controller.Active) + { + return GetResolvedAxis2D(virtualMask, RawAxis2D.None, controllerMask); + } + + /// + /// Gets the current state of the given raw 2-dimensional axis mask on the given controller mask. + /// Returns the vector of the largest masked axis across all masked controllers. Values range from -1 to 1. + /// + public static Vector2 Get(RawAxis2D rawMask, Controller controllerMask = Controller.Active) + { + return GetResolvedAxis2D(Axis2D.None, rawMask, controllerMask); + } + + private static Vector2 GetResolvedAxis2D(Axis2D virtualMask, RawAxis2D rawMask, Controller controllerMask) + { + Vector2 maxAxis = Vector2.zero; + + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (OVRManager.loadedXRDevice != OVRManager.XRDevice.Oculus) + controller.shouldApplyDeadzone = false; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + RawAxis2D resolvedMask = rawMask | controller.ResolveToRawMask(virtualMask); + + if ((RawAxis2D.LThumbstick & resolvedMask) != 0) + { + Vector2 axis = new Vector2( + controller.currentState.LThumbstick.x, + controller.currentState.LThumbstick.y); + + if (controller.shouldApplyDeadzone) + axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + if ((RawAxis2D.LTouchpad & resolvedMask) != 0) + { + Vector2 axis = new Vector2( + controller.currentState.LTouchpad.x, + controller.currentState.LTouchpad.y); + + //if (controller.shouldApplyDeadzone) + // axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + if ((RawAxis2D.RThumbstick & resolvedMask) != 0) + { + Vector2 axis = new Vector2( + controller.currentState.RThumbstick.x, + controller.currentState.RThumbstick.y); + + if (controller.shouldApplyDeadzone) + axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + if ((RawAxis2D.RTouchpad & resolvedMask) != 0) + { + Vector2 axis = new Vector2( + controller.currentState.RTouchpad.x, + controller.currentState.RTouchpad.y); + + //if (controller.shouldApplyDeadzone) + // axis = CalculateDeadzone(axis, AXIS_DEADZONE_THRESHOLD); + + maxAxis = CalculateAbsMax(maxAxis, axis); + } + } + } + + return maxAxis; + } + + /// + /// Returns a mask of all currently connected controller types. + /// + public static Controller GetConnectedControllers() + { + return connectedControllerTypes; + } + + /// + /// Returns true if the specified controller type is currently connected. + /// + public static bool IsControllerConnected(Controller controller) + { + return (connectedControllerTypes & controller) == controller; + } + + /// + /// Returns the current active controller type. + /// + public static Controller GetActiveController() + { + return activeControllerType; + } + + private static void StartVibration(float amplitude, float duration, Node controllerNode) + { + int index = (controllerNode == Node.LeftHand) ? 0 : 1; + hapticInfos[index].hapticsDurationPlayed = 0.0f; + hapticInfos[index].hapticAmplitude = amplitude; + hapticInfos[index].hapticsDuration = duration; + hapticInfos[index].playingHaptics = (amplitude != 0.0f); + hapticInfos[index].node = controllerNode; + if (amplitude <= 0.0f || duration <= 0.0f) + { + hapticInfos[index].playingHaptics = false; + } + } + + private static int NUM_HAPTIC_CHANNELS = 2; + private static HapticInfo[] hapticInfos; + + private static float OPENVR_MAX_HAPTIC_AMPLITUDE = 4000.0f; + private static float HAPTIC_VIBRATION_DURATION_SECONDS = 2.0f; + private static String OPENVR_TOUCH_NAME = "oculus_touch"; + private static String OPENVR_VIVE_CONTROLLER_NAME = "vive_controller"; + private static String OPENVR_WINDOWSMR_CONTROLLER_NAME = "holographic_controller"; + + [Flags] + /// OpenVR Controller Enum + public enum OpenVRController : ulong + { + Unknown = 0, + OculusTouch = 1, + ViveController = 2, + WindowsMRController = 3 + } + + [StructLayout(LayoutKind.Sequential)] + public struct OpenVRControllerDetails + { + public OVR.OpenVR.VRControllerState_t state; + public OpenVRController controllerType; + public uint deviceID; + public Vector3 localPosition; //Position relative to Tracking Space + public Quaternion localOrientation; //Orientation relative to Tracking Space + } + + public static OpenVRControllerDetails[] openVRControllerDetails = new OpenVRControllerDetails[2]; + + private class HapticInfo + { + public bool playingHaptics; + public float hapticsDurationPlayed; + public float hapticsDuration; + public float hapticAmplitude; + public Node node; + } + + /// + /// Sets OpenVR left and right controller poses local to tracking space + /// + public static void SetOpenVRLocalPose(Vector3 leftPos, Vector3 rightPos, Quaternion leftRot, Quaternion rightRot) + { + openVRControllerDetails[0].localPosition = leftPos; + openVRControllerDetails[0].localOrientation = leftRot; + openVRControllerDetails[1].localPosition = rightPos; + openVRControllerDetails[1].localOrientation = rightRot; + } + + /// + /// Accesses OpenVR properties about a given deviceID. Especially useful for differentiating per type of OpenVR device (i.e. Oculus, Vive) + /// + public static string GetOpenVRStringProperty(OVR.OpenVR.ETrackedDeviceProperty prop, uint deviceId = OVR.OpenVR.OpenVR.k_unTrackedDeviceIndex_Hmd) + { + + OVR.OpenVR.ETrackedPropertyError error = OVR.OpenVR.ETrackedPropertyError.TrackedProp_Success; + OVR.OpenVR.CVRSystem system = OVR.OpenVR.OpenVR.System; + if (system != null) + { + uint capacity = system.GetStringTrackedDeviceProperty(deviceId, prop, null, 0, ref error); + if (capacity > 1) + { + var result = new System.Text.StringBuilder((int)capacity); + system.GetStringTrackedDeviceProperty(deviceId, prop, result, capacity, ref error); + return result.ToString(); + } + return (error != OVR.OpenVR.ETrackedPropertyError.TrackedProp_Success) ? error.ToString() : ""; + } + return ""; + } + + /// + /// Associates OpenVR device IDs with left and right motion controllers, for later haptic playback. + /// + private static void UpdateXRControllerNodeIds() + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + openVRControllerDetails[0].deviceID = OVR.OpenVR.OpenVR.k_unMaxTrackedDeviceCount; + openVRControllerDetails[1].deviceID = OVR.OpenVR.OpenVR.k_unMaxTrackedDeviceCount; + + OVR.OpenVR.CVRSystem system = OVR.OpenVR.OpenVR.System; + + if (system != null) + { + for (uint id = 0; id < OVR.OpenVR.OpenVR.k_unMaxTrackedDeviceCount; id++) + { + OVR.OpenVR.ETrackedDeviceClass deviceClass = system.GetTrackedDeviceClass(id); + if (deviceClass == OVR.OpenVR.ETrackedDeviceClass.Controller && system.IsTrackedDeviceConnected(id)) + { + OpenVRController controllerType; + String controllerName = GetOpenVRStringProperty(OVR.OpenVR.ETrackedDeviceProperty.Prop_ControllerType_String, id); + if (controllerName == OPENVR_TOUCH_NAME) + controllerType = OpenVRController.OculusTouch; + else if (controllerName == OPENVR_VIVE_CONTROLLER_NAME) + controllerType = OpenVRController.ViveController; + else if (controllerName == OPENVR_WINDOWSMR_CONTROLLER_NAME) + controllerType = OpenVRController.WindowsMRController; + else + controllerType = OpenVRController.Unknown; + + OVR.OpenVR.ETrackedControllerRole role = system.GetControllerRoleForTrackedDeviceIndex(id); + if (role == OVR.OpenVR.ETrackedControllerRole.LeftHand) + { + system.GetControllerState(id, ref openVRControllerDetails[0].state, (uint)Marshal.SizeOf(typeof(OVR.OpenVR.VRControllerState_t))); + openVRControllerDetails[0].deviceID = id; + openVRControllerDetails[0].controllerType = controllerType; + connectedControllerTypes |= Controller.LTouch; + } + else if (role == OVR.OpenVR.ETrackedControllerRole.RightHand) + { + system.GetControllerState(id, ref openVRControllerDetails[1].state, (uint)Marshal.SizeOf(typeof(OVR.OpenVR.VRControllerState_t))); + openVRControllerDetails[1].deviceID = id; + openVRControllerDetails[1].controllerType = controllerType; + connectedControllerTypes |= Controller.RTouch; + } + } + } + } + } + } + + /// + /// Runs once a frame to update cross-platform haptic playback + /// + private static void UpdateXRControllerHaptics() + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + for (int i = 0; i < NUM_HAPTIC_CHANNELS; i++) + { + if (hapticInfos[i].playingHaptics) + { + hapticInfos[i].hapticsDurationPlayed += Time.deltaTime; + + PlayHapticImpulse(hapticInfos[i].hapticAmplitude, hapticInfos[i].node); + + if (hapticInfos[i].hapticsDurationPlayed >= hapticInfos[i].hapticsDuration) + { + hapticInfos[i].playingHaptics = false; + } + } + } + + } + } + + private static void InitHapticInfo() + { + hapticInfos = new HapticInfo[NUM_HAPTIC_CHANNELS]; + for (int i = 0; i < NUM_HAPTIC_CHANNELS; i++) + { + hapticInfos[i] = new HapticInfo(); + } + } + + private static void PlayHapticImpulse(float amplitude, Node deviceNode) + { + OVR.OpenVR.CVRSystem system = OVR.OpenVR.OpenVR.System; + if (system != null && amplitude != 0.0f) + { + uint controllerId = (deviceNode == Node.LeftHand) ? openVRControllerDetails[0].deviceID : openVRControllerDetails[1].deviceID; + + if (IsValidOpenVRDevice(controllerId)) + system.TriggerHapticPulse(controllerId, 0, (char)(OPENVR_MAX_HAPTIC_AMPLITUDE * amplitude)); + } + } + + private static bool IsValidOpenVRDevice(uint deviceId) + { + return (deviceId >= 0 && deviceId < OVR.OpenVR.OpenVR.k_unMaxTrackedDeviceCount); + } + + /// + /// Activates vibration with the given frequency and amplitude with the given controller mask. + /// Ignored on controllers that do not support vibration. Expected values range from 0 to 1. + /// + public static void SetControllerVibration(float frequency, float amplitude, Controller controllerMask = Controller.Active) + { + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + controller.SetControllerVibration(frequency, amplitude); + } + } + } + else if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + if (controllerMask == Controller.LTouch || controllerMask == Controller.RTouch) + { + Node controllerNode = (controllerMask == Controller.LTouch) ? Node.LeftHand : Node.RightHand; + StartVibration(amplitude, HAPTIC_VIBRATION_DURATION_SECONDS, controllerNode); + } + } + } + + /// + /// Triggers a recenter to realign the specified controller's virtual pose with the user's real-world pose. + /// Only applicable to controllers that require recentering, such as the GearVR Controller. + /// Ignored for controllers that do not require recentering. + /// + public static void RecenterController(Controller controllerMask = Controller.Active) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + controller.RecenterController(); + } + } + } + + /// + /// Returns true if the specified controller was recentered this frame. + /// Only applicable to controllers that require recentering, such as the GearVR Controller. + /// Returns false for controllers that do not require recentering. + /// + public static bool GetControllerWasRecentered(Controller controllerMask = Controller.Active) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + bool wasRecentered = false; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + wasRecentered |= controller.WasRecentered(); + } + } + + return wasRecentered; + } + + /// + /// Returns the number of times the controller has been recentered this session. + /// Useful for detecting recenter events and resetting state such as arm model simulations, etc. + /// Wraps around to 0 after 255. + /// Only applicable to controllers that require recentering, such as the GearVR Controller. + /// Returns 0 for controllers that do not require recentering. + /// + public static byte GetControllerRecenterCount(Controller controllerMask = Controller.Active) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + byte recenterCount = 0; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + recenterCount = controller.GetRecenterCount(); + break; + } + } + + return recenterCount; + } + + /// + /// Returns the battery percentage remaining for the specified controller. Values range from 0 to 100. + /// Only applicable to controllers that report battery level, such as the GearVR Controller. + /// Returns 0 for controllers that do not report battery level. + /// + public static byte GetControllerBatteryPercentRemaining(Controller controllerMask = Controller.Active) + { + if ((controllerMask & Controller.Active) != 0) + controllerMask |= activeControllerType; + + byte battery = 0; + + for (int i = 0; i < controllers.Count; i++) + { + OVRControllerBase controller = controllers[i]; + + if (ShouldResolveController(controller.controllerType, controllerMask)) + { + battery = controller.GetBatteryPercentRemaining(); + break; + } + } + + return battery; + } + + private static Vector2 CalculateAbsMax(Vector2 a, Vector2 b) + { + float absA = a.sqrMagnitude; + float absB = b.sqrMagnitude; + + if (absA >= absB) + return a; + return b; + } + + private static float CalculateAbsMax(float a, float b) + { + float absA = (a >= 0) ? a : -a; + float absB = (b >= 0) ? b : -b; + + if (absA >= absB) + return a; + return b; + } + + private static Vector2 CalculateDeadzone(Vector2 a, float deadzone) + { + if (a.sqrMagnitude <= (deadzone * deadzone)) + return Vector2.zero; + + a *= ((a.magnitude - deadzone) / (1.0f - deadzone)); + + if (a.sqrMagnitude > 1.0f) + return a.normalized; + return a; + } + + private static float CalculateDeadzone(float a, float deadzone) + { + float mag = (a >= 0) ? a : -a; + + if (mag <= deadzone) + return 0.0f; + + a *= (mag - deadzone) / (1.0f - deadzone); + + if ((a * a) > 1.0f) + return (a >= 0) ? 1.0f : -1.0f; + return a; + } + + private static bool ShouldResolveController(Controller controllerType, Controller controllerMask) + { + bool isValid = false; + + if ((controllerType & controllerMask) == controllerType) + { + isValid = true; + } + + // If the mask requests both Touch controllers, reject the individual touch controllers. + if (((controllerMask & Controller.Touch) == Controller.Touch) + && ((controllerType & Controller.Touch) != 0) + && ((controllerType & Controller.Touch) != Controller.Touch)) + { + isValid = false; + } + + return isValid; + } + + private abstract class OVRControllerBase + { + public class VirtualButtonMap + { + public RawButton None = RawButton.None; + public RawButton One = RawButton.None; + public RawButton Two = RawButton.None; + public RawButton Three = RawButton.None; + public RawButton Four = RawButton.None; + public RawButton Start = RawButton.None; + public RawButton Back = RawButton.None; + public RawButton PrimaryShoulder = RawButton.None; + public RawButton PrimaryIndexTrigger = RawButton.None; + public RawButton PrimaryHandTrigger = RawButton.None; + public RawButton PrimaryThumbstick = RawButton.None; + public RawButton PrimaryThumbstickUp = RawButton.None; + public RawButton PrimaryThumbstickDown = RawButton.None; + public RawButton PrimaryThumbstickLeft = RawButton.None; + public RawButton PrimaryThumbstickRight = RawButton.None; + public RawButton PrimaryTouchpad = RawButton.None; + public RawButton SecondaryShoulder = RawButton.None; + public RawButton SecondaryIndexTrigger = RawButton.None; + public RawButton SecondaryHandTrigger = RawButton.None; + public RawButton SecondaryThumbstick = RawButton.None; + public RawButton SecondaryThumbstickUp = RawButton.None; + public RawButton SecondaryThumbstickDown = RawButton.None; + public RawButton SecondaryThumbstickLeft = RawButton.None; + public RawButton SecondaryThumbstickRight = RawButton.None; + public RawButton SecondaryTouchpad = RawButton.None; + public RawButton DpadUp = RawButton.None; + public RawButton DpadDown = RawButton.None; + public RawButton DpadLeft = RawButton.None; + public RawButton DpadRight = RawButton.None; + public RawButton Up = RawButton.None; + public RawButton Down = RawButton.None; + public RawButton Left = RawButton.None; + public RawButton Right = RawButton.None; + + public RawButton ToRawMask(Button virtualMask) + { + RawButton rawMask = 0; + + if (virtualMask == Button.None) + return RawButton.None; + + if ((virtualMask & Button.One) != 0) + rawMask |= One; + if ((virtualMask & Button.Two) != 0) + rawMask |= Two; + if ((virtualMask & Button.Three) != 0) + rawMask |= Three; + if ((virtualMask & Button.Four) != 0) + rawMask |= Four; + if ((virtualMask & Button.Start) != 0) + rawMask |= Start; + if ((virtualMask & Button.Back) != 0) + rawMask |= Back; + if ((virtualMask & Button.PrimaryShoulder) != 0) + rawMask |= PrimaryShoulder; + if ((virtualMask & Button.PrimaryIndexTrigger) != 0) + rawMask |= PrimaryIndexTrigger; + if ((virtualMask & Button.PrimaryHandTrigger) != 0) + rawMask |= PrimaryHandTrigger; + if ((virtualMask & Button.PrimaryThumbstick) != 0) + rawMask |= PrimaryThumbstick; + if ((virtualMask & Button.PrimaryThumbstickUp) != 0) + rawMask |= PrimaryThumbstickUp; + if ((virtualMask & Button.PrimaryThumbstickDown) != 0) + rawMask |= PrimaryThumbstickDown; + if ((virtualMask & Button.PrimaryThumbstickLeft) != 0) + rawMask |= PrimaryThumbstickLeft; + if ((virtualMask & Button.PrimaryThumbstickRight) != 0) + rawMask |= PrimaryThumbstickRight; + if ((virtualMask & Button.PrimaryTouchpad) != 0) + rawMask |= PrimaryTouchpad; + if ((virtualMask & Button.SecondaryShoulder) != 0) + rawMask |= SecondaryShoulder; + if ((virtualMask & Button.SecondaryIndexTrigger) != 0) + rawMask |= SecondaryIndexTrigger; + if ((virtualMask & Button.SecondaryHandTrigger) != 0) + rawMask |= SecondaryHandTrigger; + if ((virtualMask & Button.SecondaryThumbstick) != 0) + rawMask |= SecondaryThumbstick; + if ((virtualMask & Button.SecondaryThumbstickUp) != 0) + rawMask |= SecondaryThumbstickUp; + if ((virtualMask & Button.SecondaryThumbstickDown) != 0) + rawMask |= SecondaryThumbstickDown; + if ((virtualMask & Button.SecondaryThumbstickLeft) != 0) + rawMask |= SecondaryThumbstickLeft; + if ((virtualMask & Button.SecondaryThumbstickRight) != 0) + rawMask |= SecondaryThumbstickRight; + if ((virtualMask & Button.SecondaryTouchpad) != 0) + rawMask |= SecondaryTouchpad; + if ((virtualMask & Button.DpadUp) != 0) + rawMask |= DpadUp; + if ((virtualMask & Button.DpadDown) != 0) + rawMask |= DpadDown; + if ((virtualMask & Button.DpadLeft) != 0) + rawMask |= DpadLeft; + if ((virtualMask & Button.DpadRight) != 0) + rawMask |= DpadRight; + if ((virtualMask & Button.Up) != 0) + rawMask |= Up; + if ((virtualMask & Button.Down) != 0) + rawMask |= Down; + if ((virtualMask & Button.Left) != 0) + rawMask |= Left; + if ((virtualMask & Button.Right) != 0) + rawMask |= Right; + + return rawMask; + } + } + + public class VirtualTouchMap + { + public RawTouch None = RawTouch.None; + public RawTouch One = RawTouch.None; + public RawTouch Two = RawTouch.None; + public RawTouch Three = RawTouch.None; + public RawTouch Four = RawTouch.None; + public RawTouch PrimaryIndexTrigger = RawTouch.None; + public RawTouch PrimaryThumbstick = RawTouch.None; + public RawTouch PrimaryThumbRest = RawTouch.None; + public RawTouch PrimaryTouchpad = RawTouch.None; + public RawTouch SecondaryIndexTrigger = RawTouch.None; + public RawTouch SecondaryThumbstick = RawTouch.None; + public RawTouch SecondaryThumbRest = RawTouch.None; + public RawTouch SecondaryTouchpad = RawTouch.None; + + public RawTouch ToRawMask(Touch virtualMask) + { + RawTouch rawMask = 0; + + if (virtualMask == Touch.None) + return RawTouch.None; + + if ((virtualMask & Touch.One) != 0) + rawMask |= One; + if ((virtualMask & Touch.Two) != 0) + rawMask |= Two; + if ((virtualMask & Touch.Three) != 0) + rawMask |= Three; + if ((virtualMask & Touch.Four) != 0) + rawMask |= Four; + if ((virtualMask & Touch.PrimaryIndexTrigger) != 0) + rawMask |= PrimaryIndexTrigger; + if ((virtualMask & Touch.PrimaryThumbstick) != 0) + rawMask |= PrimaryThumbstick; + if ((virtualMask & Touch.PrimaryThumbRest) != 0) + rawMask |= PrimaryThumbRest; + if ((virtualMask & Touch.PrimaryTouchpad) != 0) + rawMask |= PrimaryTouchpad; + if ((virtualMask & Touch.SecondaryIndexTrigger) != 0) + rawMask |= SecondaryIndexTrigger; + if ((virtualMask & Touch.SecondaryThumbstick) != 0) + rawMask |= SecondaryThumbstick; + if ((virtualMask & Touch.SecondaryThumbRest) != 0) + rawMask |= SecondaryThumbRest; + if ((virtualMask & Touch.SecondaryTouchpad) != 0) + rawMask |= SecondaryTouchpad; + + return rawMask; + } + } + + public class VirtualNearTouchMap + { + public RawNearTouch None = RawNearTouch.None; + public RawNearTouch PrimaryIndexTrigger = RawNearTouch.None; + public RawNearTouch PrimaryThumbButtons = RawNearTouch.None; + public RawNearTouch SecondaryIndexTrigger = RawNearTouch.None; + public RawNearTouch SecondaryThumbButtons = RawNearTouch.None; + + public RawNearTouch ToRawMask(NearTouch virtualMask) + { + RawNearTouch rawMask = 0; + + if (virtualMask == NearTouch.None) + return RawNearTouch.None; + + if ((virtualMask & NearTouch.PrimaryIndexTrigger) != 0) + rawMask |= PrimaryIndexTrigger; + if ((virtualMask & NearTouch.PrimaryThumbButtons) != 0) + rawMask |= PrimaryThumbButtons; + if ((virtualMask & NearTouch.SecondaryIndexTrigger) != 0) + rawMask |= SecondaryIndexTrigger; + if ((virtualMask & NearTouch.SecondaryThumbButtons) != 0) + rawMask |= SecondaryThumbButtons; + + return rawMask; + } + } + + public class VirtualAxis1DMap + { + public RawAxis1D None = RawAxis1D.None; + public RawAxis1D PrimaryIndexTrigger = RawAxis1D.None; + public RawAxis1D PrimaryHandTrigger = RawAxis1D.None; + public RawAxis1D SecondaryIndexTrigger = RawAxis1D.None; + public RawAxis1D SecondaryHandTrigger = RawAxis1D.None; + + public RawAxis1D ToRawMask(Axis1D virtualMask) + { + RawAxis1D rawMask = 0; + + if (virtualMask == Axis1D.None) + return RawAxis1D.None; + + if ((virtualMask & Axis1D.PrimaryIndexTrigger) != 0) + rawMask |= PrimaryIndexTrigger; + if ((virtualMask & Axis1D.PrimaryHandTrigger) != 0) + rawMask |= PrimaryHandTrigger; + if ((virtualMask & Axis1D.SecondaryIndexTrigger) != 0) + rawMask |= SecondaryIndexTrigger; + if ((virtualMask & Axis1D.SecondaryHandTrigger) != 0) + rawMask |= SecondaryHandTrigger; + + return rawMask; + } + } + + public class VirtualAxis2DMap + { + public RawAxis2D None = RawAxis2D.None; + public RawAxis2D PrimaryThumbstick = RawAxis2D.None; + public RawAxis2D PrimaryTouchpad = RawAxis2D.None; + public RawAxis2D SecondaryThumbstick = RawAxis2D.None; + public RawAxis2D SecondaryTouchpad = RawAxis2D.None; + + public RawAxis2D ToRawMask(Axis2D virtualMask) + { + RawAxis2D rawMask = 0; + + if (virtualMask == Axis2D.None) + return RawAxis2D.None; + + if ((virtualMask & Axis2D.PrimaryThumbstick) != 0) + rawMask |= PrimaryThumbstick; + if ((virtualMask & Axis2D.PrimaryTouchpad) != 0) + rawMask |= PrimaryTouchpad; + if ((virtualMask & Axis2D.SecondaryThumbstick) != 0) + rawMask |= SecondaryThumbstick; + if ((virtualMask & Axis2D.SecondaryTouchpad) != 0) + rawMask |= SecondaryTouchpad; + + return rawMask; + } + } + + public Controller controllerType = Controller.None; + public VirtualButtonMap buttonMap = new VirtualButtonMap(); + public VirtualTouchMap touchMap = new VirtualTouchMap(); + public VirtualNearTouchMap nearTouchMap = new VirtualNearTouchMap(); + public VirtualAxis1DMap axis1DMap = new VirtualAxis1DMap(); + public VirtualAxis2DMap axis2DMap = new VirtualAxis2DMap(); + public OVRPlugin.ControllerState4 previousState = new OVRPlugin.ControllerState4(); + public OVRPlugin.ControllerState4 currentState = new OVRPlugin.ControllerState4(); + public bool shouldApplyDeadzone = true; + + public OVRControllerBase() + { + ConfigureButtonMap(); + ConfigureTouchMap(); + ConfigureNearTouchMap(); + ConfigureAxis1DMap(); + ConfigureAxis2DMap(); + } + + public virtual Controller Update() + { + OVRPlugin.ControllerState4 state; + + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR && ( (controllerType & Controller.Touch) != 0) ) + state = GetOpenVRControllerState(controllerType); + else + state = OVRPlugin.GetControllerState4((uint)controllerType); + + if (state.LIndexTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LIndexTrigger; + if (state.LHandTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LHandTrigger; + if (state.LThumbstick.y >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickUp; + if (state.LThumbstick.y <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickDown; + if (state.LThumbstick.x <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickLeft; + if (state.LThumbstick.x >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickRight; + + if (state.RIndexTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RIndexTrigger; + if (state.RHandTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RHandTrigger; + if (state.RThumbstick.y >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickUp; + if (state.RThumbstick.y <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickDown; + if (state.RThumbstick.x <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickLeft; + if (state.RThumbstick.x >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickRight; + + previousState = currentState; + currentState = state; + + return ((Controller)currentState.ConnectedControllers & controllerType); + } + + private OVRPlugin.ControllerState4 GetOpenVRControllerState(Controller controllerType) + { + OVRPlugin.ControllerState4 state = new OVRPlugin.ControllerState4(); + + if ((controllerType & Controller.LTouch) == Controller.LTouch && IsValidOpenVRDevice(openVRControllerDetails[0].deviceID)) + { + OVR.OpenVR.VRControllerState_t leftControllerState = openVRControllerDetails[0].state; + if ((leftControllerState.ulButtonPressed & ((ulong)OpenVRButton.Two)) == (ulong)OpenVRButton.Two) + state.Buttons |= (uint)RawButton.Y; + if ((leftControllerState.ulButtonPressed & ((ulong)OpenVRButton.Thumbstick)) == (ulong)OpenVRButton.Thumbstick) + state.Buttons |= (uint)RawButton.LThumbstick; + + state.LIndexTrigger = leftControllerState.rAxis1.x; + + if (openVRControllerDetails[0].controllerType == OpenVRController.OculusTouch || openVRControllerDetails[0].controllerType == OpenVRController.ViveController) + { + state.LThumbstick.x = leftControllerState.rAxis0.x; + state.LThumbstick.y = leftControllerState.rAxis0.y; + } + else if (openVRControllerDetails[0].controllerType == OpenVRController.WindowsMRController) + { + state.LThumbstick.x = leftControllerState.rAxis2.x; + state.LThumbstick.y = leftControllerState.rAxis2.y; + } + + if (openVRControllerDetails[0].controllerType == OpenVRController.OculusTouch) + state.LHandTrigger = leftControllerState.rAxis2.x; + else if (openVRControllerDetails[0].controllerType == OpenVRController.ViveController || openVRControllerDetails[0].controllerType == OpenVRController.WindowsMRController) + state.LHandTrigger = ((leftControllerState.ulButtonPressed & ((ulong)OpenVRButton.Grip)) == ((ulong)OpenVRButton.Grip)) ? 1 : 0; + + } + + if ((controllerType & Controller.RTouch) == Controller.RTouch && IsValidOpenVRDevice(openVRControllerDetails[1].deviceID)) + { + OVR.OpenVR.VRControllerState_t rightControllerState = openVRControllerDetails[1].state; + if ((rightControllerState.ulButtonPressed & ((ulong)OpenVRButton.Two)) == (ulong)OpenVRButton.Two) + state.Buttons |= (uint)RawButton.B; + if ((rightControllerState.ulButtonPressed & ((ulong)OpenVRButton.Thumbstick)) == (ulong)OpenVRButton.Thumbstick) + state.Buttons |= (uint)RawButton.RThumbstick; + + state.RIndexTrigger = rightControllerState.rAxis1.x; + + if (openVRControllerDetails[1].controllerType == OpenVRController.OculusTouch || openVRControllerDetails[1].controllerType == OpenVRController.ViveController) + { + state.RThumbstick.x = rightControllerState.rAxis0.x; + state.RThumbstick.y = rightControllerState.rAxis0.y; + } + else if (openVRControllerDetails[1].controllerType == OpenVRController.WindowsMRController) + { + state.RThumbstick.x = rightControllerState.rAxis2.x; + state.RThumbstick.y = rightControllerState.rAxis2.y; + } + + if (openVRControllerDetails[1].controllerType == OpenVRController.OculusTouch) + state.RHandTrigger = rightControllerState.rAxis2.x; + else if (openVRControllerDetails[1].controllerType == OpenVRController.ViveController || openVRControllerDetails[1].controllerType == OpenVRController.WindowsMRController) + state.RHandTrigger = ((rightControllerState.ulButtonPressed & ((ulong)OpenVRButton.Grip)) == ((ulong)OpenVRButton.Grip)) ? 1 : 0; + + } + + return state; + } + + public virtual void SetControllerVibration(float frequency, float amplitude) + { + OVRPlugin.SetControllerVibration((uint)controllerType, frequency, amplitude); + } + + public virtual void RecenterController() + { + OVRPlugin.RecenterTrackingOrigin(OVRPlugin.RecenterFlags.Controllers); + } + + public virtual bool WasRecentered() + { + return false; + } + + public virtual byte GetRecenterCount() + { + return 0; + } + + public virtual byte GetBatteryPercentRemaining() + { + return 0; + } + + public abstract void ConfigureButtonMap(); + public abstract void ConfigureTouchMap(); + public abstract void ConfigureNearTouchMap(); + public abstract void ConfigureAxis1DMap(); + public abstract void ConfigureAxis2DMap(); + + public RawButton ResolveToRawMask(Button virtualMask) + { + return buttonMap.ToRawMask(virtualMask); + } + + public RawTouch ResolveToRawMask(Touch virtualMask) + { + return touchMap.ToRawMask(virtualMask); + } + + public RawNearTouch ResolveToRawMask(NearTouch virtualMask) + { + return nearTouchMap.ToRawMask(virtualMask); + } + + public RawAxis1D ResolveToRawMask(Axis1D virtualMask) + { + return axis1DMap.ToRawMask(virtualMask); + } + + public RawAxis2D ResolveToRawMask(Axis2D virtualMask) + { + return axis2DMap.ToRawMask(virtualMask); + } + } + + private class OVRControllerTouch : OVRControllerBase + { + public OVRControllerTouch() + { + controllerType = Controller.Touch; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.A; + buttonMap.Two = RawButton.B; + buttonMap.Three = RawButton.X; + buttonMap.Four = RawButton.Y; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.None; + buttonMap.PrimaryShoulder = RawButton.None; + buttonMap.PrimaryIndexTrigger = RawButton.LIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.LHandTrigger; + buttonMap.PrimaryThumbstick = RawButton.LThumbstick; + buttonMap.PrimaryThumbstickUp = RawButton.LThumbstickUp; + buttonMap.PrimaryThumbstickDown = RawButton.LThumbstickDown; + buttonMap.PrimaryThumbstickLeft = RawButton.LThumbstickLeft; + buttonMap.PrimaryThumbstickRight = RawButton.LThumbstickRight; + buttonMap.PrimaryTouchpad = RawButton.None; + buttonMap.SecondaryShoulder = RawButton.None; + buttonMap.SecondaryIndexTrigger = RawButton.RIndexTrigger; + buttonMap.SecondaryHandTrigger = RawButton.RHandTrigger; + buttonMap.SecondaryThumbstick = RawButton.RThumbstick; + buttonMap.SecondaryThumbstickUp = RawButton.RThumbstickUp; + buttonMap.SecondaryThumbstickDown = RawButton.RThumbstickDown; + buttonMap.SecondaryThumbstickLeft = RawButton.RThumbstickLeft; + buttonMap.SecondaryThumbstickRight = RawButton.RThumbstickRight; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.None; + buttonMap.DpadDown = RawButton.None; + buttonMap.DpadLeft = RawButton.None; + buttonMap.DpadRight = RawButton.None; + buttonMap.Up = RawButton.LThumbstickUp; + buttonMap.Down = RawButton.LThumbstickDown; + buttonMap.Left = RawButton.LThumbstickLeft; + buttonMap.Right = RawButton.LThumbstickRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.A; + touchMap.Two = RawTouch.B; + touchMap.Three = RawTouch.X; + touchMap.Four = RawTouch.Y; + touchMap.PrimaryIndexTrigger = RawTouch.LIndexTrigger; + touchMap.PrimaryThumbstick = RawTouch.LThumbstick; + touchMap.PrimaryThumbRest = RawTouch.LThumbRest; + touchMap.PrimaryTouchpad = RawTouch.None; + touchMap.SecondaryIndexTrigger = RawTouch.RIndexTrigger; + touchMap.SecondaryThumbstick = RawTouch.RThumbstick; + touchMap.SecondaryThumbRest = RawTouch.RThumbRest; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.LIndexTrigger; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.LThumbButtons; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.RIndexTrigger; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.RThumbButtons; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.LIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.LHandTrigger; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.RIndexTrigger; + axis1DMap.SecondaryHandTrigger = RawAxis1D.RHandTrigger; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.LThumbstick; + axis2DMap.PrimaryTouchpad = RawAxis2D.None; + axis2DMap.SecondaryThumbstick = RawAxis2D.RThumbstick; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + + public override bool WasRecentered() + { + return ((currentState.LRecenterCount + currentState.RRecenterCount) != (previousState.LRecenterCount + previousState.RRecenterCount)); + } + + public override byte GetRecenterCount() + { + return (byte)(currentState.LRecenterCount + currentState.RRecenterCount); + } + + public override byte GetBatteryPercentRemaining() + { + byte leftBattery = currentState.LBatteryPercentRemaining; + byte rightBattery = currentState.RBatteryPercentRemaining; + byte minBattery = (leftBattery <= rightBattery) ? leftBattery : rightBattery; + + return minBattery; + } + } + + private class OVRControllerLTouch : OVRControllerBase + { + public OVRControllerLTouch() + { + controllerType = Controller.LTouch; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.X; + buttonMap.Two = RawButton.Y; + buttonMap.Three = RawButton.None; + buttonMap.Four = RawButton.None; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.None; + buttonMap.PrimaryShoulder = RawButton.None; + buttonMap.PrimaryIndexTrigger = RawButton.LIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.LHandTrigger; + buttonMap.PrimaryThumbstick = RawButton.LThumbstick; + buttonMap.PrimaryThumbstickUp = RawButton.LThumbstickUp; + buttonMap.PrimaryThumbstickDown = RawButton.LThumbstickDown; + buttonMap.PrimaryThumbstickLeft = RawButton.LThumbstickLeft; + buttonMap.PrimaryThumbstickRight = RawButton.LThumbstickRight; + buttonMap.PrimaryTouchpad = RawButton.None; + buttonMap.SecondaryShoulder = RawButton.None; + buttonMap.SecondaryIndexTrigger = RawButton.None; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.None; + buttonMap.SecondaryThumbstickUp = RawButton.None; + buttonMap.SecondaryThumbstickDown = RawButton.None; + buttonMap.SecondaryThumbstickLeft = RawButton.None; + buttonMap.SecondaryThumbstickRight = RawButton.None; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.None; + buttonMap.DpadDown = RawButton.None; + buttonMap.DpadLeft = RawButton.None; + buttonMap.DpadRight = RawButton.None; + buttonMap.Up = RawButton.LThumbstickUp; + buttonMap.Down = RawButton.LThumbstickDown; + buttonMap.Left = RawButton.LThumbstickLeft; + buttonMap.Right = RawButton.LThumbstickRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.X; + touchMap.Two = RawTouch.Y; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.LIndexTrigger; + touchMap.PrimaryThumbstick = RawTouch.LThumbstick; + touchMap.PrimaryThumbRest = RawTouch.LThumbRest; + touchMap.PrimaryTouchpad = RawTouch.None; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.LIndexTrigger; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.LThumbButtons; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.LIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.LHandTrigger; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.None; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.LThumbstick; + axis2DMap.PrimaryTouchpad = RawAxis2D.None; + axis2DMap.SecondaryThumbstick = RawAxis2D.None; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + + public override bool WasRecentered() + { + return (currentState.LRecenterCount != previousState.LRecenterCount); + } + + public override byte GetRecenterCount() + { + return currentState.LRecenterCount; + } + + public override byte GetBatteryPercentRemaining() + { + return currentState.LBatteryPercentRemaining; + } + } + + private class OVRControllerRTouch : OVRControllerBase + { + public OVRControllerRTouch() + { + controllerType = Controller.RTouch; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.A; + buttonMap.Two = RawButton.B; + buttonMap.Three = RawButton.None; + buttonMap.Four = RawButton.None; + buttonMap.Start = RawButton.None; + buttonMap.Back = RawButton.None; + buttonMap.PrimaryShoulder = RawButton.None; + buttonMap.PrimaryIndexTrigger = RawButton.RIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.RHandTrigger; + buttonMap.PrimaryThumbstick = RawButton.RThumbstick; + buttonMap.PrimaryThumbstickUp = RawButton.RThumbstickUp; + buttonMap.PrimaryThumbstickDown = RawButton.RThumbstickDown; + buttonMap.PrimaryThumbstickLeft = RawButton.RThumbstickLeft; + buttonMap.PrimaryThumbstickRight = RawButton.RThumbstickRight; + buttonMap.PrimaryTouchpad = RawButton.None; + buttonMap.SecondaryShoulder = RawButton.None; + buttonMap.SecondaryIndexTrigger = RawButton.None; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.None; + buttonMap.SecondaryThumbstickUp = RawButton.None; + buttonMap.SecondaryThumbstickDown = RawButton.None; + buttonMap.SecondaryThumbstickLeft = RawButton.None; + buttonMap.SecondaryThumbstickRight = RawButton.None; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.None; + buttonMap.DpadDown = RawButton.None; + buttonMap.DpadLeft = RawButton.None; + buttonMap.DpadRight = RawButton.None; + buttonMap.Up = RawButton.RThumbstickUp; + buttonMap.Down = RawButton.RThumbstickDown; + buttonMap.Left = RawButton.RThumbstickLeft; + buttonMap.Right = RawButton.RThumbstickRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.A; + touchMap.Two = RawTouch.B; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.RIndexTrigger; + touchMap.PrimaryThumbstick = RawTouch.RThumbstick; + touchMap.PrimaryThumbRest = RawTouch.RThumbRest; + touchMap.PrimaryTouchpad = RawTouch.None; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.RIndexTrigger; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.RThumbButtons; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.RIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.RHandTrigger; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.None; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.RThumbstick; + axis2DMap.PrimaryTouchpad = RawAxis2D.None; + axis2DMap.SecondaryThumbstick = RawAxis2D.None; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + + public override bool WasRecentered() + { + return (currentState.RRecenterCount != previousState.RRecenterCount); + } + + public override byte GetRecenterCount() + { + return currentState.RRecenterCount; + } + + public override byte GetBatteryPercentRemaining() + { + return currentState.RBatteryPercentRemaining; + } + } + + private class OVRControllerRemote : OVRControllerBase + { + public OVRControllerRemote() + { + controllerType = Controller.Remote; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.Start; + buttonMap.Two = RawButton.Back; + buttonMap.Three = RawButton.None; + buttonMap.Four = RawButton.None; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.Back; + buttonMap.PrimaryShoulder = RawButton.None; + buttonMap.PrimaryIndexTrigger = RawButton.None; + buttonMap.PrimaryHandTrigger = RawButton.None; + buttonMap.PrimaryThumbstick = RawButton.None; + buttonMap.PrimaryThumbstickUp = RawButton.None; + buttonMap.PrimaryThumbstickDown = RawButton.None; + buttonMap.PrimaryThumbstickLeft = RawButton.None; + buttonMap.PrimaryThumbstickRight = RawButton.None; + buttonMap.PrimaryTouchpad = RawButton.None; + buttonMap.SecondaryShoulder = RawButton.None; + buttonMap.SecondaryIndexTrigger = RawButton.None; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.None; + buttonMap.SecondaryThumbstickUp = RawButton.None; + buttonMap.SecondaryThumbstickDown = RawButton.None; + buttonMap.SecondaryThumbstickLeft = RawButton.None; + buttonMap.SecondaryThumbstickRight = RawButton.None; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.DpadUp; + buttonMap.DpadDown = RawButton.DpadDown; + buttonMap.DpadLeft = RawButton.DpadLeft; + buttonMap.DpadRight = RawButton.DpadRight; + buttonMap.Up = RawButton.DpadUp; + buttonMap.Down = RawButton.DpadDown; + buttonMap.Left = RawButton.DpadLeft; + buttonMap.Right = RawButton.DpadRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.None; + touchMap.Two = RawTouch.None; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.None; + touchMap.PrimaryThumbstick = RawTouch.None; + touchMap.PrimaryThumbRest = RawTouch.None; + touchMap.PrimaryTouchpad = RawTouch.None; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.None; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.None; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.None; + axis1DMap.PrimaryHandTrigger = RawAxis1D.None; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.None; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.None; + axis2DMap.PrimaryTouchpad = RawAxis2D.None; + axis2DMap.SecondaryThumbstick = RawAxis2D.None; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + } + + private class OVRControllerGamepadPC : OVRControllerBase + { + public OVRControllerGamepadPC() + { + controllerType = Controller.Gamepad; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.A; + buttonMap.Two = RawButton.B; + buttonMap.Three = RawButton.X; + buttonMap.Four = RawButton.Y; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.Back; + buttonMap.PrimaryShoulder = RawButton.LShoulder; + buttonMap.PrimaryIndexTrigger = RawButton.LIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.None; + buttonMap.PrimaryThumbstick = RawButton.LThumbstick; + buttonMap.PrimaryThumbstickUp = RawButton.LThumbstickUp; + buttonMap.PrimaryThumbstickDown = RawButton.LThumbstickDown; + buttonMap.PrimaryThumbstickLeft = RawButton.LThumbstickLeft; + buttonMap.PrimaryThumbstickRight = RawButton.LThumbstickRight; + buttonMap.PrimaryTouchpad = RawButton.None; + buttonMap.SecondaryShoulder = RawButton.RShoulder; + buttonMap.SecondaryIndexTrigger = RawButton.RIndexTrigger; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.RThumbstick; + buttonMap.SecondaryThumbstickUp = RawButton.RThumbstickUp; + buttonMap.SecondaryThumbstickDown = RawButton.RThumbstickDown; + buttonMap.SecondaryThumbstickLeft = RawButton.RThumbstickLeft; + buttonMap.SecondaryThumbstickRight = RawButton.RThumbstickRight; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.DpadUp; + buttonMap.DpadDown = RawButton.DpadDown; + buttonMap.DpadLeft = RawButton.DpadLeft; + buttonMap.DpadRight = RawButton.DpadRight; + buttonMap.Up = RawButton.LThumbstickUp; + buttonMap.Down = RawButton.LThumbstickDown; + buttonMap.Left = RawButton.LThumbstickLeft; + buttonMap.Right = RawButton.LThumbstickRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.None; + touchMap.Two = RawTouch.None; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.None; + touchMap.PrimaryThumbstick = RawTouch.None; + touchMap.PrimaryThumbRest = RawTouch.None; + touchMap.PrimaryTouchpad = RawTouch.None; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.None; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.None; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.LIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.None; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.RIndexTrigger; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.LThumbstick; + axis2DMap.PrimaryTouchpad = RawAxis2D.None; + axis2DMap.SecondaryThumbstick = RawAxis2D.RThumbstick; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + } + + private class OVRControllerGamepadMac : OVRControllerBase + { + /// An axis on the gamepad. + private enum AxisGPC + { + None = -1, + LeftXAxis = 0, + LeftYAxis, + RightXAxis, + RightYAxis, + LeftTrigger, + RightTrigger, + DPad_X_Axis, + DPad_Y_Axis, + Max, + }; + + /// A button on the gamepad. + public enum ButtonGPC + { + None = -1, + A = 0, + B, + X, + Y, + Up, + Down, + Left, + Right, + Start, + Back, + LStick, + RStick, + LeftShoulder, + RightShoulder, + Max + }; + + private bool initialized = false; + + public OVRControllerGamepadMac() + { + controllerType = Controller.Gamepad; + + initialized = OVR_GamepadController_Initialize(); + } + + ~OVRControllerGamepadMac() + { + if (!initialized) + return; + + OVR_GamepadController_Destroy(); + } + + public override Controller Update() + { + if (!initialized) + { + return Controller.None; + } + + OVRPlugin.ControllerState4 state = new OVRPlugin.ControllerState4(); + + bool result = OVR_GamepadController_Update(); + + if (result) + state.ConnectedControllers = (uint)Controller.Gamepad; + + if (OVR_GamepadController_GetButton((int)ButtonGPC.A)) + state.Buttons |= (uint)RawButton.A; + if (OVR_GamepadController_GetButton((int)ButtonGPC.B)) + state.Buttons |= (uint)RawButton.B; + if (OVR_GamepadController_GetButton((int)ButtonGPC.X)) + state.Buttons |= (uint)RawButton.X; + if (OVR_GamepadController_GetButton((int)ButtonGPC.Y)) + state.Buttons |= (uint)RawButton.Y; + if (OVR_GamepadController_GetButton((int)ButtonGPC.Up)) + state.Buttons |= (uint)RawButton.DpadUp; + if (OVR_GamepadController_GetButton((int)ButtonGPC.Down)) + state.Buttons |= (uint)RawButton.DpadDown; + if (OVR_GamepadController_GetButton((int)ButtonGPC.Left)) + state.Buttons |= (uint)RawButton.DpadLeft; + if (OVR_GamepadController_GetButton((int)ButtonGPC.Right)) + state.Buttons |= (uint)RawButton.DpadRight; + if (OVR_GamepadController_GetButton((int)ButtonGPC.Start)) + state.Buttons |= (uint)RawButton.Start; + if (OVR_GamepadController_GetButton((int)ButtonGPC.Back)) + state.Buttons |= (uint)RawButton.Back; + if (OVR_GamepadController_GetButton((int)ButtonGPC.LStick)) + state.Buttons |= (uint)RawButton.LThumbstick; + if (OVR_GamepadController_GetButton((int)ButtonGPC.RStick)) + state.Buttons |= (uint)RawButton.RThumbstick; + if (OVR_GamepadController_GetButton((int)ButtonGPC.LeftShoulder)) + state.Buttons |= (uint)RawButton.LShoulder; + if (OVR_GamepadController_GetButton((int)ButtonGPC.RightShoulder)) + state.Buttons |= (uint)RawButton.RShoulder; + + state.LThumbstick.x = OVR_GamepadController_GetAxis((int)AxisGPC.LeftXAxis); + state.LThumbstick.y = OVR_GamepadController_GetAxis((int)AxisGPC.LeftYAxis); + state.RThumbstick.x = OVR_GamepadController_GetAxis((int)AxisGPC.RightXAxis); + state.RThumbstick.y = OVR_GamepadController_GetAxis((int)AxisGPC.RightYAxis); + state.LIndexTrigger = OVR_GamepadController_GetAxis((int)AxisGPC.LeftTrigger); + state.RIndexTrigger = OVR_GamepadController_GetAxis((int)AxisGPC.RightTrigger); + + if (state.LIndexTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LIndexTrigger; + if (state.LHandTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LHandTrigger; + if (state.LThumbstick.y >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickUp; + if (state.LThumbstick.y <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickDown; + if (state.LThumbstick.x <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickLeft; + if (state.LThumbstick.x >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.LThumbstickRight; + + if (state.RIndexTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RIndexTrigger; + if (state.RHandTrigger >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RHandTrigger; + if (state.RThumbstick.y >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickUp; + if (state.RThumbstick.y <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickDown; + if (state.RThumbstick.x <= -AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickLeft; + if (state.RThumbstick.x >= AXIS_AS_BUTTON_THRESHOLD) + state.Buttons |= (uint)RawButton.RThumbstickRight; + + previousState = currentState; + currentState = state; + + return ((Controller)currentState.ConnectedControllers & controllerType); + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.A; + buttonMap.Two = RawButton.B; + buttonMap.Three = RawButton.X; + buttonMap.Four = RawButton.Y; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.Back; + buttonMap.PrimaryShoulder = RawButton.LShoulder; + buttonMap.PrimaryIndexTrigger = RawButton.LIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.None; + buttonMap.PrimaryThumbstick = RawButton.LThumbstick; + buttonMap.PrimaryThumbstickUp = RawButton.LThumbstickUp; + buttonMap.PrimaryThumbstickDown = RawButton.LThumbstickDown; + buttonMap.PrimaryThumbstickLeft = RawButton.LThumbstickLeft; + buttonMap.PrimaryThumbstickRight = RawButton.LThumbstickRight; + buttonMap.PrimaryTouchpad = RawButton.None; + buttonMap.SecondaryShoulder = RawButton.RShoulder; + buttonMap.SecondaryIndexTrigger = RawButton.RIndexTrigger; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.RThumbstick; + buttonMap.SecondaryThumbstickUp = RawButton.RThumbstickUp; + buttonMap.SecondaryThumbstickDown = RawButton.RThumbstickDown; + buttonMap.SecondaryThumbstickLeft = RawButton.RThumbstickLeft; + buttonMap.SecondaryThumbstickRight = RawButton.RThumbstickRight; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.DpadUp; + buttonMap.DpadDown = RawButton.DpadDown; + buttonMap.DpadLeft = RawButton.DpadLeft; + buttonMap.DpadRight = RawButton.DpadRight; + buttonMap.Up = RawButton.LThumbstickUp; + buttonMap.Down = RawButton.LThumbstickDown; + buttonMap.Left = RawButton.LThumbstickLeft; + buttonMap.Right = RawButton.LThumbstickRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.None; + touchMap.Two = RawTouch.None; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.None; + touchMap.PrimaryThumbstick = RawTouch.None; + touchMap.PrimaryThumbRest = RawTouch.None; + touchMap.PrimaryTouchpad = RawTouch.None; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.None; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.None; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.LIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.None; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.RIndexTrigger; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.LThumbstick; + axis2DMap.PrimaryTouchpad = RawAxis2D.None; + axis2DMap.SecondaryThumbstick = RawAxis2D.RThumbstick; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + + public override void SetControllerVibration(float frequency, float amplitude) + { + int gpcNode = 0; + float gpcFrequency = frequency * 200.0f; //Map frequency from 0-1 CAPI range to 0-200 GPC range + float gpcStrength = amplitude; + + OVR_GamepadController_SetVibration(gpcNode, gpcStrength, gpcFrequency); + } + + private const string DllName = "OVRGamepad"; + + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] + private static extern bool OVR_GamepadController_Initialize(); + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] + private static extern bool OVR_GamepadController_Destroy(); + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] + private static extern bool OVR_GamepadController_Update(); + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] + private static extern float OVR_GamepadController_GetAxis(int axis); + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] + private static extern bool OVR_GamepadController_GetButton(int button); + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] + private static extern bool OVR_GamepadController_SetVibration(int node, float strength, float frequency); + } + + private class OVRControllerGamepadAndroid : OVRControllerBase + { + public OVRControllerGamepadAndroid() + { + controllerType = Controller.Gamepad; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.A; + buttonMap.Two = RawButton.B; + buttonMap.Three = RawButton.X; + buttonMap.Four = RawButton.Y; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.Back; + buttonMap.PrimaryShoulder = RawButton.LShoulder; + buttonMap.PrimaryIndexTrigger = RawButton.LIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.None; + buttonMap.PrimaryThumbstick = RawButton.LThumbstick; + buttonMap.PrimaryThumbstickUp = RawButton.LThumbstickUp; + buttonMap.PrimaryThumbstickDown = RawButton.LThumbstickDown; + buttonMap.PrimaryThumbstickLeft = RawButton.LThumbstickLeft; + buttonMap.PrimaryThumbstickRight = RawButton.LThumbstickRight; + buttonMap.PrimaryTouchpad = RawButton.None; + buttonMap.SecondaryShoulder = RawButton.RShoulder; + buttonMap.SecondaryIndexTrigger = RawButton.RIndexTrigger; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.RThumbstick; + buttonMap.SecondaryThumbstickUp = RawButton.RThumbstickUp; + buttonMap.SecondaryThumbstickDown = RawButton.RThumbstickDown; + buttonMap.SecondaryThumbstickLeft = RawButton.RThumbstickLeft; + buttonMap.SecondaryThumbstickRight = RawButton.RThumbstickRight; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.DpadUp; + buttonMap.DpadDown = RawButton.DpadDown; + buttonMap.DpadLeft = RawButton.DpadLeft; + buttonMap.DpadRight = RawButton.DpadRight; + buttonMap.Up = RawButton.LThumbstickUp; + buttonMap.Down = RawButton.LThumbstickDown; + buttonMap.Left = RawButton.LThumbstickLeft; + buttonMap.Right = RawButton.LThumbstickRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.None; + touchMap.Two = RawTouch.None; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.None; + touchMap.PrimaryThumbstick = RawTouch.None; + touchMap.PrimaryThumbRest = RawTouch.None; + touchMap.PrimaryTouchpad = RawTouch.None; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.None; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.None; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.LIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.None; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.RIndexTrigger; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.LThumbstick; + axis2DMap.PrimaryTouchpad = RawAxis2D.None; + axis2DMap.SecondaryThumbstick = RawAxis2D.RThumbstick; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + } + + private class OVRControllerTouchpad : OVRControllerBase + { + private OVRPlugin.Vector2f moveAmount; + private float maxTapMagnitude = 0.1f; + private float minMoveMagnitude = 0.15f; + + public OVRControllerTouchpad() + { + controllerType = Controller.Touchpad; + } + + public override Controller Update() + { + Controller res = base.Update(); + + if (GetDown(RawTouch.LTouchpad, OVRInput.Controller.Touchpad)) + { + moveAmount = currentState.LTouchpad; + } + + if (GetUp(RawTouch.LTouchpad, OVRInput.Controller.Touchpad)) + { + moveAmount.x = previousState.LTouchpad.x - moveAmount.x; + moveAmount.y = previousState.LTouchpad.y - moveAmount.y; + + Vector2 move = new Vector2(moveAmount.x, moveAmount.y); + float moveMag = move.magnitude; + + if (moveMag < maxTapMagnitude) + { + // Emit Touchpad Tap + currentState.Buttons |= (uint)RawButton.Start; + currentState.Buttons |= (uint)RawButton.LTouchpad; + } + else if (moveMag >= minMoveMagnitude) + { + move.Normalize(); + + // Left/Right + if (Mathf.Abs(move.x) > Mathf.Abs(move.y)) + { + if (move.x < 0.0f) + { + currentState.Buttons |= (uint)RawButton.DpadLeft; + } + else + { + currentState.Buttons |= (uint)RawButton.DpadRight; + } + } + // Up/Down + else + { + if (move.y < 0.0f) + { + currentState.Buttons |= (uint)RawButton.DpadDown; + } + else + { + currentState.Buttons |= (uint)RawButton.DpadUp; + } + } + } + } + + return res; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.LTouchpad; + buttonMap.Two = RawButton.Back; + buttonMap.Three = RawButton.None; + buttonMap.Four = RawButton.None; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.Back; + buttonMap.PrimaryShoulder = RawButton.None; + buttonMap.PrimaryIndexTrigger = RawButton.None; + buttonMap.PrimaryHandTrigger = RawButton.None; + buttonMap.PrimaryThumbstick = RawButton.None; + buttonMap.PrimaryThumbstickUp = RawButton.None; + buttonMap.PrimaryThumbstickDown = RawButton.None; + buttonMap.PrimaryThumbstickLeft = RawButton.None; + buttonMap.PrimaryThumbstickRight = RawButton.None; + buttonMap.PrimaryTouchpad = RawButton.LTouchpad; + buttonMap.SecondaryShoulder = RawButton.None; + buttonMap.SecondaryIndexTrigger = RawButton.None; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.None; + buttonMap.SecondaryThumbstickUp = RawButton.None; + buttonMap.SecondaryThumbstickDown = RawButton.None; + buttonMap.SecondaryThumbstickLeft = RawButton.None; + buttonMap.SecondaryThumbstickRight = RawButton.None; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.DpadUp; + buttonMap.DpadDown = RawButton.DpadDown; + buttonMap.DpadLeft = RawButton.DpadLeft; + buttonMap.DpadRight = RawButton.DpadRight; + buttonMap.Up = RawButton.DpadUp; + buttonMap.Down = RawButton.DpadDown; + buttonMap.Left = RawButton.DpadLeft; + buttonMap.Right = RawButton.DpadRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.LTouchpad; + touchMap.Two = RawTouch.None; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.None; + touchMap.PrimaryThumbstick = RawTouch.None; + touchMap.PrimaryThumbRest = RawTouch.None; + touchMap.PrimaryTouchpad = RawTouch.LTouchpad; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.None; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.None; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.None; + axis1DMap.PrimaryHandTrigger = RawAxis1D.None; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.None; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.None; + axis2DMap.PrimaryTouchpad = RawAxis2D.LTouchpad; + axis2DMap.SecondaryThumbstick = RawAxis2D.None; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + } + + private class OVRControllerLTrackedRemote : OVRControllerBase + { + private bool emitSwipe; + private OVRPlugin.Vector2f moveAmount; + private float minMoveMagnitude = 0.3f; + + public OVRControllerLTrackedRemote() + { + controllerType = Controller.LTrackedRemote; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.LTouchpad; + buttonMap.Two = RawButton.Back; + buttonMap.Three = RawButton.None; + buttonMap.Four = RawButton.None; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.Back; + buttonMap.PrimaryShoulder = RawButton.None; + buttonMap.PrimaryIndexTrigger = RawButton.LIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.LHandTrigger; + buttonMap.PrimaryThumbstick = RawButton.None; + buttonMap.PrimaryThumbstickUp = RawButton.None; + buttonMap.PrimaryThumbstickDown = RawButton.None; + buttonMap.PrimaryThumbstickLeft = RawButton.None; + buttonMap.PrimaryThumbstickRight = RawButton.None; + buttonMap.PrimaryTouchpad = RawButton.LTouchpad; + buttonMap.SecondaryShoulder = RawButton.None; + buttonMap.SecondaryIndexTrigger = RawButton.None; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.None; + buttonMap.SecondaryThumbstickUp = RawButton.None; + buttonMap.SecondaryThumbstickDown = RawButton.None; + buttonMap.SecondaryThumbstickLeft = RawButton.None; + buttonMap.SecondaryThumbstickRight = RawButton.None; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.DpadUp; + buttonMap.DpadDown = RawButton.DpadDown; + buttonMap.DpadLeft = RawButton.DpadLeft; + buttonMap.DpadRight = RawButton.DpadRight; + buttonMap.Up = RawButton.DpadUp; + buttonMap.Down = RawButton.DpadDown; + buttonMap.Left = RawButton.DpadLeft; + buttonMap.Right = RawButton.DpadRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.LTouchpad; + touchMap.Two = RawTouch.None; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.LIndexTrigger; + touchMap.PrimaryThumbstick = RawTouch.None; + touchMap.PrimaryThumbRest = RawTouch.None; + touchMap.PrimaryTouchpad = RawTouch.LTouchpad; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.None; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.None; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.LIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.LHandTrigger; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.None; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.None; + axis2DMap.PrimaryTouchpad = RawAxis2D.LTouchpad; + axis2DMap.SecondaryThumbstick = RawAxis2D.None; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + + public override Controller Update() + { + Controller res = base.Update(); + + if (GetDown(RawTouch.LTouchpad, OVRInput.Controller.LTrackedRemote)) + { + emitSwipe = true; + moveAmount = currentState.LTouchpad; + } + + if (GetDown(RawButton.LTouchpad, OVRInput.Controller.LTrackedRemote)) + { + emitSwipe = false; + } + + if (GetUp(RawTouch.LTouchpad, OVRInput.Controller.LTrackedRemote) && emitSwipe) + { + emitSwipe = false; + + moveAmount.x = previousState.LTouchpad.x - moveAmount.x; + moveAmount.y = previousState.LTouchpad.y - moveAmount.y; + + Vector2 move = new Vector2(moveAmount.x, moveAmount.y); + + if (move.magnitude >= minMoveMagnitude) + { + move.Normalize(); + + // Left/Right + if (Mathf.Abs(move.x) > Mathf.Abs(move.y)) + { + if (move.x < 0.0f) + { + currentState.Buttons |= (uint)RawButton.DpadLeft; + } + else + { + currentState.Buttons |= (uint)RawButton.DpadRight; + } + } + // Up/Down + else + { + if (move.y < 0.0f) + { + currentState.Buttons |= (uint)RawButton.DpadDown; + } + else + { + currentState.Buttons |= (uint)RawButton.DpadUp; + } + } + } + } + + return res; + } + + public override bool WasRecentered() + { + return (currentState.LRecenterCount != previousState.LRecenterCount); + } + + public override byte GetRecenterCount() + { + return currentState.LRecenterCount; + } + + public override byte GetBatteryPercentRemaining() + { + return currentState.LBatteryPercentRemaining; + } + } + + private class OVRControllerRTrackedRemote : OVRControllerBase + { + private bool emitSwipe; + private OVRPlugin.Vector2f moveAmount; + private float minMoveMagnitude = 0.3f; + + public OVRControllerRTrackedRemote() + { + controllerType = Controller.RTrackedRemote; + } + + public override void ConfigureButtonMap() + { + buttonMap.None = RawButton.None; + buttonMap.One = RawButton.RTouchpad; + buttonMap.Two = RawButton.Back; + buttonMap.Three = RawButton.None; + buttonMap.Four = RawButton.None; + buttonMap.Start = RawButton.Start; + buttonMap.Back = RawButton.Back; + buttonMap.PrimaryShoulder = RawButton.None; + buttonMap.PrimaryIndexTrigger = RawButton.RIndexTrigger; + buttonMap.PrimaryHandTrigger = RawButton.RHandTrigger; + buttonMap.PrimaryThumbstick = RawButton.None; + buttonMap.PrimaryThumbstickUp = RawButton.None; + buttonMap.PrimaryThumbstickDown = RawButton.None; + buttonMap.PrimaryThumbstickLeft = RawButton.None; + buttonMap.PrimaryThumbstickRight = RawButton.None; + buttonMap.PrimaryTouchpad = RawButton.RTouchpad; + buttonMap.SecondaryShoulder = RawButton.None; + buttonMap.SecondaryIndexTrigger = RawButton.None; + buttonMap.SecondaryHandTrigger = RawButton.None; + buttonMap.SecondaryThumbstick = RawButton.None; + buttonMap.SecondaryThumbstickUp = RawButton.None; + buttonMap.SecondaryThumbstickDown = RawButton.None; + buttonMap.SecondaryThumbstickLeft = RawButton.None; + buttonMap.SecondaryThumbstickRight = RawButton.None; + buttonMap.SecondaryTouchpad = RawButton.None; + buttonMap.DpadUp = RawButton.DpadUp; + buttonMap.DpadDown = RawButton.DpadDown; + buttonMap.DpadLeft = RawButton.DpadLeft; + buttonMap.DpadRight = RawButton.DpadRight; + buttonMap.Up = RawButton.DpadUp; + buttonMap.Down = RawButton.DpadDown; + buttonMap.Left = RawButton.DpadLeft; + buttonMap.Right = RawButton.DpadRight; + } + + public override void ConfigureTouchMap() + { + touchMap.None = RawTouch.None; + touchMap.One = RawTouch.RTouchpad; + touchMap.Two = RawTouch.None; + touchMap.Three = RawTouch.None; + touchMap.Four = RawTouch.None; + touchMap.PrimaryIndexTrigger = RawTouch.RIndexTrigger; + touchMap.PrimaryThumbstick = RawTouch.None; + touchMap.PrimaryThumbRest = RawTouch.None; + touchMap.PrimaryTouchpad = RawTouch.RTouchpad; + touchMap.SecondaryIndexTrigger = RawTouch.None; + touchMap.SecondaryThumbstick = RawTouch.None; + touchMap.SecondaryThumbRest = RawTouch.None; + touchMap.SecondaryTouchpad = RawTouch.None; + } + + public override void ConfigureNearTouchMap() + { + nearTouchMap.None = RawNearTouch.None; + nearTouchMap.PrimaryIndexTrigger = RawNearTouch.None; + nearTouchMap.PrimaryThumbButtons = RawNearTouch.None; + nearTouchMap.SecondaryIndexTrigger = RawNearTouch.None; + nearTouchMap.SecondaryThumbButtons = RawNearTouch.None; + } + + public override void ConfigureAxis1DMap() + { + axis1DMap.None = RawAxis1D.None; + axis1DMap.PrimaryIndexTrigger = RawAxis1D.RIndexTrigger; + axis1DMap.PrimaryHandTrigger = RawAxis1D.RHandTrigger; + axis1DMap.SecondaryIndexTrigger = RawAxis1D.None; + axis1DMap.SecondaryHandTrigger = RawAxis1D.None; + } + + public override void ConfigureAxis2DMap() + { + axis2DMap.None = RawAxis2D.None; + axis2DMap.PrimaryThumbstick = RawAxis2D.None; + axis2DMap.PrimaryTouchpad = RawAxis2D.RTouchpad; + axis2DMap.SecondaryThumbstick = RawAxis2D.None; + axis2DMap.SecondaryTouchpad = RawAxis2D.None; + } + + public override Controller Update() + { + Controller res = base.Update(); + + if (GetDown(RawTouch.RTouchpad, OVRInput.Controller.RTrackedRemote)) + { + emitSwipe = true; + moveAmount = currentState.RTouchpad; + } + + if (GetDown(RawButton.RTouchpad, OVRInput.Controller.RTrackedRemote)) + { + emitSwipe = false; + } + + if (GetUp(RawTouch.RTouchpad, OVRInput.Controller.RTrackedRemote) && emitSwipe) + { + emitSwipe = false; + + moveAmount.x = previousState.RTouchpad.x - moveAmount.x; + moveAmount.y = previousState.RTouchpad.y - moveAmount.y; + + Vector2 move = new Vector2(moveAmount.x, moveAmount.y); + + if (move.magnitude >= minMoveMagnitude) + { + move.Normalize(); + + // Left/Right + if (Mathf.Abs(move.x) > Mathf.Abs(move.y)) + { + if (move.x < 0.0f) + { + currentState.Buttons |= (uint)RawButton.DpadLeft; + } + else + { + currentState.Buttons |= (uint)RawButton.DpadRight; + } + } + // Up/Down + else + { + if (move.y < 0.0f) + { + currentState.Buttons |= (uint)RawButton.DpadDown; + } + else + { + currentState.Buttons |= (uint)RawButton.DpadUp; + } + } + } + } + + return res; + } + + public override bool WasRecentered() + { + return (currentState.RRecenterCount != previousState.RRecenterCount); + } + + public override byte GetRecenterCount() + { + return currentState.RRecenterCount; + } + + public override byte GetBatteryPercentRemaining() + { + return currentState.RBatteryPercentRemaining; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRInput.cs.meta b/Assets/Oculus/VR/Scripts/OVRInput.cs.meta new file mode 100644 index 0000000..42a61de --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d210caf8a50e1954c80690fa858572ad +timeCreated: 1438295094 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs b/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs new file mode 100644 index 0000000..f20b149 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs @@ -0,0 +1,23 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; + +/// +/// Dummy subtype of PropertyAttribute for custom inspector to use. +/// +public class OVRLayerAttribute : PropertyAttribute { +} diff --git a/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs.meta b/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs.meta new file mode 100644 index 0000000..dc666f1 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRLayerAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 701bfebb60063334f994e36546c103d6 +timeCreated: 1499749327 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVRManager.cs b/Assets/Oculus/VR/Scripts/OVRManager.cs new file mode 100644 index 0000000..fa9ef84 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRManager.cs @@ -0,0 +1,1982 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if UNITY_ANDROID && !UNITY_EDITOR +#define OVR_ANDROID_MRC +#endif + +#if !UNITY_5_6_OR_NEWER +#error Oculus Utilities require Unity 5.6 or higher. +#endif + +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +#if USING_XR_SDK +using UnityEngine.XR; +using UnityEngine.Experimental.XR; +#endif + +#if UNITY_2017_2_OR_NEWER +using Settings = UnityEngine.XR.XRSettings; +using Node = UnityEngine.XR.XRNode; +#else +using Settings = UnityEngine.VR.VRSettings; +using Node = UnityEngine.VR.VRNode; +#endif + +/// +/// Configuration data for Oculus virtual reality. +/// +public class OVRManager : MonoBehaviour +{ + public enum TrackingOrigin + { + EyeLevel = OVRPlugin.TrackingOrigin.EyeLevel, + FloorLevel = OVRPlugin.TrackingOrigin.FloorLevel, + Stage = OVRPlugin.TrackingOrigin.Stage, + } + + public enum EyeTextureFormat + { + Default = OVRPlugin.EyeTextureFormat.Default, + R16G16B16A16_FP = OVRPlugin.EyeTextureFormat.R16G16B16A16_FP, + R11G11B10_FP = OVRPlugin.EyeTextureFormat.R11G11B10_FP, + } + + public enum FixedFoveatedRenderingLevel + { + Off = OVRPlugin.FixedFoveatedRenderingLevel.Off, + Low = OVRPlugin.FixedFoveatedRenderingLevel.Low, + Medium = OVRPlugin.FixedFoveatedRenderingLevel.Medium, + High = OVRPlugin.FixedFoveatedRenderingLevel.High, + HighTop = OVRPlugin.FixedFoveatedRenderingLevel.HighTop, + } + + [Obsolete("Please use FixedFoveatedRenderingLevel instead")] + public enum TiledMultiResLevel + { + Off = OVRPlugin.TiledMultiResLevel.Off, + LMSLow = OVRPlugin.TiledMultiResLevel.LMSLow, + LMSMedium = OVRPlugin.TiledMultiResLevel.LMSMedium, + LMSHigh = OVRPlugin.TiledMultiResLevel.LMSHigh, + LMSHighTop = OVRPlugin.TiledMultiResLevel.LMSHighTop, + } + + public enum XRDevice + { + Unknown = 0, + Oculus = 1, + OpenVR = 2, + } + + /// + /// Gets the singleton instance. + /// + public static OVRManager instance { get; private set; } + + /// + /// Gets a reference to the active display. + /// + public static OVRDisplay display { get; private set; } + + /// + /// Gets a reference to the active sensor. + /// + public static OVRTracker tracker { get; private set; } + + /// + /// Gets a reference to the active boundary system. + /// + public static OVRBoundary boundary { get; private set; } + + private static OVRProfile _profile; + /// + /// Gets the current profile, which contains information about the user's settings and body dimensions. + /// + public static OVRProfile profile + { + get { + if (_profile == null) + _profile = new OVRProfile(); + + return _profile; + } + } + + private IEnumerable disabledCameras; + float prevTimeScale; + + /// + /// Occurs when an HMD attached. + /// + public static event Action HMDAcquired; + + /// + /// Occurs when an HMD detached. + /// + public static event Action HMDLost; + + /// + /// Occurs when an HMD is put on the user's head. + /// + public static event Action HMDMounted; + + /// + /// Occurs when an HMD is taken off the user's head. + /// + public static event Action HMDUnmounted; + + /// + /// Occurs when VR Focus is acquired. + /// + public static event Action VrFocusAcquired; + + /// + /// Occurs when VR Focus is lost. + /// + public static event Action VrFocusLost; + + /// + /// Occurs when Input Focus is acquired. + /// + public static event Action InputFocusAcquired; + + /// + /// Occurs when Input Focus is lost. + /// + public static event Action InputFocusLost; + + /// + /// Occurs when the active Audio Out device has changed and a restart is needed. + /// + public static event Action AudioOutChanged; + + /// + /// Occurs when the active Audio In device has changed and a restart is needed. + /// + public static event Action AudioInChanged; + + /// + /// Occurs when the sensor gained tracking. + /// + public static event Action TrackingAcquired; + + /// + /// Occurs when the sensor lost tracking. + /// + public static event Action TrackingLost; + + /// + /// Occurs when Health & Safety Warning is dismissed. + /// + //Disable the warning about it being unused. It's deprecated. + #pragma warning disable 0067 + [Obsolete] + public static event Action HSWDismissed; + #pragma warning restore + + private static bool _isHmdPresentCached = false; + private static bool _isHmdPresent = false; + private static bool _wasHmdPresent = false; + /// + /// If true, a head-mounted display is connected and present. + /// + public static bool isHmdPresent + { + get { + if (!_isHmdPresentCached) + { + _isHmdPresentCached = true; + _isHmdPresent = OVRNodeStateProperties.IsHmdPresent(); + } + + return _isHmdPresent; + } + + private set { + _isHmdPresentCached = true; + _isHmdPresent = value; + } + } + + /// + /// Gets the audio output device identifier. + /// + /// + /// On Windows, this is a string containing the GUID of the IMMDevice for the Windows audio endpoint to use. + /// + public static string audioOutId + { + get { return OVRPlugin.audioOutId; } + } + + /// + /// Gets the audio input device identifier. + /// + /// + /// On Windows, this is a string containing the GUID of the IMMDevice for the Windows audio endpoint to use. + /// + public static string audioInId + { + get { return OVRPlugin.audioInId; } + } + + private static bool _hasVrFocusCached = false; + private static bool _hasVrFocus = false; + private static bool _hadVrFocus = false; + /// + /// If true, the app has VR Focus. + /// + public static bool hasVrFocus + { + get { + if (!_hasVrFocusCached) + { + _hasVrFocusCached = true; + _hasVrFocus = OVRPlugin.hasVrFocus; + } + + return _hasVrFocus; + } + + private set { + _hasVrFocusCached = true; + _hasVrFocus = value; + } + } + + private static bool _hadInputFocus = true; + /// + /// If true, the app has Input Focus. + /// + public static bool hasInputFocus + { + get + { + return OVRPlugin.hasInputFocus; + } + } + + /// + /// If true, chromatic de-aberration will be applied, improving the image at the cost of texture bandwidth. + /// + public bool chromatic + { + get { + if (!isHmdPresent) + return false; + + return OVRPlugin.chromatic; + } + + set { + if (!isHmdPresent) + return; + + OVRPlugin.chromatic = value; + } + } + + [Header("Performance/Quality")] + /// + /// If true, distortion rendering work is submitted a quarter-frame early to avoid pipeline stalls and increase CPU-GPU parallelism. + /// + [Tooltip("If true, distortion rendering work is submitted a quarter-frame early to avoid pipeline stalls and increase CPU-GPU parallelism.")] + public bool queueAhead = true; + + /// + /// If true, Unity will use the optimal antialiasing level for quality/performance on the current hardware. + /// + [Tooltip("If true, Unity will use the optimal antialiasing level for quality/performance on the current hardware.")] + public bool useRecommendedMSAALevel = true; + + /// + /// If true, both eyes will see the same image, rendered from the center eye pose, saving performance. + /// + [SerializeField] + [Tooltip("If true, both eyes will see the same image, rendered from the center eye pose, saving performance.")] + private bool _monoscopic = false; + + public bool monoscopic + { + get + { + if (!isHmdPresent) + return _monoscopic; + + return OVRPlugin.monoscopic; + } + + set + { + if (!isHmdPresent) + return; + + OVRPlugin.monoscopic = value; + _monoscopic = value; + } + } + + /// + /// If true, dynamic resolution will be enabled + /// + [Tooltip("If true, dynamic resolution will be enabled On PC")] + public bool enableAdaptiveResolution = false; + + /// + /// Adaptive Resolution is based on Unity engine's renderViewportScale/eyeTextureResolutionScale feature + /// But renderViewportScale was broken in an array of Unity engines, this function help to filter out those broken engines + /// + public static bool IsAdaptiveResSupportedByEngine() + { +#if UNITY_2017_1_OR_NEWER + return Application.unityVersion != "2017.1.0f1"; +#else + return false; +#endif + } + + /// + /// Min RenderScale the app can reach under adaptive resolution mode ( enableAdaptiveResolution = true ); + /// + [RangeAttribute(0.5f, 2.0f)] + [Tooltip("Min RenderScale the app can reach under adaptive resolution mode")] + public float minRenderScale = 0.7f; + + /// + /// Max RenderScale the app can reach under adaptive resolution mode ( enableAdaptiveResolution = true ); + /// + [RangeAttribute(0.5f, 2.0f)] + [Tooltip("Max RenderScale the app can reach under adaptive resolution mode")] + public float maxRenderScale = 1.0f; + + /// + /// Set the relative offset rotation of head poses + /// + [SerializeField] + [Tooltip("Set the relative offset rotation of head poses")] + private Vector3 _headPoseRelativeOffsetRotation; + public Vector3 headPoseRelativeOffsetRotation + { + get + { + return _headPoseRelativeOffsetRotation; + } + set + { + OVRPlugin.Quatf rotation; + OVRPlugin.Vector3f translation; + if (OVRPlugin.GetHeadPoseModifier(out rotation, out translation)) + { + Quaternion finalRotation = Quaternion.Euler(value); + rotation = finalRotation.ToQuatf(); + OVRPlugin.SetHeadPoseModifier(ref rotation, ref translation); + } + _headPoseRelativeOffsetRotation = value; + } + } + + /// + /// Set the relative offset translation of head poses + /// + [SerializeField] + [Tooltip("Set the relative offset translation of head poses")] + private Vector3 _headPoseRelativeOffsetTranslation; + public Vector3 headPoseRelativeOffsetTranslation + { + get + { + return _headPoseRelativeOffsetTranslation; + } + set + { + OVRPlugin.Quatf rotation; + OVRPlugin.Vector3f translation; + if (OVRPlugin.GetHeadPoseModifier(out rotation, out translation)) + { + if (translation.FromFlippedZVector3f() != value) + { + translation = value.ToFlippedZVector3f(); + OVRPlugin.SetHeadPoseModifier(ref rotation, ref translation); + } + } + _headPoseRelativeOffsetTranslation = value; + } + } + + /// + /// The TCP listening port of Oculus Profiler Service, which will be activated in Debug/Developerment builds + /// When the app is running on editor or device, open "Tools/Oculus/Oculus Profiler Panel" to view the realtime system metrics + /// + public int profilerTcpPort = OVRSystemPerfMetrics.TcpListeningPort; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + /// + /// If true, the MixedRealityCapture properties will be displayed + /// + [HideInInspector] + public bool expandMixedRealityCapturePropertySheet = false; + + + /// + /// If true, Mixed Reality mode will be enabled + /// + [HideInInspector, Tooltip("If true, Mixed Reality mode will be enabled. It would be always set to false when the game is launching without editor")] + public bool enableMixedReality = false; + + public enum CompositionMethod + { + External, + Direct + } + + /// + /// Composition method + /// + [HideInInspector] + public CompositionMethod compositionMethod = CompositionMethod.External; + + /// + /// Extra hidden layers + /// + [HideInInspector, Tooltip("Extra hidden layers")] + public LayerMask extraHiddenLayers; + + /// + /// The backdrop color will be used when rendering the foreground frames (on Rift). It only applies to External Composition. + /// + [HideInInspector, Tooltip("Backdrop color for Rift (External Compositon)")] + public Color externalCompositionBackdropColorRift = Color.green; + + /// + /// The backdrop color will be used when rendering the foreground frames (on Quest). It only applies to External Composition. + /// + [HideInInspector, Tooltip("Backdrop color for Quest (External Compositon)")] + public Color externalCompositionBackdropColorQuest = Color.clear; + + /// + /// If true, Mixed Reality mode will use direct composition from the first web camera + /// + + public enum CameraDevice + { + WebCamera0, + WebCamera1, + ZEDCamera + } + + /// + /// The camera device for direct composition + /// + [HideInInspector, Tooltip("The camera device for direct composition")] + public CameraDevice capturingCameraDevice = CameraDevice.WebCamera0; + + /// + /// Flip the camera frame horizontally + /// + [HideInInspector, Tooltip("Flip the camera frame horizontally")] + public bool flipCameraFrameHorizontally = false; + + /// + /// Flip the camera frame vertically + /// + [HideInInspector, Tooltip("Flip the camera frame vertically")] + public bool flipCameraFrameVertically = false; + + /// + /// Delay the touch controller pose by a short duration (0 to 0.5 second) to match the physical camera latency + /// + [HideInInspector, Tooltip("Delay the touch controller pose by a short duration (0 to 0.5 second) to match the physical camera latency")] + public float handPoseStateLatency = 0.0f; + + /// + /// Delay the foreground / background image in the sandwich composition to match the physical camera latency. The maximum duration is sandwichCompositionBufferedFrames / {Game FPS} + /// + [HideInInspector, Tooltip("Delay the foreground / background image in the sandwich composition to match the physical camera latency. The maximum duration is sandwichCompositionBufferedFrames / {Game FPS}")] + public float sandwichCompositionRenderLatency = 0.0f; + + /// + /// The number of frames are buffered in the SandWich composition. The more buffered frames, the more memory it would consume. + /// + [HideInInspector, Tooltip("The number of frames are buffered in the SandWich composition. The more buffered frames, the more memory it would consume.")] + public int sandwichCompositionBufferedFrames = 8; + + + /// + /// Chroma Key Color + /// + [HideInInspector, Tooltip("Chroma Key Color")] + public Color chromaKeyColor = Color.green; + + /// + /// Chroma Key Similarity + /// + [HideInInspector, Tooltip("Chroma Key Similarity")] + public float chromaKeySimilarity = 0.60f; + + /// + /// Chroma Key Smooth Range + /// + [HideInInspector, Tooltip("Chroma Key Smooth Range")] + public float chromaKeySmoothRange = 0.03f; + + /// + /// Chroma Key Spill Range + /// + [HideInInspector, Tooltip("Chroma Key Spill Range")] + public float chromaKeySpillRange = 0.06f; + + /// + /// Use dynamic lighting (Depth sensor required) + /// + [HideInInspector, Tooltip("Use dynamic lighting (Depth sensor required)")] + public bool useDynamicLighting = false; + + public enum DepthQuality + { + Low, + Medium, + High + } + /// + /// The quality level of depth image. The lighting could be more smooth and accurate with high quality depth, but it would also be more costly in performance. + /// + [HideInInspector, Tooltip("The quality level of depth image. The lighting could be more smooth and accurate with high quality depth, but it would also be more costly in performance.")] + public DepthQuality depthQuality = DepthQuality.Medium; + + /// + /// Smooth factor in dynamic lighting. Larger is smoother + /// + [HideInInspector, Tooltip("Smooth factor in dynamic lighting. Larger is smoother")] + public float dynamicLightingSmoothFactor = 8.0f; + + /// + /// The maximum depth variation across the edges. Make it smaller to smooth the lighting on the edges. + /// + [HideInInspector, Tooltip("The maximum depth variation across the edges. Make it smaller to smooth the lighting on the edges.")] + public float dynamicLightingDepthVariationClampingValue = 0.001f; + + public enum VirtualGreenScreenType + { + Off, + OuterBoundary, + PlayArea + } + + /// + /// Set the current type of the virtual green screen + /// + [HideInInspector, Tooltip("Type of virutal green screen ")] + public VirtualGreenScreenType virtualGreenScreenType = VirtualGreenScreenType.Off; + + /// + /// Top Y of virtual screen + /// + [HideInInspector, Tooltip("Top Y of virtual green screen")] + public float virtualGreenScreenTopY = 10.0f; + + /// + /// Bottom Y of virtual screen + /// + [HideInInspector, Tooltip("Bottom Y of virtual green screen")] + public float virtualGreenScreenBottomY = -10.0f; + + /// + /// When using a depth camera (e.g. ZED), whether to use the depth in virtual green screen culling. + /// + [HideInInspector, Tooltip("When using a depth camera (e.g. ZED), whether to use the depth in virtual green screen culling.")] + public bool virtualGreenScreenApplyDepthCulling = false; + + /// + /// The tolerance value (in meter) when using the virtual green screen with a depth camera. Make it bigger if the foreground objects got culled incorrectly. + /// + [HideInInspector, Tooltip("The tolerance value (in meter) when using the virtual green screen with a depth camera. Make it bigger if the foreground objects got culled incorrectly.")] + public float virtualGreenScreenDepthTolerance = 0.2f; + + public enum MrcActivationMode + { + Automatic, + Disabled + } + + /// + /// (Quest-only) control if the mixed reality capture mode can be activated automatically through remote network connection. + /// + [HideInInspector, Tooltip("(Quest-only) control if the mixed reality capture mode can be activated automatically through remote network connection.")] + public MrcActivationMode mrcActivationMode; +#endif + + /// + /// The number of expected display frames per rendered frame. + /// + public int vsyncCount + { + get { + if (!isHmdPresent) + return 1; + + return OVRPlugin.vsyncCount; + } + + set { + if (!isHmdPresent) + return; + + OVRPlugin.vsyncCount = value; + } + } + + public static string OCULUS_UNITY_NAME_STR = "Oculus"; + public static string OPENVR_UNITY_NAME_STR = "OpenVR"; + + public static XRDevice loadedXRDevice; + + /// + /// Gets the current battery level. + /// + /// battery level in the range [0.0,1.0] + /// Battery level. + public static float batteryLevel + { + get { + if (!isHmdPresent) + return 1f; + + return OVRPlugin.batteryLevel; + } + } + + /// + /// Gets the current battery temperature. + /// + /// battery temperature in Celsius + /// Battery temperature. + public static float batteryTemperature + { + get { + if (!isHmdPresent) + return 0f; + + return OVRPlugin.batteryTemperature; + } + } + + /// + /// Gets the current battery status. + /// + /// battery status + /// Battery status. + public static int batteryStatus + { + get { + if (!isHmdPresent) + return -1; + + return (int)OVRPlugin.batteryStatus; + } + } + + /// + /// Gets the current volume level. + /// + /// volume level in the range [0,1]. + public static float volumeLevel + { + get { + if (!isHmdPresent) + return 0f; + + return OVRPlugin.systemVolume; + } + } + + /// + /// Gets or sets the current CPU performance level (0-2). Lower performance levels save more power. + /// + public static int cpuLevel + { + get { + if (!isHmdPresent) + return 2; + + return OVRPlugin.cpuLevel; + } + + set { + if (!isHmdPresent) + return; + + OVRPlugin.cpuLevel = value; + } + } + + /// + /// Gets or sets the current GPU performance level (0-2). Lower performance levels save more power. + /// + public static int gpuLevel + { + get { + if (!isHmdPresent) + return 2; + + return OVRPlugin.gpuLevel; + } + + set { + if (!isHmdPresent) + return; + + OVRPlugin.gpuLevel = value; + } + } + + /// + /// If true, the CPU and GPU are currently throttled to save power and/or reduce the temperature. + /// + public static bool isPowerSavingActive + { + get { + if (!isHmdPresent) + return false; + + return OVRPlugin.powerSaving; + } + } + + /// + /// Gets or sets the eye texture format. + /// + public static EyeTextureFormat eyeTextureFormat + { + get + { + return (OVRManager.EyeTextureFormat)OVRPlugin.GetDesiredEyeTextureFormat(); + } + + set + { + OVRPlugin.SetDesiredEyeTextureFormat((OVRPlugin.EyeTextureFormat)value); + } + } + + /// + /// Gets if tiled-based multi-resolution technique is supported + /// This feature is only supported on QCOMM-based Android devices + /// + public static bool fixedFoveatedRenderingSupported + { + get + { + return OVRPlugin.fixedFoveatedRenderingSupported; + } + } + + /// + /// Gets or sets the tiled-based multi-resolution level + /// This feature is only supported on QCOMM-based Android devices + /// + public static FixedFoveatedRenderingLevel fixedFoveatedRenderingLevel + { + get + { + if (!OVRPlugin.fixedFoveatedRenderingSupported) + { + Debug.LogWarning("Fixed Foveated Rendering feature is not supported"); + } + return (FixedFoveatedRenderingLevel)OVRPlugin.fixedFoveatedRenderingLevel; + } + set + { + if (!OVRPlugin.fixedFoveatedRenderingSupported) + { + Debug.LogWarning("Fixed Foveated Rendering feature is not supported"); + } + OVRPlugin.fixedFoveatedRenderingLevel = (OVRPlugin.FixedFoveatedRenderingLevel)value; + } + } + + [Obsolete("Please use fixedFoveatedRenderingSupported instead", false)] + public static bool tiledMultiResSupported + { + get + { + return OVRPlugin.tiledMultiResSupported; + } + } + + [Obsolete("Please use fixedFoveatedRenderingLevel instead", false)] + public static TiledMultiResLevel tiledMultiResLevel + { + get + { + if (!OVRPlugin.tiledMultiResSupported) + { + Debug.LogWarning("Tiled-based Multi-resolution feature is not supported"); + } + return (TiledMultiResLevel)OVRPlugin.tiledMultiResLevel; + } + set + { + if (!OVRPlugin.tiledMultiResSupported) + { + Debug.LogWarning("Tiled-based Multi-resolution feature is not supported"); + } + OVRPlugin.tiledMultiResLevel = (OVRPlugin.TiledMultiResLevel)value; + } + } + + /// + /// Gets if the GPU Utility is supported + /// This feature is only supported on QCOMM-based Android devices + /// + public static bool gpuUtilSupported + { + get + { + return OVRPlugin.gpuUtilSupported; + } + } + + /// + /// Gets the GPU Utilised Level (0.0 - 1.0) + /// This feature is only supported on QCOMM-based Android devices + /// + public static float gpuUtilLevel + { + get + { + if (!OVRPlugin.gpuUtilSupported) + { + Debug.LogWarning("GPU Util is not supported"); + } + return OVRPlugin.gpuUtilLevel; + } + } + + /// + /// Sets the Color Scale and Offset which is commonly used for effects like fade-to-black. + /// In our compositor, once a given frame is rendered, warped, and ready to be displayed, we then multiply + /// each pixel by colorScale and add it to colorOffset, whereby newPixel = oldPixel * colorScale + colorOffset. + /// Note that for mobile devices (Quest, Go, etc.), colorOffset is not supported, so colorScale is all that can + /// be used. A colorScale of (1, 1, 1, 1) and colorOffset of (0, 0, 0, 0) will lead to an identity multiplication + /// and have no effect. + /// + public static void SetColorScaleAndOffset(Vector4 colorScale, Vector4 colorOffset, bool applyToAllLayers) + { + OVRPlugin.SetColorScaleAndOffset(colorScale, colorOffset, applyToAllLayers); + } + + /// + /// Specifies OpenVR pose local to tracking space + /// + public static void SetOpenVRLocalPose(Vector3 leftPos, Vector3 rightPos, Quaternion leftRot, Quaternion rightRot) + { + if (loadedXRDevice == XRDevice.OpenVR) + OVRInput.SetOpenVRLocalPose(leftPos, rightPos, leftRot, rightRot); + } + + //Series of offsets that line up the virtual controllers to the phsyical world. + private static Vector3 OpenVRTouchRotationOffsetEulerLeft = new Vector3(40.0f, 0.0f, 0.0f); + private static Vector3 OpenVRTouchRotationOffsetEulerRight = new Vector3(40.0f, 0.0f, 0.0f); + private static Vector3 OpenVRTouchPositionOffsetLeft = new Vector3(0.0075f, -0.005f, -0.0525f); + private static Vector3 OpenVRTouchPositionOffsetRight = new Vector3(-0.0075f, -0.005f, -0.0525f); + + /// + /// Specifies the pose offset required to make an OpenVR controller's reported pose match the virtual pose. + /// Currently we only specify this offset for Oculus Touch on OpenVR. + /// + public static OVRPose GetOpenVRControllerOffset(Node hand) + { + OVRPose poseOffset = OVRPose.identity; + if ((hand == Node.LeftHand || hand == Node.RightHand) && loadedXRDevice == XRDevice.OpenVR) + { + int index = (hand == Node.LeftHand) ? 0 : 1; + if (OVRInput.openVRControllerDetails[index].controllerType == OVRInput.OpenVRController.OculusTouch) + { + Vector3 offsetOrientation = (hand == Node.LeftHand) ? OpenVRTouchRotationOffsetEulerLeft : OpenVRTouchRotationOffsetEulerRight; + poseOffset.orientation = Quaternion.Euler(offsetOrientation.x, offsetOrientation.y, offsetOrientation.z); + poseOffset.position = (hand == Node.LeftHand) ? OpenVRTouchPositionOffsetLeft : OpenVRTouchPositionOffsetRight; + } + } + return poseOffset; + } + + + [Header("Tracking")] + [SerializeField] + [Tooltip("Defines the current tracking origin type.")] + private OVRManager.TrackingOrigin _trackingOriginType = OVRManager.TrackingOrigin.EyeLevel; + /// + /// Defines the current tracking origin type. + /// + public OVRManager.TrackingOrigin trackingOriginType + { + get { + if (!isHmdPresent) + return _trackingOriginType; + + return (OVRManager.TrackingOrigin)OVRPlugin.GetTrackingOriginType(); + } + + set { + if (!isHmdPresent) + return; + + if (OVRPlugin.SetTrackingOriginType((OVRPlugin.TrackingOrigin)value)) + { + // Keep the field exposed in the Unity Editor synchronized with any changes. + _trackingOriginType = value; + } + } + } + + /// + /// If true, head tracking will affect the position of each OVRCameraRig's cameras. + /// + [Tooltip("If true, head tracking will affect the position of each OVRCameraRig's cameras.")] + public bool usePositionTracking = true; + + /// + /// If true, head tracking will affect the rotation of each OVRCameraRig's cameras. + /// + [HideInInspector] + public bool useRotationTracking = true; + + /// + /// If true, the distance between the user's eyes will affect the position of each OVRCameraRig's cameras. + /// + [Tooltip("If true, the distance between the user's eyes will affect the position of each OVRCameraRig's cameras.")] + public bool useIPDInPositionTracking = true; + + /// + /// If true, each scene load will cause the head pose to reset. + /// + [Tooltip("If true, each scene load will cause the head pose to reset.")] + public bool resetTrackerOnLoad = false; + + /// + /// If true, the Reset View in the universal menu will cause the pose to be reset. This should generally be + /// enabled for applications with a stationary position in the virtual world and will allow the View Reset + /// command to place the person back to a predefined location (such as a cockpit seat). + /// Set this to false if you have a locomotion system because resetting the view would effectively teleport + /// the player to potentially invalid locations. + /// + [Tooltip("If true, the Reset View in the universal menu will cause the pose to be reset. This should generally be enabled for applications with a stationary position in the virtual world and will allow the View Reset command to place the person back to a predefined location (such as a cockpit seat). Set this to false if you have a locomotion system because resetting the view would effectively teleport the player to potentially invalid locations.")] + public bool AllowRecenter = true; + + [SerializeField] + [Tooltip("Specifies HMD recentering behavior when controller recenter is performed. True recenters the HMD as well, false does not.")] + private bool _reorientHMDOnControllerRecenter = true; + /// + /// Defines the recentering mode specified in the tooltip above. + /// + public bool reorientHMDOnControllerRecenter + { + get + { + if (!isHmdPresent) + return false; + + return OVRPlugin.GetReorientHMDOnControllerRecenter(); + } + + set + { + if (!isHmdPresent) + return; + + OVRPlugin.SetReorientHMDOnControllerRecenter(value); + + } + } + + /// + /// If true, a lower-latency update will occur right before rendering. If false, the only controller pose update will occur at the start of simulation for a given frame. + /// Selecting this option lowers rendered latency for controllers and is often a net positive; however, it also creates a slight disconnect between rendered and simulated controller poses. + /// Visit online Oculus documentation to learn more. + /// + [Tooltip("If true, rendered controller latency is reduced by several ms, as the left/right controllers will have their positions updated right before rendering.")] + public bool LateControllerUpdate = true; + + /// + /// True if the current platform supports virtual reality. + /// + public bool isSupportedPlatform { get; private set; } + + private static bool _isUserPresentCached = false; + private static bool _isUserPresent = false; + private static bool _wasUserPresent = false; + /// + /// True if the user is currently wearing the display. + /// + public bool isUserPresent + { + get { + if (!_isUserPresentCached) + { + _isUserPresentCached = true; + _isUserPresent = OVRPlugin.userPresent; + } + + return _isUserPresent; + } + + private set { + _isUserPresentCached = true; + _isUserPresent = value; + } + } + + private static bool prevAudioOutIdIsCached = false; + private static bool prevAudioInIdIsCached = false; + private static string prevAudioOutId = string.Empty; + private static string prevAudioInId = string.Empty; + private static bool wasPositionTracked = false; + + public static System.Version utilitiesVersion + { + get { return OVRPlugin.wrapperVersion; } + } + + public static System.Version pluginVersion + { + get { return OVRPlugin.version; } + } + + public static System.Version sdkVersion + { + get { return OVRPlugin.nativeSDKVersion; } + } + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + private static bool MixedRealityEnabledFromCmd() + { + var args = System.Environment.GetCommandLineArgs(); + for (int i = 0; i < args.Length; i++) + { + if (args[i].ToLower() == "-mixedreality") + return true; + } + return false; + } + + private static bool UseDirectCompositionFromCmd() + { + var args = System.Environment.GetCommandLineArgs(); + for (int i = 0; i < args.Length; i++) + { + if (args[i].ToLower() == "-directcomposition") + return true; + } + return false; + } + + private static bool UseExternalCompositionFromCmd() + { + var args = System.Environment.GetCommandLineArgs(); + for (int i = 0; i < args.Length; i++) + { + if (args[i].ToLower() == "-externalcomposition") + return true; + } + return false; + } + + private static bool CreateMixedRealityCaptureConfigurationFileFromCmd() + { + var args = System.Environment.GetCommandLineArgs(); + for (int i = 0; i < args.Length; i++) + { + if (args[i].ToLower() == "-create_mrc_config") + return true; + } + return false; + } + + private static bool LoadMixedRealityCaptureConfigurationFileFromCmd() + { + var args = System.Environment.GetCommandLineArgs(); + for (int i = 0; i < args.Length; i++) + { + if (args[i].ToLower() == "-load_mrc_config") + return true; + } + return false; + } +#endif + + public static bool IsUnityAlphaOrBetaVersion() + { + string ver = Application.unityVersion; + int pos = ver.Length - 1; + + while (pos >= 0 && ver[pos] >= '0' && ver[pos] <= '9') + { + --pos; + } + + if (pos >= 0 && (ver[pos] == 'a' || ver[pos] == 'b')) + return true; + + return false; + } + + public static string UnityAlphaOrBetaVersionWarningMessage = "WARNING: It's not recommended to use Unity alpha/beta release in Oculus development. Use a stable release if you encounter any issue."; + +#region Unity Messages + + public static bool OVRManagerinitialized = false; + private void InitOVRManager() + { + // Only allow one instance at runtime. + if (instance != null) + { + enabled = false; + DestroyImmediate(this); + return; + } + + instance = this; + + // uncomment the following line to disable the callstack printed to log + //Application.SetStackTraceLogType(LogType.Log, StackTraceLogType.None); // TEMPORARY + + Debug.Log("Unity v" + Application.unityVersion + ", " + + "Oculus Utilities v" + OVRPlugin.wrapperVersion + ", " + + "OVRPlugin v" + OVRPlugin.version + ", " + + "SDK v" + OVRPlugin.nativeSDKVersion + "."); + +#if !UNITY_EDITOR + if (IsUnityAlphaOrBetaVersion()) + { + Debug.LogWarning(UnityAlphaOrBetaVersionWarningMessage); + } +#endif + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + var supportedTypes = + UnityEngine.Rendering.GraphicsDeviceType.Direct3D11.ToString() + ", " + + UnityEngine.Rendering.GraphicsDeviceType.Direct3D12.ToString(); + + if (!supportedTypes.Contains(SystemInfo.graphicsDeviceType.ToString())) + Debug.LogWarning("VR rendering requires one of the following device types: (" + supportedTypes + "). Your graphics device: " + SystemInfo.graphicsDeviceType.ToString()); +#endif + + // Detect whether this platform is a supported platform + RuntimePlatform currPlatform = Application.platform; + if (currPlatform == RuntimePlatform.Android || + // currPlatform == RuntimePlatform.LinuxPlayer || + currPlatform == RuntimePlatform.OSXEditor || + currPlatform == RuntimePlatform.OSXPlayer || + currPlatform == RuntimePlatform.WindowsEditor || + currPlatform == RuntimePlatform.WindowsPlayer) + { + isSupportedPlatform = true; + } + else + { + isSupportedPlatform = false; + } + if (!isSupportedPlatform) + { + Debug.LogWarning("This platform is unsupported"); + return; + } + +#if UNITY_ANDROID && !UNITY_EDITOR + // Turn off chromatic aberration by default to save texture bandwidth. + chromatic = false; +#endif + +#if (UNITY_STANDALONE_WIN || UNITY_ANDROID) && !UNITY_EDITOR + enableMixedReality = false; // we should never start the standalone game in MxR mode, unless the command-line parameter is provided +#endif + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + if (!staticMixedRealityCaptureInitialized) + { + bool loadMrcConfig = LoadMixedRealityCaptureConfigurationFileFromCmd(); + bool createMrcConfig = CreateMixedRealityCaptureConfigurationFileFromCmd(); + + if (loadMrcConfig || createMrcConfig) + { + OVRMixedRealityCaptureSettings mrcSettings = ScriptableObject.CreateInstance(); + mrcSettings.ReadFrom(this); + if (loadMrcConfig) + { + mrcSettings.CombineWithConfigurationFile(); + mrcSettings.ApplyTo(this); + } + if (createMrcConfig) + { + mrcSettings.WriteToConfigurationFile(); + } + ScriptableObject.Destroy(mrcSettings); + } + + if (MixedRealityEnabledFromCmd()) + { + enableMixedReality = true; + } + + if (enableMixedReality) + { + Debug.Log("OVR: Mixed Reality mode enabled"); + if (UseDirectCompositionFromCmd()) + { + compositionMethod = CompositionMethod.Direct; + } + if (UseExternalCompositionFromCmd()) + { + compositionMethod = CompositionMethod.External; + } + Debug.Log("OVR: CompositionMethod : " + compositionMethod); + } + } +#endif + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || OVR_ANDROID_MRC + StaticInitializeMixedRealityCapture(this); +#endif + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + if (enableAdaptiveResolution && !OVRManager.IsAdaptiveResSupportedByEngine()) + { + enableAdaptiveResolution = false; + UnityEngine.Debug.LogError("Your current Unity Engine " + Application.unityVersion + " might have issues to support adaptive resolution, please disable it under OVRManager"); + } +#endif + + Initialize(); + + if (resetTrackerOnLoad) + display.RecenterPose(); + + if (Debug.isDebugBuild) + { + // Activate system metrics collection in Debug/Developerment build + if (GetComponent() == null) + { + gameObject.AddComponent(); + } + OVRSystemPerfMetrics.OVRSystemPerfMetricsTcpServer perfTcpServer = GetComponent(); + perfTcpServer.listeningPort = profilerTcpPort; + if (!perfTcpServer.enabled) + { + perfTcpServer.enabled = true; + } + } + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + // Force OcculusionMesh on all the time, you can change the value to false if you really need it be off for some reasons, + // be aware there are performance drops if you don't use occlusionMesh. + OVRPlugin.occlusionMesh = true; +#endif + OVRManagerinitialized = true; + + } + + private void Awake() + { +#if !USING_XR_SDK + //For legacy, we can safely InitOVRManager on Awake(), as OVRPlugin is already initialized. + InitOVRManager(); +#endif + } + +#if UNITY_EDITOR + private static bool _scriptsReloaded; + + [UnityEditor.Callbacks.DidReloadScripts] + static void ScriptsReloaded() + { + _scriptsReloaded = true; + } +#endif + + void SetCurrentXRDevice() + { +#if USING_XR_SDK + XRDisplaySubsystem currentDisplaySubsystem = GetCurrentDisplaySubsystem(); + XRDisplaySubsystemDescriptor currentDisplaySubsystemDescriptor = GetCurrentDisplaySubsystemDescriptor(); +#endif + if (OVRPlugin.initialized) + { + loadedXRDevice = XRDevice.Oculus; + } +#if USING_XR_SDK + else if (currentDisplaySubsystem != null && currentDisplaySubsystemDescriptor != null && currentDisplaySubsystem.running) +#else + else if (Settings.enabled) +#endif + { +#if USING_XR_SDK + string loadedXRDeviceName = currentDisplaySubsystemDescriptor.id; +#else + string loadedXRDeviceName = Settings.loadedDeviceName; +#endif + if (loadedXRDeviceName == OPENVR_UNITY_NAME_STR) + loadedXRDevice = XRDevice.OpenVR; + else + loadedXRDevice = XRDevice.Unknown; + } + else + { + loadedXRDevice = XRDevice.Unknown; + } + } + +#if USING_XR_SDK + + public static XRDisplaySubsystem GetCurrentDisplaySubsystem() + { + List displaySubsystems = new List(); + SubsystemManager.GetInstances(displaySubsystems); + //Note: Here we are making the assumption that there will always be one valid display subsystem. If there is not, then submitFrame isn't being called, + //so for now this is a fine assumption to make. + if (displaySubsystems.Count > 0) + return displaySubsystems[0]; + return null; + } + + public static XRDisplaySubsystemDescriptor GetCurrentDisplaySubsystemDescriptor() + { + List displaySubsystemDescriptors = new List(); + SubsystemManager.GetSubsystemDescriptors(displaySubsystemDescriptors); + if (displaySubsystemDescriptors.Count > 0) + return displaySubsystemDescriptors[0]; + return null; + } +#endif + + + + + void Initialize() + { + if (display == null) + display = new OVRDisplay(); + if (tracker == null) + tracker = new OVRTracker(); + if (boundary == null) + boundary = new OVRBoundary(); + + reorientHMDOnControllerRecenter = _reorientHMDOnControllerRecenter; + SetCurrentXRDevice(); + + } + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || OVR_ANDROID_MRC + private bool suppressDisableMixedRealityBecauseOfNoMainCameraWarning = false; +#endif + + private void Update() + { + //Only if we're using the XR SDK do we have to check if OVRManager isn't yet initialized, and init it. + //If we're on legacy, we know initialization occurred properly in Awake() +#if USING_XR_SDK + if (!OVRManagerinitialized) + { + XRDisplaySubsystem currentDisplaySubsystem = GetCurrentDisplaySubsystem(); + XRDisplaySubsystemDescriptor currentDisplaySubsystemDescriptor = GetCurrentDisplaySubsystemDescriptor(); + if (currentDisplaySubsystem == null || currentDisplaySubsystemDescriptor == null || !OVRPlugin.initialized) + return; + //If we're using the XR SDK and the display subsystem is present, and OVRPlugin is initialized, we can init OVRManager + InitOVRManager(); + } +#endif + +#if UNITY_EDITOR + if (_scriptsReloaded) + { + _scriptsReloaded = false; + instance = this; + Initialize(); + } +#endif + + SetCurrentXRDevice(); + + if (OVRPlugin.shouldQuit) + { + Debug.Log("[OVRManager] OVRPlugin.shouldQuit detected"); +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || OVR_ANDROID_MRC + StaticShutdownMixedRealityCapture(instance); +#endif + Application.Quit(); + } + + if (AllowRecenter && OVRPlugin.shouldRecenter) + { + OVRManager.display.RecenterPose(); + } + + if (trackingOriginType != _trackingOriginType) + trackingOriginType = _trackingOriginType; + + tracker.isEnabled = usePositionTracking; + + OVRPlugin.rotation = useRotationTracking; + + OVRPlugin.useIPDInPositionTracking = useIPDInPositionTracking; + + // Dispatch HMD events. + + isHmdPresent = OVRNodeStateProperties.IsHmdPresent(); + + if (useRecommendedMSAALevel && QualitySettings.antiAliasing != display.recommendedMSAALevel) + { + Debug.Log("The current MSAA level is " + QualitySettings.antiAliasing + + ", but the recommended MSAA level is " + display.recommendedMSAALevel + + ". Switching to the recommended level."); + + QualitySettings.antiAliasing = display.recommendedMSAALevel; + } + + if (monoscopic != _monoscopic) + { + monoscopic = _monoscopic; + } + + if (headPoseRelativeOffsetRotation != _headPoseRelativeOffsetRotation) + { + headPoseRelativeOffsetRotation = _headPoseRelativeOffsetRotation; + } + + if (headPoseRelativeOffsetTranslation != _headPoseRelativeOffsetTranslation) + { + headPoseRelativeOffsetTranslation = _headPoseRelativeOffsetTranslation; + } + + if (_wasHmdPresent && !isHmdPresent) + { + try + { + Debug.Log("[OVRManager] HMDLost event"); + if (HMDLost != null) + HMDLost(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + if (!_wasHmdPresent && isHmdPresent) + { + try + { + Debug.Log("[OVRManager] HMDAcquired event"); + if (HMDAcquired != null) + HMDAcquired(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + _wasHmdPresent = isHmdPresent; + + // Dispatch HMD mounted events. + + isUserPresent = OVRPlugin.userPresent; + + if (_wasUserPresent && !isUserPresent) + { + try + { + Debug.Log("[OVRManager] HMDUnmounted event"); + if (HMDUnmounted != null) + HMDUnmounted(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + if (!_wasUserPresent && isUserPresent) + { + try + { + Debug.Log("[OVRManager] HMDMounted event"); + if (HMDMounted != null) + HMDMounted(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + _wasUserPresent = isUserPresent; + + // Dispatch VR Focus events. + + hasVrFocus = OVRPlugin.hasVrFocus; + + if (_hadVrFocus && !hasVrFocus) + { + try + { + Debug.Log("[OVRManager] VrFocusLost event"); + if (VrFocusLost != null) + VrFocusLost(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + if (!_hadVrFocus && hasVrFocus) + { + try + { + Debug.Log("[OVRManager] VrFocusAcquired event"); + if (VrFocusAcquired != null) + VrFocusAcquired(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + _hadVrFocus = hasVrFocus; + + // Dispatch VR Input events. + + bool hasInputFocus = OVRPlugin.hasInputFocus; + + if (_hadInputFocus && !hasInputFocus) + { + try + { + Debug.Log("[OVRManager] InputFocusLost event"); + if (InputFocusLost != null) + InputFocusLost(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + if (!_hadInputFocus && hasInputFocus) + { + try + { + Debug.Log("[OVRManager] InputFocusAcquired event"); + if (InputFocusAcquired != null) + InputFocusAcquired(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + _hadInputFocus = hasInputFocus; + + // Changing effective rendering resolution dynamically according performance +#if (UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) + + if (enableAdaptiveResolution) + { +#if UNITY_2017_2_OR_NEWER + if (UnityEngine.XR.XRSettings.eyeTextureResolutionScale < maxRenderScale) + { + // Allocate renderScale to max to avoid re-allocation + UnityEngine.XR.XRSettings.eyeTextureResolutionScale = maxRenderScale; + } + else + { + // Adjusting maxRenderScale in case app started with a larger renderScale value + maxRenderScale = Mathf.Max(maxRenderScale, UnityEngine.XR.XRSettings.eyeTextureResolutionScale); + } + minRenderScale = Mathf.Min(minRenderScale, maxRenderScale); + float minViewportScale = minRenderScale / UnityEngine.XR.XRSettings.eyeTextureResolutionScale; + float recommendedViewportScale = OVRPlugin.GetEyeRecommendedResolutionScale() / UnityEngine.XR.XRSettings.eyeTextureResolutionScale; + recommendedViewportScale = Mathf.Clamp(recommendedViewportScale, minViewportScale, 1.0f); + UnityEngine.XR.XRSettings.renderViewportScale = recommendedViewportScale; +#else + if (UnityEngine.VR.VRSettings.renderScale < maxRenderScale) + { + // Allocate renderScale to max to avoid re-allocation + UnityEngine.VR.VRSettings.renderScale = maxRenderScale; + } + else + { + // Adjusting maxRenderScale in case app started with a larger renderScale value + maxRenderScale = Mathf.Max(maxRenderScale, UnityEngine.VR.VRSettings.renderScale); + } + minRenderScale = Mathf.Min(minRenderScale, maxRenderScale); + float minViewportScale = minRenderScale / UnityEngine.VR.VRSettings.renderScale; + float recommendedViewportScale = OVRPlugin.GetEyeRecommendedResolutionScale() / UnityEngine.VR.VRSettings.renderScale; + recommendedViewportScale = Mathf.Clamp(recommendedViewportScale, minViewportScale, 1.0f); + UnityEngine.VR.VRSettings.renderViewportScale = recommendedViewportScale; +#endif + } +#endif + + // Dispatch Audio Device events. + + string audioOutId = OVRPlugin.audioOutId; + if (!prevAudioOutIdIsCached) + { + prevAudioOutId = audioOutId; + prevAudioOutIdIsCached = true; + } + else if (audioOutId != prevAudioOutId) + { + try + { + Debug.Log("[OVRManager] AudioOutChanged event"); + if (AudioOutChanged != null) + AudioOutChanged(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + + prevAudioOutId = audioOutId; + } + + string audioInId = OVRPlugin.audioInId; + if (!prevAudioInIdIsCached) + { + prevAudioInId = audioInId; + prevAudioInIdIsCached = true; + } + else if (audioInId != prevAudioInId) + { + try + { + Debug.Log("[OVRManager] AudioInChanged event"); + if (AudioInChanged != null) + AudioInChanged(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + + prevAudioInId = audioInId; + } + + // Dispatch tracking events. + + if (wasPositionTracked && !tracker.isPositionTracked) + { + try + { + Debug.Log("[OVRManager] TrackingLost event"); + if (TrackingLost != null) + TrackingLost(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + if (!wasPositionTracked && tracker.isPositionTracked) + { + try + { + Debug.Log("[OVRManager] TrackingAcquired event"); + if (TrackingAcquired != null) + TrackingAcquired(); + } + catch (Exception e) + { + Debug.LogError("Caught Exception: " + e); + } + } + + wasPositionTracked = tracker.isPositionTracked; + + display.Update(); + OVRInput.Update(); + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || OVR_ANDROID_MRC + StaticUpdateMixedRealityCapture(this); +#endif + } + + private bool multipleMainCameraWarningPresented = false; + private Camera lastFoundMainCamera = null; + private Camera FindMainCamera() + { + if (lastFoundMainCamera != null && lastFoundMainCamera.CompareTag("MainCamera")) + { + return lastFoundMainCamera; + } + + Camera result = null; + + GameObject[] objects = GameObject.FindGameObjectsWithTag("MainCamera"); + List cameras = new List(4); + foreach (GameObject obj in objects) + { + Camera camera = obj.GetComponent(); + if (camera != null && camera.enabled) + { + OVRCameraRig cameraRig = camera.GetComponentInParent(); + if (cameraRig != null && cameraRig.trackingSpace != null) + { + cameras.Add(camera); + } + } + } + if (cameras.Count == 0) + { + result = Camera.main; // pick one of the cameras which tagged as "MainCamera" + } + else if (cameras.Count == 1) + { + result = cameras[0]; + } + else + { + if (!multipleMainCameraWarningPresented) + { + Debug.LogWarning("Multiple MainCamera found. Assume the real MainCamera is the camera with the least depth"); + multipleMainCameraWarningPresented = true; + } + // return the camera with least depth + cameras.Sort((Camera c0, Camera c1) => { return c0.depth < c1.depth ? -1 : (c0.depth > c1.depth ? 1 : 0); }); + result = cameras[0]; + } + + if (result != null) + { + Debug.LogFormat("[OVRManager] mainCamera found for MRC: ", result.gameObject.name); + } + else + { + Debug.Log("[OVRManager] unable to find a vaild camera"); + } + lastFoundMainCamera = result; + return result; + } + + private void OnDisable() + { + OVRSystemPerfMetrics.OVRSystemPerfMetricsTcpServer perfTcpServer = GetComponent(); + if (perfTcpServer != null) + { + perfTcpServer.enabled = false; + } + } + + private void LateUpdate() + { + OVRHaptics.Process(); + } + + private void FixedUpdate() + { + OVRInput.FixedUpdate(); + } + + private void OnDestroy() + { + Debug.Log("[OVRManager] OnDestroy"); + OVRManagerinitialized = false; + } + + private void OnApplicationPause(bool pause) + { + if (pause) + { + Debug.Log("[OVRManager] OnApplicationPause(true)"); + } + else + { + Debug.Log("[OVRManager] OnApplicationPause(false)"); + } + } + + private void OnApplicationFocus(bool focus) + { + if (focus) + { + Debug.Log("[OVRManager] OnApplicationFocus(true)"); + } + else + { + Debug.Log("[OVRManager] OnApplicationFocus(false)"); + } + } + + private void OnApplicationQuit() + { + Debug.Log("[OVRManager] OnApplicationQuit"); + } + +#endregion // Unity Messages + + /// + /// Leaves the application/game and returns to the launcher/dashboard + /// + public void ReturnToLauncher() + { + // show the platform UI quit prompt + OVRManager.PlatformUIConfirmQuit(); + } + + public static void PlatformUIConfirmQuit() + { + if (!isHmdPresent) + return; + + OVRPlugin.ShowUI(OVRPlugin.PlatformUI.ConfirmQuit); + } + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || OVR_ANDROID_MRC + + public static bool staticMixedRealityCaptureInitialized = false; + public static bool staticPrevEnableMixedRealityCapture = false; + public static OVRMixedRealityCaptureSettings staticMrcSettings = null; + + public static void StaticInitializeMixedRealityCapture(OVRManager instance) + { + if (!staticMixedRealityCaptureInitialized) + { + staticMrcSettings = ScriptableObject.CreateInstance(); + staticMrcSettings.ReadFrom(OVRManager.instance); + +#if OVR_ANDROID_MRC + bool mediaInitialized = OVRPlugin.Media.Initialize(); + Debug.Log(mediaInitialized ? "OVRPlugin.Media initialized" : "OVRPlugin.Media not initialized"); + if (mediaInitialized) + { + OVRPlugin.Media.SetMrcAudioSampleRate(AudioSettings.outputSampleRate); + Debug.LogFormat("[MRC] SetMrcAudioSampleRate({0})", AudioSettings.outputSampleRate); + OVRPlugin.Media.SetMrcInputVideoBufferType(OVRPlugin.Media.InputVideoBufferType.TextureHandle); + Debug.LogFormat("[MRC] Active InputVideoBufferType:{0}", OVRPlugin.Media.GetMrcInputVideoBufferType()); + if (instance.mrcActivationMode == MrcActivationMode.Automatic) + { + OVRPlugin.Media.SetMrcActivationMode(OVRPlugin.Media.MrcActivationMode.Automatic); + Debug.LogFormat("[MRC] ActivateMode: Automatic"); + } + else if (instance.mrcActivationMode == MrcActivationMode.Disabled) + { + OVRPlugin.Media.SetMrcActivationMode(OVRPlugin.Media.MrcActivationMode.Disabled); + Debug.LogFormat("[MRC] ActivateMode: Disabled"); + } + } +#endif + staticPrevEnableMixedRealityCapture = false; + + staticMixedRealityCaptureInitialized = true; + } + else + { + staticMrcSettings.ApplyTo(instance); + } + } + + public static void StaticUpdateMixedRealityCapture(OVRManager instance) + { + if (!staticMixedRealityCaptureInitialized) + { + return; + } + +#if OVR_ANDROID_MRC + instance.enableMixedReality = OVRPlugin.Media.GetInitialized() && OVRPlugin.Media.IsMrcActivated(); + instance.compositionMethod = CompositionMethod.External; // force external composition on Android MRC + + if (OVRPlugin.Media.GetInitialized()) + { + OVRPlugin.Media.Update(); + } +#endif + + if (instance.enableMixedReality && !staticPrevEnableMixedRealityCapture) + { + OVRPlugin.SendEvent("mixed_reality_capture", "activated"); + Debug.Log("MixedRealityCapture: activate"); + } + + if (!instance.enableMixedReality && staticPrevEnableMixedRealityCapture) + { + Debug.Log("MixedRealityCapture: deactivate"); + } + + if (instance.enableMixedReality || staticPrevEnableMixedRealityCapture) + { + Camera mainCamera = instance.FindMainCamera(); + if (Camera.main != null) + { + instance.suppressDisableMixedRealityBecauseOfNoMainCameraWarning = false; + + if (instance.enableMixedReality) + { + OVRMixedReality.Update(instance.gameObject, mainCamera, instance.compositionMethod, instance.useDynamicLighting, instance.capturingCameraDevice, instance.depthQuality); + } + + if (staticPrevEnableMixedRealityCapture && !instance.enableMixedReality) + { + OVRMixedReality.Cleanup(); + } + + staticPrevEnableMixedRealityCapture = instance.enableMixedReality; + } + else + { + if (!instance.suppressDisableMixedRealityBecauseOfNoMainCameraWarning) + { + Debug.LogWarning("Main Camera is not set, Mixed Reality disabled"); + instance.suppressDisableMixedRealityBecauseOfNoMainCameraWarning = true; + } + } + } + + staticMrcSettings.ReadFrom(OVRManager.instance); + } + + public static void StaticShutdownMixedRealityCapture(OVRManager instance) + { + if (staticMixedRealityCaptureInitialized) + { + ScriptableObject.Destroy(staticMrcSettings); + staticMrcSettings = null; + + OVRMixedReality.Cleanup(); + +#if OVR_ANDROID_MRC + if (OVRPlugin.Media.GetInitialized()) + { + OVRPlugin.Media.Shutdown(); + } +#endif + staticMixedRealityCaptureInitialized = false; + } + } + +#endif +} diff --git a/Assets/Oculus/VR/Scripts/OVRManager.cs.meta b/Assets/Oculus/VR/Scripts/OVRManager.cs.meta new file mode 100644 index 0000000..eabfdfd --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRManager.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e933e81d3c20c74ea6fdc708a67e3a5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -100 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRMixedReality.cs b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs new file mode 100644 index 0000000..8567aae --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs @@ -0,0 +1,142 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if UNITY_ANDROID && !UNITY_EDITOR +#define OVR_ANDROID_MRC +#endif + +using System; +using System.Runtime.InteropServices; +using System.Text.RegularExpressions; +using System.Collections.Generic; +using UnityEngine; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID + +/// +/// Manages mix-reality elements +/// +internal static class OVRMixedReality +{ + /// + /// For Debugging purpose, we can use preset parameters to fake a camera when external camera is not available + /// + public static bool useFakeExternalCamera = false; + public static Vector3 fakeCameraFloorLevelPosition = new Vector3(0.0f, 2.0f, -0.5f); + public static Vector3 fakeCameraEyeLevelPosition = fakeCameraFloorLevelPosition - new Vector3(0.0f, 1.8f, 0.0f); + public static Quaternion fakeCameraRotation = Quaternion.LookRotation((new Vector3(0.0f, fakeCameraFloorLevelPosition.y, 0.0f) - fakeCameraFloorLevelPosition).normalized, Vector3.up); + public static float fakeCameraFov = 60.0f; + public static float fakeCameraAspect = 16.0f / 9.0f; + + /// + /// Composition object + /// + public static OVRComposition currentComposition = null; + + /// + /// Updates the internal state of the Mixed Reality Camera. Called by OVRManager. + /// + + public static void Update(GameObject parentObject, Camera mainCamera, OVRManager.CompositionMethod compositionMethod, bool useDynamicLighting, OVRManager.CameraDevice cameraDevice, OVRManager.DepthQuality depthQuality) + { + if (!OVRPlugin.initialized) + { + Debug.LogError("OVRPlugin not initialized"); + return; + } + + if (!OVRPlugin.IsMixedRealityInitialized()) + { + OVRPlugin.InitializeMixedReality(); + if (OVRPlugin.IsMixedRealityInitialized()) + { + Debug.Log("OVRPlugin_MixedReality initialized"); + } + else + { + Debug.LogError("Unable to initialize OVRPlugin_MixedReality"); + return; + } + } + + if (!OVRPlugin.IsMixedRealityInitialized()) + { + return; + } + + OVRPlugin.UpdateExternalCamera(); +#if !OVR_ANDROID_MRC + OVRPlugin.UpdateCameraDevices(); +#endif + +#if OVR_ANDROID_MRC + useFakeExternalCamera = OVRPlugin.Media.UseMrcDebugCamera(); +#endif + + if (currentComposition != null && currentComposition.CompositionMethod() != compositionMethod) + { + currentComposition.Cleanup(); + currentComposition = null; + } + + if (compositionMethod == OVRManager.CompositionMethod.External) + { + if (currentComposition == null) + { + currentComposition = new OVRExternalComposition(parentObject, mainCamera); + } + } +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + else if (compositionMethod == OVRManager.CompositionMethod.Direct) + { + if (currentComposition == null) + { + currentComposition = new OVRDirectComposition(parentObject, mainCamera, cameraDevice, useDynamicLighting, depthQuality); + } + } +#endif + else + { + Debug.LogError("Unknown CompositionMethod : " + compositionMethod); + return; + } + currentComposition.Update(parentObject, mainCamera); + } + + public static void Cleanup() + { + if (currentComposition != null) + { + currentComposition.Cleanup(); + currentComposition = null; + } + if (OVRPlugin.IsMixedRealityInitialized()) + { + OVRPlugin.ShutdownMixedReality(); + } + } + + public static void RecenterPose() + { + if (currentComposition != null) + { + currentComposition.RecenterPose(); + } + } + +} + +#endif diff --git a/Assets/Oculus/VR/Scripts/OVRMixedReality.cs.meta b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs.meta new file mode 100644 index 0000000..e6cc995 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRMixedReality.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5daf6258e951ab84bb8b3e3b03386396 +timeCreated: 1497574405 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs b/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs new file mode 100644 index 0000000..8f6c6d2 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs @@ -0,0 +1,33 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +#if UNITY_ANDROID && !UNITY_EDITOR + +public abstract class OVROnCompleteListener : AndroidJavaProxy +{ + public OVROnCompleteListener() : base("com.oculus.svclib.OnCompleteListener") + { + } + + public abstract void onSuccess(); + + public abstract void onFailure(); +} + +#endif diff --git a/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs.meta b/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs.meta new file mode 100644 index 0000000..d9c3859 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVROnCompleteListener.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8730118d7f00f9b47b09be73f7e91d2b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVROverlay.cs b/Assets/Oculus/VR/Scripts/OVROverlay.cs new file mode 100644 index 0000000..8637542 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVROverlay.cs @@ -0,0 +1,958 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System; +using System.Collections; +using System.Runtime.InteropServices; + +#if UNITY_2017_2_OR_NEWER +using Settings = UnityEngine.XR.XRSettings; +#else +using Settings = UnityEngine.VR.VRSettings; +#endif + +/// +/// Add OVROverlay script to an object with an optional mesh primitive +/// rendered as a TimeWarp overlay instead by drawing it into the eye buffer. +/// This will take full advantage of the display resolution and avoid double +/// resampling of the texture. +/// +/// We support 3 types of Overlay shapes right now +/// 1. Quad : This is most common overlay type , you render a quad in Timewarp space. +/// 2. Cylinder: [Mobile Only][Experimental], Display overlay as partial surface of a cylinder +/// * The cylinder's center will be your game object's center +/// * We encoded the cylinder's parameters in transform.scale, +/// **[scale.z] is the radius of the cylinder +/// **[scale.y] is the height of the cylinder +/// **[scale.x] is the length of the arc of cylinder +/// * Limitations +/// **Only the half of the cylinder can be displayed, which means the arc angle has to be smaller than 180 degree, [scale.x] / [scale.z] <= PI +/// **Your camera has to be inside of the inscribed sphere of the cylinder, the overlay will be faded out automatically when the camera is close to the inscribed sphere's surface. +/// **Translation only works correctly with vrDriver 1.04 or above +/// 3. Cubemap: Display overlay as a cube map +/// 4. OffcenterCubemap: [Mobile Only] Display overlay as a cube map with a texture coordinate offset +/// * The actually sampling will looks like [color = texture(cubeLayerSampler, normalize(direction) + offset)] instead of [color = texture( cubeLayerSampler, direction )] +/// * The extra center offset can be feed from transform.position +/// * Note: if transform.position's magnitude is greater than 1, which will cause some cube map pixel always invisible +/// Which is usually not what people wanted, we don't kill the ability for developer to do so here, but will warn out. +/// 5. Equirect: Display overlay as a 360-degree equirectangular skybox. +/// +public class OVROverlay : MonoBehaviour +{ +#region Interface + + /// + /// Determines the on-screen appearance of a layer. + /// + public enum OverlayShape + { + Quad = OVRPlugin.OverlayShape.Quad, + Cylinder = OVRPlugin.OverlayShape.Cylinder, + Cubemap = OVRPlugin.OverlayShape.Cubemap, + OffcenterCubemap = OVRPlugin.OverlayShape.OffcenterCubemap, + Equirect = OVRPlugin.OverlayShape.Equirect, + } + + /// + /// Whether the layer appears behind or infront of other content in the scene. + /// + public enum OverlayType + { + None, + Underlay, + Overlay, + }; + + /// + /// Specify overlay's type + /// + [Tooltip("Specify overlay's type")] + public OverlayType currentOverlayType = OverlayType.Overlay; + + /// + /// If true, the texture's content is copied to the compositor each frame. + /// + [Tooltip("If true, the texture's content is copied to the compositor each frame.")] + public bool isDynamic = false; + + /// + /// If true, the layer would be used to present protected content (e.g. HDCP). The flag is effective only on PC. + /// + [Tooltip("If true, the layer would be used to present protected content (e.g. HDCP). The flag is effective only on PC.")] + public bool isProtectedContent = false; + + //Source and dest rects + public Rect srcRectLeft = new Rect(); + public Rect srcRectRight = new Rect(); + public Rect destRectLeft = new Rect(); + public Rect destRectRight = new Rect(); + + private OVRPlugin.TextureRectMatrixf textureRectMatrix = OVRPlugin.TextureRectMatrixf.zero; + + public bool overrideTextureRectMatrix = false; + + public bool overridePerLayerColorScaleAndOffset = false; + + public Vector4 colorScale = Vector4.one; + + public Vector4 colorOffset = Vector4.zero; + + //Warning: Developers should only use this supersample setting if they absolutely have the budget and need for it. It is extremely expensive, and will not be relevant for most developers. + public bool useExpensiveSuperSample = false; + + /// + /// If true, the layer will be created as an external surface. externalSurfaceObject contains the Surface object. It's effective only on Android. + /// + [Tooltip("If true, the layer will be created as an external surface. externalSurfaceObject contains the Surface object. It's effective only on Android.")] + public bool isExternalSurface = false; + + /// + /// The width which will be used to create the external surface. It's effective only on Android. + /// + [Tooltip("The width which will be used to create the external surface. It's effective only on Android.")] + public int externalSurfaceWidth = 0; + + /// + /// The height which will be used to create the external surface. It's effective only on Android. + /// + [Tooltip("The height which will be used to create the external surface. It's effective only on Android.")] + public int externalSurfaceHeight = 0; + + /// + /// The compositionDepth defines the order of the OVROverlays in composition. The overlay/underlay with smaller compositionDepth would be composited in the front of the overlay/underlay with larger compositionDepth. + /// + [Tooltip("The compositionDepth defines the order of the OVROverlays in composition. The overlay/underlay with smaller compositionDepth would be composited in the front of the overlay/underlay with larger compositionDepth.")] + public int compositionDepth = 0; + + /// + /// The noDepthBufferTesting will stop layer's depth buffer compositing even if the engine has "Depth buffer sharing" enabled on Rift. + /// + [Tooltip("The noDepthBufferTesting will stop layer's depth buffer compositing even if the engine has \"Shared Depth Buffer\" enabled")] + public bool noDepthBufferTesting = false; + + /// + /// Specify overlay's shape + /// + [Tooltip("Specify overlay's shape")] + public OverlayShape currentOverlayShape = OverlayShape.Quad; + private OverlayShape prevOverlayShape = OverlayShape.Quad; + + /// + /// The left- and right-eye Textures to show in the layer. + /// \note If you need to change the texture on a per-frame basis, please use OverrideOverlayTextureInfo(..) to avoid caching issues. + /// + [Tooltip("The left- and right-eye Textures to show in the layer.")] + public Texture[] textures = new Texture[] { null, null }; + + protected IntPtr[] texturePtrs = new IntPtr[] { IntPtr.Zero, IntPtr.Zero }; + + /// + /// The Surface object (Android only). + /// + public System.IntPtr externalSurfaceObject; + + public delegate void ExternalSurfaceObjectCreated(); + /// + /// Will be triggered after externalSurfaceTextueObject get created. + /// + public ExternalSurfaceObjectCreated externalSurfaceObjectCreated; + + /// + /// Use this function to set texture and texNativePtr when app is running + /// GetNativeTexturePtr is a slow behavior, the value should be pre-cached + /// +#if UNITY_2017_2_OR_NEWER + public void OverrideOverlayTextureInfo(Texture srcTexture, IntPtr nativePtr, UnityEngine.XR.XRNode node) +#else + public void OverrideOverlayTextureInfo(Texture srcTexture, IntPtr nativePtr, UnityEngine.VR.VRNode node) +#endif + { +#if UNITY_2017_2_OR_NEWER + int index = (node == UnityEngine.XR.XRNode.RightEye) ? 1 : 0; +#else + int index = (node == UnityEngine.VR.VRNode.RightEye) ? 1 : 0; +#endif + + if (textures.Length <= index) + return; + + textures[index] = srcTexture; + texturePtrs[index] = nativePtr; + + isOverridePending = true; + } + + protected bool isOverridePending; + + internal const int maxInstances = 15; + public static OVROverlay[] instances = new OVROverlay[maxInstances]; + +#endregion + + private static Material tex2DMaterial; + private static Material cubeMaterial; + + private OVRPlugin.LayerLayout layout { + get { +#if UNITY_ANDROID && !UNITY_EDITOR + if (textures.Length == 2 && textures[1] != null) + return OVRPlugin.LayerLayout.Stereo; +#endif + return OVRPlugin.LayerLayout.Mono; + } + } + + private struct LayerTexture { + public Texture appTexture; + public IntPtr appTexturePtr; + public Texture[] swapChain; + public IntPtr[] swapChainPtr; + }; + private LayerTexture[] layerTextures; + + private OVRPlugin.LayerDesc layerDesc; + private int stageCount = -1; + + private int layerIndex = -1; // Controls the composition order based on wake-up time. + + private int layerId = 0; // The layer's internal handle in the compositor. + private GCHandle layerIdHandle; + private IntPtr layerIdPtr = IntPtr.Zero; + + private int frameIndex = 0; + private int prevFrameIndex = -1; + + private Renderer rend; + + private int texturesPerStage { get { return (layout == OVRPlugin.LayerLayout.Stereo) ? 2 : 1; } } + + private bool CreateLayer(int mipLevels, int sampleCount, OVRPlugin.EyeTextureFormat etFormat, int flags, OVRPlugin.Sizei size, OVRPlugin.OverlayShape shape) + { + if (!layerIdHandle.IsAllocated || layerIdPtr == IntPtr.Zero) + { + layerIdHandle = GCHandle.Alloc(layerId, GCHandleType.Pinned); + layerIdPtr = layerIdHandle.AddrOfPinnedObject(); + } + + if (layerIndex == -1) + { + for (int i = 0; i < maxInstances; ++i) + { + if (instances[i] == null || instances[i] == this) + { + layerIndex = i; + instances[i] = this; + break; + } + } + } + + bool needsSetup = ( + isOverridePending || + layerDesc.MipLevels != mipLevels || + layerDesc.SampleCount != sampleCount || + layerDesc.Format != etFormat || + layerDesc.Layout != layout || + layerDesc.LayerFlags != flags || + !layerDesc.TextureSize.Equals(size) || + layerDesc.Shape != shape); + + if (!needsSetup) + return false; + + OVRPlugin.LayerDesc desc = OVRPlugin.CalculateLayerDesc(shape, layout, size, mipLevels, sampleCount, etFormat, flags); + OVRPlugin.EnqueueSetupLayer(desc, compositionDepth, layerIdPtr); + layerId = (int)layerIdHandle.Target; + + if (layerId > 0) + { + layerDesc = desc; + if (isExternalSurface) + { + stageCount = 1; + } + else + { + stageCount = OVRPlugin.GetLayerTextureStageCount(layerId); + } + } + + isOverridePending = false; + + return true; + } + + private bool CreateLayerTextures(bool useMipmaps, OVRPlugin.Sizei size, bool isHdr) + { + if (isExternalSurface) + { + if (externalSurfaceObject == System.IntPtr.Zero) + { + externalSurfaceObject = OVRPlugin.GetLayerAndroidSurfaceObject(layerId); + if (externalSurfaceObject != System.IntPtr.Zero) + { + Debug.LogFormat("GetLayerAndroidSurfaceObject returns {0}", externalSurfaceObject); + if (externalSurfaceObjectCreated != null) + { + externalSurfaceObjectCreated(); + } + } + } + return false; + } + + bool needsCopy = false; + + if (stageCount <= 0) + return false; + + // For newer SDKs, blit directly to the surface that will be used in compositing. + + if (layerTextures == null) + layerTextures = new LayerTexture[texturesPerStage]; + + for (int eyeId = 0; eyeId < texturesPerStage; ++eyeId) + { + if (layerTextures[eyeId].swapChain == null) + layerTextures[eyeId].swapChain = new Texture[stageCount]; + + if (layerTextures[eyeId].swapChainPtr == null) + layerTextures[eyeId].swapChainPtr = new IntPtr[stageCount]; + + for (int stage = 0; stage < stageCount; ++stage) + { + Texture sc = layerTextures[eyeId].swapChain[stage]; + IntPtr scPtr = layerTextures[eyeId].swapChainPtr[stage]; + + if (sc != null && scPtr != IntPtr.Zero && size.w == sc.width && size.h == sc.height) + continue; + + if (scPtr == IntPtr.Zero) + scPtr = OVRPlugin.GetLayerTexture(layerId, stage, (OVRPlugin.Eye)eyeId); + + if (scPtr == IntPtr.Zero) + continue; + + var txFormat = (isHdr) ? TextureFormat.RGBAHalf : TextureFormat.RGBA32; + + if (currentOverlayShape != OverlayShape.Cubemap && currentOverlayShape != OverlayShape.OffcenterCubemap) + sc = Texture2D.CreateExternalTexture(size.w, size.h, txFormat, useMipmaps, true, scPtr); +#if UNITY_2017_1_OR_NEWER + else + sc = Cubemap.CreateExternalTexture(size.w, txFormat, useMipmaps, scPtr); +#endif + + layerTextures[eyeId].swapChain[stage] = sc; + layerTextures[eyeId].swapChainPtr[stage] = scPtr; + + needsCopy = true; + } + } + + return needsCopy; + } + + private void DestroyLayerTextures() + { + if (isExternalSurface) + { + return; + } + + for (int eyeId = 0; layerTextures != null && eyeId < texturesPerStage; ++eyeId) + { + if (layerTextures[eyeId].swapChain != null) + { + for (int stage = 0; stage < stageCount; ++stage) + DestroyImmediate(layerTextures[eyeId].swapChain[stage]); + } + } + + layerTextures = null; + } + + private void DestroyLayer() + { + if (layerIndex != -1) + { + // Turn off the overlay if it was on. + OVRPlugin.EnqueueSubmitLayer(true, false, false, IntPtr.Zero, IntPtr.Zero, -1, 0, OVRPose.identity.ToPosef(), Vector3.one.ToVector3f(), layerIndex, (OVRPlugin.OverlayShape)prevOverlayShape); + instances[layerIndex] = null; + layerIndex = -1; + } + + if (layerIdPtr != IntPtr.Zero) + { + OVRPlugin.EnqueueDestroyLayer(layerIdPtr); + layerIdPtr = IntPtr.Zero; + layerIdHandle.Free(); + layerId = 0; + } + + layerDesc = new OVRPlugin.LayerDesc(); + + frameIndex = 0; + prevFrameIndex = -1; + } + + /// + /// Sets the source and dest rects for both eyes. Source explains what portion of the source texture is used, and + /// dest is what portion of the destination texture is rendered into. + /// + public void SetSrcDestRects(Rect srcLeft, Rect srcRight, Rect destLeft, Rect destRight) + { + srcRectLeft = srcLeft; + srcRectRight = srcRight; + destRectLeft = destLeft; + destRectRight = destRight; + } + + public void UpdateTextureRectMatrix() + { + Rect srcRectLeftConverted = new Rect(srcRectLeft.x, 1 - srcRectLeft.y - srcRectLeft.height, srcRectLeft.width, srcRectLeft.height); + Rect srcRectRightConverted = new Rect(srcRectRight.x, 1 - srcRectRight.y - srcRectRight.height, srcRectRight.width, srcRectRight.height); + textureRectMatrix.leftRect = srcRectLeftConverted; + textureRectMatrix.rightRect = srcRectRightConverted; + float leftWidthFactor = srcRectLeftConverted.width / destRectLeft.width; + float leftHeightFactor = srcRectLeftConverted.height / destRectLeft.height; + textureRectMatrix.leftScaleBias = new Vector4(leftWidthFactor, leftHeightFactor, srcRectLeftConverted.x - destRectLeft.x * leftWidthFactor, srcRectLeftConverted.y - destRectLeft.y * leftHeightFactor); + float rightWidthFactor = srcRectRightConverted.width / destRectRight.width; + float rightHeightFactor = srcRectRightConverted.height / destRectRight.height; + textureRectMatrix.rightScaleBias = new Vector4(rightWidthFactor, rightHeightFactor, srcRectRightConverted.x - destRectRight.x * rightWidthFactor, srcRectRightConverted.y - destRectRight.y * rightHeightFactor); + } + + public void SetPerLayerColorScaleAndOffset(Vector4 scale, Vector4 offset) + { + colorScale = scale; + colorOffset = offset; + } + + private bool LatchLayerTextures() + { + if (isExternalSurface) + { + return true; + } + + for (int i = 0; i < texturesPerStage; ++i) + { + if (textures[i] != layerTextures[i].appTexture || layerTextures[i].appTexturePtr == IntPtr.Zero) + { + if (textures[i] != null) + { +#if UNITY_EDITOR + var assetPath = UnityEditor.AssetDatabase.GetAssetPath(textures[i]); + var importer = (UnityEditor.TextureImporter)UnityEditor.TextureImporter.GetAtPath(assetPath); + if (importer && importer.textureType != UnityEditor.TextureImporterType.Default) + { + Debug.LogError("Need Default Texture Type for overlay"); + return false; + } +#endif + var rt = textures[i] as RenderTexture; + if (rt && !rt.IsCreated()) + rt.Create(); + + layerTextures[i].appTexturePtr = (texturePtrs[i] != IntPtr.Zero) ? texturePtrs[i] : textures[i].GetNativeTexturePtr(); + + if (layerTextures[i].appTexturePtr != IntPtr.Zero) + layerTextures[i].appTexture = textures[i]; + } + } + + if (currentOverlayShape == OverlayShape.Cubemap) + { + if (textures[i] as Cubemap == null) + { + Debug.LogError("Need Cubemap texture for cube map overlay"); + return false; + } + } + } + +#if !UNITY_ANDROID || UNITY_EDITOR + if (currentOverlayShape == OverlayShape.OffcenterCubemap) + { + Debug.LogWarning("Overlay shape " + currentOverlayShape + " is not supported on current platform"); + return false; + } +#endif + + if (layerTextures[0].appTexture == null || layerTextures[0].appTexturePtr == IntPtr.Zero) + return false; + + return true; + } + + private OVRPlugin.LayerDesc GetCurrentLayerDesc() + { + OVRPlugin.Sizei textureSize = new OVRPlugin.Sizei() { w = 0, h = 0 }; + + if (isExternalSurface) + { + textureSize.w = externalSurfaceWidth; + textureSize.h = externalSurfaceHeight; + } + else + { + if (textures[0] == null) + { + Debug.LogWarning("textures[0] hasn't been set"); + } + textureSize.w = textures[0] ? textures[0].width : 0; + textureSize.h = textures[0] ? textures[0].height : 0; + } + + OVRPlugin.LayerDesc newDesc = new OVRPlugin.LayerDesc() { + Format = OVRPlugin.EyeTextureFormat.R8G8B8A8_sRGB, + LayerFlags = isExternalSurface ? 0 : (int)OVRPlugin.LayerFlags.TextureOriginAtBottomLeft, + Layout = layout, + MipLevels = 1, + SampleCount = 1, + Shape = (OVRPlugin.OverlayShape)currentOverlayShape, + TextureSize = textureSize + }; + + var tex2D = textures[0] as Texture2D; + if (tex2D != null) + { + if (tex2D.format == TextureFormat.RGBAHalf || tex2D.format == TextureFormat.RGBAFloat) + newDesc.Format = OVRPlugin.EyeTextureFormat.R16G16B16A16_FP; + + newDesc.MipLevels = tex2D.mipmapCount; + } + + var texCube = textures[0] as Cubemap; + if (texCube != null) + { + if (texCube.format == TextureFormat.RGBAHalf || texCube.format == TextureFormat.RGBAFloat) + newDesc.Format = OVRPlugin.EyeTextureFormat.R16G16B16A16_FP; + + newDesc.MipLevels = texCube.mipmapCount; + } + + var rt = textures[0] as RenderTexture; + if (rt != null) + { + newDesc.SampleCount = rt.antiAliasing; + + if (rt.format == RenderTextureFormat.ARGBHalf || rt.format == RenderTextureFormat.ARGBFloat || rt.format == RenderTextureFormat.RGB111110Float) + newDesc.Format = OVRPlugin.EyeTextureFormat.R16G16B16A16_FP; + } + + if (isProtectedContent) + { + newDesc.LayerFlags |= (int)OVRPlugin.LayerFlags.ProtectedContent; + } + + if (isExternalSurface) + { + newDesc.LayerFlags |= (int)OVRPlugin.LayerFlags.AndroidSurfaceSwapChain; + } + + return newDesc; + } + + private bool PopulateLayer(int mipLevels, bool isHdr, OVRPlugin.Sizei size, int sampleCount, int stage) + { + if (isExternalSurface) + { + return true; + } + + bool ret = false; + + RenderTextureFormat rtFormat = (isHdr) ? RenderTextureFormat.ARGBHalf : RenderTextureFormat.ARGB32; + + for (int eyeId = 0; eyeId < texturesPerStage; ++eyeId) + { + Texture et = layerTextures[eyeId].swapChain[stage]; + if (et == null) + continue; + + for (int mip = 0; mip < mipLevels; ++mip) + { + int width = size.w >> mip; + if (width < 1) width = 1; + int height = size.h >> mip; + if (height < 1) height = 1; +#if UNITY_2017_1_1 || UNITY_2017_2_OR_NEWER + RenderTextureDescriptor descriptor = new RenderTextureDescriptor(width, height, rtFormat, 0); + descriptor.msaaSamples = sampleCount; + descriptor.useMipMap = true; + descriptor.autoGenerateMips = false; + descriptor.sRGB = false; + + var tempRTDst = RenderTexture.GetTemporary(descriptor); +#else + var tempRTDst = RenderTexture.GetTemporary(width, height, 0, rtFormat, RenderTextureReadWrite.Linear, sampleCount); +#endif + + if (!tempRTDst.IsCreated()) + tempRTDst.Create(); + + tempRTDst.DiscardContents(); + + bool dataIsLinear = isHdr || (QualitySettings.activeColorSpace == ColorSpace.Linear); + +#if !UNITY_2017_1_OR_NEWER + var rt = textures[eyeId] as RenderTexture; + dataIsLinear |= rt != null && rt.sRGB; //HACK: Unity 5.6 and earlier convert to linear on read from sRGB RenderTexture. +#endif +#if UNITY_ANDROID && !UNITY_EDITOR + dataIsLinear = true; //HACK: Graphics.CopyTexture causes linear->srgb conversion on target write with D3D but not GLES. +#endif + + if (currentOverlayShape != OverlayShape.Cubemap && currentOverlayShape != OverlayShape.OffcenterCubemap) + { + tex2DMaterial.SetInt("_linearToSrgb", (!isHdr && dataIsLinear) ? 1 : 0); + + //Resolve, decompress, swizzle, etc not handled by simple CopyTexture. +#if !UNITY_ANDROID || UNITY_EDITOR + // The PC compositor uses premultiplied alpha, so multiply it here. + tex2DMaterial.SetInt("_premultiply", 1); +#endif + Graphics.Blit(textures[eyeId], tempRTDst, tex2DMaterial); + Graphics.CopyTexture(tempRTDst, 0, 0, et, 0, mip); + } +#if UNITY_2017_1_OR_NEWER + else // Cubemap + { + for (int face = 0; face < 6; ++face) + { + cubeMaterial.SetInt("_linearToSrgb", (!isHdr && dataIsLinear) ? 1 : 0); + +#if !UNITY_ANDROID || UNITY_EDITOR + // The PC compositor uses premultiplied alpha, so multiply it here. + cubeMaterial.SetInt("_premultiply", 1); +#endif + cubeMaterial.SetInt("_face", face); + //Resolve, decompress, swizzle, etc not handled by simple CopyTexture. + Graphics.Blit(textures[eyeId], tempRTDst, cubeMaterial); + Graphics.CopyTexture(tempRTDst, 0, 0, et, face, mip); + } + } +#endif + RenderTexture.ReleaseTemporary(tempRTDst); + + ret = true; + } + } + + return ret; + } + + private bool SubmitLayer(bool overlay, bool headLocked, bool noDepthBufferTesting, OVRPose pose, Vector3 scale, int frameIndex) + { + int rightEyeIndex = (texturesPerStage >= 2) ? 1 : 0; + if (overrideTextureRectMatrix) + { + UpdateTextureRectMatrix(); + } + bool isOverlayVisible = OVRPlugin.EnqueueSubmitLayer(overlay, headLocked, noDepthBufferTesting, + isExternalSurface ? System.IntPtr.Zero : layerTextures[0].appTexturePtr, + isExternalSurface ? System.IntPtr.Zero : layerTextures[rightEyeIndex].appTexturePtr, + layerId, frameIndex, pose.flipZ().ToPosef(), scale.ToVector3f(), layerIndex, (OVRPlugin.OverlayShape)currentOverlayShape, + overrideTextureRectMatrix, textureRectMatrix, overridePerLayerColorScaleAndOffset, colorScale, colorOffset, useExpensiveSuperSample); + + prevOverlayShape = currentOverlayShape; + + return isOverlayVisible; + } + +#region Unity Messages + + void Awake() + { + Debug.Log("Overlay Awake"); + + if (tex2DMaterial == null) + tex2DMaterial = new Material(Shader.Find("Oculus/Texture2D Blit")); + + if (cubeMaterial == null) + cubeMaterial = new Material(Shader.Find("Oculus/Cubemap Blit")); + + rend = GetComponent(); + + if (textures.Length == 0) + textures = new Texture[] { null }; + + // Backward compatibility + if (rend != null && textures[0] == null) + textures[0] = rend.material.mainTexture; + } + + static public string OpenVROverlayKey { get { return "unity:" + Application.companyName + "." + Application.productName; } } + private ulong OpenVROverlayHandle = OVR.OpenVR.OpenVR.k_ulOverlayHandleInvalid; + + void OnEnable() + { + if (OVRManager.OVRManagerinitialized) + InitOVROverlay(); + } + + void InitOVROverlay() + { + if (!OVRManager.isHmdPresent) + { + enabled = false; + return; + } + + constructedOverlayXRDevice = OVRManager.XRDevice.Unknown; + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + OVR.OpenVR.CVROverlay overlay = OVR.OpenVR.OpenVR.Overlay; + if (overlay != null) + { + OVR.OpenVR.EVROverlayError error = overlay.CreateOverlay(OpenVROverlayKey + transform.name, gameObject.name, ref OpenVROverlayHandle); + if (error != OVR.OpenVR.EVROverlayError.None) + { + enabled = false; + return; + } + } + else + { + enabled = false; + return; + } + } + + constructedOverlayXRDevice = OVRManager.loadedXRDevice; + xrDeviceConstructed = true; + } + + void OnDisable() + { + if ((gameObject.hideFlags & HideFlags.DontSaveInBuild) != 0) + return; + + if (!OVRManager.OVRManagerinitialized) + return; + + if (OVRManager.loadedXRDevice != constructedOverlayXRDevice) + return; + + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.Oculus) + { + DestroyLayerTextures(); + DestroyLayer(); + } + else if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + if (OpenVROverlayHandle != OVR.OpenVR.OpenVR.k_ulOverlayHandleInvalid) + { + OVR.OpenVR.CVROverlay overlay = OVR.OpenVR.OpenVR.Overlay; + if (overlay != null) + { + overlay.DestroyOverlay(OpenVROverlayHandle); + } + OpenVROverlayHandle = OVR.OpenVR.OpenVR.k_ulOverlayHandleInvalid; + } + } + constructedOverlayXRDevice = OVRManager.XRDevice.Unknown; + xrDeviceConstructed = false; + } + + void OnDestroy() + { + DestroyLayerTextures(); + DestroyLayer(); + } + + bool ComputeSubmit(ref OVRPose pose, ref Vector3 scale, ref bool overlay, ref bool headLocked) + { + Camera headCamera = Camera.main; + + overlay = (currentOverlayType == OverlayType.Overlay); + headLocked = false; + for (var t = transform; t != null && !headLocked; t = t.parent) + headLocked |= (t == headCamera.transform); + + pose = (headLocked) ? transform.ToHeadSpacePose(headCamera) : transform.ToTrackingSpacePose(headCamera); + scale = transform.lossyScale; + for (int i = 0; i < 3; ++i) + scale[i] /= headCamera.transform.lossyScale[i]; + + if (currentOverlayShape == OverlayShape.Cubemap) + { +#if UNITY_ANDROID && !UNITY_EDITOR + //HACK: VRAPI cubemaps assume are yawed 180 degrees relative to LibOVR. + pose.orientation = pose.orientation * Quaternion.AngleAxis(180, Vector3.up); +#endif + pose.position = headCamera.transform.position; + } + + // Pack the offsetCenter directly into pose.position for offcenterCubemap + if (currentOverlayShape == OverlayShape.OffcenterCubemap) + { + pose.position = transform.position; + if (pose.position.magnitude > 1.0f) + { + Debug.LogWarning("Your cube map center offset's magnitude is greater than 1, which will cause some cube map pixel always invisible ."); + return false; + } + } + + // Cylinder overlay sanity checking + if (currentOverlayShape == OverlayShape.Cylinder) + { + float arcAngle = scale.x / scale.z / (float)Math.PI * 180.0f; + if (arcAngle > 180.0f) + { + Debug.LogWarning("Cylinder overlay's arc angle has to be below 180 degree, current arc angle is " + arcAngle + " degree." ); + return false; + } + } + + return true; + } + + void OpenVROverlayUpdate(Vector3 scale, OVRPose pose) + { + OVR.OpenVR.CVROverlay overlayRef = OVR.OpenVR.OpenVR.Overlay; + if (overlayRef == null) + return; + + Texture overlayTex = textures[0]; + + if (overlayTex != null) + { + OVR.OpenVR.EVROverlayError error = overlayRef.ShowOverlay(OpenVROverlayHandle); + if (error == OVR.OpenVR.EVROverlayError.InvalidHandle || error == OVR.OpenVR.EVROverlayError.UnknownOverlay) + { + if (overlayRef.FindOverlay(OpenVROverlayKey + transform.name, ref OpenVROverlayHandle) != OVR.OpenVR.EVROverlayError.None) + return; + } + + OVR.OpenVR.Texture_t tex = new OVR.OpenVR.Texture_t(); + tex.handle = overlayTex.GetNativeTexturePtr(); + tex.eType = SystemInfo.graphicsDeviceVersion.StartsWith("OpenGL") ? OVR.OpenVR.ETextureType.OpenGL : OVR.OpenVR.ETextureType.DirectX; + tex.eColorSpace = OVR.OpenVR.EColorSpace.Auto; + overlayRef.SetOverlayTexture(OpenVROverlayHandle, ref tex); + + OVR.OpenVR.VRTextureBounds_t textureBounds = new OVR.OpenVR.VRTextureBounds_t(); + textureBounds.uMin = (0 + OpenVRUVOffsetAndScale.x) * OpenVRUVOffsetAndScale.z; + textureBounds.vMin = (1 + OpenVRUVOffsetAndScale.y) * OpenVRUVOffsetAndScale.w; + textureBounds.uMax = (1 + OpenVRUVOffsetAndScale.x) * OpenVRUVOffsetAndScale.z; + textureBounds.vMax = (0 + OpenVRUVOffsetAndScale.y) * OpenVRUVOffsetAndScale.w; + + overlayRef.SetOverlayTextureBounds(OpenVROverlayHandle, ref textureBounds); + + OVR.OpenVR.HmdVector2_t vecMouseScale = new OVR.OpenVR.HmdVector2_t(); + vecMouseScale.v0 = OpenVRMouseScale.x; + vecMouseScale.v1 = OpenVRMouseScale.y; + overlayRef.SetOverlayMouseScale(OpenVROverlayHandle, ref vecMouseScale); + + overlayRef.SetOverlayWidthInMeters(OpenVROverlayHandle, scale.x); + + Matrix4x4 mat44 = Matrix4x4.TRS(pose.position, pose.orientation, Vector3.one); + + OVR.OpenVR.HmdMatrix34_t pose34 = mat44.ConvertToHMDMatrix34(); + + overlayRef.SetOverlayTransformAbsolute(OpenVROverlayHandle, OVR.OpenVR.ETrackingUniverseOrigin.TrackingUniverseStanding, ref pose34); + + } + } + + private Vector4 OpenVRUVOffsetAndScale = new Vector4(0, 0, 1.0f, 1.0f); + private Vector2 OpenVRMouseScale = new Vector2(1, 1); + private OVRManager.XRDevice constructedOverlayXRDevice; + private bool xrDeviceConstructed = false; + + void LateUpdate() + { + if (!OVRManager.OVRManagerinitialized) + return; + if (!xrDeviceConstructed) + { + InitOVROverlay(); + } + + if (OVRManager.loadedXRDevice != constructedOverlayXRDevice) + { + Debug.LogError("Warning-XR Device was switched during runtime with overlays still enabled. When doing so, all overlays constructed with the previous XR device must first be disabled."); + return; + } + // The overlay must be specified every eye frame, because it is positioned relative to the + // current head location. If frames are dropped, it will be time warped appropriately, + // just like the eye buffers. + if (currentOverlayType == OverlayType.None || ((textures.Length < texturesPerStage || textures[0] == null) && !isExternalSurface)) + return; + + OVRPose pose = OVRPose.identity; + Vector3 scale = Vector3.one; + bool overlay = false; + bool headLocked = false; + if (!ComputeSubmit(ref pose, ref scale, ref overlay, ref headLocked)) + return; + + if (OVRManager.loadedXRDevice == OVRManager.XRDevice.OpenVR) + { + if (currentOverlayShape == OverlayShape.Quad) + OpenVROverlayUpdate(scale, pose); + //No more Overlay processing is required if we're on OpenVR + return; + } + + OVRPlugin.LayerDesc newDesc = GetCurrentLayerDesc(); + bool isHdr = (newDesc.Format == OVRPlugin.EyeTextureFormat.R16G16B16A16_FP); + + // If the layer and textures are created but sizes differ, force re-creating them + if (!layerDesc.TextureSize.Equals(newDesc.TextureSize) && layerId > 0) + { + DestroyLayerTextures(); + DestroyLayer(); + } + + bool createdLayer = CreateLayer(newDesc.MipLevels, newDesc.SampleCount, newDesc.Format, newDesc.LayerFlags, newDesc.TextureSize, newDesc.Shape); + + if (layerIndex == -1 || layerId <= 0) + return; + + bool useMipmaps = (newDesc.MipLevels > 1); + + createdLayer |= CreateLayerTextures(useMipmaps, newDesc.TextureSize, isHdr); + + if (!isExternalSurface && (layerTextures[0].appTexture as RenderTexture != null)) + isDynamic = true; + + if (!LatchLayerTextures()) + return; + + // Don't populate the same frame image twice. + if (frameIndex > prevFrameIndex) + { + int stage = frameIndex % stageCount; + if (!PopulateLayer (newDesc.MipLevels, isHdr, newDesc.TextureSize, newDesc.SampleCount, stage)) + return; + } + + bool isOverlayVisible = SubmitLayer(overlay, headLocked, noDepthBufferTesting, pose, scale, frameIndex); + + prevFrameIndex = frameIndex; + if (isDynamic) + ++frameIndex; + + // Backward compatibility: show regular renderer if overlay isn't visible. + if (rend) + rend.enabled = !isOverlayVisible; + } + +#endregion +} diff --git a/Assets/Oculus/VR/Scripts/OVROverlay.cs.meta b/Assets/Oculus/VR/Scripts/OVROverlay.cs.meta new file mode 100644 index 0000000..103c885 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVROverlay.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4444ce35d262aa648ad0c425a559b931 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs b/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs new file mode 100644 index 0000000..a6efd19 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs @@ -0,0 +1,124 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using VR = UnityEngine.VR; +using System.Collections; +using System.Collections.Generic; + +/// +/// Shows the Oculus plaform UI. +/// +public class OVRPlatformMenu : MonoBehaviour +{ + /// + /// The key code. + /// + private OVRInput.RawButton inputCode = OVRInput.RawButton.Back; + + public enum eHandler + { + ShowConfirmQuit, + RetreatOneLevel, + }; + + public eHandler shortPressHandler = eHandler.ShowConfirmQuit; + + /// + /// Callback to handle short press. Returns true if ConfirmQuit menu should be shown. + /// + public System.Func OnShortPress; + private static Stack sceneStack = new Stack(); + + enum eBackButtonAction + { + NONE, + SHORT_PRESS + }; + + eBackButtonAction HandleBackButtonState() + { + eBackButtonAction action = eBackButtonAction.NONE; + + if (OVRInput.GetDown(inputCode)) + { + action = eBackButtonAction.SHORT_PRESS; + } + + return action; + } + + /// + /// Instantiate the cursor timer + /// + void Awake() + { + if (shortPressHandler == eHandler.RetreatOneLevel && OnShortPress == null) + OnShortPress = RetreatOneLevel; + + if (!OVRManager.isHmdPresent) + { + enabled = false; + return; + } + + sceneStack.Push(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name); + } + + /// + /// Show the confirm quit menu + /// + void ShowConfirmQuitMenu() + { +#if UNITY_ANDROID && !UNITY_EDITOR + Debug.Log("[PlatformUI-ConfirmQuit] Showing @ " + Time.time); + OVRManager.PlatformUIConfirmQuit(); +#endif + } + + /// + /// Sample handler for short press which retreats to the previous scene that used OVRPlatformMenu. + /// + private static bool RetreatOneLevel() + { + if (sceneStack.Count > 1) + { + string parentScene = sceneStack.Pop(); + UnityEngine.SceneManagement.SceneManager.LoadSceneAsync (parentScene); + return false; + } + + return true; + } + + /// + /// Tests for long-press and activates global platform menu when detected. + /// as per the Unity integration doc, the back button responds to "mouse 1" button down/up/etc + /// + void Update() + { +#if UNITY_ANDROID + eBackButtonAction action = HandleBackButtonState(); + if (action == eBackButtonAction.SHORT_PRESS) + { + if (OnShortPress == null || OnShortPress()) + { + ShowConfirmQuitMenu(); + } + } +#endif + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs.meta b/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs.meta new file mode 100644 index 0000000..b5b9a79 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRPlatformMenu.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2afcf575f4a68de4db434c7b7233c451 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRPlugin.cs b/Assets/Oculus/VR/Scripts/OVRPlugin.cs new file mode 100644 index 0000000..a355526 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRPlugin.cs @@ -0,0 +1,4741 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if !(UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || (UNITY_ANDROID && !UNITY_EDITOR)) +#define OVRPLUGIN_UNSUPPORTED_PLATFORM +#endif + +#if UNITY_ANDROID && !UNITY_EDITOR +#define OVRPLUGIN_INCLUDE_MRC_ANDROID +#endif + +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +// Internal C# wrapper for OVRPlugin. + +public static class OVRPlugin +{ +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + public const bool isSupportedPlatform = false; +#else + public const bool isSupportedPlatform = true; +#endif + +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + public static readonly System.Version wrapperVersion = _versionZero; +#else + public static readonly System.Version wrapperVersion = OVRP_1_41_0.version; +#endif + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static System.Version _version; +#endif + public static System.Version version + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + Debug.LogWarning("Platform is not currently supported by OVRPlugin"); + return _versionZero; +#else + if (_version == null) + { + try + { + string pluginVersion = OVRP_1_1_0.ovrp_GetVersion(); + + if (pluginVersion != null) + { + // Truncate unsupported trailing version info for System.Version. Original string is returned if not present. + pluginVersion = pluginVersion.Split('-')[0]; + _version = new System.Version(pluginVersion); + } + else + { + _version = _versionZero; + } + } + catch + { + _version = _versionZero; + } + + // Unity 5.1.1f3-p3 have OVRPlugin version "0.5.0", which isn't accurate. + if (_version == OVRP_0_5_0.version) + _version = OVRP_0_1_0.version; + + if (_version > _versionZero && _version < OVRP_1_3_0.version) + throw new PlatformNotSupportedException("Oculus Utilities version " + wrapperVersion + " is too new for OVRPlugin version " + _version.ToString() + ". Update to the latest version of Unity."); + } + + return _version; +#endif + } + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static System.Version _nativeSDKVersion; +#endif + public static System.Version nativeSDKVersion + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return _versionZero; +#else + if (_nativeSDKVersion == null) + { + try + { + string sdkVersion = string.Empty; + + if (version >= OVRP_1_1_0.version) + sdkVersion = OVRP_1_1_0.ovrp_GetNativeSDKVersion(); + else + sdkVersion = _versionZero.ToString(); + + if (sdkVersion != null) + { + // Truncate unsupported trailing version info for System.Version. Original string is returned if not present. + sdkVersion = sdkVersion.Split('-')[0]; + _nativeSDKVersion = new System.Version(sdkVersion); + } + else + { + _nativeSDKVersion = _versionZero; + } + } + catch + { + _nativeSDKVersion = _versionZero; + } + } + + return _nativeSDKVersion; +#endif + } + } + + [StructLayout(LayoutKind.Sequential)] + private class GUID + { + public int a; + public short b; + public short c; + public byte d0; + public byte d1; + public byte d2; + public byte d3; + public byte d4; + public byte d5; + public byte d6; + public byte d7; + } + + public enum Bool + { + False = 0, + True + } + + public enum Result + { + /// Success + Success = 0, + + /// Failure + Failure = -1000, + Failure_InvalidParameter = -1001, + Failure_NotInitialized = -1002, + Failure_InvalidOperation = -1003, + Failure_Unsupported = -1004, + Failure_NotYetImplemented = -1005, + Failure_OperationFailed = -1006, + Failure_InsufficientSize = -1007, + } + + public enum CameraStatus + { + CameraStatus_None, + CameraStatus_Connected, + CameraStatus_Calibrating, + CameraStatus_CalibrationFailed, + CameraStatus_Calibrated, + CameraStatus_EnumSize = 0x7fffffff + } + + public enum Eye + { + None = -1, + Left = 0, + Right = 1, + Count = 2 + } + + public enum Tracker + { + None = -1, + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Count, + } + + public enum Node + { + None = -1, + EyeLeft = 0, + EyeRight = 1, + EyeCenter = 2, + HandLeft = 3, + HandRight = 4, + TrackerZero = 5, + TrackerOne = 6, + TrackerTwo = 7, + TrackerThree = 8, + Head = 9, + DeviceObjectZero = 10, + Count, + } + + public enum Controller + { + None = 0, + LTouch = 0x00000001, + RTouch = 0x00000002, + Touch = LTouch | RTouch, + Remote = 0x00000004, + Gamepad = 0x00000010, + Touchpad = 0x08000000, + LTrackedRemote = 0x01000000, + RTrackedRemote = 0x02000000, + Active = unchecked((int)0x80000000), + All = ~None, + } + + public enum Handedness + { + Unsupported = 0, + LeftHanded = 1, + RightHanded = 2, + } + + public enum TrackingOrigin + { + EyeLevel = 0, + FloorLevel = 1, + Stage = 2, + Count, + } + + public enum RecenterFlags + { + Default = 0, + Controllers = 0x40000000, + IgnoreAll = unchecked((int)0x80000000), + Count, + } + + public enum BatteryStatus + { + Charging = 0, + Discharging, + Full, + NotCharging, + Unknown, + } + + public enum EyeTextureFormat + { + Default = 0, + R8G8B8A8_sRGB = 0, + R8G8B8A8 = 1, + R16G16B16A16_FP = 2, + R11G11B10_FP = 3, + B8G8R8A8_sRGB = 4, + B8G8R8A8 = 5, + R5G6B5 = 11, + EnumSize = 0x7fffffff + } + + public enum PlatformUI + { + None = -1, + ConfirmQuit = 1, + GlobalMenuTutorial, // Deprecated + } + + public enum SystemRegion + { + Unspecified = 0, + Japan, + China, + } + + public enum SystemHeadset + { + None = 0, + GearVR_R320, // Note4 Innovator + GearVR_R321, // S6 Innovator + GearVR_R322, // Commercial 1 + GearVR_R323, // Commercial 2 (USB Type C) + GearVR_R324, // Commercial 3 (USB Type C) + GearVR_R325, // Commercial 4 (USB Type C) + Oculus_Go, + Oculus_Quest, + + Rift_DK1 = 0x1000, + Rift_DK2, + Rift_CV1, + Rift_CB, + Rift_S, + } + + public enum OverlayShape + { + Quad = 0, + Cylinder = 1, + Cubemap = 2, + OffcenterCubemap = 4, + Equirect = 5, + } + + public enum Step + { + Render = -1, + Physics = 0, + } + + public enum CameraDevice + { + None = 0, + WebCamera0 = 100, + WebCamera1 = 101, + ZEDCamera = 300, + } + + public enum CameraDeviceDepthSensingMode + { + Standard = 0, + Fill = 1, + } + + public enum CameraDeviceDepthQuality + { + Low = 0, + Medium = 1, + High = 2, + } + + public enum FixedFoveatedRenderingLevel + { + Off = 0, + Low = 1, + Medium = 2, + High = 3, + // High foveation setting with more detail toward the bottom of the view and more foveation near the top (Same as High on Oculus Go) + HighTop = 4, + EnumSize = 0x7FFFFFFF + } + + [Obsolete("Please use FixedFoveatedRenderingLevel instead", false)] + public enum TiledMultiResLevel + { + Off = 0, + LMSLow = FixedFoveatedRenderingLevel.Low, + LMSMedium = FixedFoveatedRenderingLevel.Medium, + LMSHigh = FixedFoveatedRenderingLevel.High, + // High foveation setting with more detail toward the bottom of the view and more foveation near the top (Same as High on Oculus Go) + LMSHighTop = FixedFoveatedRenderingLevel.HighTop, + EnumSize = 0x7FFFFFFF + } + + public enum PerfMetrics + { + App_CpuTime_Float = 0, + App_GpuTime_Float = 1, + + Compositor_CpuTime_Float = 3, + Compositor_GpuTime_Float = 4, + Compositor_DroppedFrameCount_Int = 5, + + System_GpuUtilPercentage_Float = 7, + System_CpuUtilAveragePercentage_Float = 8, + System_CpuUtilWorstPercentage_Float = 9, + + // 1.32.0 + Device_CpuClockFrequencyInMHz_Float = 10, + Device_GpuClockFrequencyInMHz_Float = 11, + Device_CpuClockLevel_Int = 12, + Device_GpuClockLevel_Int = 13, + + Count, + EnumSize = 0x7FFFFFFF + } + + [StructLayout(LayoutKind.Sequential)] + public struct CameraDeviceIntrinsicsParameters + { + float fx; /* Focal length in pixels along x axis. */ + float fy; /* Focal length in pixels along y axis. */ + float cx; /* Optical center along x axis, defined in pixels (usually close to width/2). */ + float cy; /* Optical center along y axis, defined in pixels (usually close to height/2). */ + double disto0; /* Distortion factor : [ k1, k2, p1, p2, k3 ]. Radial (k1,k2,k3) and Tangential (p1,p2) distortion.*/ + double disto1; + double disto2; + double disto3; + double disto4; + float v_fov; /* Vertical field of view after stereo rectification, in degrees. */ + float h_fov; /* Horizontal field of view after stereo rectification, in degrees.*/ + float d_fov; /* Diagonal field of view after stereo rectification, in degrees.*/ + int w; /* Resolution width */ + int h; /* Resolution height */ + } + + private const int OverlayShapeFlagShift = 4; + private enum OverlayFlag + { + None = unchecked((int)0x00000000), + OnTop = unchecked((int)0x00000001), + HeadLocked = unchecked((int)0x00000002), + NoDepth = unchecked((int)0x00000004), + ExpensiveSuperSample = unchecked((int)0x00000008), + + // Using the 5-8 bits for shapes, total 16 potential shapes can be supported 0x000000[0]0 -> 0x000000[F]0 + ShapeFlag_Quad = unchecked((int)OverlayShape.Quad << OverlayShapeFlagShift), + ShapeFlag_Cylinder = unchecked((int)OverlayShape.Cylinder << OverlayShapeFlagShift), + ShapeFlag_Cubemap = unchecked((int)OverlayShape.Cubemap << OverlayShapeFlagShift), + ShapeFlag_OffcenterCubemap = unchecked((int)OverlayShape.OffcenterCubemap << OverlayShapeFlagShift), + ShapeFlagRangeMask = unchecked((int)0xF << OverlayShapeFlagShift), + } + + [StructLayout(LayoutKind.Sequential)] + public struct Vector2f + { + public float x; + public float y; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Vector3f + { + public float x; + public float y; + public float z; + public static readonly Vector3f zero = new Vector3f { x = 0.0f, y = 0.0f, z = 0.0f }; + public override string ToString() + { + return string.Format("{0}, {1}, {2}", x, y, z); + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct Quatf + { + public float x; + public float y; + public float z; + public float w; + public static readonly Quatf identity = new Quatf { x = 0.0f, y = 0.0f, z = 0.0f, w = 1.0f }; + public override string ToString() + { + return string.Format("{0}, {1}, {2}, {3}", x, y, z, w); + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct Posef + { + public Quatf Orientation; + public Vector3f Position; + public static readonly Posef identity = new Posef { Orientation = Quatf.identity, Position = Vector3f.zero }; + public override string ToString() + { + return string.Format("Position ({0}), Orientation({1})", Position, Orientation); + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct TextureRectMatrixf + { + public Rect leftRect; + public Rect rightRect; + public Vector4 leftScaleBias; + public Vector4 rightScaleBias; + public static readonly TextureRectMatrixf zero = new TextureRectMatrixf { leftRect = new Rect(0, 0, 1, 1), rightRect = new Rect(0, 0, 1, 1), leftScaleBias = new Vector4(1, 1, 0, 0), rightScaleBias = new Vector4(1, 1, 0, 0) }; + + public override string ToString() + { + return string.Format("Rect Left ({0}), Rect Right({1}), Scale Bias Left ({2}), Scale Bias Right({3})", leftRect, rightRect, leftScaleBias, rightScaleBias); + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct PoseStatef + { + public Posef Pose; + public Vector3f Velocity; + public Vector3f Acceleration; + public Vector3f AngularVelocity; + public Vector3f AngularAcceleration; + public double Time; + + public static readonly PoseStatef identity = new PoseStatef + { + Pose = Posef.identity, + Velocity = Vector3f.zero, + Acceleration = Vector3f.zero, + AngularVelocity = Vector3f.zero, + AngularAcceleration = Vector3f.zero + }; + } + + [StructLayout(LayoutKind.Sequential)] + public struct ControllerState4 + { + public uint ConnectedControllers; + public uint Buttons; + public uint Touches; + public uint NearTouches; + public float LIndexTrigger; + public float RIndexTrigger; + public float LHandTrigger; + public float RHandTrigger; + public Vector2f LThumbstick; + public Vector2f RThumbstick; + public Vector2f LTouchpad; + public Vector2f RTouchpad; + public byte LBatteryPercentRemaining; + public byte RBatteryPercentRemaining; + public byte LRecenterCount; + public byte RRecenterCount; + public byte Reserved_27; + public byte Reserved_26; + public byte Reserved_25; + public byte Reserved_24; + public byte Reserved_23; + public byte Reserved_22; + public byte Reserved_21; + public byte Reserved_20; + public byte Reserved_19; + public byte Reserved_18; + public byte Reserved_17; + public byte Reserved_16; + public byte Reserved_15; + public byte Reserved_14; + public byte Reserved_13; + public byte Reserved_12; + public byte Reserved_11; + public byte Reserved_10; + public byte Reserved_09; + public byte Reserved_08; + public byte Reserved_07; + public byte Reserved_06; + public byte Reserved_05; + public byte Reserved_04; + public byte Reserved_03; + public byte Reserved_02; + public byte Reserved_01; + public byte Reserved_00; + + public ControllerState4(ControllerState2 cs) + { + ConnectedControllers = cs.ConnectedControllers; + Buttons = cs.Buttons; + Touches = cs.Touches; + NearTouches = cs.NearTouches; + LIndexTrigger = cs.LIndexTrigger; + RIndexTrigger = cs.RIndexTrigger; + LHandTrigger = cs.LHandTrigger; + RHandTrigger = cs.RHandTrigger; + LThumbstick = cs.LThumbstick; + RThumbstick = cs.RThumbstick; + LTouchpad = cs.LTouchpad; + RTouchpad = cs.RTouchpad; + LBatteryPercentRemaining = 0; + RBatteryPercentRemaining = 0; + LRecenterCount = 0; + RRecenterCount = 0; + Reserved_27 = 0; + Reserved_26 = 0; + Reserved_25 = 0; + Reserved_24 = 0; + Reserved_23 = 0; + Reserved_22 = 0; + Reserved_21 = 0; + Reserved_20 = 0; + Reserved_19 = 0; + Reserved_18 = 0; + Reserved_17 = 0; + Reserved_16 = 0; + Reserved_15 = 0; + Reserved_14 = 0; + Reserved_13 = 0; + Reserved_12 = 0; + Reserved_11 = 0; + Reserved_10 = 0; + Reserved_09 = 0; + Reserved_08 = 0; + Reserved_07 = 0; + Reserved_06 = 0; + Reserved_05 = 0; + Reserved_04 = 0; + Reserved_03 = 0; + Reserved_02 = 0; + Reserved_01 = 0; + Reserved_00 = 0; + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct ControllerState2 + { + public uint ConnectedControllers; + public uint Buttons; + public uint Touches; + public uint NearTouches; + public float LIndexTrigger; + public float RIndexTrigger; + public float LHandTrigger; + public float RHandTrigger; + public Vector2f LThumbstick; + public Vector2f RThumbstick; + public Vector2f LTouchpad; + public Vector2f RTouchpad; + + public ControllerState2(ControllerState cs) + { + ConnectedControllers = cs.ConnectedControllers; + Buttons = cs.Buttons; + Touches = cs.Touches; + NearTouches = cs.NearTouches; + LIndexTrigger = cs.LIndexTrigger; + RIndexTrigger = cs.RIndexTrigger; + LHandTrigger = cs.LHandTrigger; + RHandTrigger = cs.RHandTrigger; + LThumbstick = cs.LThumbstick; + RThumbstick = cs.RThumbstick; + LTouchpad = new Vector2f() { x = 0.0f, y = 0.0f }; + RTouchpad = new Vector2f() { x = 0.0f, y = 0.0f }; + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct ControllerState + { + public uint ConnectedControllers; + public uint Buttons; + public uint Touches; + public uint NearTouches; + public float LIndexTrigger; + public float RIndexTrigger; + public float LHandTrigger; + public float RHandTrigger; + public Vector2f LThumbstick; + public Vector2f RThumbstick; + } + + [StructLayout(LayoutKind.Sequential)] + public struct HapticsBuffer + { + public IntPtr Samples; + public int SamplesCount; + } + + [StructLayout(LayoutKind.Sequential)] + public struct HapticsState + { + public int SamplesAvailable; + public int SamplesQueued; + } + + [StructLayout(LayoutKind.Sequential)] + public struct HapticsDesc + { + public int SampleRateHz; + public int SampleSizeInBytes; + public int MinimumSafeSamplesQueued; + public int MinimumBufferSamplesCount; + public int OptimalBufferSamplesCount; + public int MaximumBufferSamplesCount; + } + + [StructLayout(LayoutKind.Sequential)] + public struct AppPerfFrameStats + { + public int HmdVsyncIndex; + public int AppFrameIndex; + public int AppDroppedFrameCount; + public float AppMotionToPhotonLatency; + public float AppQueueAheadTime; + public float AppCpuElapsedTime; + public float AppGpuElapsedTime; + public int CompositorFrameIndex; + public int CompositorDroppedFrameCount; + public float CompositorLatency; + public float CompositorCpuElapsedTime; + public float CompositorGpuElapsedTime; + public float CompositorCpuStartToGpuEndElapsedTime; + public float CompositorGpuEndToVsyncElapsedTime; + } + + public const int AppPerfFrameStatsMaxCount = 5; + + [StructLayout(LayoutKind.Sequential)] + public struct AppPerfStats + { + [MarshalAs(UnmanagedType.ByValArray, SizeConst = AppPerfFrameStatsMaxCount)] + public AppPerfFrameStats[] FrameStats; + public int FrameStatsCount; + public Bool AnyFrameStatsDropped; + public float AdaptiveGpuPerformanceScale; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Sizei + { + public int w; + public int h; + + public static readonly Sizei zero = new Sizei { w = 0, h = 0 }; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Sizef + { + public float w; + public float h; + + public static readonly Sizef zero = new Sizef { w = 0, h = 0 }; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Vector2i + { + public int x; + public int y; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Recti { + Vector2i Pos; + Sizei Size; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Rectf { + Vector2f Pos; + Sizef Size; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Frustumf + { + public float zNear; + public float zFar; + public float fovX; + public float fovY; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Frustumf2 + { + public float zNear; + public float zFar; + public Fovf Fov; + } + + public enum BoundaryType + { + OuterBoundary = 0x0001, + PlayArea = 0x0100, + } + + [StructLayout(LayoutKind.Sequential)] + public struct BoundaryTestResult + { + public Bool IsTriggering; + public float ClosestDistance; + public Vector3f ClosestPoint; + public Vector3f ClosestPointNormal; + } + + [StructLayout(LayoutKind.Sequential)] + public struct BoundaryGeometry + { + public BoundaryType BoundaryType; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] + public Vector3f[] Points; + public int PointsCount; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Colorf + { + public float r; + public float g; + public float b; + public float a; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Fovf + { + public float UpTan; + public float DownTan; + public float LeftTan; + public float RightTan; + } + + [StructLayout(LayoutKind.Sequential)] + public struct CameraIntrinsics + { + public bool IsValid; + public double LastChangedTimeSeconds; + public Fovf FOVPort; + public float VirtualNearPlaneDistanceMeters; + public float VirtualFarPlaneDistanceMeters; + public Sizei ImageSensorPixelResolution; + } + + [StructLayout(LayoutKind.Sequential)] + public struct CameraExtrinsics + { + public bool IsValid; + public double LastChangedTimeSeconds; + public CameraStatus CameraStatusData; + public Node AttachedToNode; + public Posef RelativePose; + } + + public enum LayerLayout + { + Stereo = 0, + Mono = 1, + DoubleWide = 2, + Array = 3, + EnumSize = 0xF + } + + public enum LayerFlags + { + Static = (1 << 0), + LoadingScreen = (1 << 1), + SymmetricFov = (1 << 2), + TextureOriginAtBottomLeft = (1 << 3), + ChromaticAberrationCorrection = (1 << 4), + NoAllocation = (1 << 5), + ProtectedContent = (1 << 6), + AndroidSurfaceSwapChain = (1 << 7), + } + + [StructLayout(LayoutKind.Sequential)] + public struct LayerDesc + { + public OverlayShape Shape; + public LayerLayout Layout; + public Sizei TextureSize; + public int MipLevels; + public int SampleCount; + public EyeTextureFormat Format; + public int LayerFlags; + + //Eye FOV-only members. + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] + public Fovf[] Fov; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] + public Rectf[] VisibleRect; + public Sizei MaxViewportSize; + EyeTextureFormat DepthFormat; + + public override string ToString() + { + string delim = ", "; + return Shape.ToString() + + delim + Layout.ToString() + + delim + TextureSize.w.ToString() + "x" + TextureSize.h.ToString() + + delim + MipLevels.ToString() + + delim + SampleCount.ToString() + + delim + Format.ToString() + + delim + LayerFlags.ToString(); + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct LayerSubmit + { + int LayerId; + int TextureStage; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] + Recti[] ViewportRect; + Posef Pose; + int LayerSubmitFlags; + } + + public static bool initialized + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_GetInitialized() == OVRPlugin.Bool.True; +#endif + } + } + + public static bool chromatic + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_7_0.version) + return initialized && OVRP_1_7_0.ovrp_GetAppChromaticCorrection() == OVRPlugin.Bool.True; + +#if UNITY_ANDROID && !UNITY_EDITOR + return false; +#else + return true; +#endif +#endif + } + + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (initialized && version >= OVRP_1_7_0.version) + OVRP_1_7_0.ovrp_SetAppChromaticCorrection(ToBool(value)); +#endif + } + } + + public static bool monoscopic + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetAppMonoscopic() == OVRPlugin.Bool.True; +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (initialized) + { + OVRP_1_1_0.ovrp_SetAppMonoscopic(ToBool(value)); + } +#endif + } + } + + public static bool rotation + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetTrackingOrientationEnabled() == Bool.True; +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (initialized) + { + OVRP_1_1_0.ovrp_SetTrackingOrientationEnabled(ToBool(value)); + } +#endif + } + } + + public static bool position + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetTrackingPositionEnabled() == Bool.True; +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (initialized) + { + OVRP_1_1_0.ovrp_SetTrackingPositionEnabled(ToBool(value)); + } +#endif + } + } + + public static bool useIPDInPositionTracking + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (initialized && version >= OVRP_1_6_0.version) + return OVRP_1_6_0.ovrp_GetTrackingIPDEnabled() == OVRPlugin.Bool.True; + + return true; +#endif + } + + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (initialized && version >= OVRP_1_6_0.version) + OVRP_1_6_0.ovrp_SetTrackingIPDEnabled(ToBool(value)); +#endif + } + } + + public static bool positionSupported + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetTrackingPositionSupported() == Bool.True; +#endif + } + } + + public static bool positionTracked + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetNodePositionTracked(Node.EyeCenter) == Bool.True; +#endif + } + } + + public static bool powerSaving + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetSystemPowerSavingMode() == Bool.True; +#endif + } + } + + public static bool hmdPresent + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetNodePresent(Node.EyeCenter) == Bool.True; +#endif + } + } + + public static bool userPresent + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_1_0.ovrp_GetUserPresent() == Bool.True; +#endif + } + } + + public static bool headphonesPresent + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && OVRP_1_3_0.ovrp_GetSystemHeadphonesPresent() == OVRPlugin.Bool.True; +#endif + } + } + + public static int recommendedMSAALevel + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 2; +#else + if (initialized && version >= OVRP_1_6_0.version) + return OVRP_1_6_0.ovrp_GetSystemRecommendedMSAALevel(); + else + return 2; +#endif + } + } + + public static SystemRegion systemRegion + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return SystemRegion.Unspecified; +#else + if (initialized && version >= OVRP_1_5_0.version) + return OVRP_1_5_0.ovrp_GetSystemRegion(); + else + return SystemRegion.Unspecified; +#endif + } + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static GUID _nativeAudioOutGuid = new OVRPlugin.GUID(); + private static Guid _cachedAudioOutGuid; + private static string _cachedAudioOutString; +#endif + + public static string audioOutId + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return string.Empty; +#else + try + { + if (_nativeAudioOutGuid == null) + _nativeAudioOutGuid = new OVRPlugin.GUID(); + + IntPtr ptr = OVRP_1_1_0.ovrp_GetAudioOutId(); + if (ptr != IntPtr.Zero) + { + Marshal.PtrToStructure(ptr, _nativeAudioOutGuid); + Guid managedGuid = new Guid( + _nativeAudioOutGuid.a, + _nativeAudioOutGuid.b, + _nativeAudioOutGuid.c, + _nativeAudioOutGuid.d0, + _nativeAudioOutGuid.d1, + _nativeAudioOutGuid.d2, + _nativeAudioOutGuid.d3, + _nativeAudioOutGuid.d4, + _nativeAudioOutGuid.d5, + _nativeAudioOutGuid.d6, + _nativeAudioOutGuid.d7); + + if (managedGuid != _cachedAudioOutGuid) + { + _cachedAudioOutGuid = managedGuid; + _cachedAudioOutString = _cachedAudioOutGuid.ToString(); + } + + return _cachedAudioOutString; + } + } + catch { } + + return string.Empty; +#endif + } + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static GUID _nativeAudioInGuid = new OVRPlugin.GUID(); + private static Guid _cachedAudioInGuid; + private static string _cachedAudioInString; +#endif + + public static string audioInId + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return string.Empty; +#else + try + { + if (_nativeAudioInGuid == null) + _nativeAudioInGuid = new OVRPlugin.GUID(); + + IntPtr ptr = OVRP_1_1_0.ovrp_GetAudioInId(); + if (ptr != IntPtr.Zero) + { + Marshal.PtrToStructure(ptr, _nativeAudioInGuid); + Guid managedGuid = new Guid( + _nativeAudioInGuid.a, + _nativeAudioInGuid.b, + _nativeAudioInGuid.c, + _nativeAudioInGuid.d0, + _nativeAudioInGuid.d1, + _nativeAudioInGuid.d2, + _nativeAudioInGuid.d3, + _nativeAudioInGuid.d4, + _nativeAudioInGuid.d5, + _nativeAudioInGuid.d6, + _nativeAudioInGuid.d7); + + if (managedGuid != _cachedAudioInGuid) + { + _cachedAudioInGuid = managedGuid; + _cachedAudioInString = _cachedAudioInGuid.ToString(); + } + + return _cachedAudioInString; + } + } + catch { } + + return string.Empty; +#endif + } + } + + public static bool hasVrFocus + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_GetAppHasVrFocus() == Bool.True; +#endif + } + } + + public static bool hasInputFocus + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return true; +#else + if (version >= OVRP_1_18_0.version) + { + Bool inputFocus = Bool.False; + Result result = OVRP_1_18_0.ovrp_GetAppHasInputFocus(out inputFocus); + if (Result.Success == result) + return inputFocus == Bool.True; + else + { + //Debug.LogWarning("ovrp_GetAppHasInputFocus return " + result); + return false; + } + } + + return true; +#endif + } + } + + public static bool shouldQuit + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_GetAppShouldQuit() == Bool.True; +#endif + } + } + + public static bool shouldRecenter + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_GetAppShouldRecenter() == Bool.True; +#endif + } + } + + public static string productName + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return string.Empty; +#else + return OVRP_1_1_0.ovrp_GetSystemProductName(); +#endif + } + } + + public static string latency + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return string.Empty; +#else + if (!initialized) + return string.Empty; + + return OVRP_1_1_0.ovrp_GetAppLatencyTimings(); +#endif + } + } + + public static float eyeDepth + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + if (!initialized) + return 0.0f; + + return OVRP_1_1_0.ovrp_GetUserEyeDepth(); +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + OVRP_1_1_0.ovrp_SetUserEyeDepth(value); +#endif + } + } + + public static float eyeHeight + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + return OVRP_1_1_0.ovrp_GetUserEyeHeight(); +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + OVRP_1_1_0.ovrp_SetUserEyeHeight(value); +#endif + } + } + + public static float batteryLevel + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + return OVRP_1_1_0.ovrp_GetSystemBatteryLevel(); +#endif + } + } + + public static float batteryTemperature + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + return OVRP_1_1_0.ovrp_GetSystemBatteryTemperature(); +#endif + } + } + + public static int cpuLevel + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0; +#else + return OVRP_1_1_0.ovrp_GetSystemCpuLevel(); +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + OVRP_1_1_0.ovrp_SetSystemCpuLevel(value); +#endif + } + } + + public static int gpuLevel + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0; +#else + return OVRP_1_1_0.ovrp_GetSystemGpuLevel(); +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + OVRP_1_1_0.ovrp_SetSystemGpuLevel(value); +#endif + } + } + + public static int vsyncCount + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0; +#else + return OVRP_1_1_0.ovrp_GetSystemVSyncCount(); +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + OVRP_1_2_0.ovrp_SetSystemVSyncCount(value); +#endif + } + } + + public static float systemVolume + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + return OVRP_1_1_0.ovrp_GetSystemVolume(); +#endif + } + } + + public static float ipd + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + return OVRP_1_1_0.ovrp_GetUserIPD(); +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + OVRP_1_1_0.ovrp_SetUserIPD(value); +#endif + } + } + + public static bool occlusionMesh + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return initialized && (OVRP_1_3_0.ovrp_GetEyeOcclusionMeshEnabled() == Bool.True); +#endif + } + set { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (!initialized) + return; + + OVRP_1_3_0.ovrp_SetEyeOcclusionMeshEnabled(ToBool(value)); +#endif + } + } + + public static BatteryStatus batteryStatus + { + get { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return default(BatteryStatus); +#else + return OVRP_1_1_0.ovrp_GetSystemBatteryStatus(); +#endif + } + } + + public static Frustumf GetEyeFrustum(Eye eyeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Frustumf(); +#else + return OVRP_1_1_0.ovrp_GetNodeFrustum((Node)eyeId); +#endif + } + + public static Sizei GetEyeTextureSize(Eye eyeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Sizei(); +#else + return OVRP_0_1_0.ovrp_GetEyeTextureSize(eyeId); +#endif + } + + public static Posef GetTrackerPose(Tracker trackerId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + return GetNodePose((Node)((int)trackerId + (int)Node.TrackerZero), Step.Render); +#endif + } + + public static Frustumf GetTrackerFrustum(Tracker trackerId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Frustumf(); +#else + return OVRP_1_1_0.ovrp_GetNodeFrustum((Node)((int)trackerId + (int)Node.TrackerZero)); +#endif + } + + public static bool ShowUI(PlatformUI ui) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_ShowSystemUI(ui) == Bool.True; +#endif + } + + public static bool EnqueueSubmitLayer(bool onTop, bool headLocked, bool noDepthBufferTesting, IntPtr leftTexture, IntPtr rightTexture, int layerId, int frameIndex, Posef pose, Vector3f scale, int layerIndex = 0, OverlayShape shape = OverlayShape.Quad, + bool overrideTextureRectMatrix = false, TextureRectMatrixf textureRectMatrix = default(TextureRectMatrixf), bool overridePerLayerColorScaleAndOffset = false, Vector4 colorScale = default(Vector4), Vector4 colorOffset = default(Vector4), + bool expensiveSuperSample = false) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (!initialized) + return false; + + if (version >= OVRP_1_6_0.version) + { + uint flags = (uint)OverlayFlag.None; + if (onTop) + flags |= (uint)OverlayFlag.OnTop; + if (headLocked) + flags |= (uint)OverlayFlag.HeadLocked; + if (noDepthBufferTesting) + flags |= (uint)OverlayFlag.NoDepth; + if (expensiveSuperSample) + flags |= (uint)OverlayFlag.ExpensiveSuperSample; + + if (shape == OverlayShape.Cylinder || shape == OverlayShape.Cubemap) + { +#if UNITY_ANDROID + if (version >= OVRP_1_7_0.version) + flags |= (uint)(shape) << OverlayShapeFlagShift; + else +#else + if (shape == OverlayShape.Cubemap && version >= OVRP_1_10_0.version) + flags |= (uint)(shape) << OverlayShapeFlagShift; + else if (shape == OverlayShape.Cylinder && version >= OVRP_1_16_0.version) + flags |= (uint)(shape) << OverlayShapeFlagShift; + else +#endif + return false; + } + + if (shape == OverlayShape.OffcenterCubemap) + { +#if UNITY_ANDROID + if (version >= OVRP_1_11_0.version) + flags |= (uint)(shape) << OverlayShapeFlagShift; + else +#endif + return false; + } + + if (shape == OverlayShape.Equirect) + { +#if UNITY_ANDROID + if (version >= OVRP_1_21_0.version) + flags |= (uint)(shape) << OverlayShapeFlagShift; + else +#endif + return false; + } + + if (version >= OVRP_1_34_0.version && layerId != -1) + return OVRP_1_34_0.ovrp_EnqueueSubmitLayer2(flags, leftTexture, rightTexture, layerId, frameIndex, ref pose, ref scale, layerIndex, + overrideTextureRectMatrix ? Bool.True : Bool.False, ref textureRectMatrix, overridePerLayerColorScaleAndOffset ? Bool.True : Bool.False, ref colorScale, ref colorOffset) == Result.Success; + else if (version >= OVRP_1_15_0.version && layerId != -1) + return OVRP_1_15_0.ovrp_EnqueueSubmitLayer(flags, leftTexture, rightTexture, layerId, frameIndex, ref pose, ref scale, layerIndex) == Result.Success; + + return OVRP_1_6_0.ovrp_SetOverlayQuad3(flags, leftTexture, rightTexture, IntPtr.Zero, pose, scale, layerIndex) == Bool.True; + } + + if (layerIndex != 0) + return false; + + return OVRP_0_1_1.ovrp_SetOverlayQuad2(ToBool(onTop), ToBool(headLocked), leftTexture, IntPtr.Zero, pose, scale) == Bool.True; +#endif + } + + public static LayerDesc CalculateLayerDesc(OverlayShape shape, LayerLayout layout, Sizei textureSize, + int mipLevels, int sampleCount, EyeTextureFormat format, int layerFlags) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new LayerDesc(); +#else + LayerDesc layerDesc = new LayerDesc(); + if (!initialized) + return layerDesc; + + if (version >= OVRP_1_15_0.version) + { + OVRP_1_15_0.ovrp_CalculateLayerDesc(shape, layout, ref textureSize, + mipLevels, sampleCount, format, layerFlags, ref layerDesc); + } + + return layerDesc; +#endif + } + + public static bool EnqueueSetupLayer(LayerDesc desc, int compositionDepth, IntPtr layerID) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (!initialized) + return false; + + if (version >= OVRP_1_28_0.version) + return OVRP_1_28_0.ovrp_EnqueueSetupLayer2(ref desc, compositionDepth, layerID) == Result.Success; + else if (version >= OVRP_1_15_0.version) + { + if (compositionDepth != 0) + { + Debug.LogWarning("Use Oculus Plugin 1.28.0 or above to support non-zero compositionDepth"); + } + return OVRP_1_15_0.ovrp_EnqueueSetupLayer(ref desc, layerID) == Result.Success; + } + + return false; +#endif + } + + public static bool EnqueueDestroyLayer(IntPtr layerID) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (!initialized) + return false; + if (version >= OVRP_1_15_0.version) + return OVRP_1_15_0.ovrp_EnqueueDestroyLayer(layerID) == Result.Success; + + return false; +#endif + } + + public static IntPtr GetLayerTexture(int layerId, int stage, Eye eyeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return IntPtr.Zero; +#else + IntPtr textureHandle = IntPtr.Zero; + if (!initialized) + return textureHandle; + + if (version >= OVRP_1_15_0.version) + OVRP_1_15_0.ovrp_GetLayerTexturePtr(layerId, stage, eyeId, ref textureHandle); + + return textureHandle; +#endif + } + + public static int GetLayerTextureStageCount(int layerId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 1; +#else + if (!initialized) + return 1; + + int stageCount = 1; + + if (version >= OVRP_1_15_0.version) + OVRP_1_15_0.ovrp_GetLayerTextureStageCount(layerId, ref stageCount); + + return stageCount; +#endif + } + + public static IntPtr GetLayerAndroidSurfaceObject(int layerId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return IntPtr.Zero; +#else + IntPtr surfaceObject = IntPtr.Zero; + if (!initialized) + return surfaceObject; + + if (version >= OVRP_1_29_0.version) + OVRP_1_29_0.ovrp_GetLayerAndroidSurfaceObject(layerId, ref surfaceObject); + + return surfaceObject; +#endif + } + + public static bool UpdateNodePhysicsPoses(int frameIndex, double predictionSeconds) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_8_0.version) + return OVRP_1_8_0.ovrp_Update2((int)Step.Physics, frameIndex, predictionSeconds) == Bool.True; + + return false; +#endif + } + + public static Posef GetNodePose(Node nodeId, Step stepId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + if (version >= OVRP_1_12_0.version) + return OVRP_1_12_0.ovrp_GetNodePoseState(stepId, nodeId).Pose; + + if (version >= OVRP_1_8_0.version && stepId == Step.Physics) + return OVRP_1_8_0.ovrp_GetNodePose2(0, nodeId); + + return OVRP_0_1_2.ovrp_GetNodePose(nodeId); +#endif + } + + public static Vector3f GetNodeVelocity(Node nodeId, Step stepId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Vector3f(); +#else + if (version >= OVRP_1_12_0.version) + return OVRP_1_12_0.ovrp_GetNodePoseState(stepId, nodeId).Velocity; + + if (version >= OVRP_1_8_0.version && stepId == Step.Physics) + return OVRP_1_8_0.ovrp_GetNodeVelocity2(0, nodeId).Position; + + return OVRP_0_1_3.ovrp_GetNodeVelocity(nodeId).Position; +#endif + } + + public static Vector3f GetNodeAngularVelocity(Node nodeId, Step stepId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Vector3f(); +#else + if (version >= OVRP_1_12_0.version) + return OVRP_1_12_0.ovrp_GetNodePoseState(stepId, nodeId).AngularVelocity; + + return new Vector3f(); //TODO: Convert legacy quat to vec3? +#endif + } + + public static Vector3f GetNodeAcceleration(Node nodeId, Step stepId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Vector3f(); +#else + if (version >= OVRP_1_12_0.version) + return OVRP_1_12_0.ovrp_GetNodePoseState(stepId, nodeId).Acceleration; + + if (version >= OVRP_1_8_0.version && stepId == Step.Physics) + return OVRP_1_8_0.ovrp_GetNodeAcceleration2(0, nodeId).Position; + + return OVRP_0_1_3.ovrp_GetNodeAcceleration(nodeId).Position; +#endif + } + + public static Vector3f GetNodeAngularAcceleration(Node nodeId, Step stepId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Vector3f(); +#else + if (version >= OVRP_1_12_0.version) + return OVRP_1_12_0.ovrp_GetNodePoseState(stepId, nodeId).AngularAcceleration; + + return new Vector3f(); //TODO: Convert legacy quat to vec3? +#endif + } + + public static bool GetNodePresent(Node nodeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_GetNodePresent(nodeId) == Bool.True; +#endif + } + + public static bool GetNodeOrientationTracked(Node nodeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_GetNodeOrientationTracked(nodeId) == Bool.True; +#endif + } + + public static bool GetNodeOrientationValid(Node nodeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + Bool orientationValid = Bool.False; + Result result = OVRP_1_38_0.ovrp_GetNodeOrientationValid(nodeId, ref orientationValid); + return result == Result.Success && orientationValid == Bool.True; + } + else + { + return GetNodeOrientationTracked(nodeId); + } +#endif + + } + + public static bool GetNodePositionTracked(Node nodeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_1_0.ovrp_GetNodePositionTracked(nodeId) == Bool.True; +#endif + } + + public static bool GetNodePositionValid(Node nodeId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + Bool positionValid = Bool.False; + Result result = OVRP_1_38_0.ovrp_GetNodePositionValid(nodeId, ref positionValid); + return result == Result.Success && positionValid == Bool.True; + } + else + { + return GetNodePositionTracked(nodeId); + } +#endif + } + + public static PoseStatef GetNodePoseStateRaw(Node nodeId, Step stepId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return PoseStatef.identity; +#else + if (version >= OVRP_1_29_0.version) + { + PoseStatef nodePoseState; + Result result = OVRP_1_29_0.ovrp_GetNodePoseStateRaw(stepId, -1, nodeId, out nodePoseState); + if (result == Result.Success) + { + return nodePoseState; + } + else + { + return PoseStatef.identity; + } + } + if (version >= OVRP_1_12_0.version) + return OVRP_1_12_0.ovrp_GetNodePoseState(stepId, nodeId); + else + return PoseStatef.identity; +#endif + } + + public static Posef GetCurrentTrackingTransformPose() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + if (version >= OVRP_1_30_0.version) + { + Posef trackingTransformPose; + Result result = OVRP_1_30_0.ovrp_GetCurrentTrackingTransformPose(out trackingTransformPose); + if (result == Result.Success) + { + return trackingTransformPose; + } + else + { + return Posef.identity; + } + } + else + { + return Posef.identity; + } +#endif + } + + public static Posef GetTrackingTransformRawPose() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + if (version >= OVRP_1_30_0.version) + { + Posef trackingTransforRawPose; + Result result = OVRP_1_30_0.ovrp_GetTrackingTransformRawPose(out trackingTransforRawPose); + if (result == Result.Success) + { + return trackingTransforRawPose; + } + else + { + return Posef.identity; + } + } + else + { + return Posef.identity; + } +#endif + } + + public static Posef GetTrackingTransformRelativePose(TrackingOrigin trackingOrigin) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + if (version >= OVRP_1_38_0.version) + { + Posef trackingTransformRelativePose = Posef.identity; + Result result = OVRP_1_38_0.ovrp_GetTrackingTransformRelativePose(ref trackingTransformRelativePose, trackingOrigin); + if (result == Result.Success) + { + return trackingTransformRelativePose; + } + else + { + return Posef.identity; + } + } + else + { + return Posef.identity; + } +#endif + } + + public static ControllerState GetControllerState(uint controllerMask) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new ControllerState(); +#else + return OVRP_1_1_0.ovrp_GetControllerState(controllerMask); +#endif + } + + public static ControllerState2 GetControllerState2(uint controllerMask) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new ControllerState2(); +#else + if (version >= OVRP_1_12_0.version) + { + return OVRP_1_12_0.ovrp_GetControllerState2(controllerMask); + } + + return new ControllerState2(OVRP_1_1_0.ovrp_GetControllerState(controllerMask)); +#endif + } + + public static ControllerState4 GetControllerState4(uint controllerMask) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new ControllerState4(); +#else + if (version >= OVRP_1_16_0.version) + { + ControllerState4 controllerState = new ControllerState4(); + OVRP_1_16_0.ovrp_GetControllerState4(controllerMask, ref controllerState); + return controllerState; + } + + return new ControllerState4(GetControllerState2(controllerMask)); +#endif + } + + public static bool SetControllerVibration(uint controllerMask, float frequency, float amplitude) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_0_1_2.ovrp_SetControllerVibration(controllerMask, frequency, amplitude) == Bool.True; +#endif + } + + public static HapticsDesc GetControllerHapticsDesc(uint controllerMask) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new HapticsDesc(); +#else + if (version >= OVRP_1_6_0.version) + { + return OVRP_1_6_0.ovrp_GetControllerHapticsDesc(controllerMask); + } + else + { + return new HapticsDesc(); + } +#endif + } + + public static HapticsState GetControllerHapticsState(uint controllerMask) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new HapticsState(); +#else + if (version >= OVRP_1_6_0.version) + { + return OVRP_1_6_0.ovrp_GetControllerHapticsState(controllerMask); + } + else + { + return new HapticsState(); + } +#endif + } + + public static bool SetControllerHaptics(uint controllerMask, HapticsBuffer hapticsBuffer) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_6_0.version) + { + return OVRP_1_6_0.ovrp_SetControllerHaptics(controllerMask, hapticsBuffer) == Bool.True; + } + else + { + return false; + } +#endif + } + + public static float GetEyeRecommendedResolutionScale() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 1.0f; +#else + if (version >= OVRP_1_6_0.version) + { + return OVRP_1_6_0.ovrp_GetEyeRecommendedResolutionScale(); + } + else + { + return 1.0f; + } +#endif + } + + public static float GetAppCpuStartToGpuEndTime() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + if (version >= OVRP_1_6_0.version) + { + return OVRP_1_6_0.ovrp_GetAppCpuStartToGpuEndTime(); + } + else + { + return 0.0f; + } +#endif + } + + public static bool GetBoundaryConfigured() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_8_0.version) + { + return OVRP_1_8_0.ovrp_GetBoundaryConfigured() == OVRPlugin.Bool.True; + } + else + { + return false; + } +#endif + } + + public static BoundaryTestResult TestBoundaryNode(Node nodeId, BoundaryType boundaryType) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new BoundaryTestResult(); +#else + if (version >= OVRP_1_8_0.version) + { + return OVRP_1_8_0.ovrp_TestBoundaryNode(nodeId, boundaryType); + } + else + { + return new BoundaryTestResult(); + } +#endif + } + + public static BoundaryTestResult TestBoundaryPoint(Vector3f point, BoundaryType boundaryType) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new BoundaryTestResult(); +#else + if (version >= OVRP_1_8_0.version) + { + return OVRP_1_8_0.ovrp_TestBoundaryPoint(point, boundaryType); + } + else + { + return new BoundaryTestResult(); + } +#endif + } + + public static BoundaryGeometry GetBoundaryGeometry(BoundaryType boundaryType) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new BoundaryGeometry(); +#else + if (version >= OVRP_1_8_0.version) + { + return OVRP_1_8_0.ovrp_GetBoundaryGeometry(boundaryType); + } + else + { + return new BoundaryGeometry(); + } +#endif + } + + public static bool GetBoundaryGeometry2(BoundaryType boundaryType, IntPtr points, ref int pointsCount) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + pointsCount = 0; + return false; +#else + if (version >= OVRP_1_9_0.version) + { + return OVRP_1_9_0.ovrp_GetBoundaryGeometry2(boundaryType, points, ref pointsCount) == OVRPlugin.Bool.True; + } + else + { + pointsCount = 0; + + return false; + } +#endif + } + + public static AppPerfStats GetAppPerfStats() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new AppPerfStats(); +#else + if (version >= OVRP_1_9_0.version) + { + return OVRP_1_9_0.ovrp_GetAppPerfStats(); + } + else + { + return new AppPerfStats(); + } +#endif + } + + public static bool ResetAppPerfStats() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + + if (version >= OVRP_1_9_0.version) + { + return OVRP_1_9_0.ovrp_ResetAppPerfStats() == OVRPlugin.Bool.True; + } + else + { + return false; + } +#endif + } + + public static float GetAppFramerate() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + if (version >= OVRP_1_12_0.version) + { + return OVRP_1_12_0.ovrp_GetAppFramerate(); + } + else + { + return 0.0f; + } +#endif + } + + public static bool SetHandNodePoseStateLatency(double latencyInSeconds) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_18_0.version) + { + Result result = OVRP_1_18_0.ovrp_SetHandNodePoseStateLatency(latencyInSeconds); + if (result == Result.Success) + { + return true; + } + else + { + //Debug.LogWarning("ovrp_SetHandNodePoseStateLatency return " + result); + return false; + } + } + else + { + return false; + } +#endif + } + + public static double GetHandNodePoseStateLatency() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0; +#else + if (version >= OVRP_1_18_0.version) + { + double value = 0.0; + if (OVRP_1_18_0.ovrp_GetHandNodePoseStateLatency(out value) == OVRPlugin.Result.Success) + { + return value; + } + else + { + return 0.0; + } + } + else + { + return 0.0; + } +#endif + } + + public static EyeTextureFormat GetDesiredEyeTextureFormat() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return EyeTextureFormat.Default; +#else + if (version >= OVRP_1_11_0.version) + { + uint eyeTextureFormatValue = (uint)OVRP_1_11_0.ovrp_GetDesiredEyeTextureFormat(); + + // convert both R8G8B8A8 and R8G8B8A8_SRGB to R8G8B8A8 here for avoid confusing developers + if (eyeTextureFormatValue == 1) + eyeTextureFormatValue = 0; + + return (EyeTextureFormat)eyeTextureFormatValue; + } + else + { + return EyeTextureFormat.Default; + } +#endif + } + + public static bool SetDesiredEyeTextureFormat(EyeTextureFormat value) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_11_0.version) + { + return OVRP_1_11_0.ovrp_SetDesiredEyeTextureFormat(value) == OVRPlugin.Bool.True; + } + else + { + return false; + } +#endif + } + + public static bool InitializeMixedReality() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + +#if OVRPLUGIN_INCLUDE_MRC_ANDROID + if (version >= OVRP_1_38_0.version) // MRC functions are invalid before 1.38.0 +#else + if (version >= OVRP_1_15_0.version) +#endif + { + Result result = OVRP_1_15_0.ovrp_InitializeMixedReality(); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_InitializeMixedReality return " + result); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool ShutdownMixedReality() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + +#if OVRPLUGIN_INCLUDE_MRC_ANDROID + if (version >= OVRP_1_38_0.version) // MRC functions are invalid before 1.38.0 +#else + if (version >= OVRP_1_15_0.version) +#endif + { + Result result = OVRP_1_15_0.ovrp_ShutdownMixedReality(); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_ShutdownMixedReality return " + result); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool IsMixedRealityInitialized() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + +#if OVRPLUGIN_INCLUDE_MRC_ANDROID + if (version >= OVRP_1_38_0.version) // MRC functions are invalid before 1.38.0 +#else + if (version >= OVRP_1_15_0.version) +#endif + { + return OVRP_1_15_0.ovrp_GetMixedRealityInitialized() == Bool.True; + } + else + { + return false; + } +#endif + } + + public static int GetExternalCameraCount() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0; +#else + +#if OVRPLUGIN_INCLUDE_MRC_ANDROID + if (version >= OVRP_1_38_0.version) // MRC functions are invalid before 1.38.0 +#else + if (version >= OVRP_1_15_0.version) +#endif + { + int cameraCount = 0; + Result result = OVRP_1_15_0.ovrp_GetExternalCameraCount(out cameraCount); + if (result != OVRPlugin.Result.Success) + { + //Debug.LogWarning("ovrp_GetExternalCameraCount return " + result); + return 0; + } + + return cameraCount; + } + else + { + return 0; + } +#endif + } + + public static bool UpdateExternalCamera() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + +#if OVRPLUGIN_INCLUDE_MRC_ANDROID + if (version >= OVRP_1_38_0.version) // MRC functions are invalid before 1.38.0 +#else + if (version >= OVRP_1_15_0.version) +#endif + { + Result result = OVRP_1_15_0.ovrp_UpdateExternalCamera(); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_UpdateExternalCamera return " + result); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool GetMixedRealityCameraInfo(int cameraId, out CameraExtrinsics cameraExtrinsics, out CameraIntrinsics cameraIntrinsics, out Posef calibrationRawPose) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + cameraExtrinsics = default(CameraExtrinsics); + cameraIntrinsics = default(CameraIntrinsics); + calibrationRawPose = Posef.identity; + return false; +#else + + cameraExtrinsics = default(CameraExtrinsics); + cameraIntrinsics = default(CameraIntrinsics); + calibrationRawPose = Posef.identity; + +#if OVRPLUGIN_INCLUDE_MRC_ANDROID + if (version >= OVRP_1_38_0.version) // MRC functions are invalid before 1.38.0 +#else + if (version >= OVRP_1_15_0.version) +#endif + { + bool retValue = true; + + Result result = OVRP_1_15_0.ovrp_GetExternalCameraExtrinsics(cameraId, out cameraExtrinsics); + if (result != Result.Success) + { + retValue = false; + //Debug.LogWarning("ovrp_GetExternalCameraExtrinsics return " + result); + } + + result = OVRP_1_15_0.ovrp_GetExternalCameraIntrinsics(cameraId, out cameraIntrinsics); + if (result != Result.Success) + { + retValue = false; + //Debug.LogWarning("ovrp_GetExternalCameraIntrinsics return " + result); + } + +#if OVRPLUGIN_INCLUDE_MRC_ANDROID + result = OVRP_1_38_0.ovrp_GetExternalCameraCalibrationRawPose(cameraId, out calibrationRawPose); + if (result != Result.Success) + { + retValue = false; + //Debug.LogWarning("ovrp_GetExternalCameraCalibrationRawPose return " + result); + } +#endif + + return retValue; + } + else + { + return false; + } +#endif + } + + public static Vector3f GetBoundaryDimensions(BoundaryType boundaryType) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new Vector3f(); +#else + if (version >= OVRP_1_8_0.version) + { + return OVRP_1_8_0.ovrp_GetBoundaryDimensions(boundaryType); + } + else + { + return new Vector3f(); + } +#endif + } + + public static bool GetBoundaryVisible() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_8_0.version) + { + return OVRP_1_8_0.ovrp_GetBoundaryVisible() == OVRPlugin.Bool.True; + } + else + { + return false; + } +#endif + } + + public static bool SetBoundaryVisible(bool value) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_8_0.version) + { + return OVRP_1_8_0.ovrp_SetBoundaryVisible(ToBool(value)) == OVRPlugin.Bool.True; + } + else + { + return false; + } +#endif + } + + public static SystemHeadset GetSystemHeadsetType() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return SystemHeadset.None; +#else + if (version >= OVRP_1_9_0.version) + return OVRP_1_9_0.ovrp_GetSystemHeadsetType(); + + return SystemHeadset.None; +#endif + } + + public static Controller GetActiveController() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Controller.None; +#else + if (version >= OVRP_1_9_0.version) + return OVRP_1_9_0.ovrp_GetActiveController(); + + return Controller.None; +#endif + } + + public static Controller GetConnectedControllers() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Controller.None; +#else + if (version >= OVRP_1_9_0.version) + return OVRP_1_9_0.ovrp_GetConnectedControllers(); + + return Controller.None; +#endif + } + + private static Bool ToBool(bool b) + { + return (b) ? OVRPlugin.Bool.True : OVRPlugin.Bool.False; + } + + public static TrackingOrigin GetTrackingOriginType() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return default(TrackingOrigin); +#else + return OVRP_1_0_0.ovrp_GetTrackingOriginType(); +#endif + } + + public static bool SetTrackingOriginType(TrackingOrigin originType) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_0_0.ovrp_SetTrackingOriginType(originType) == Bool.True; +#endif + } + + public static Posef GetTrackingCalibratedOrigin() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Posef.identity; +#else + return OVRP_1_0_0.ovrp_GetTrackingCalibratedOrigin(); +#endif + } + + public static bool SetTrackingCalibratedOrigin() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_2_0.ovrpi_SetTrackingCalibratedOrigin() == Bool.True; +#endif + } + + public static bool RecenterTrackingOrigin(RecenterFlags flags) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + return OVRP_1_0_0.ovrp_RecenterTrackingOrigin((uint)flags) == Bool.True; +#endif + } + +#if UNITY_EDITOR || UNITY_STANDALONE_WIN + public static bool UpdateCameraDevices() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_16_0.version) + { + Result result = OVRP_1_16_0.ovrp_UpdateCameraDevices(); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_UpdateCameraDevices return " + result); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool IsCameraDeviceAvailable(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_16_0.version) + { + Bool result = OVRP_1_16_0.ovrp_IsCameraDeviceAvailable(cameraDevice); + return result == Bool.True; + } + else + { + return false; + } +#endif + } + + public static bool SetCameraDevicePreferredColorFrameSize(CameraDevice cameraDevice, int width, int height) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_16_0.version) + { + Sizei size = new Sizei(); + size.w = width; + size.h = height; + Result result = OVRP_1_16_0.ovrp_SetCameraDevicePreferredColorFrameSize(cameraDevice, size); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_SetCameraDevicePreferredColorFrameSize return " + result); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool OpenCameraDevice(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_16_0.version) + { + Result result = OVRP_1_16_0.ovrp_OpenCameraDevice(cameraDevice); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_OpenCameraDevice return " + result); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool CloseCameraDevice(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_16_0.version) + { + Result result = OVRP_1_16_0.ovrp_CloseCameraDevice(cameraDevice); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_OpenCameraDevice return " + result); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool HasCameraDeviceOpened(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_16_0.version) + { + Bool result = OVRP_1_16_0.ovrp_HasCameraDeviceOpened(cameraDevice); + return result == Bool.True; + } + else + { + return false; + } +#endif + } + + public static bool IsCameraDeviceColorFrameAvailable(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_16_0.version) + { + Bool result = OVRP_1_16_0.ovrp_IsCameraDeviceColorFrameAvailable(cameraDevice); + return result == Bool.True; + } + else + { + return false; + } +#endif + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static Texture2D cachedCameraFrameTexture = null; +#endif + public static Texture2D GetCameraDeviceColorFrameTexture(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return null; +#else + if (version >= OVRP_1_16_0.version) + { + Sizei size = new Sizei(); + Result result = OVRP_1_16_0.ovrp_GetCameraDeviceColorFrameSize(cameraDevice, out size); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_GetCameraDeviceColorFrameSize return " + result); + return null; + } + IntPtr pixels; + int rowPitch; + result = OVRP_1_16_0.ovrp_GetCameraDeviceColorFrameBgraPixels(cameraDevice, out pixels, out rowPitch); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_GetCameraDeviceColorFrameBgraPixels return " + result); + return null; + } + if (rowPitch != size.w * 4) + { + //Debug.LogWarning(string.Format("RowPitch mismatch, expected {0}, get {1}", size.w * 4, rowPitch)); + return null; + } + if (!cachedCameraFrameTexture || cachedCameraFrameTexture.width != size.w || cachedCameraFrameTexture.height != size.h) + { + cachedCameraFrameTexture = new Texture2D(size.w, size.h, TextureFormat.BGRA32, false); + } + cachedCameraFrameTexture.LoadRawTextureData(pixels, rowPitch * size.h); + cachedCameraFrameTexture.Apply(); + return cachedCameraFrameTexture; + } + else + { + return null; + } +#endif + } + + public static bool DoesCameraDeviceSupportDepth(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_17_0.version) + { + Bool supportDepth; + Result result = OVRP_1_17_0.ovrp_DoesCameraDeviceSupportDepth(cameraDevice, out supportDepth); + return result == Result.Success && supportDepth == Bool.True; + } + else + { + return false; + } +#endif + } + + public static bool SetCameraDeviceDepthSensingMode(CameraDevice camera, CameraDeviceDepthSensingMode depthSensoringMode) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_17_0.version) + { + Result result = OVRP_1_17_0.ovrp_SetCameraDeviceDepthSensingMode(camera, depthSensoringMode); + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool SetCameraDevicePreferredDepthQuality(CameraDevice camera, CameraDeviceDepthQuality depthQuality) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_17_0.version) + { + Result result = OVRP_1_17_0.ovrp_SetCameraDevicePreferredDepthQuality(camera, depthQuality); + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool IsCameraDeviceDepthFrameAvailable(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_17_0.version) + { + Bool available; + Result result = OVRP_1_17_0.ovrp_IsCameraDeviceDepthFrameAvailable(cameraDevice, out available); + return result == Result.Success && available == Bool.True; + } + else + { + return false; + } +#endif + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static Texture2D cachedCameraDepthTexture = null; +#endif + public static Texture2D GetCameraDeviceDepthFrameTexture(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return null; +#else + if (version >= OVRP_1_17_0.version) + { + Sizei size = new Sizei(); + Result result = OVRP_1_17_0.ovrp_GetCameraDeviceDepthFrameSize(cameraDevice, out size); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_GetCameraDeviceDepthFrameSize return " + result); + return null; + } + IntPtr depthData; + int rowPitch; + result = OVRP_1_17_0.ovrp_GetCameraDeviceDepthFramePixels(cameraDevice, out depthData, out rowPitch); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_GetCameraDeviceDepthFramePixels return " + result); + return null; + } + if (rowPitch != size.w * 4) + { + //Debug.LogWarning(string.Format("RowPitch mismatch, expected {0}, get {1}", size.w * 4, rowPitch)); + return null; + } + if (!cachedCameraDepthTexture || cachedCameraDepthTexture.width != size.w || cachedCameraDepthTexture.height != size.h) + { + cachedCameraDepthTexture = new Texture2D(size.w, size.h, TextureFormat.RFloat, false); + cachedCameraDepthTexture.filterMode = FilterMode.Point; + } + cachedCameraDepthTexture.LoadRawTextureData(depthData, rowPitch * size.h); + cachedCameraDepthTexture.Apply(); + return cachedCameraDepthTexture; + } + else + { + return null; + } +#endif + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static Texture2D cachedCameraDepthConfidenceTexture = null; +#endif + public static Texture2D GetCameraDeviceDepthConfidenceTexture(CameraDevice cameraDevice) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return null; +#else + if (version >= OVRP_1_17_0.version) + { + Sizei size = new Sizei(); + Result result = OVRP_1_17_0.ovrp_GetCameraDeviceDepthFrameSize(cameraDevice, out size); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_GetCameraDeviceDepthFrameSize return " + result); + return null; + } + IntPtr confidenceData; + int rowPitch; + result = OVRP_1_17_0.ovrp_GetCameraDeviceDepthConfidencePixels(cameraDevice, out confidenceData, out rowPitch); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_GetCameraDeviceDepthConfidencePixels return " + result); + return null; + } + if (rowPitch != size.w * 4) + { + //Debug.LogWarning(string.Format("RowPitch mismatch, expected {0}, get {1}", size.w * 4, rowPitch)); + return null; + } + if (!cachedCameraDepthConfidenceTexture || cachedCameraDepthConfidenceTexture.width != size.w || cachedCameraDepthConfidenceTexture.height != size.h) + { + cachedCameraDepthConfidenceTexture = new Texture2D(size.w, size.h, TextureFormat.RFloat, false); + } + cachedCameraDepthConfidenceTexture.LoadRawTextureData(confidenceData, rowPitch * size.h); + cachedCameraDepthConfidenceTexture.Apply(); + return cachedCameraDepthConfidenceTexture; + } + else + { + return null; + } +#endif + } +#endif + + public static bool fixedFoveatedRenderingSupported + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_21_0.version) + { + Bool supported; + Result result = OVRP_1_21_0.ovrp_GetTiledMultiResSupported(out supported); + if (result == Result.Success) + { + return supported == Bool.True; + } + else + { + //Debug.LogWarning("ovrp_GetTiledMultiResSupported return " + result); + return false; + } + } + else + { + return false; + } +#endif + } + } + + public static FixedFoveatedRenderingLevel fixedFoveatedRenderingLevel + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return FixedFoveatedRenderingLevel.Off; +#else + if (version >= OVRP_1_21_0.version && fixedFoveatedRenderingSupported) + { + FixedFoveatedRenderingLevel level; + Result result = OVRP_1_21_0.ovrp_GetTiledMultiResLevel(out level); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_GetTiledMultiResLevel return " + result); + } + return level; + } + else + { + return FixedFoveatedRenderingLevel.Off; + } +#endif + } + set + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (version >= OVRP_1_21_0.version && fixedFoveatedRenderingSupported) + { + Result result = OVRP_1_21_0.ovrp_SetTiledMultiResLevel(value); + if (result != Result.Success) + { + //Debug.LogWarning("ovrp_SetTiledMultiResLevel return " + result); + } + } +#endif + } + } + + [Obsolete("Please use fixedFoveatedRenderingSupported instead", false)] + public static bool tiledMultiResSupported + { + get + { + return fixedFoveatedRenderingSupported; + } + } + + [Obsolete("Please use fixedFoveatedRenderingLevel instead", false)] + public static TiledMultiResLevel tiledMultiResLevel + { + get + { + return (TiledMultiResLevel)fixedFoveatedRenderingLevel; + } + set + { + fixedFoveatedRenderingLevel = (FixedFoveatedRenderingLevel)value; + } + } + + public static bool gpuUtilSupported + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_21_0.version) + { + Bool supported; + Result result = OVRP_1_21_0.ovrp_GetGPUUtilSupported(out supported); + if (result == Result.Success) + { + return supported == Bool.True; + } + else + { + //Debug.LogWarning("ovrp_GetGPUUtilSupported return " + result); + return false; + } + } + else + { + return false; + } +#endif + } + } + + public static float gpuUtilLevel + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + if (version >= OVRP_1_21_0.version && gpuUtilSupported) + { + float level; + Result result = OVRP_1_21_0.ovrp_GetGPUUtilLevel(out level); + if (result == Result.Success) + { + return level; + } + else + { + //Debug.LogWarning("ovrp_GetGPUUtilLevel return " + result); + return 0.0f; + } + } + else + { + return 0.0f; + } +#endif + } + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + private static OVRNativeBuffer _nativeSystemDisplayFrequenciesAvailable = null; + private static float[] _cachedSystemDisplayFrequenciesAvailable = null; +#endif + + public static float[] systemDisplayFrequenciesAvailable + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return new float[0]; +#else + if (_cachedSystemDisplayFrequenciesAvailable == null) + { + _cachedSystemDisplayFrequenciesAvailable = new float[0]; + + if (version >= OVRP_1_21_0.version) + { + int numFrequencies = 0; + Result result = OVRP_1_21_0.ovrp_GetSystemDisplayAvailableFrequencies(IntPtr.Zero, ref numFrequencies); + if (result == Result.Success) + { + if (numFrequencies > 0) + { + int maxNumElements = numFrequencies; + _nativeSystemDisplayFrequenciesAvailable = new OVRNativeBuffer(sizeof(float) * maxNumElements); + result = OVRP_1_21_0.ovrp_GetSystemDisplayAvailableFrequencies(_nativeSystemDisplayFrequenciesAvailable.GetPointer(), ref numFrequencies); + if (result == Result.Success) + { + int numElementsToCopy = (numFrequencies <= maxNumElements) ? numFrequencies : maxNumElements; + if (numElementsToCopy > 0) + { + _cachedSystemDisplayFrequenciesAvailable = new float[numElementsToCopy]; + Marshal.Copy(_nativeSystemDisplayFrequenciesAvailable.GetPointer(), _cachedSystemDisplayFrequenciesAvailable, 0, numElementsToCopy); + } + } + } + } + } + } + + return _cachedSystemDisplayFrequenciesAvailable; +#endif + } + } + + public static float systemDisplayFrequency + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0f; +#else + if (version >= OVRP_1_21_0.version) + { + float displayFrequency; + Result result = OVRP_1_21_0.ovrp_GetSystemDisplayFrequency2(out displayFrequency); + if (result == Result.Success) + { + return displayFrequency; + } + + return 0.0f; + } + else if (version >= OVRP_1_1_0.version) + { + return OVRP_1_1_0.ovrp_GetSystemDisplayFrequency(); + } + else + { + return 0.0f; + } +#endif + } + set + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return; +#else + if (version >= OVRP_1_21_0.version) + { + OVRP_1_21_0.ovrp_SetSystemDisplayFrequency(value); + } +#endif + } + } + + public static bool GetNodeFrustum2(Node nodeId, out Frustumf2 frustum) + { + frustum = default(Frustumf2); + +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_15_0.version) + { + Result result = OVRP_1_15_0.ovrp_GetNodeFrustum2(nodeId, out frustum); + if (result != Result.Success) + { + return false; + } + else + { + return true; + } + } + else + { + return false; + } +#endif + } + + public static bool AsymmetricFovEnabled + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_21_0.version) + { + Bool asymmetricFovEnabled = Bool.False; + Result result = OVRP_1_21_0.ovrp_GetAppAsymmetricFov(out asymmetricFovEnabled); + + if (result != Result.Success) + { + return false; + } + else + { + return asymmetricFovEnabled == Bool.True; + } + } + else + { + return false; + } +#endif + } + } + + public static bool EyeTextureArrayEnabled + { + get + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_15_0.version) + { + Bool enabled = Bool.False; + enabled = OVRP_1_15_0.ovrp_GetEyeTextureArrayEnabled(); + return enabled == Bool.True; + } + else + { + return false; + } +#endif + } + } + + + public static Handedness GetDominantHand() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return Handedness.Unsupported; +#else + Handedness dominantHand; + + if (version >= OVRP_1_28_0.version && OVRP_1_28_0.ovrp_GetDominantHand(out dominantHand) == Result.Success) + { + return dominantHand; + } + + return Handedness.Unsupported; +#endif + } + + public static bool GetReorientHMDOnControllerRecenter() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + Bool recenterMode; + if (version < OVRP_1_28_0.version || OVRP_1_28_0.ovrp_GetReorientHMDOnControllerRecenter(out recenterMode) != Result.Success) + return false; + + return (recenterMode == Bool.True); +#endif + } + + public static bool SetReorientHMDOnControllerRecenter(bool recenterSetting) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + Bool ovrpBoolRecenterSetting = recenterSetting ? Bool.True : Bool.False; + if (version < OVRP_1_28_0.version || OVRP_1_28_0.ovrp_SetReorientHMDOnControllerRecenter(ovrpBoolRecenterSetting) != Result.Success) + return false; + + return true; +#endif + } + + public static bool SendEvent(string name, string param = "", string source = "") + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_30_0.version) + { + return OVRP_1_30_0.ovrp_SendEvent2(name, param, source.Length == 0 ? "integration": source) == Result.Success; + } + else if (version >= OVRP_1_28_0.version) + { + return OVRP_1_28_0.ovrp_SendEvent(name, param) == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool SetHeadPoseModifier(ref Quatf relativeRotation, ref Vector3f relativeTranslation) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_29_0.version) + { + return OVRP_1_29_0.ovrp_SetHeadPoseModifier(ref relativeRotation, ref relativeTranslation) == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool GetHeadPoseModifier(out Quatf relativeRotation, out Vector3f relativeTranslation) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + relativeRotation = Quatf.identity; + relativeTranslation = Vector3f.zero; + return false; +#else + if (version >= OVRP_1_29_0.version) + { + return OVRP_1_29_0.ovrp_GetHeadPoseModifier(out relativeRotation, out relativeTranslation) == Result.Success; + } + else + { + relativeRotation = Quatf.identity; + relativeTranslation = Vector3f.zero; + return false; + } +#endif + } + + public static bool IsPerfMetricsSupported(PerfMetrics perfMetrics) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_30_0.version) + { + Bool isSupported; + Result result = OVRP_1_30_0.ovrp_IsPerfMetricsSupported(perfMetrics, out isSupported); + if (result == Result.Success) + { + return isSupported == Bool.True; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static float? GetPerfMetricsFloat(PerfMetrics perfMetrics) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return null; +#else + if (version >= OVRP_1_30_0.version) + { + float value; + Result result = OVRP_1_30_0.ovrp_GetPerfMetricsFloat(perfMetrics, out value); + if (result == Result.Success) + { + return value; + } + else + { + return null; + } + } + else + { + return null; + } +#endif + } + + public static int? GetPerfMetricsInt(PerfMetrics perfMetrics) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return null; +#else + if (version >= OVRP_1_30_0.version) + { + int value; + Result result = OVRP_1_30_0.ovrp_GetPerfMetricsInt(perfMetrics, out value); + if (result == Result.Success) + { + return value; + } + else + { + return null; + } + } + else + { + return null; + } +#endif + } + + public static double GetTimeInSeconds() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0.0; +#else + if (version >= OVRP_1_31_0.version) + { + double value; + Result result = OVRP_1_31_0.ovrp_GetTimeInSeconds(out value); + if (result == Result.Success) + { + return value; + } + else + { + return 0.0; + } + } + else + { + return 0.0; + } +#endif + } + + public static bool SetColorScaleAndOffset(Vector4 colorScale, Vector4 colorOffset, bool applyToAllLayers) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_31_0.version) + { + Bool ovrpApplyToAllLayers = applyToAllLayers ? Bool.True : Bool.False; + return OVRP_1_31_0.ovrp_SetColorScaleAndOffset(colorScale, colorOffset, ovrpApplyToAllLayers) == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool AddCustomMetadata(string name, string param = "") + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_32_0.version) + { + return OVRP_1_32_0.ovrp_AddCustomMetadata(name, param) == Result.Success; + } + else + { + return false; + } +#endif + } + + public class Media + { + public enum MrcActivationMode + { + Automatic = 0, + Disabled = 1, + EnumSize = 0x7fffffff + } + + public enum InputVideoBufferType + { + Memory = 0, + TextureHandle = 1, + EnumSize = 0x7fffffff + } + + public static bool Initialize() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + return OVRP_1_38_0.ovrp_Media_Initialize() == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool Shutdown() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + return OVRP_1_38_0.ovrp_Media_Shutdown() == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool GetInitialized() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + Bool initialized = Bool.False; + Result result = OVRP_1_38_0.ovrp_Media_GetInitialized(out initialized); + if (result == Result.Success) + { + return initialized == Bool.True ? true : false; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static bool Update() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + return OVRP_1_38_0.ovrp_Media_Update() == Result.Success; + } + else + { + return false; + } +#endif + } + + public static MrcActivationMode GetMrcActivationMode() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return MrcActivationMode.Disabled; +#else + if (version >= OVRP_1_38_0.version) + { + MrcActivationMode mode; + if (OVRP_1_38_0.ovrp_Media_GetMrcActivationMode(out mode) == Result.Success) + { + return mode; + } + else + { + return default(MrcActivationMode); + } + } + else + { + return default(MrcActivationMode); + } +#endif + } + + public static bool SetMrcActivationMode(MrcActivationMode mode) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + return OVRP_1_38_0.ovrp_Media_SetMrcActivationMode(mode) == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool IsMrcEnabled() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + Bool b; + if (OVRP_1_38_0.ovrp_Media_IsMrcEnabled(out b) == Result.Success) + { + return b == Bool.True ? true : false; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static bool IsMrcActivated() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + Bool b; + if (OVRP_1_38_0.ovrp_Media_IsMrcActivated(out b) == Result.Success) + { + return b == Bool.True ? true : false; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static bool UseMrcDebugCamera() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + Bool b; + if (OVRP_1_38_0.ovrp_Media_UseMrcDebugCamera(out b) == Result.Success) + { + return b == Bool.True ? true : false; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static bool SetMrcInputVideoBufferType(InputVideoBufferType videoBufferType) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + if (OVRP_1_38_0.ovrp_Media_SetMrcInputVideoBufferType(videoBufferType) == Result.Success) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static InputVideoBufferType GetMrcInputVideoBufferType() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return InputVideoBufferType.Memory; +#else + if (version >= OVRP_1_38_0.version) + { + InputVideoBufferType videoBufferType = InputVideoBufferType.Memory; + OVRP_1_38_0.ovrp_Media_GetMrcInputVideoBufferType(ref videoBufferType); + return videoBufferType; + } + else + { + return InputVideoBufferType.Memory; + } +#endif + } + + public static bool SetMrcFrameSize(int frameWidth, int frameHeight) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + if (OVRP_1_38_0.ovrp_Media_SetMrcFrameSize(frameWidth, frameHeight) == Result.Success) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static void GetMrcFrameSize(out int frameWidth, out int frameHeight) + { + + frameWidth = -1; + frameHeight = -1; +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + if (version >= OVRP_1_38_0.version) + { + OVRP_1_38_0.ovrp_Media_GetMrcFrameSize(ref frameWidth, ref frameHeight); + } +#endif + } + + + public static bool SetMrcAudioSampleRate(int sampleRate) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + if (OVRP_1_38_0.ovrp_Media_SetMrcAudioSampleRate(sampleRate) == Result.Success) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static int GetMrcAudioSampleRate() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return 0; +#else + int sampleRate = 0; + if (version >= OVRP_1_38_0.version) + { + OVRP_1_38_0.ovrp_Media_GetMrcAudioSampleRate(ref sampleRate); + } + return sampleRate; +#endif + } + + public static bool SetMrcFrameImageFlipped(bool imageFlipped) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + Bool flipped = imageFlipped ? Bool.True : Bool.False; + if (OVRP_1_38_0.ovrp_Media_SetMrcFrameImageFlipped(flipped) == Result.Success) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +#endif + } + + public static bool GetMrcFrameImageFlipped() + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + Bool flipped = 0; + if (version >= OVRP_1_38_0.version) + { + OVRP_1_38_0.ovrp_Media_GetMrcFrameImageFlipped(ref flipped); + } + return flipped == Bool.True ? true : false; +#endif + } + + public static bool EncodeMrcFrame(System.IntPtr textureHandle, float[] audioData, int audioFrames, int audioChannels, double timestamp, ref int outSyncId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + if (textureHandle == System.IntPtr.Zero) + { + Debug.LogError("EncodeMrcFrame: textureHandle is null"); + return false; + } + InputVideoBufferType videoBufferType = GetMrcInputVideoBufferType(); + if (videoBufferType != InputVideoBufferType.TextureHandle) + { + Debug.LogError("EncodeMrcFrame: videoBufferType mismatch"); + return false; + } + GCHandle pinnedAudioData = new GCHandle(); + IntPtr audioDataPtr = IntPtr.Zero; + int audioDataLen = 0; + if (audioData != null) + { + pinnedAudioData = GCHandle.Alloc(audioData, GCHandleType.Pinned); + audioDataPtr = pinnedAudioData.AddrOfPinnedObject(); + audioDataLen = audioFrames * 4; + } + Result result = OVRP_1_38_0.ovrp_Media_EncodeMrcFrame(textureHandle, audioDataPtr, audioDataLen, audioChannels, timestamp, ref outSyncId); + if (audioData != null) + { + pinnedAudioData.Free(); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + static Texture2D cachedTexture = null; +#endif + public static bool EncodeMrcFrame(RenderTexture frame, float[] audioData, int audioFrames, int audioChannels, double timestamp, ref int outSyncId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + if (frame == null) + { + Debug.LogError("EncodeMrcFrame: frame is null"); + return false; + } + InputVideoBufferType videoBufferType = GetMrcInputVideoBufferType(); + if (videoBufferType != InputVideoBufferType.Memory) + { + Debug.LogError("EncodeMrcFrame: videoBufferType mismatch"); + return false; + } + + GCHandle pinnedArray = new GCHandle(); + IntPtr pointer = IntPtr.Zero; + if (cachedTexture == null || cachedTexture.width != frame.width || cachedTexture.height != frame.height) + { + cachedTexture = new Texture2D(frame.width, frame.height, TextureFormat.ARGB32, false); + } + RenderTexture lastActive = RenderTexture.active; + RenderTexture.active = frame; + cachedTexture.ReadPixels(new Rect(0, 0, frame.width, frame.height), 0, 0); + RenderTexture.active = lastActive; + Color32[] bytes = cachedTexture.GetPixels32(0); + pinnedArray = GCHandle.Alloc(bytes, GCHandleType.Pinned); + pointer = pinnedArray.AddrOfPinnedObject(); + + GCHandle pinnedAudioData = new GCHandle(); + IntPtr audioDataPtr = IntPtr.Zero; + int audioDataLen = 0; + if (audioData != null) + { + pinnedAudioData = GCHandle.Alloc(audioData, GCHandleType.Pinned); + audioDataPtr = pinnedAudioData.AddrOfPinnedObject(); + audioDataLen = audioFrames * 4; + } + Result result = OVRP_1_38_0.ovrp_Media_EncodeMrcFrame(pointer, audioDataPtr, audioDataLen, audioChannels, timestamp, ref outSyncId); + + pinnedArray.Free(); + if (audioData != null) + { + pinnedAudioData.Free(); + } + return result == Result.Success; + } + else + { + return false; + } +#endif + } + + public static bool SyncMrcFrame(int syncId) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if (version >= OVRP_1_38_0.version) + { + return OVRP_1_38_0.ovrp_Media_SyncMrcFrame(syncId) == Result.Success; + } + else + { + return false; + } +#endif + } + + } + + public static bool SetDeveloperMode(Bool active) + { +#if OVRPLUGIN_UNSUPPORTED_PLATFORM + return false; +#else + if(version >= OVRP_1_38_0.version) + { + return OVRP_1_38_0.ovrp_SetDeveloperMode(active) == Result.Success; + } + else + { + return false; + } +#endif + } + + private const string pluginName = "OVRPlugin"; + private static System.Version _versionZero = new System.Version(0, 0, 0); + + // Disable all the DllImports when the platform is not supported +#if !OVRPLUGIN_UNSUPPORTED_PLATFORM + + private static class OVRP_0_1_0 + { + public static readonly System.Version version = new System.Version(0, 1, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Sizei ovrp_GetEyeTextureSize(Eye eyeId); + } + + private static class OVRP_0_1_1 + { + public static readonly System.Version version = new System.Version(0, 1, 1); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetOverlayQuad2(Bool onTop, Bool headLocked, IntPtr texture, IntPtr device, Posef pose, Vector3f scale); + } + + private static class OVRP_0_1_2 + { + public static readonly System.Version version = new System.Version(0, 1, 2); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Posef ovrp_GetNodePose(Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetControllerVibration(uint controllerMask, float frequency, float amplitude); + } + + private static class OVRP_0_1_3 + { + public static readonly System.Version version = new System.Version(0, 1, 3); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Posef ovrp_GetNodeVelocity(Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Posef ovrp_GetNodeAcceleration(Node nodeId); + } + + private static class OVRP_0_5_0 + { + public static readonly System.Version version = new System.Version(0, 5, 0); + } + + private static class OVRP_1_0_0 + { + public static readonly System.Version version = new System.Version(1, 0, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern TrackingOrigin ovrp_GetTrackingOriginType(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetTrackingOriginType(TrackingOrigin originType); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Posef ovrp_GetTrackingCalibratedOrigin(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_RecenterTrackingOrigin(uint flags); + } + + private static class OVRP_1_1_0 + { + public static readonly System.Version version = new System.Version(1, 1, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetInitialized(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrp_GetVersion")] + private static extern IntPtr _ovrp_GetVersion(); + public static string ovrp_GetVersion() { return Marshal.PtrToStringAnsi(_ovrp_GetVersion()); } + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrp_GetNativeSDKVersion")] + private static extern IntPtr _ovrp_GetNativeSDKVersion(); + public static string ovrp_GetNativeSDKVersion() { return Marshal.PtrToStringAnsi(_ovrp_GetNativeSDKVersion()); } + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrp_GetAudioOutId(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ovrp_GetAudioInId(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetEyeTextureScale(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetEyeTextureScale(float value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetTrackingOrientationSupported(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetTrackingOrientationEnabled(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetTrackingOrientationEnabled(Bool value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetTrackingPositionSupported(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetTrackingPositionEnabled(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetTrackingPositionEnabled(Bool value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetNodePresent(Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetNodeOrientationTracked(Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetNodePositionTracked(Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Frustumf ovrp_GetNodeFrustum(Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern ControllerState ovrp_GetControllerState(uint controllerMask); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ovrp_GetSystemCpuLevel(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetSystemCpuLevel(int value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ovrp_GetSystemGpuLevel(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetSystemGpuLevel(int value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetSystemPowerSavingMode(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetSystemDisplayFrequency(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ovrp_GetSystemVSyncCount(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetSystemVolume(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern BatteryStatus ovrp_GetSystemBatteryStatus(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetSystemBatteryLevel(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetSystemBatteryTemperature(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrp_GetSystemProductName")] + private static extern IntPtr _ovrp_GetSystemProductName(); + public static string ovrp_GetSystemProductName() { return Marshal.PtrToStringAnsi(_ovrp_GetSystemProductName()); } + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_ShowSystemUI(PlatformUI ui); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetAppMonoscopic(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetAppMonoscopic(Bool value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetAppHasVrFocus(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetAppShouldQuit(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetAppShouldRecenter(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ovrp_GetAppLatencyTimings")] + private static extern IntPtr _ovrp_GetAppLatencyTimings(); + public static string ovrp_GetAppLatencyTimings() { return Marshal.PtrToStringAnsi(_ovrp_GetAppLatencyTimings()); } + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetUserPresent(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetUserIPD(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetUserIPD(float value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetUserEyeDepth(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetUserEyeDepth(float value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetUserEyeHeight(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetUserEyeHeight(float value); + } + + private static class OVRP_1_2_0 + { + public static readonly System.Version version = new System.Version(1, 2, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetSystemVSyncCount(int vsyncCount); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrpi_SetTrackingCalibratedOrigin(); + } + + private static class OVRP_1_3_0 + { + public static readonly System.Version version = new System.Version(1, 3, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetEyeOcclusionMeshEnabled(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetEyeOcclusionMeshEnabled(Bool value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetSystemHeadphonesPresent(); + } + + private static class OVRP_1_5_0 + { + public static readonly System.Version version = new System.Version(1, 5, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern SystemRegion ovrp_GetSystemRegion(); + } + + private static class OVRP_1_6_0 + { + public static readonly System.Version version = new System.Version(1, 6, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetTrackingIPDEnabled(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetTrackingIPDEnabled(Bool value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern HapticsDesc ovrp_GetControllerHapticsDesc(uint controllerMask); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern HapticsState ovrp_GetControllerHapticsState(uint controllerMask); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetControllerHaptics(uint controllerMask, HapticsBuffer hapticsBuffer); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetOverlayQuad3(uint flags, IntPtr textureLeft, IntPtr textureRight, IntPtr device, Posef pose, Vector3f scale, int layerIndex); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetEyeRecommendedResolutionScale(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetAppCpuStartToGpuEndTime(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern int ovrp_GetSystemRecommendedMSAALevel(); + } + + private static class OVRP_1_7_0 + { + public static readonly System.Version version = new System.Version(1, 7, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetAppChromaticCorrection(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetAppChromaticCorrection(Bool value); + } + + private static class OVRP_1_8_0 + { + public static readonly System.Version version = new System.Version(1, 8, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetBoundaryConfigured(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern BoundaryTestResult ovrp_TestBoundaryNode(Node nodeId, BoundaryType boundaryType); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern BoundaryTestResult ovrp_TestBoundaryPoint(Vector3f point, BoundaryType boundaryType); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern BoundaryGeometry ovrp_GetBoundaryGeometry(BoundaryType boundaryType); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Vector3f ovrp_GetBoundaryDimensions(BoundaryType boundaryType); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetBoundaryVisible(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetBoundaryVisible(Bool value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_Update2(int stateId, int frameIndex, double predictionSeconds); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Posef ovrp_GetNodePose2(int stateId, Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Posef ovrp_GetNodeVelocity2(int stateId, Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Posef ovrp_GetNodeAcceleration2(int stateId, Node nodeId); + } + + private static class OVRP_1_9_0 + { + public static readonly System.Version version = new System.Version(1, 9, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern SystemHeadset ovrp_GetSystemHeadsetType(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Controller ovrp_GetActiveController(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Controller ovrp_GetConnectedControllers(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetBoundaryGeometry2(BoundaryType boundaryType, IntPtr points, ref int pointsCount); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern AppPerfStats ovrp_GetAppPerfStats(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_ResetAppPerfStats(); + } + + private static class OVRP_1_10_0 + { + public static readonly System.Version version = new System.Version(1, 10, 0); + } + + private static class OVRP_1_11_0 + { + public static readonly System.Version version = new System.Version(1, 11, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_SetDesiredEyeTextureFormat(EyeTextureFormat value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern EyeTextureFormat ovrp_GetDesiredEyeTextureFormat(); + } + + private static class OVRP_1_12_0 + { + public static readonly System.Version version = new System.Version(1, 12, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern float ovrp_GetAppFramerate(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern PoseStatef ovrp_GetNodePoseState(Step stepId, Node nodeId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern ControllerState2 ovrp_GetControllerState2(uint controllerMask); + } + + private static class OVRP_1_15_0 + { + public static readonly System.Version version = new System.Version(1, 15, 0); + + public const int OVRP_EXTERNAL_CAMERA_NAME_SIZE = 32; + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_InitializeMixedReality(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_ShutdownMixedReality(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetMixedRealityInitialized(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_UpdateExternalCamera(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetExternalCameraCount(out int cameraCount); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetExternalCameraName(int cameraId, [MarshalAs(UnmanagedType.LPArray, SizeConst = OVRP_EXTERNAL_CAMERA_NAME_SIZE)] char[] cameraName); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetExternalCameraIntrinsics(int cameraId, out CameraIntrinsics cameraIntrinsics); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetExternalCameraExtrinsics(int cameraId, out CameraExtrinsics cameraExtrinsics); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_CalculateLayerDesc(OverlayShape shape, LayerLayout layout, ref Sizei textureSize, + int mipLevels, int sampleCount, EyeTextureFormat format, int layerFlags, ref LayerDesc layerDesc); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_EnqueueSetupLayer(ref LayerDesc desc, IntPtr layerId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_EnqueueDestroyLayer(IntPtr layerId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetLayerTextureStageCount(int layerId, ref int layerTextureStageCount); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetLayerTexturePtr(int layerId, int stage, Eye eyeId, ref IntPtr textureHandle); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_EnqueueSubmitLayer(uint flags, IntPtr textureLeft, IntPtr textureRight, int layerId, int frameIndex, ref Posef pose, ref Vector3f scale, int layerIndex); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetNodeFrustum2(Node nodeId, out Frustumf2 nodeFrustum); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_GetEyeTextureArrayEnabled(); + } + + private static class OVRP_1_16_0 + { + public static readonly System.Version version = new System.Version(1, 16, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_UpdateCameraDevices(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_IsCameraDeviceAvailable(CameraDevice cameraDevice); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetCameraDevicePreferredColorFrameSize(CameraDevice cameraDevice, Sizei preferredColorFrameSize); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_OpenCameraDevice(CameraDevice cameraDevice); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_CloseCameraDevice(CameraDevice cameraDevice); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_HasCameraDeviceOpened(CameraDevice cameraDevice); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Bool ovrp_IsCameraDeviceColorFrameAvailable(CameraDevice cameraDevice); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDeviceColorFrameSize(CameraDevice cameraDevice, out Sizei colorFrameSize); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDeviceColorFrameBgraPixels(CameraDevice cameraDevice, out IntPtr colorFrameBgraPixels, out int colorFrameRowPitch); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetControllerState4(uint controllerMask, ref ControllerState4 controllerState); + } + + private static class OVRP_1_17_0 + { + public static readonly System.Version version = new System.Version(1, 17, 0); + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetExternalCameraPose(CameraDevice camera, out Posef cameraPose); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_ConvertPoseToCameraSpace(CameraDevice camera, ref Posef trackingSpacePose, out Posef cameraSpacePose); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDeviceIntrinsicsParameters(CameraDevice camera, out Bool supportIntrinsics, out CameraDeviceIntrinsicsParameters intrinsicsParameters); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_DoesCameraDeviceSupportDepth(CameraDevice camera, out Bool supportDepth); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDeviceDepthSensingMode(CameraDevice camera, out CameraDeviceDepthSensingMode depthSensoringMode); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetCameraDeviceDepthSensingMode(CameraDevice camera, CameraDeviceDepthSensingMode depthSensoringMode); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDevicePreferredDepthQuality(CameraDevice camera, out CameraDeviceDepthQuality depthQuality); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetCameraDevicePreferredDepthQuality(CameraDevice camera, CameraDeviceDepthQuality depthQuality); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_IsCameraDeviceDepthFrameAvailable(CameraDevice camera, out Bool available); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDeviceDepthFrameSize(CameraDevice camera, out Sizei depthFrameSize); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDeviceDepthFramePixels(CameraDevice cameraDevice, out IntPtr depthFramePixels, out int depthFrameRowPitch); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCameraDeviceDepthConfidencePixels(CameraDevice cameraDevice, out IntPtr depthConfidencePixels, out int depthConfidenceRowPitch); +#endif + } + + private static class OVRP_1_18_0 + { + public static readonly System.Version version = new System.Version(1, 18, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetHandNodePoseStateLatency(double latencyInSeconds); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetHandNodePoseStateLatency(out double latencyInSeconds); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetAppHasInputFocus(out Bool appHasInputFocus); + } + + private static class OVRP_1_19_0 + { + public static readonly System.Version version = new System.Version(1, 19, 0); + } + + private static class OVRP_1_21_0 + { + public static readonly System.Version version = new System.Version(1, 21, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetTiledMultiResSupported(out Bool foveationSupported); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetTiledMultiResLevel(out FixedFoveatedRenderingLevel level); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetTiledMultiResLevel(FixedFoveatedRenderingLevel level); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetGPUUtilSupported(out Bool gpuUtilSupported); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetGPUUtilLevel(out float gpuUtil); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetSystemDisplayFrequency2(out float systemDisplayFrequency); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetSystemDisplayAvailableFrequencies(IntPtr systemDisplayAvailableFrequencies, ref int numFrequencies); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetSystemDisplayFrequency(float requestedFrequency); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetAppAsymmetricFov(out Bool useAsymmetricFov); + } + + private static class OVRP_1_28_0 + { + public static readonly System.Version version = new System.Version(1, 28, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetDominantHand(out Handedness dominantHand); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetReorientHMDOnControllerRecenter(out Bool recenter); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetReorientHMDOnControllerRecenter(Bool recenter); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SendEvent(string name, string param); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_EnqueueSetupLayer2(ref LayerDesc desc, int compositionDepth, IntPtr layerId); + } + + private static class OVRP_1_29_0 + { + public static readonly System.Version version = new System.Version(1, 29, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetLayerAndroidSurfaceObject(int layerId, ref IntPtr surfaceObject); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetHeadPoseModifier(ref Quatf relativeRotation, ref Vector3f relativeTranslation); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetHeadPoseModifier(out Quatf relativeRotation, out Vector3f relativeTranslation); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetNodePoseStateRaw(Step stepId, int frameIndex, Node nodeId, out PoseStatef nodePoseState); + } + + private static class OVRP_1_30_0 + { + public static readonly System.Version version = new System.Version(1, 30, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetCurrentTrackingTransformPose(out Posef trackingTransformPose); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetTrackingTransformRawPose(out Posef trackingTransformRawPose); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SendEvent2(string name, string param, string source); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_IsPerfMetricsSupported(PerfMetrics perfMetrics, out Bool isSupported); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetPerfMetricsFloat(PerfMetrics perfMetrics, out float value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetPerfMetricsInt(PerfMetrics perfMetrics, out int value); + } + + private static class OVRP_1_31_0 + { + public static readonly System.Version version = new System.Version(1, 31, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetTimeInSeconds(out double value); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetColorScaleAndOffset(Vector4 colorScale, Vector4 colorOffset, Bool applyToAllLayers); + } + + private static class OVRP_1_32_0 + { + public static readonly System.Version version = new System.Version(1, 32, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_AddCustomMetadata(string name, string param); + } + + private static class OVRP_1_34_0 + { + public static readonly System.Version version = new System.Version(1, 34, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_EnqueueSubmitLayer2(uint flags, IntPtr textureLeft, IntPtr textureRight, int layerId, int frameIndex, ref Posef pose, ref Vector3f scale, int layerIndex, + Bool overrideTextureRectMatrix, ref TextureRectMatrixf textureRectMatrix, Bool overridePerLayerColorScaleAndOffset, ref Vector4 colorScale, ref Vector4 colorOffset); + + } + + private static class OVRP_1_35_0 + { + public static readonly System.Version version = new System.Version(1, 35, 0); + } + + private static class OVRP_1_36_0 + { + public static readonly System.Version version = new System.Version(1, 36, 0); + } + + private static class OVRP_1_37_0 + { + public static readonly System.Version version = new System.Version(1, 37, 0); + } + + private static class OVRP_1_38_0 + { + public static readonly System.Version version = new System.Version(1, 38, 0); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetTrackingTransformRelativePose(ref Posef trackingTransformRelativePose, TrackingOrigin trackingOrigin); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_Initialize(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_Shutdown(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_GetInitialized(out Bool initialized); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_Update(); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_GetMrcActivationMode(out Media.MrcActivationMode activationMode); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_SetMrcActivationMode(Media.MrcActivationMode activationMode); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_IsMrcEnabled(out Bool mrcEnabled); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_IsMrcActivated(out Bool mrcActivated); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_UseMrcDebugCamera(out Bool useMrcDebugCamera); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_SetMrcInputVideoBufferType(Media.InputVideoBufferType inputVideoBufferType); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_GetMrcInputVideoBufferType(ref Media.InputVideoBufferType inputVideoBufferType); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_SetMrcFrameSize(int frameWidth, int frameHeight); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_GetMrcFrameSize(ref int frameWidth, ref int frameHeight); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_SetMrcAudioSampleRate(int sampleRate); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_GetMrcAudioSampleRate(ref int sampleRate); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_SetMrcFrameImageFlipped(Bool flipped); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_GetMrcFrameImageFlipped(ref Bool flipped); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_EncodeMrcFrame(System.IntPtr rawBuffer, System.IntPtr audioDataPtr, int audioDataLen, int audioChannels, double timestamp, ref int outSyncId); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_EncodeMrcFrameWithDualTextures(System.IntPtr backgroundTextureHandle, System.IntPtr foregroundTextureHandle, System.IntPtr audioData, int audioDataLen, int audioChannels, double timestamp, ref int outSyncId); + + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_Media_SyncMrcFrame(int syncId); + + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetExternalCameraCalibrationRawPose(int cameraId, out Posef rawPose); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_SetDeveloperMode(Bool active); + + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetNodeOrientationValid(Node nodeId, ref Bool nodeOrientationValid); + + [DllImport(pluginName, CallingConvention = CallingConvention.Cdecl)] + public static extern Result ovrp_GetNodePositionValid(Node nodeId, ref Bool nodePositionValid); + } + + private static class OVRP_1_39_0 + { + public static readonly System.Version version = new System.Version(1, 39, 0); + } + + private static class OVRP_1_40_0 + { + public static readonly System.Version version = new System.Version(1, 40, 0); + } + + private static class OVRP_1_41_0 + { + public static readonly System.Version version = new System.Version(1, 41, 0); + } + +#endif // !OVRPLUGIN_UNSUPPORTED_PLATFORM + +} diff --git a/Assets/Oculus/VR/Scripts/OVRPlugin.cs.meta b/Assets/Oculus/VR/Scripts/OVRPlugin.cs.meta new file mode 100644 index 0000000..05c6c28 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRPlugin.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61abd23f3aff5394ba8027ee380760b8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRProfile.cs b/Assets/Oculus/VR/Scripts/OVRProfile.cs new file mode 100644 index 0000000..3312133 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRProfile.cs @@ -0,0 +1,50 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; +using System.Threading; +using VR = UnityEngine.VR; + +/// +/// (Deprecated) Contains information about the user's preferences and body dimensions. +/// +public class OVRProfile : Object +{ + [System.Obsolete] + public enum State + { + NOT_TRIGGERED, + LOADING, + READY, + ERROR + }; + + [System.Obsolete] + public string id { get { return "000abc123def"; } } + [System.Obsolete] + public string userName { get { return "Oculus User"; } } + [System.Obsolete] + public string locale { get { return "en_US"; } } + + public float ipd { get { return Vector3.Distance (OVRPlugin.GetNodePose (OVRPlugin.Node.EyeLeft, OVRPlugin.Step.Render).ToOVRPose ().position, OVRPlugin.GetNodePose (OVRPlugin.Node.EyeRight, OVRPlugin.Step.Render).ToOVRPose ().position); } } + public float eyeHeight { get { return OVRPlugin.eyeHeight; } } + public float eyeDepth { get { return OVRPlugin.eyeDepth; } } + public float neckHeight { get { return eyeHeight - 0.075f; } } + + [System.Obsolete] + public State state { get { return State.READY; } } +} diff --git a/Assets/Oculus/VR/Scripts/OVRProfile.cs.meta b/Assets/Oculus/VR/Scripts/OVRProfile.cs.meta new file mode 100644 index 0000000..c7bf6a7 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRProfile.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08539141953f28e439731aaf7cd5362f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/OVRTracker.cs b/Assets/Oculus/VR/Scripts/OVRTracker.cs new file mode 100644 index 0000000..38f6643 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRTracker.cs @@ -0,0 +1,194 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using VR = UnityEngine.VR; + +/// +/// An infrared camera that tracks the position of a head-mounted display. +/// +public class OVRTracker +{ + /// + /// The (symmetric) visible area in front of the sensor. + /// + public struct Frustum + { + /// + /// The sensor's minimum supported distance to the HMD. + /// + public float nearZ; + /// + /// The sensor's maximum supported distance to the HMD. + /// + public float farZ; + /// + /// The sensor's horizontal and vertical fields of view in degrees. + /// + public Vector2 fov; + } + + /// + /// If true, a sensor is attached to the system. + /// + public bool isPresent + { + get { + if (!OVRManager.isHmdPresent) + return false; + + return OVRPlugin.positionSupported; + } + } + + /// + /// If true, the sensor is actively tracking the HMD's position. Otherwise the HMD may be temporarily occluded, the system may not support position tracking, etc. + /// + public bool isPositionTracked + { + get { + return OVRPlugin.positionTracked; + } + } + + /// + /// If this is true and a sensor is available, the system will use position tracking when isPositionTracked is also true. + /// + public bool isEnabled + { + get { + if (!OVRManager.isHmdPresent) + return false; + + return OVRPlugin.position; + } + + set { + if (!OVRManager.isHmdPresent) + return; + + OVRPlugin.position = value; + } + } + + /// + /// Returns the number of sensors currently connected to the system. + /// + public int count + { + get { + int count = 0; + + for (int i = 0; i < (int)OVRPlugin.Tracker.Count; ++i) + { + if (GetPresent(i)) + count++; + } + + return count; + } + } + + /// + /// Gets the sensor's viewing frustum. + /// + public Frustum GetFrustum(int tracker = 0) + { + if (!OVRManager.isHmdPresent) + return new Frustum(); + + return OVRPlugin.GetTrackerFrustum((OVRPlugin.Tracker)tracker).ToFrustum(); + } + + /// + /// Gets the sensor's pose, relative to the head's pose at the time of the last pose recentering. + /// + public OVRPose GetPose(int tracker = 0) + { + if (!OVRManager.isHmdPresent) + return OVRPose.identity; + + OVRPose p; + switch (tracker) + { + case 0: + p = OVRPlugin.GetNodePose(OVRPlugin.Node.TrackerZero, OVRPlugin.Step.Render).ToOVRPose(); + break; + case 1: + p = OVRPlugin.GetNodePose(OVRPlugin.Node.TrackerOne, OVRPlugin.Step.Render).ToOVRPose(); + break; + case 2: + p = OVRPlugin.GetNodePose(OVRPlugin.Node.TrackerTwo, OVRPlugin.Step.Render).ToOVRPose(); + break; + case 3: + p = OVRPlugin.GetNodePose(OVRPlugin.Node.TrackerThree, OVRPlugin.Step.Render).ToOVRPose(); + break; + default: + return OVRPose.identity; + } + + return new OVRPose() + { + position = p.position, + orientation = p.orientation * Quaternion.Euler(0, 180, 0) + }; + } + + /// + /// If true, the pose of the sensor is valid and is ready to be queried. + /// + public bool GetPoseValid(int tracker = 0) + { + if (!OVRManager.isHmdPresent) + return false; + + switch (tracker) + { + case 0: + return OVRPlugin.GetNodePositionTracked(OVRPlugin.Node.TrackerZero); + case 1: + return OVRPlugin.GetNodePositionTracked(OVRPlugin.Node.TrackerOne); + case 2: + return OVRPlugin.GetNodePositionTracked(OVRPlugin.Node.TrackerTwo); + case 3: + return OVRPlugin.GetNodePositionTracked(OVRPlugin.Node.TrackerThree); + default: + return false; + } + } + + public bool GetPresent(int tracker = 0) + { + if (!OVRManager.isHmdPresent) + return false; + + switch (tracker) + { + case 0: + return OVRPlugin.GetNodePresent(OVRPlugin.Node.TrackerZero); + case 1: + return OVRPlugin.GetNodePresent(OVRPlugin.Node.TrackerOne); + case 2: + return OVRPlugin.GetNodePresent(OVRPlugin.Node.TrackerTwo); + case 3: + return OVRPlugin.GetNodePresent(OVRPlugin.Node.TrackerThree); + default: + return false; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/OVRTracker.cs.meta b/Assets/Oculus/VR/Scripts/OVRTracker.cs.meta new file mode 100644 index 0000000..fa5fba9 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/OVRTracker.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cb3c9d4cb0970e448c655096649e814 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util.meta b/Assets/Oculus/VR/Scripts/Util.meta new file mode 100644 index 0000000..3343588 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: c0c7a593695f68e4bbe0cabb0f4f93f2 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRAudioSourceTest.cs b/Assets/Oculus/VR/Scripts/Util/OVRAudioSourceTest.cs new file mode 100644 index 0000000..f07d56e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRAudioSourceTest.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class OVRAudioSourceTest : MonoBehaviour +{ + public float period = 2.0f; + private float nextActionTime; + + // Start is called before the first frame update + void Start() + { + Material templateMaterial = GetComponent().material; + Material newMaterial = Instantiate(templateMaterial); + newMaterial.color = Color.green; + GetComponent().material = newMaterial; + + nextActionTime = Time.time + period; + } + + // Update is called once per frame + void Update() + { + if (Time.time > nextActionTime) + { + nextActionTime = Time.time + period; + + Material mat = GetComponent().material; + if (mat.color == Color.green) + { + mat.color = Color.red; + } + else + { + mat.color = Color.green; + } + + AudioSource audioSource = GetComponent(); + if (audioSource == null) + { + Debug.LogError("Unable to find AudioSource"); + } + else + { + audioSource.Play(); + } + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRAudioSourceTest.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRAudioSourceTest.cs.meta new file mode 100644 index 0000000..235ea6b --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRAudioSourceTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 358b12a21a8aa9540b435051f334fe9b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs b/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs new file mode 100644 index 0000000..c4e1e63 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs @@ -0,0 +1,51 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; + +/// +/// Allows you to toggle chromatic aberration correction with a gamepad button press. +/// +public class OVRChromaticAberration : MonoBehaviour +{ + /// + /// The button that will toggle chromatic aberration correction. + /// + public OVRInput.RawButton toggleButton = OVRInput.RawButton.X; + + private bool chromatic = false; + + void Start () + { + // Enable/Disable Chromatic Aberration Correction. + // NOTE: Enabling Chromatic Aberration for mobile has a large performance cost. + OVRManager.instance.chromatic = chromatic; + } + + void Update() + { + // NOTE: some of the buttons defined in OVRInput.RawButton are not available on the Android game pad controller + if (OVRInput.GetDown(toggleButton)) + { + //************************* + // toggle chromatic aberration correction + //************************* + chromatic = !chromatic; + OVRManager.instance.chromatic = chromatic; + } + } + +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs.meta new file mode 100644 index 0000000..0167611 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRChromaticAberration.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b56515a831f2fb44bc7ae02679aeebc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs b/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs new file mode 100644 index 0000000..383d84f --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs @@ -0,0 +1,172 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +/// +/// Simple helper script that conditionally enables rendering of a controller if it is connected. +/// +public class OVRControllerHelper : MonoBehaviour +{ + /// + /// The root GameObject that represents the GearVr Controller model. + /// + public GameObject m_modelGearVrController; + + /// + /// The root GameObject that represents the Oculus Go Controller model. + /// + public GameObject m_modelOculusGoController; + + /// + /// The root GameObject that represents the Oculus Touch for Quest And RiftS Controller model (Left). + /// + public GameObject m_modelOculusTouchQuestAndRiftSLeftController; + + /// + /// The root GameObject that represents the Oculus Touch for Quest And RiftS Controller model (Right). + /// + public GameObject m_modelOculusTouchQuestAndRiftSRightController; + + /// + /// The root GameObject that represents the Oculus Touch for Rift Controller model (Left). + /// + public GameObject m_modelOculusTouchRiftLeftController; + + /// + /// The root GameObject that represents the Oculus Touch for Rift Controller model (Right). + /// + public GameObject m_modelOculusTouchRiftRightController; + + /// + /// The controller that determines whether or not to enable rendering of the controller model. + /// + public OVRInput.Controller m_controller; + + private enum ControllerType + { + GearVR, Go, QuestAndRiftS, Rift + } + + private ControllerType activeControllerType = ControllerType.Rift; + + private bool m_prevControllerConnected = false; + private bool m_prevControllerConnectedCached = false; + + void Start() + { + OVRPlugin.SystemHeadset headset = OVRPlugin.GetSystemHeadsetType(); + switch (headset) + { + case OVRPlugin.SystemHeadset.Oculus_Go: + activeControllerType = ControllerType.Go; + break; + case OVRPlugin.SystemHeadset.Oculus_Quest: + activeControllerType = ControllerType.QuestAndRiftS; + break; + case OVRPlugin.SystemHeadset.Rift_CV1: + activeControllerType = ControllerType.Rift; + break; + case OVRPlugin.SystemHeadset.Rift_S: + activeControllerType = ControllerType.QuestAndRiftS; + break; + case OVRPlugin.SystemHeadset.GearVR_R320: + case OVRPlugin.SystemHeadset.GearVR_R321: + case OVRPlugin.SystemHeadset.GearVR_R322: + case OVRPlugin.SystemHeadset.GearVR_R323: + case OVRPlugin.SystemHeadset.GearVR_R324: + case OVRPlugin.SystemHeadset.GearVR_R325: + activeControllerType = ControllerType.GearVR; + break; + default: +#if UNITY_EDITOR || !UNITY_ANDROID + activeControllerType = ControllerType.Rift; +#else + activeControllerType = ControllerType.GearVR; +#endif + break; + } + + Debug.LogFormat("OVRControllerHelp: Active controller type: {0} for product {1}", activeControllerType, OVRPlugin.productName); + if ((activeControllerType != ControllerType.GearVR) && (activeControllerType != ControllerType.Go)) + { + if (m_controller == OVRInput.Controller.LTrackedRemote) + { + m_controller = OVRInput.Controller.LTouch; + } + else if (m_controller == OVRInput.Controller.RTrackedRemote) + { + m_controller = OVRInput.Controller.RTouch; + } + } + else + { + if (m_controller == OVRInput.Controller.LTouch) + { + m_controller = OVRInput.Controller.LTrackedRemote; + } + else if (m_controller == OVRInput.Controller.RTouch) + { + m_controller = OVRInput.Controller.RTrackedRemote; + } + } + } + + void Update() + { + bool controllerConnected = OVRInput.IsControllerConnected(m_controller); + + if ((controllerConnected != m_prevControllerConnected) || !m_prevControllerConnectedCached) + { + if (activeControllerType == ControllerType.GearVR || activeControllerType == ControllerType.Go) + { + m_modelOculusGoController.SetActive(controllerConnected && (activeControllerType == ControllerType.Go)); + m_modelGearVrController.SetActive(controllerConnected && (activeControllerType != ControllerType.Go)); + m_modelOculusTouchQuestAndRiftSLeftController.SetActive(false); + m_modelOculusTouchQuestAndRiftSRightController.SetActive(false); + m_modelOculusTouchRiftLeftController.SetActive(false); + m_modelOculusTouchRiftRightController.SetActive(false); + } + else if (activeControllerType == ControllerType.QuestAndRiftS) + { + m_modelOculusGoController.SetActive(false); + m_modelGearVrController.SetActive(false); + m_modelOculusTouchQuestAndRiftSLeftController.SetActive(controllerConnected && (m_controller == OVRInput.Controller.LTouch)); + m_modelOculusTouchQuestAndRiftSRightController.SetActive(controllerConnected && (m_controller == OVRInput.Controller.RTouch)); + m_modelOculusTouchRiftLeftController.SetActive(false); + m_modelOculusTouchRiftRightController.SetActive(false); + } + else // if (activeControllerType == ControllerType.Rift) + { + m_modelOculusGoController.SetActive(false); + m_modelGearVrController.SetActive(false); + m_modelOculusTouchQuestAndRiftSLeftController.SetActive(false); + m_modelOculusTouchQuestAndRiftSRightController.SetActive(false); + m_modelOculusTouchRiftLeftController.SetActive(controllerConnected && (m_controller == OVRInput.Controller.LTouch)); + m_modelOculusTouchRiftRightController.SetActive(controllerConnected && (m_controller == OVRInput.Controller.RTouch)); + } + + m_prevControllerConnected = controllerConnected; + m_prevControllerConnectedCached = true; + } + + if (!controllerConnected) + { + return; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs.meta new file mode 100644 index 0000000..b9aee6d --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRControllerHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aed62bf3ae2456c408f247f96808ce96 +timeCreated: 1486166271 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs b/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs new file mode 100644 index 0000000..8cdce3e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs @@ -0,0 +1,284 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + + +using UnityEngine; +using System.Collections; +using System.IO; + +/// +/// Helper script for capture cubemap and save it into PNG or JPG file +/// + +/// +/// How it works: +/// 1) This script can be attached to a existing game object, you can also use prefab Assets\OVR\Prefabs\OVRCubemapCaptureProbe +/// There are 2 ways to trigger a capture if you attached this script to a game object. +/// * Automatic capturing: if [autoTriggerAfterLaunch] is true, a automatic capturing will be triggered after [autoTriggerDelay] seconds. +/// * Keyboard trigger: press key [triggeredByKey], a capturing will be triggered. +/// 2) If you like to trigger the screen capture in your code logic, just call static function [OVRCubemapCapture.TriggerCubemapCapture] with proper input arguments. +/// + +public class OVRCubemapCapture : MonoBehaviour +{ + /// + /// Enable the automatic screenshot trigger, which will capture a cubemap after autoTriggerDelay (seconds) + /// + public bool autoTriggerAfterLaunch = true; + public float autoTriggerDelay = 1.0f; + private float autoTriggerElapse = 0.0f; + + /// + /// Trigger cubemap screenshot if user pressed key triggeredByKey + /// + public KeyCode triggeredByKey = KeyCode.F8; + + /// + /// The complete file path for saving the cubemap screenshot, including the filename and extension + /// if pathName is blank, screenshots will be saved into %USERPROFILE%\Documents\OVR_ScreenShot360 + /// + public string pathName; + + /// + /// The cube face resolution + /// + public int cubemapSize = 2048; + + // Update is called once per frame + void Update() + { + // Trigger after autoTriggerDelay + if (autoTriggerAfterLaunch) + { + autoTriggerElapse += Time.deltaTime; + if (autoTriggerElapse >= autoTriggerDelay) + { + autoTriggerAfterLaunch = false; + TriggerCubemapCapture(transform.position, cubemapSize, pathName); + } + } + + // Trigger by press triggeredByKey + if ( Input.GetKeyDown( triggeredByKey ) ) + { + TriggerCubemapCapture(transform.position, cubemapSize, pathName); + } + } + + /// + /// Generate unity cubemap at specific location and save into JPG/PNG + /// + /// + /// Default save folder: your app's persistentDataPath + /// Default file name: using current time OVR_hh_mm_ss.png + /// Note1: this will take a few seconds to finish + /// Note2: if you only want to specify path not filename, please end [pathName] with "/" + /// + + public static void TriggerCubemapCapture(Vector3 capturePos, int cubemapSize = 2048, string pathName = null) + { + GameObject ownerObj = new GameObject("CubemapCamera", typeof(Camera)); + ownerObj.hideFlags = HideFlags.HideAndDontSave; + ownerObj.transform.position = capturePos; + ownerObj.transform.rotation = Quaternion.identity; + Camera camComponent = ownerObj.GetComponent(); + camComponent.farClipPlane = 10000.0f; + camComponent.enabled = false; + + Cubemap cubemap = new Cubemap(cubemapSize, TextureFormat.RGB24, false); + RenderIntoCubemap(camComponent, cubemap); + SaveCubemapCapture(cubemap, pathName); + DestroyImmediate(cubemap); + DestroyImmediate(ownerObj); + } + + + public static void RenderIntoCubemap(Camera ownerCamera, Cubemap outCubemap) + { + int width = (int)outCubemap.width; + int height = (int)outCubemap.height; + + CubemapFace[] faces = new CubemapFace[] { CubemapFace.PositiveX, CubemapFace.NegativeX, CubemapFace.PositiveY, CubemapFace.NegativeY, CubemapFace.PositiveZ, CubemapFace.NegativeZ }; + Vector3[] faceAngles = new Vector3[] { new Vector3(0.0f, 90.0f, 0.0f), new Vector3(0.0f, -90.0f, 0.0f), new Vector3(-90.0f, 0.0f, 0.0f), new Vector3(90.0f, 0.0f, 0.0f), new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 180.0f, 0.0f) }; + + // Backup states + RenderTexture backupRenderTex = RenderTexture.active; + float backupFieldOfView = ownerCamera.fieldOfView; + float backupAspect = ownerCamera.aspect; + Quaternion backupRot = ownerCamera.transform.rotation; + //RenderTexture backupRT = ownerCamera.targetTexture; + + // Enable 8X MSAA + RenderTexture faceTexture = new RenderTexture(width, height, 24); + faceTexture.antiAliasing = 8; + faceTexture.dimension = UnityEngine.Rendering.TextureDimension.Tex2D; + faceTexture.hideFlags = HideFlags.HideAndDontSave; + + // For intermediate saving + Texture2D swapTex = new Texture2D(width, height, TextureFormat.RGB24, false); + swapTex.hideFlags = HideFlags.HideAndDontSave; + + // Capture 6 Directions + ownerCamera.targetTexture = faceTexture; + ownerCamera.fieldOfView = 90; + ownerCamera.aspect = 1.0f; + + Color[] mirroredPixels = new Color[swapTex.height * swapTex.width]; + for (int i = 0; i < faces.Length; i++) + { + ownerCamera.transform.eulerAngles = faceAngles[i]; + ownerCamera.Render(); + RenderTexture.active = faceTexture; + swapTex.ReadPixels(new Rect(0, 0, width, height), 0, 0); + + // Mirror vertically to meet the standard of unity cubemap + Color[] OrignalPixels = swapTex.GetPixels(); + for (int y1 = 0; y1 < height; y1++) + { + for (int x1 = 0; x1 < width; x1++) + { + mirroredPixels[y1 * width + x1] = OrignalPixels[((height - 1 - y1) * width) + x1]; + } + }; + outCubemap.SetPixels(mirroredPixels, faces[i]); + } + + outCubemap.SmoothEdges(); + + // Restore states + RenderTexture.active = backupRenderTex; + ownerCamera.fieldOfView = backupFieldOfView; + ownerCamera.aspect = backupAspect; + ownerCamera.transform.rotation = backupRot; + ownerCamera.targetTexture = backupRenderTex; + + DestroyImmediate(swapTex); + DestroyImmediate(faceTexture); + + } + + + /// + /// Save unity cubemap into NPOT 6x1 cubemap/texture atlas in the following format PX NX PY NY PZ NZ + /// + /// + /// Supported format: PNG/JPG + /// Default file name: using current time OVR_hh_mm_ss.png + /// + + public static bool SaveCubemapCapture(Cubemap cubemap, string pathName = null) + { + string fileName; + string dirName; + int width = cubemap.width; + int height = cubemap.height; + int x = 0; + int y = 0; + bool saveToPNG = true; + + if (string.IsNullOrEmpty(pathName)) + { + dirName = Application.persistentDataPath + "/OVR_ScreenShot360/"; + fileName = null; + } + else + { + dirName = Path.GetDirectoryName(pathName); + fileName = Path.GetFileName(pathName); + + if (dirName[dirName.Length - 1] != '/' || dirName[dirName.Length - 1] != '\\') + dirName += "/"; + } + + if (string.IsNullOrEmpty(fileName)) + fileName = "OVR_" + System.DateTime.Now.ToString("hh_mm_ss") + ".png"; + + string extName = Path.GetExtension(fileName); + if (extName == ".png") + { + saveToPNG = true; + } + else if (extName == ".jpg") + { + saveToPNG = false; + } + else + { + Debug.LogError("Unsupported file format" + extName); + return false; + } + + // Validate path + try + { + System.IO.Directory.CreateDirectory(dirName); + } + catch (System.Exception e) + { + Debug.LogError("Failed to create path " + dirName + " since " + e.ToString()); + return false; + } + + + // Create the new texture + Texture2D tex = new Texture2D(width * 6, height, TextureFormat.RGB24, false); + if (tex == null) + { + Debug.LogError("[OVRScreenshotWizard] Failed creating the texture!"); + return false; + } + + // Merge all the cubemap faces into the texture + // Reference cubemap format: http://docs.unity3d.com/Manual/class-Cubemap.html + CubemapFace[] faces = new CubemapFace[] { CubemapFace.PositiveX, CubemapFace.NegativeX, CubemapFace.PositiveY, CubemapFace.NegativeY, CubemapFace.PositiveZ, CubemapFace.NegativeZ }; + for (int i = 0; i < faces.Length; i++) + { + // get the pixels from the cubemap + Color[] srcPixels = null; + Color[] pixels = cubemap.GetPixels(faces[i]); + // if desired, flip them as they are ordered left to right, bottom to top + srcPixels = new Color[pixels.Length]; + for (int y1 = 0; y1 < height; y1++) + { + for (int x1 = 0; x1 < width; x1++) + { + srcPixels[y1 * width + x1] = pixels[((height - 1 - y1) * width) + x1]; + } + } + // Copy them to the dest texture + tex.SetPixels(x, y, width, height, srcPixels); + x += width; + } + + try + { + // Encode the texture and save it to disk + byte[] bytes = saveToPNG ? tex.EncodeToPNG() : tex.EncodeToJPG(); + + System.IO.File.WriteAllBytes(dirName + fileName, bytes); + Debug.Log("Cubemap file created " + dirName + fileName); + } + catch (System.Exception e) + { + Debug.LogError("Failed to save cubemap file since " + e.ToString()); + return false; + } + + DestroyImmediate(tex); + return true; + } + +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs.meta new file mode 100644 index 0000000..949bdb0 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRCubemapCapture.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7a489178b0acf0147846b3873447beaf +timeCreated: 1464728890 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRCursor.cs b/Assets/Oculus/VR/Scripts/Util/OVRCursor.cs new file mode 100644 index 0000000..b93c601 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRCursor.cs @@ -0,0 +1,28 @@ +/************************************************************************************ + +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using System.Collections; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +abstract public class OVRCursor : MonoBehaviour +{ + public abstract void SetCursorRay(Transform ray); + public abstract void SetCursorStartDest(Vector3 start, Vector3 dest, Vector3 normal); +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRCursor.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRCursor.cs.meta new file mode 100644 index 0000000..8867e17 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRCursor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2233ce673fcb9f41bd0753f867b7f70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs b/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs new file mode 100644 index 0000000..ca86ba2 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs @@ -0,0 +1,433 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; +using UnityEngine.UI; + +//------------------------------------------------------------------------------------- +/// +/// Shows debug information on a heads-up display. +/// +public class OVRDebugInfo : MonoBehaviour +{ + #region GameObjects for Debug Information UIs + GameObject debugUIManager; + GameObject debugUIObject; + GameObject riftPresent; + GameObject fps; + GameObject ipd; + GameObject fov; + GameObject height; + GameObject depth; + GameObject resolutionEyeTexture; + GameObject latencies; + GameObject texts; + #endregion + + #region Debug strings + string strRiftPresent = null; // "VR DISABLED" + string strFPS = null; // "FPS: 0"; + string strIPD = null; // "IPD: 0.000"; + string strFOV = null; // "FOV: 0.0f"; + string strHeight = null; // "Height: 0.0f"; + string strDepth = null; // "Depth: 0.0f"; + string strResolutionEyeTexture = null; // "Resolution : {0} x {1}" + string strLatencies = null; // "R: {0:F3} TW: {1:F3} PP: {2:F3} RE: {3:F3} TWE: {4:F3}" + #endregion + + /// + /// Variables for FPS + /// + float updateInterval = 0.5f; + float accum = 0.0f; + int frames = 0; + float timeLeft = 0.0f; + + /// + /// Managing for UI initialization + /// + bool initUIComponent = false; + bool isInited = false; + + /// + /// UIs Y offset + /// + float offsetY = 55.0f; + + /// + /// Managing for rift detection UI + /// + float riftPresentTimeout = 0.0f; + + /// + /// Turn on / off VR variables + /// + bool showVRVars = false; + + #region MonoBehaviour handler + + /// + /// Initialization + /// + void Awake() + { + // Create canvas for using new GUI + debugUIManager = new GameObject(); + debugUIManager.name = "DebugUIManager"; + debugUIManager.transform.parent = GameObject.Find("LeftEyeAnchor").transform; + + RectTransform rectTransform = debugUIManager.AddComponent(); + rectTransform.sizeDelta = new Vector2(100f, 100f); + rectTransform.localScale = new Vector3(0.001f, 0.001f, 0.001f); + rectTransform.localPosition = new Vector3(0.01f, 0.17f, 0.53f); + rectTransform.localEulerAngles = Vector3.zero; + + Canvas canvas = debugUIManager.AddComponent(); + canvas.renderMode = RenderMode.WorldSpace; + canvas.pixelPerfect = false; + } + + /// + /// Updating VR variables and managing UI present + /// + void Update() + { + if (initUIComponent && !isInited) + { + InitUIComponents(); + } + + if (Input.GetKeyDown(KeyCode.Space) && riftPresentTimeout < 0.0f) + { + initUIComponent = true; + showVRVars ^= true; + } + + UpdateDeviceDetection(); + + // Presenting VR variables + if (showVRVars) + { + debugUIManager.SetActive(true); + UpdateVariable(); + UpdateStrings(); + } + else + { + debugUIManager.SetActive(false); + } + } + + /// + /// Initialize isInited value on OnDestroy + /// + void OnDestroy() + { + isInited = false; + } + #endregion + + #region Private Functions + /// + /// Initialize UI GameObjects + /// + void InitUIComponents() + { + float posY = 0.0f; + int fontSize = 20; + + debugUIObject = new GameObject(); + debugUIObject.name = "DebugInfo"; + debugUIObject.transform.parent = GameObject.Find("DebugUIManager").transform; + debugUIObject.transform.localPosition = new Vector3(0.0f, 100.0f, 0.0f); + debugUIObject.transform.localEulerAngles = Vector3.zero; + debugUIObject.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); + + // Print out for FPS + if (!string.IsNullOrEmpty(strFPS)) + { + fps = VariableObjectManager(fps, "FPS", posY -= offsetY, strFPS, fontSize); + } + + // Print out for IPD + if (!string.IsNullOrEmpty(strIPD)) + { + ipd = VariableObjectManager(ipd, "IPD", posY -= offsetY, strIPD, fontSize); + } + + // Print out for FOV + if (!string.IsNullOrEmpty(strFOV)) + { + fov = VariableObjectManager(fov, "FOV", posY -= offsetY, strFOV, fontSize); + } + + // Print out for Height + if (!string.IsNullOrEmpty(strHeight)) + { + height = VariableObjectManager(height, "Height", posY -= offsetY, strHeight, fontSize); + } + + // Print out for Depth + if (!string.IsNullOrEmpty(strDepth)) + { + depth = VariableObjectManager(depth, "Depth", posY -= offsetY, strDepth, fontSize); + } + + // Print out for Resoulution of Eye Texture + if (!string.IsNullOrEmpty(strResolutionEyeTexture)) + { + resolutionEyeTexture = VariableObjectManager(resolutionEyeTexture, "Resolution", posY -= offsetY, strResolutionEyeTexture, fontSize); + } + + // Print out for Latency + if (!string.IsNullOrEmpty(strLatencies)) + { + latencies = VariableObjectManager(latencies, "Latency", posY -= offsetY, strLatencies, 17); + posY = 0.0f; + } + + initUIComponent = false; + isInited = true; + + } + + /// + /// Update VR Variables + /// + void UpdateVariable() + { + UpdateIPD(); + UpdateEyeHeightOffset(); + UpdateEyeDepthOffset(); + UpdateFOV(); + UpdateResolutionEyeTexture(); + UpdateLatencyValues(); + UpdateFPS(); + } + + /// + /// Update Strings + /// + void UpdateStrings() + { + if (debugUIObject == null) + return; + + if (!string.IsNullOrEmpty(strFPS)) + fps.GetComponentInChildren().text = strFPS; + if (!string.IsNullOrEmpty(strIPD)) + ipd.GetComponentInChildren().text = strIPD; + if (!string.IsNullOrEmpty(strFOV)) + fov.GetComponentInChildren().text = strFOV; + if (!string.IsNullOrEmpty(strResolutionEyeTexture)) + resolutionEyeTexture.GetComponentInChildren().text = strResolutionEyeTexture; + if (!string.IsNullOrEmpty(strLatencies)) + { + latencies.GetComponentInChildren().text = strLatencies; + latencies.GetComponentInChildren().fontSize = 14; + } + if (!string.IsNullOrEmpty(strHeight)) + height.GetComponentInChildren().text = strHeight; + if (!string.IsNullOrEmpty(strDepth)) + depth.GetComponentInChildren().text = strDepth; + } + + /// + /// It's for rift present GUI + /// + void RiftPresentGUI(GameObject guiMainOBj) + { + riftPresent = ComponentComposition(riftPresent); + riftPresent.transform.SetParent(guiMainOBj.transform); + riftPresent.name = "RiftPresent"; + RectTransform rectTransform = riftPresent.GetComponent(); + rectTransform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); + rectTransform.localScale = new Vector3(1.0f, 1.0f, 1.0f); + rectTransform.localEulerAngles = Vector3.zero; + + Text text = riftPresent.GetComponentInChildren(); + text.text = strRiftPresent; + text.fontSize = 20; + } + + /// + /// Updates the device detection. + /// + void UpdateDeviceDetection() + { + if (riftPresentTimeout >= 0.0f) + { + riftPresentTimeout -= Time.deltaTime; + } + } + + /// + /// Object Manager for Variables + /// + /// gameobject for each Variable + GameObject VariableObjectManager(GameObject gameObject, string name, float posY, string str, int fontSize) + { + gameObject = ComponentComposition(gameObject); + gameObject.name = name; + gameObject.transform.SetParent(debugUIObject.transform); + + RectTransform rectTransform = gameObject.GetComponent(); + rectTransform.localPosition = new Vector3(0.0f, posY -= offsetY, 0.0f); + + Text text = gameObject.GetComponentInChildren(); + text.text = str; + text.fontSize = fontSize; + gameObject.transform.localEulerAngles = Vector3.zero; + + rectTransform.localScale = new Vector3(1.0f, 1.0f, 1.0f); + + return gameObject; + } + + /// + /// Component composition + /// + /// Composed gameobject. + GameObject ComponentComposition(GameObject GO) + { + GO = new GameObject(); + GO.AddComponent(); + GO.AddComponent(); + GO.AddComponent(); + GO.GetComponent().sizeDelta = new Vector2(350f, 50f); + GO.GetComponent().color = new Color(7f / 255f, 45f / 255f, 71f / 255f, 200f / 255f); + + texts = new GameObject(); + texts.AddComponent(); + texts.AddComponent(); + texts.AddComponent(); + texts.GetComponent().sizeDelta = new Vector2(350f, 50f); + texts.GetComponent().font = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font; + texts.GetComponent().alignment = TextAnchor.MiddleCenter; + + texts.transform.SetParent(GO.transform); + texts.name = "TextBox"; + + return GO; + } + #endregion + + #region Debugging variables handler + /// + /// Updates the IPD. + /// + void UpdateIPD() + { + strIPD = System.String.Format("IPD (mm): {0:F4}", OVRManager.profile.ipd * 1000.0f); + } + + /// + /// Updates the eye height offset. + /// + void UpdateEyeHeightOffset() + { + float eyeHeight = OVRManager.profile.eyeHeight; + strHeight = System.String.Format("Eye Height (m): {0:F3}", eyeHeight); + } + + /// + /// Updates the eye depth offset. + /// + void UpdateEyeDepthOffset() + { + float eyeDepth = OVRManager.profile.eyeDepth; + strDepth = System.String.Format("Eye Depth (m): {0:F3}", eyeDepth); + } + + /// + /// Updates the FOV. + /// + void UpdateFOV() + { +#if UNITY_2017_2_OR_NEWER + OVRDisplay.EyeRenderDesc eyeDesc = OVRManager.display.GetEyeRenderDesc(UnityEngine.XR.XRNode.LeftEye); +#else + OVRDisplay.EyeRenderDesc eyeDesc = OVRManager.display.GetEyeRenderDesc(UnityEngine.VR.VRNode.LeftEye); +#endif + strFOV = System.String.Format("FOV (deg): {0:F3}", eyeDesc.fov.y); + } + + /// + /// Updates resolution of eye texture + /// + void UpdateResolutionEyeTexture() + { +#if UNITY_2017_2_OR_NEWER + OVRDisplay.EyeRenderDesc leftEyeDesc = OVRManager.display.GetEyeRenderDesc(UnityEngine.XR.XRNode.LeftEye); + OVRDisplay.EyeRenderDesc rightEyeDesc = OVRManager.display.GetEyeRenderDesc(UnityEngine.XR.XRNode.RightEye); + + float scale = UnityEngine.XR.XRSettings.renderViewportScale; +#else + OVRDisplay.EyeRenderDesc leftEyeDesc = OVRManager.display.GetEyeRenderDesc(UnityEngine.VR.VRNode.LeftEye); + OVRDisplay.EyeRenderDesc rightEyeDesc = OVRManager.display.GetEyeRenderDesc(UnityEngine.VR.VRNode.RightEye); + + float scale = UnityEngine.VR.VRSettings.renderViewportScale; +#endif + float w = (int)(scale * (float)(leftEyeDesc.resolution.x + rightEyeDesc.resolution.x)); + float h = (int)(scale * (float)Mathf.Max(leftEyeDesc.resolution.y, rightEyeDesc.resolution.y)); + + strResolutionEyeTexture = System.String.Format("Resolution : {0} x {1}", w, h); + } + + /// + /// Updates latency values + /// + void UpdateLatencyValues() + { +#if !UNITY_ANDROID || UNITY_EDITOR + OVRDisplay.LatencyData latency = OVRManager.display.latency; + if (latency.render < 0.000001f && latency.timeWarp < 0.000001f && latency.postPresent < 0.000001f) + strLatencies = System.String.Format("Latency values are not available."); + else + strLatencies = System.String.Format("Render: {0:F3} TimeWarp: {1:F3} Post-Present: {2:F3}\nRender Error: {3:F3} TimeWarp Error: {4:F3}", + latency.render, + latency.timeWarp, + latency.postPresent, + latency.renderError, + latency.timeWarpError); +#endif + } + + /// + /// Updates the FPS. + /// + void UpdateFPS() + { + timeLeft -= Time.unscaledDeltaTime; + accum += Time.unscaledDeltaTime; + ++frames; + + // Interval ended - update GUI text and start new interval + if (timeLeft <= 0.0) + { + // display two fractional digits (f2 format) + float fps = frames / accum; + + strFPS = System.String.Format("FPS: {0:F2}", fps); + + timeLeft += updateInterval; + accum = 0.0f; + frames = 0; + } + } + #endregion +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs.meta new file mode 100644 index 0000000..6f1cf1e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRDebugInfo.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b71d1996d67004241a3b69960856ffcb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs b/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs new file mode 100644 index 0000000..f35f8c3 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs @@ -0,0 +1,277 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. + +************************************************************************************/ + +using UnityEngine; +using System.Collections; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +/// +/// UI pointer driven by gaze input. +/// +public class OVRGazePointer : OVRCursor { + private Transform gazeIcon; //the transform that rotates according to our movement + + [Tooltip("Should the pointer be hidden when not over interactive objects.")] + public bool hideByDefault = true; + + [Tooltip("Time after leaving interactive object before pointer fades.")] + public float showTimeoutPeriod = 1; + + [Tooltip("Time after mouse pointer becoming inactive before pointer unfades.")] + public float hideTimeoutPeriod = 0.1f; + + [Tooltip("Keep a faint version of the pointer visible while using a mouse")] + public bool dimOnHideRequest = true; + + [Tooltip("Angular scale of pointer")] + public float depthScaleMultiplier = 0.03f; + + public bool matchNormalOnPhysicsColliders; + + /// + /// The gaze ray. + /// + public Transform rayTransform; + + /// + /// Is gaze pointer current visible + /// + public bool hidden { get; private set; } + + /// + /// Current scale applied to pointer + /// + public float currentScale { get; private set; } + + /// + /// Current depth of pointer from camera + /// + private float depth; + private float hideUntilTime; + /// + /// How many times position has been set this frame. Used to detect when there are no position sets in a frame. + /// + private int positionSetsThisFrame = 0; + /// + /// Last time code requested the pointer be shown. Usually when pointer passes over interactive elements. + /// + private float lastShowRequestTime; + /// + /// Last time pointer was requested to be hidden. Usually mouse pointer activity. + /// + private float lastHideRequestTime; + + // Optionally present GUI element displaying progress when using gaze-to-select mechanics + private OVRProgressIndicator progressIndicator; + + private static OVRGazePointer _instance; + public static OVRGazePointer instance + { + // If there's no GazePointer already in the scene, instanciate one now. + get + { + if (_instance == null) + { + Debug.Log(string.Format("Instanciating GazePointer", 0)); + _instance = (OVRGazePointer)GameObject.Instantiate((OVRGazePointer)Resources.Load("Prefabs/GazePointerRing", typeof(OVRGazePointer))); + } + return _instance; + } + + } + + + /// + /// Used to determine alpha level of gaze cursor. Could also be used to determine cursor size, for example, as the cursor fades out. + /// + public float visibilityStrength + { + get + { + // It's possible there are reasons to show the cursor - such as it hovering over some UI - and reasons to hide + // the cursor - such as another input method (e.g. mouse) being used. We take both of these in to account. + + + float strengthFromShowRequest; + if (hideByDefault) + { + // fade the cursor out with time + strengthFromShowRequest = Mathf.Clamp01(1 - (Time.time - lastShowRequestTime) / showTimeoutPeriod); + } + else + { + // keep it fully visible + strengthFromShowRequest = 1; + } + + // Now consider factors requesting pointer to be hidden + float strengthFromHideRequest; + + strengthFromHideRequest = (lastHideRequestTime + hideTimeoutPeriod > Time.time) ? (dimOnHideRequest ? 0.1f : 0) : 1; + + + // Hide requests take priority + return Mathf.Min(strengthFromShowRequest, strengthFromHideRequest); + } + } + + public float SelectionProgress + { + get + { + return progressIndicator ? progressIndicator.currentProgress : 0; + } + set + { + if (progressIndicator) + progressIndicator.currentProgress = value; + } + } + + public void Awake() + { + currentScale = 1; + // Only allow one instance at runtime. + if (_instance != null && _instance != this) + { + enabled = false; + DestroyImmediate(this); + return; + } + + _instance = this; + + gazeIcon = transform.Find("GazeIcon"); + progressIndicator = transform.GetComponent(); + } + + void Update () + { + if (rayTransform == null && Camera.main != null) + rayTransform = Camera.main.transform; + + // Move the gaze cursor to keep it in the middle of the view + transform.position = rayTransform.position + rayTransform.forward * depth; + + // Should we show or hide the gaze cursor? + if (visibilityStrength == 0 && !hidden) + { + Hide(); + } + else if (visibilityStrength > 0 && hidden) + { + Show(); + } + } + + /// + /// Set position and orientation of pointer + /// + /// + /// + public override void SetCursorStartDest(Vector3 _, Vector3 pos, Vector3 normal) + { + transform.position = pos; + + if (!matchNormalOnPhysicsColliders) normal = rayTransform.forward; + + // Set the rotation to match the normal of the surface it's on. + Quaternion newRot = transform.rotation; + newRot.SetLookRotation(normal, rayTransform.up); + transform.rotation = newRot; + + // record depth so that distance doesn't pop when pointer leaves an object + depth = (rayTransform.position - pos).magnitude; + + //set scale based on depth + currentScale = depth * depthScaleMultiplier; + transform.localScale = new Vector3(currentScale, currentScale, currentScale); + + positionSetsThisFrame++; + RequestShow(); + } + + public override void SetCursorRay(Transform ray) + { + // We don't do anything here, because we already set this properly by default in Update. + } + + void LateUpdate() + { + // This happens after all Updates so we know that if positionSetsThisFrame is zero then nothing set the position this frame + if (positionSetsThisFrame == 0) + { + // No geometry intersections, so gazing into space. Make the cursor face directly at the camera + Quaternion newRot = transform.rotation; + newRot.SetLookRotation(rayTransform.forward, rayTransform.up); + transform.rotation = newRot; + } + + Quaternion iconRotation = gazeIcon.rotation; + iconRotation.SetLookRotation(transform.rotation * new Vector3(0, 0, 1)); + gazeIcon.rotation = iconRotation; + + positionSetsThisFrame = 0; + } + + /// + /// Request the pointer be hidden + /// + public void RequestHide() + { + if (!dimOnHideRequest) + { + Hide(); + } + lastHideRequestTime = Time.time; + } + + /// + /// Request the pointer be shown. Hide requests take priority + /// + public void RequestShow() + { + Show(); + lastShowRequestTime = Time.time; + } + + + // Disable/Enable child elements when we show/hide the cursor. For performance reasons. + void Hide() + { + foreach (Transform child in transform) + { + child.gameObject.SetActive(false); + } + if (GetComponent()) + GetComponent().enabled = false; + hidden = true; + } + + void Show() + { + foreach (Transform child in transform) + { + child.gameObject.SetActive(true); + } + if (GetComponent()) + GetComponent().enabled = true; + hidden = false; + } + +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs.meta new file mode 100644 index 0000000..b15e43a --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGazePointer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 30530ad0e40d0a64ea26d753ee4996ea +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs new file mode 100644 index 0000000..7e74c7b --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs @@ -0,0 +1,211 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using UnityEngine.UI; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +public class OVRGearVrControllerTest : MonoBehaviour +{ + public class BoolMonitor + { + public delegate bool BoolGenerator(); + + private string m_name = ""; + private BoolGenerator m_generator; + private bool m_prevValue = false; + private bool m_currentValue = false; + private bool m_currentValueRecentlyChanged = false; + private float m_displayTimeout = 0.0f; + private float m_displayTimer = 0.0f; + + public BoolMonitor(string name, BoolGenerator generator, float displayTimeout = 0.5f) + { + m_name = name; + m_generator = generator; + m_displayTimeout = displayTimeout; + } + + public void Update() + { + m_prevValue = m_currentValue; + m_currentValue = m_generator(); + + if (m_currentValue != m_prevValue) + { + m_currentValueRecentlyChanged = true; + m_displayTimer = m_displayTimeout; + } + + if (m_displayTimer > 0.0f) + { + m_displayTimer -= Time.deltaTime; + + if (m_displayTimer <= 0.0f) + { + m_currentValueRecentlyChanged = false; + m_displayTimer = 0.0f; + } + } + } + + public void AppendToStringBuilder(ref StringBuilder sb) + { + sb.Append(m_name); + + if (m_currentValue && m_currentValueRecentlyChanged) + sb.Append(": *True*\n"); + else if (m_currentValue) + sb.Append(": True \n"); + else if (!m_currentValue && m_currentValueRecentlyChanged) + sb.Append(": *False*\n"); + else if (!m_currentValue) + sb.Append(": False \n"); + } + } + + public Text uiText; + private List monitors; + private StringBuilder data; + + void Start() + { + if (uiText != null) + { + uiText.supportRichText = false; + } + + data = new StringBuilder(2048); + + monitors = new List() + { + // virtual + new BoolMonitor("WasRecentered", () => OVRInput.GetControllerWasRecentered()), + new BoolMonitor("One", () => OVRInput.Get(OVRInput.Button.One)), + new BoolMonitor("OneDown", () => OVRInput.GetDown(OVRInput.Button.One)), + new BoolMonitor("OneUp", () => OVRInput.GetUp(OVRInput.Button.One)), + new BoolMonitor("One (Touch)", () => OVRInput.Get(OVRInput.Touch.One)), + new BoolMonitor("OneDown (Touch)", () => OVRInput.GetDown(OVRInput.Touch.One)), + new BoolMonitor("OneUp (Touch)", () => OVRInput.GetUp(OVRInput.Touch.One)), + new BoolMonitor("Two", () => OVRInput.Get(OVRInput.Button.Two)), + new BoolMonitor("TwoDown", () => OVRInput.GetDown(OVRInput.Button.Two)), + new BoolMonitor("TwoUp", () => OVRInput.GetUp(OVRInput.Button.Two)), + new BoolMonitor("PrimaryIndexTrigger", () => OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)), + new BoolMonitor("PrimaryIndexTriggerDown", () => OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger)), + new BoolMonitor("PrimaryIndexTriggerUp", () => OVRInput.GetUp(OVRInput.Button.PrimaryIndexTrigger)), + new BoolMonitor("PrimaryIndexTrigger (Touch)", () => OVRInput.Get(OVRInput.Touch.PrimaryIndexTrigger)), + new BoolMonitor("PrimaryIndexTriggerDown (Touch)", () => OVRInput.GetDown(OVRInput.Touch.PrimaryIndexTrigger)), + new BoolMonitor("PrimaryIndexTriggerUp (Touch)", () => OVRInput.GetUp(OVRInput.Touch.PrimaryIndexTrigger)), + new BoolMonitor("PrimaryHandTrigger", () => OVRInput.Get(OVRInput.Button.PrimaryHandTrigger)), + new BoolMonitor("PrimaryHandTriggerDown", () => OVRInput.GetDown(OVRInput.Button.PrimaryHandTrigger)), + new BoolMonitor("PrimaryHandTriggerUp", () => OVRInput.GetUp(OVRInput.Button.PrimaryHandTrigger)), + new BoolMonitor("Up", () => OVRInput.Get(OVRInput.Button.Up)), + new BoolMonitor("Down", () => OVRInput.Get(OVRInput.Button.Down)), + new BoolMonitor("Left", () => OVRInput.Get(OVRInput.Button.Left)), + new BoolMonitor("Right", () => OVRInput.Get(OVRInput.Button.Right)), + new BoolMonitor("Touchpad (Click)", () => OVRInput.Get(OVRInput.Button.PrimaryTouchpad)), + new BoolMonitor("TouchpadDown (Click)", () => OVRInput.GetDown(OVRInput.Button.PrimaryTouchpad)), + new BoolMonitor("TouchpadUp (Click)", () => OVRInput.GetUp(OVRInput.Button.PrimaryTouchpad)), + new BoolMonitor("Touchpad (Touch)", () => OVRInput.Get(OVRInput.Touch.PrimaryTouchpad)), + new BoolMonitor("TouchpadDown (Touch)", () => OVRInput.GetDown(OVRInput.Touch.PrimaryTouchpad)), + new BoolMonitor("TouchpadUp (Touch)", () => OVRInput.GetUp(OVRInput.Touch.PrimaryTouchpad)), + + // raw + new BoolMonitor("Start", () => OVRInput.Get(OVRInput.RawButton.Start)), + new BoolMonitor("StartDown", () => OVRInput.GetDown(OVRInput.RawButton.Start)), + new BoolMonitor("StartUp", () => OVRInput.GetUp(OVRInput.RawButton.Start)), + new BoolMonitor("Back", () => OVRInput.Get(OVRInput.RawButton.Back)), + new BoolMonitor("BackDown", () => OVRInput.GetDown(OVRInput.RawButton.Back)), + new BoolMonitor("BackUp", () => OVRInput.GetUp(OVRInput.RawButton.Back)), + new BoolMonitor("A", () => OVRInput.Get(OVRInput.RawButton.A)), + new BoolMonitor("ADown", () => OVRInput.GetDown(OVRInput.RawButton.A)), + new BoolMonitor("AUp", () => OVRInput.GetUp(OVRInput.RawButton.A)), + }; + } + static string prevConnected = ""; + static BoolMonitor controllers = new BoolMonitor("Controllers Changed", () => { return OVRInput.GetConnectedControllers().ToString() != prevConnected; }); + + void Update() + { + OVRInput.Controller activeController = OVRInput.GetActiveController(); + + data.Length = 0; + byte recenterCount = OVRInput.GetControllerRecenterCount(); + data.AppendFormat("RecenterCount: {0}\n", recenterCount); + + byte battery = OVRInput.GetControllerBatteryPercentRemaining(); + data.AppendFormat("Battery: {0}\n", battery); + + float framerate = OVRPlugin.GetAppFramerate(); + data.AppendFormat("Framerate: {0:F2}\n", framerate); + + string activeControllerName = activeController.ToString(); + data.AppendFormat("Active: {0}\n", activeControllerName); + + string connectedControllerNames = OVRInput.GetConnectedControllers().ToString(); + data.AppendFormat("Connected: {0}\n", connectedControllerNames); + + data.AppendFormat("PrevConnected: {0}\n", prevConnected); + + controllers.Update(); + controllers.AppendToStringBuilder(ref data); + + prevConnected = connectedControllerNames; + + Quaternion rot = OVRInput.GetLocalControllerRotation(activeController); + data.AppendFormat("Orientation: ({0:F2}, {1:F2}, {2:F2}, {3:F2})\n", rot.x, rot.y, rot.z, rot.w); + + Vector3 angVel = OVRInput.GetLocalControllerAngularVelocity(activeController); + data.AppendFormat("AngVel: ({0:F2}, {1:F2}, {2:F2})\n", angVel.x, angVel.y, angVel.z); + + Vector3 angAcc = OVRInput.GetLocalControllerAngularAcceleration(activeController); + data.AppendFormat("AngAcc: ({0:F2}, {1:F2}, {2:F2})\n", angAcc.x, angAcc.y, angAcc.z); + + Vector3 pos = OVRInput.GetLocalControllerPosition(activeController); + data.AppendFormat("Position: ({0:F2}, {1:F2}, {2:F2})\n", pos.x, pos.y, pos.z); + + Vector3 vel = OVRInput.GetLocalControllerVelocity(activeController); + data.AppendFormat("Vel: ({0:F2}, {1:F2}, {2:F2})\n", vel.x, vel.y, vel.z); + + Vector3 acc = OVRInput.GetLocalControllerAcceleration(activeController); + data.AppendFormat("Acc: ({0:F2}, {1:F2}, {2:F2})\n", acc.x, acc.y, acc.z); + + Vector2 primaryTouchpad = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad); + data.AppendFormat("PrimaryTouchpad: ({0:F2}, {1:F2})\n", primaryTouchpad.x, primaryTouchpad.y); + + Vector2 secondaryTouchpad = OVRInput.Get(OVRInput.Axis2D.SecondaryTouchpad); + data.AppendFormat("SecondaryTouchpad: ({0:F2}, {1:F2})\n", secondaryTouchpad.x, secondaryTouchpad.y); + + float indexTrigger = OVRInput.Get(OVRInput.Axis1D.PrimaryIndexTrigger); + data.AppendFormat("PrimaryIndexTriggerAxis1D: ({0:F2})\n", indexTrigger); + + float handTrigger = OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger); + data.AppendFormat("PrimaryHandTriggerAxis1D: ({0:F2})\n", handTrigger); + + for (int i = 0; i < monitors.Count; i++) + { + monitors[i].Update(); + monitors[i].AppendToStringBuilder(ref data); + } + + if (uiText != null) + { + uiText.text = data.ToString(); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs.meta new file mode 100644 index 0000000..105f0e8 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGearVrControllerTest.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7acc4619d4cb5e64e9ed05e5a7a8099f +timeCreated: 1486173066 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs new file mode 100644 index 0000000..687a913 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs @@ -0,0 +1,164 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using UnityEngine; + +/// +/// An object that can be grabbed and thrown by OVRGrabber. +/// +public class OVRGrabbable : MonoBehaviour +{ + [SerializeField] + protected bool m_allowOffhandGrab = true; + [SerializeField] + protected bool m_snapPosition = false; + [SerializeField] + protected bool m_snapOrientation = false; + [SerializeField] + protected Transform m_snapOffset; + [SerializeField] + protected Collider[] m_grabPoints = null; + + protected bool m_grabbedKinematic = false; + protected Collider m_grabbedCollider = null; + protected OVRGrabber m_grabbedBy = null; + + /// + /// If true, the object can currently be grabbed. + /// + public bool allowOffhandGrab + { + get { return m_allowOffhandGrab; } + } + + /// + /// If true, the object is currently grabbed. + /// + public bool isGrabbed + { + get { return m_grabbedBy != null; } + } + + /// + /// If true, the object's position will snap to match snapOffset when grabbed. + /// + public bool snapPosition + { + get { return m_snapPosition; } + } + + /// + /// If true, the object's orientation will snap to match snapOffset when grabbed. + /// + public bool snapOrientation + { + get { return m_snapOrientation; } + } + + /// + /// An offset relative to the OVRGrabber where this object can snap when grabbed. + /// + public Transform snapOffset + { + get { return m_snapOffset; } + } + + /// + /// Returns the OVRGrabber currently grabbing this object. + /// + public OVRGrabber grabbedBy + { + get { return m_grabbedBy; } + } + + /// + /// The transform at which this object was grabbed. + /// + public Transform grabbedTransform + { + get { return m_grabbedCollider.transform; } + } + + /// + /// The Rigidbody of the collider that was used to grab this object. + /// + public Rigidbody grabbedRigidbody + { + get { return m_grabbedCollider.attachedRigidbody; } + } + + /// + /// The contact point(s) where the object was grabbed. + /// + public Collider[] grabPoints + { + get { return m_grabPoints; } + } + + /// + /// Notifies the object that it has been grabbed. + /// + virtual public void GrabBegin(OVRGrabber hand, Collider grabPoint) + { + m_grabbedBy = hand; + m_grabbedCollider = grabPoint; + gameObject.GetComponent().isKinematic = true; + } + + /// + /// Notifies the object that it has been released. + /// + virtual public void GrabEnd(Vector3 linearVelocity, Vector3 angularVelocity) + { + Rigidbody rb = gameObject.GetComponent(); + rb.isKinematic = m_grabbedKinematic; + rb.velocity = linearVelocity; + rb.angularVelocity = angularVelocity; + m_grabbedBy = null; + m_grabbedCollider = null; + } + + void Awake() + { + if (m_grabPoints.Length == 0) + { + // Get the collider from the grabbable + Collider collider = this.GetComponent(); + if (collider == null) + { + throw new ArgumentException("Grabbables cannot have zero grab points and no collider -- please add a grab point or collider."); + } + + // Create a default grab point + m_grabPoints = new Collider[1] { collider }; + } + } + + protected virtual void Start() + { + m_grabbedKinematic = GetComponent().isKinematic; + } + + void OnDestroy() + { + if (m_grabbedBy != null) + { + // Notify the hand to release destroyed grabbables + m_grabbedBy.ForceRelease(this); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs.meta new file mode 100644 index 0000000..2e346df --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabbable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 02d61468f8b77ae4b92c344bc9a600fb +timeCreated: 1481833527 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs new file mode 100644 index 0000000..42c3f1a --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs @@ -0,0 +1,374 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System.Collections.Generic; +using UnityEngine; + +/// +/// Allows grabbing and throwing of objects with the OVRGrabbable component on them. +/// +[RequireComponent(typeof(Rigidbody))] +public class OVRGrabber : MonoBehaviour +{ + // Grip trigger thresholds for picking up objects, with some hysteresis. + public float grabBegin = 0.55f; + public float grabEnd = 0.35f; + + // Demonstrates parenting the held object to the hand's transform when grabbed. + // When false, the grabbed object is moved every FixedUpdate using MovePosition. + // Note that MovePosition is required for proper physics simulation. If you set this to true, you can + // easily observe broken physics simulation by, for example, moving the bottom cube of a stacked + // tower and noting a complete loss of friction. + [SerializeField] + protected bool m_parentHeldObject = false; + + // Child/attached transforms of the grabber, indicating where to snap held objects to (if you snap them). + // Also used for ranking grab targets in case of multiple candidates. + [SerializeField] + protected Transform m_gripTransform = null; + // Child/attached Colliders to detect candidate grabbable objects. + [SerializeField] + protected Collider[] m_grabVolumes = null; + + // Should be OVRInput.Controller.LTouch or OVRInput.Controller.RTouch. + [SerializeField] + protected OVRInput.Controller m_controller; + + [SerializeField] + protected Transform m_parentTransform; + + protected bool m_grabVolumeEnabled = true; + protected Vector3 m_lastPos; + protected Quaternion m_lastRot; + protected Quaternion m_anchorOffsetRotation; + protected Vector3 m_anchorOffsetPosition; + protected float m_prevFlex; + protected OVRGrabbable m_grabbedObj = null; + protected Vector3 m_grabbedObjectPosOff; + protected Quaternion m_grabbedObjectRotOff; + protected Dictionary m_grabCandidates = new Dictionary(); + protected bool operatingWithoutOVRCameraRig = true; + + /// + /// The currently grabbed object. + /// + public OVRGrabbable grabbedObject + { + get { return m_grabbedObj; } + } + + public void ForceRelease(OVRGrabbable grabbable) + { + bool canRelease = ( + (m_grabbedObj != null) && + (m_grabbedObj == grabbable) + ); + if (canRelease) + { + GrabEnd(); + } + } + + protected virtual void Awake() + { + m_anchorOffsetPosition = transform.localPosition; + m_anchorOffsetRotation = transform.localRotation; + + // If we are being used with an OVRCameraRig, let it drive input updates, which may come from Update or FixedUpdate. + + OVRCameraRig rig = null; + if (transform.parent != null && transform.parent.parent != null) + rig = transform.parent.parent.GetComponent(); + + if (rig != null) + { + rig.UpdatedAnchors += (r) => {OnUpdatedAnchors();}; + operatingWithoutOVRCameraRig = false; + } + } + + protected virtual void Start() + { + m_lastPos = transform.position; + m_lastRot = transform.rotation; + if(m_parentTransform == null) + { + if(gameObject.transform.parent != null) + { + m_parentTransform = gameObject.transform.parent.transform; + } + else + { + m_parentTransform = new GameObject().transform; + m_parentTransform.position = Vector3.zero; + m_parentTransform.rotation = Quaternion.identity; + } + } + } + + void FixedUpdate() + { + if (operatingWithoutOVRCameraRig) + OnUpdatedAnchors(); + } + + // Hands follow the touch anchors by calling MovePosition each frame to reach the anchor. + // This is done instead of parenting to achieve workable physics. If you don't require physics on + // your hands or held objects, you may wish to switch to parenting. + void OnUpdatedAnchors() + { + Vector3 handPos = OVRInput.GetLocalControllerPosition(m_controller); + Quaternion handRot = OVRInput.GetLocalControllerRotation(m_controller); + Vector3 destPos = m_parentTransform.TransformPoint(m_anchorOffsetPosition + handPos); + Quaternion destRot = m_parentTransform.rotation * handRot * m_anchorOffsetRotation; + GetComponent().MovePosition(destPos); + GetComponent().MoveRotation(destRot); + + if (!m_parentHeldObject) + { + MoveGrabbedObject(destPos, destRot); + } + m_lastPos = transform.position; + m_lastRot = transform.rotation; + + float prevFlex = m_prevFlex; + // Update values from inputs + m_prevFlex = OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger, m_controller); + + CheckForGrabOrRelease(prevFlex); + } + + void OnDestroy() + { + if (m_grabbedObj != null) + { + GrabEnd(); + } + } + + void OnTriggerEnter(Collider otherCollider) + { + // Get the grab trigger + OVRGrabbable grabbable = otherCollider.GetComponent() ?? otherCollider.GetComponentInParent(); + if (grabbable == null) return; + + // Add the grabbable + int refCount = 0; + m_grabCandidates.TryGetValue(grabbable, out refCount); + m_grabCandidates[grabbable] = refCount + 1; + } + + void OnTriggerExit(Collider otherCollider) + { + OVRGrabbable grabbable = otherCollider.GetComponent() ?? otherCollider.GetComponentInParent(); + if (grabbable == null) return; + + // Remove the grabbable + int refCount = 0; + bool found = m_grabCandidates.TryGetValue(grabbable, out refCount); + if (!found) + { + return; + } + + if (refCount > 1) + { + m_grabCandidates[grabbable] = refCount - 1; + } + else + { + m_grabCandidates.Remove(grabbable); + } + } + + protected void CheckForGrabOrRelease(float prevFlex) + { + if ((m_prevFlex >= grabBegin) && (prevFlex < grabBegin)) + { + GrabBegin(); + } + else if ((m_prevFlex <= grabEnd) && (prevFlex > grabEnd)) + { + GrabEnd(); + } + } + + protected virtual void GrabBegin() + { + float closestMagSq = float.MaxValue; + OVRGrabbable closestGrabbable = null; + Collider closestGrabbableCollider = null; + + // Iterate grab candidates and find the closest grabbable candidate + foreach (OVRGrabbable grabbable in m_grabCandidates.Keys) + { + bool canGrab = !(grabbable.isGrabbed && !grabbable.allowOffhandGrab); + if (!canGrab) + { + continue; + } + + for (int j = 0; j < grabbable.grabPoints.Length; ++j) + { + Collider grabbableCollider = grabbable.grabPoints[j]; + // Store the closest grabbable + Vector3 closestPointOnBounds = grabbableCollider.ClosestPointOnBounds(m_gripTransform.position); + float grabbableMagSq = (m_gripTransform.position - closestPointOnBounds).sqrMagnitude; + if (grabbableMagSq < closestMagSq) + { + closestMagSq = grabbableMagSq; + closestGrabbable = grabbable; + closestGrabbableCollider = grabbableCollider; + } + } + } + + // Disable grab volumes to prevent overlaps + GrabVolumeEnable(false); + + if (closestGrabbable != null) + { + if (closestGrabbable.isGrabbed) + { + closestGrabbable.grabbedBy.OffhandGrabbed(closestGrabbable); + } + + m_grabbedObj = closestGrabbable; + m_grabbedObj.GrabBegin(this, closestGrabbableCollider); + + m_lastPos = transform.position; + m_lastRot = transform.rotation; + + // Set up offsets for grabbed object desired position relative to hand. + if(m_grabbedObj.snapPosition) + { + m_grabbedObjectPosOff = m_gripTransform.localPosition; + if(m_grabbedObj.snapOffset) + { + Vector3 snapOffset = m_grabbedObj.snapOffset.position; + if (m_controller == OVRInput.Controller.LTouch) snapOffset.x = -snapOffset.x; + m_grabbedObjectPosOff += snapOffset; + } + } + else + { + Vector3 relPos = m_grabbedObj.transform.position - transform.position; + relPos = Quaternion.Inverse(transform.rotation) * relPos; + m_grabbedObjectPosOff = relPos; + } + + if (m_grabbedObj.snapOrientation) + { + m_grabbedObjectRotOff = m_gripTransform.localRotation; + if(m_grabbedObj.snapOffset) + { + m_grabbedObjectRotOff = m_grabbedObj.snapOffset.rotation * m_grabbedObjectRotOff; + } + } + else + { + Quaternion relOri = Quaternion.Inverse(transform.rotation) * m_grabbedObj.transform.rotation; + m_grabbedObjectRotOff = relOri; + } + + // Note: force teleport on grab, to avoid high-speed travel to dest which hits a lot of other objects at high + // speed and sends them flying. The grabbed object may still teleport inside of other objects, but fixing that + // is beyond the scope of this demo. + MoveGrabbedObject(m_lastPos, m_lastRot, true); + if(m_parentHeldObject) + { + m_grabbedObj.transform.parent = transform; + } + } + } + + protected virtual void MoveGrabbedObject(Vector3 pos, Quaternion rot, bool forceTeleport = false) + { + if (m_grabbedObj == null) + { + return; + } + + Rigidbody grabbedRigidbody = m_grabbedObj.grabbedRigidbody; + Vector3 grabbablePosition = pos + rot * m_grabbedObjectPosOff; + Quaternion grabbableRotation = rot * m_grabbedObjectRotOff; + + if (forceTeleport) + { + grabbedRigidbody.transform.position = grabbablePosition; + grabbedRigidbody.transform.rotation = grabbableRotation; + } + else + { + grabbedRigidbody.MovePosition(grabbablePosition); + grabbedRigidbody.MoveRotation(grabbableRotation); + } + } + + protected void GrabEnd() + { + if (m_grabbedObj != null) + { + OVRPose localPose = new OVRPose { position = OVRInput.GetLocalControllerPosition(m_controller), orientation = OVRInput.GetLocalControllerRotation(m_controller) }; + OVRPose offsetPose = new OVRPose { position = m_anchorOffsetPosition, orientation = m_anchorOffsetRotation }; + localPose = localPose * offsetPose; + + OVRPose trackingSpace = transform.ToOVRPose() * localPose.Inverse(); + Vector3 linearVelocity = trackingSpace.orientation * OVRInput.GetLocalControllerVelocity(m_controller); + Vector3 angularVelocity = trackingSpace.orientation * OVRInput.GetLocalControllerAngularVelocity(m_controller); + + GrabbableRelease(linearVelocity, angularVelocity); + } + + // Re-enable grab volumes to allow overlap events + GrabVolumeEnable(true); + } + + protected void GrabbableRelease(Vector3 linearVelocity, Vector3 angularVelocity) + { + m_grabbedObj.GrabEnd(linearVelocity, angularVelocity); + if(m_parentHeldObject) m_grabbedObj.transform.parent = null; + m_grabbedObj = null; + } + + protected virtual void GrabVolumeEnable(bool enabled) + { + if (m_grabVolumeEnabled == enabled) + { + return; + } + + m_grabVolumeEnabled = enabled; + for (int i = 0; i < m_grabVolumes.Length; ++i) + { + Collider grabVolume = m_grabVolumes[i]; + grabVolume.enabled = m_grabVolumeEnabled; + } + + if (!m_grabVolumeEnabled) + { + m_grabCandidates.Clear(); + } + } + + protected virtual void OffhandGrabbed(OVRGrabbable grabbable) + { + if (m_grabbedObj == grabbable) + { + GrabbableRelease(Vector3.zero, Vector3.zero); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs.meta new file mode 100644 index 0000000..2201c99 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGrabber.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fd425c2d06f39bf4899d07c05d0f10eb +timeCreated: 1481832436 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs b/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs new file mode 100644 index 0000000..734b640 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs @@ -0,0 +1,190 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +/// +/// Diagnostic display with a regular grid of cubes for visual testing of +/// tracking and distortion. +/// +public class OVRGridCube : MonoBehaviour +{ + /// + /// The key that toggles the grid of cubes. + /// + public KeyCode GridKey = KeyCode.G; + + private GameObject CubeGrid = null; + + private bool CubeGridOn = false; + private bool CubeSwitchColorOld = false; + private bool CubeSwitchColor = false; + + private int gridSizeX = 6; + private int gridSizeY = 4; + private int gridSizeZ = 6; + private float gridScale = 0.3f; + private float cubeScale = 0.03f; + + // Handle to OVRCameraRig + private OVRCameraRig CameraController = null; + + /// + /// Update this instance. + /// + void Update () + { + UpdateCubeGrid(); + } + + /// + /// Sets the OVR camera controller. + /// + /// Camera controller. + public void SetOVRCameraController(ref OVRCameraRig cameraController) + { + CameraController = cameraController; + } + + void UpdateCubeGrid() + { + // Toggle the grid cube display on 'G' + if(Input.GetKeyDown(GridKey)) + { + if(CubeGridOn == false) + { + CubeGridOn = true; + Debug.LogWarning("CubeGrid ON"); + if(CubeGrid != null) + CubeGrid.SetActive(true); + else + CreateCubeGrid(); + } + else + { + CubeGridOn = false; + Debug.LogWarning("CubeGrid OFF"); + + if(CubeGrid != null) + CubeGrid.SetActive(false); + } + } + + if(CubeGrid != null) + { + // Set cube colors to let user know if camera is tracking + CubeSwitchColor = !OVRManager.tracker.isPositionTracked; + + if(CubeSwitchColor != CubeSwitchColorOld) + CubeGridSwitchColor(CubeSwitchColor); + CubeSwitchColorOld = CubeSwitchColor; + } + } + + void CreateCubeGrid() + { + Debug.LogWarning("Create CubeGrid"); + + // Create the visual cube grid + CubeGrid = new GameObject("CubeGrid"); + // Set a layer to target a specific camera + CubeGrid.layer = CameraController.gameObject.layer; + + for (int x = -gridSizeX; x <= gridSizeX; x++) + for (int y = -gridSizeY; y <= gridSizeY; y++) + for (int z = -gridSizeZ; z <= gridSizeZ; z++) + { + // Set the cube type: + // 0 = non-axis cube + // 1 = axis cube + // 2 = center cube + int CubeType = 0; + if ((x == 0 && y == 0) || (x == 0 && z == 0) || (y == 0 && z == 0)) + { + if((x == 0) && (y == 0) && (z == 0)) + CubeType = 2; + else + CubeType = 1; + } + + GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + + BoxCollider bc = cube.GetComponent(); + bc.enabled = false; + + cube.layer = CameraController.gameObject.layer; + + // No shadows + Renderer r = cube.GetComponent(); + +#if UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6 + // Renderer.castShadows was deprecated starting in Unity 5.0 + r.castShadows = false; +#else + r.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; +#endif + + r.receiveShadows = false; + + // Cube line is white down the middle + if (CubeType == 0) + r.material.color = Color.red; + else if (CubeType == 1) + r.material.color = Color.white; + else + r.material.color = Color.yellow; + + cube.transform.position = + new Vector3(((float)x * gridScale), + ((float)y * gridScale), + ((float)z * gridScale)); + + float s = 0.7f; + + // Axis cubes are bigger + if(CubeType == 1) + s = 1.0f; + // Center cube is the largest + if(CubeType == 2) + s = 2.0f; + + cube.transform.localScale = + new Vector3(cubeScale * s, cubeScale * s, cubeScale * s); + + cube.transform.parent = CubeGrid.transform; + } + } + + /// + /// Switch the Cube grid color. + /// + /// If set to true cube switch color. + void CubeGridSwitchColor(bool CubeSwitchColor) + { + Color c = Color.red; + if(CubeSwitchColor == true) + c = Color.blue; + + foreach(Transform child in CubeGrid.transform) + { + Material m = child.GetComponent().material; + // Cube line is white down the middle + if(m.color == Color.red || m.color == Color.blue) + m.color = c; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs.meta new file mode 100644 index 0000000..297ee3e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRGridCube.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4988596c8a187f94f8e6a345ebb4254b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs b/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs new file mode 100644 index 0000000..15675a0 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs @@ -0,0 +1,894 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Collections.Generic; + +namespace UnityEngine.EventSystems +{ + /// + /// VR extension of PointerInputModule which supports gaze and controller pointing. + /// + public class OVRInputModule : PointerInputModule + { + [Tooltip("Object which points with Z axis. E.g. CentreEyeAnchor from OVRCameraRig")] + public Transform rayTransform; + + public OVRCursor m_Cursor; + + [Tooltip("Gamepad button to act as gaze click")] + public OVRInput.Button joyPadClickButton = OVRInput.Button.One; + + [Tooltip("Keyboard button to act as gaze click")] + public KeyCode gazeClickKey = KeyCode.Space; + + [Header("Physics")] + [Tooltip("Perform an sphere cast to determine correct depth for gaze pointer")] + public bool performSphereCastForGazepointer; + + [Header("Gamepad Stick Scroll")] + [Tooltip("Enable scrolling with the right stick on a gamepad")] + public bool useRightStickScroll = true; + + [Tooltip("Deadzone for right stick to prevent accidental scrolling")] + public float rightStickDeadZone = 0.15f; + + [Header("Touchpad Swipe Scroll")] + [Tooltip("Enable scrolling by swiping the GearVR touchpad")] + public bool useSwipeScroll = true; + [Tooltip("Minimum trackpad movement in pixels to start swiping")] + public float swipeDragThreshold = 2; + [Tooltip("Distance scrolled when swipe scroll occurs")] + public float swipeDragScale = 1f; + /* It's debatable which way left and right are on the Gear VR touchpad since it's facing away from you + * the following bool allows this to be swapped*/ + [Tooltip("Invert X axis on touchpad")] + public bool InvertSwipeXAxis = false; + + + // The raycaster that gets to do pointer interaction (e.g. with a mouse), gaze interaction always works + [NonSerialized] + public OVRRaycaster activeGraphicRaycaster; + [Header("Dragging")] + [Tooltip("Minimum pointer movement in degrees to start dragging")] + public float angleDragThreshold = 1; + + [SerializeField] + private float m_SpherecastRadius = 1.0f; + + + + + + // The following region contains code exactly the same as the implementation + // of StandaloneInputModule. It is copied here rather than inheriting from StandaloneInputModule + // because most of StandaloneInputModule is private so it isn't possible to easily derive from. + // Future changes from Unity to StandaloneInputModule will make it possible for this class to + // derive from StandaloneInputModule instead of PointerInput module. + // + // The following functions are not present in the following region since they have modified + // versions in the next region: + // Process + // ProcessMouseEvent + // UseMouse + #region StandaloneInputModule code + private float m_NextAction; + + private Vector2 m_LastMousePosition; + private Vector2 m_MousePosition; + + protected OVRInputModule() + {} + +#if UNITY_EDITOR + protected override void Reset() + { + allowActivationOnMobileDevice = true; + } +#endif + + [Obsolete("Mode is no longer needed on input module as it handles both mouse and keyboard simultaneously.", false)] + public enum InputMode + { + Mouse, + Buttons + } + + [Obsolete("Mode is no longer needed on input module as it handles both mouse and keyboard simultaneously.", false)] + public InputMode inputMode + { + get { return InputMode.Mouse; } + } + [Header("Standalone Input Module")] + [SerializeField] + private string m_HorizontalAxis = "Horizontal"; + + /// + /// Name of the vertical axis for movement (if axis events are used). + /// + [SerializeField] + private string m_VerticalAxis = "Vertical"; + + /// + /// Name of the submit button. + /// + [SerializeField] + private string m_SubmitButton = "Submit"; + + /// + /// Name of the submit button. + /// + [SerializeField] + private string m_CancelButton = "Cancel"; + + [SerializeField] + private float m_InputActionsPerSecond = 10; + + [SerializeField] + private bool m_AllowActivationOnMobileDevice; + + public bool allowActivationOnMobileDevice + { + get { return m_AllowActivationOnMobileDevice; } + set { m_AllowActivationOnMobileDevice = value; } + } + + public float inputActionsPerSecond + { + get { return m_InputActionsPerSecond; } + set { m_InputActionsPerSecond = value; } + } + + /// + /// Name of the horizontal axis for movement (if axis events are used). + /// + public string horizontalAxis + { + get { return m_HorizontalAxis; } + set { m_HorizontalAxis = value; } + } + + /// + /// Name of the vertical axis for movement (if axis events are used). + /// + public string verticalAxis + { + get { return m_VerticalAxis; } + set { m_VerticalAxis = value; } + } + + public string submitButton + { + get { return m_SubmitButton; } + set { m_SubmitButton = value; } + } + + public string cancelButton + { + get { return m_CancelButton; } + set { m_CancelButton = value; } + } + + public override void UpdateModule() + { + m_LastMousePosition = m_MousePosition; + m_MousePosition = Input.mousePosition; + } + + public override bool IsModuleSupported() + { + // Check for mouse presence instead of whether touch is supported, + // as you can connect mouse to a tablet and in that case we'd want + // to use StandaloneInputModule for non-touch input events. + return m_AllowActivationOnMobileDevice || Input.mousePresent; + } + + public override bool ShouldActivateModule() + { + if (!base.ShouldActivateModule()) + return false; + + var shouldActivate = Input.GetButtonDown(m_SubmitButton); + shouldActivate |= Input.GetButtonDown(m_CancelButton); + shouldActivate |= !Mathf.Approximately(Input.GetAxisRaw(m_HorizontalAxis), 0.0f); + shouldActivate |= !Mathf.Approximately(Input.GetAxisRaw(m_VerticalAxis), 0.0f); + shouldActivate |= (m_MousePosition - m_LastMousePosition).sqrMagnitude > 0.0f; + shouldActivate |= Input.GetMouseButtonDown(0); + return shouldActivate; + } + + public override void ActivateModule() + { + base.ActivateModule(); + m_MousePosition = Input.mousePosition; + m_LastMousePosition = Input.mousePosition; + + var toSelect = eventSystem.currentSelectedGameObject; + if (toSelect == null) + toSelect = eventSystem.firstSelectedGameObject; + + eventSystem.SetSelectedGameObject(toSelect, GetBaseEventData()); + } + + public override void DeactivateModule() + { + base.DeactivateModule(); + ClearSelection(); + } + + + + /// + /// Process submit keys. + /// + private bool SendSubmitEventToSelectedObject() + { + if (eventSystem.currentSelectedGameObject == null) + return false; + + var data = GetBaseEventData(); + if (Input.GetButtonDown(m_SubmitButton)) + ExecuteEvents.Execute(eventSystem.currentSelectedGameObject, data, ExecuteEvents.submitHandler); + + if (Input.GetButtonDown(m_CancelButton)) + ExecuteEvents.Execute(eventSystem.currentSelectedGameObject, data, ExecuteEvents.cancelHandler); + return data.used; + } + + private bool AllowMoveEventProcessing(float time) + { + bool allow = Input.GetButtonDown(m_HorizontalAxis); + allow |= Input.GetButtonDown(m_VerticalAxis); + allow |= (time > m_NextAction); + return allow; + } + + private Vector2 GetRawMoveVector() + { + Vector2 move = Vector2.zero; + move.x = Input.GetAxisRaw(m_HorizontalAxis); + move.y = Input.GetAxisRaw(m_VerticalAxis); + + if (Input.GetButtonDown(m_HorizontalAxis)) + { + if (move.x < 0) + move.x = -1f; + if (move.x > 0) + move.x = 1f; + } + if (Input.GetButtonDown(m_VerticalAxis)) + { + if (move.y < 0) + move.y = -1f; + if (move.y > 0) + move.y = 1f; + } + return move; + } + + /// + /// Process keyboard events. + /// + private bool SendMoveEventToSelectedObject() + { + float time = Time.unscaledTime; + + if (!AllowMoveEventProcessing(time)) + return false; + + Vector2 movement = GetRawMoveVector(); + // Debug.Log(m_ProcessingEvent.rawType + " axis:" + m_AllowAxisEvents + " value:" + "(" + x + "," + y + ")"); + var axisEventData = GetAxisEventData(movement.x, movement.y, 0.6f); + if (!Mathf.Approximately(axisEventData.moveVector.x, 0f) + || !Mathf.Approximately(axisEventData.moveVector.y, 0f)) + { + ExecuteEvents.Execute(eventSystem.currentSelectedGameObject, axisEventData, ExecuteEvents.moveHandler); + } + m_NextAction = time + 1f / m_InputActionsPerSecond; + return axisEventData.used; + } + + + + + + private bool SendUpdateEventToSelectedObject() + { + if (eventSystem.currentSelectedGameObject == null) + return false; + + var data = GetBaseEventData(); + ExecuteEvents.Execute(eventSystem.currentSelectedGameObject, data, ExecuteEvents.updateSelectedHandler); + return data.used; + } + + /// + /// Process the current mouse press. + /// + private void ProcessMousePress(MouseButtonEventData data) + { + var pointerEvent = data.buttonData; + var currentOverGo = pointerEvent.pointerCurrentRaycast.gameObject; + + // PointerDown notification + if (data.PressedThisFrame()) + { + pointerEvent.eligibleForClick = true; + pointerEvent.delta = Vector2.zero; + pointerEvent.dragging = false; + pointerEvent.useDragThreshold = true; + pointerEvent.pressPosition = pointerEvent.position; + if (pointerEvent.IsVRPointer()) + { + pointerEvent.SetSwipeStart(Input.mousePosition); + } + pointerEvent.pointerPressRaycast = pointerEvent.pointerCurrentRaycast; + + DeselectIfSelectionChanged(currentOverGo, pointerEvent); + + // search for the control that will receive the press + // if we can't find a press handler set the press + // handler to be what would receive a click. + var newPressed = ExecuteEvents.ExecuteHierarchy(currentOverGo, pointerEvent, ExecuteEvents.pointerDownHandler); + + // didnt find a press handler... search for a click handler + if (newPressed == null) + newPressed = ExecuteEvents.GetEventHandler(currentOverGo); + + // Debug.Log("Pressed: " + newPressed); + + float time = Time.unscaledTime; + + if (newPressed == pointerEvent.lastPress) + { + var diffTime = time - pointerEvent.clickTime; + if (diffTime < 0.3f) + ++pointerEvent.clickCount; + else + pointerEvent.clickCount = 1; + + pointerEvent.clickTime = time; + } + else + { + pointerEvent.clickCount = 1; + } + + pointerEvent.pointerPress = newPressed; + pointerEvent.rawPointerPress = currentOverGo; + + pointerEvent.clickTime = time; + + // Save the drag handler as well + pointerEvent.pointerDrag = ExecuteEvents.GetEventHandler(currentOverGo); + + if (pointerEvent.pointerDrag != null) + ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.initializePotentialDrag); + } + + // PointerUp notification + if (data.ReleasedThisFrame()) + { + // Debug.Log("Executing pressup on: " + pointer.pointerPress); + ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerUpHandler); + + // Debug.Log("KeyCode: " + pointer.eventData.keyCode); + + // see if we mouse up on the same element that we clicked on... + var pointerUpHandler = ExecuteEvents.GetEventHandler(currentOverGo); + + // PointerClick and Drop events + if (pointerEvent.pointerPress == pointerUpHandler && pointerEvent.eligibleForClick) + { + ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerClickHandler); + } + else if (pointerEvent.pointerDrag != null) + { + ExecuteEvents.ExecuteHierarchy(currentOverGo, pointerEvent, ExecuteEvents.dropHandler); + } + + pointerEvent.eligibleForClick = false; + pointerEvent.pointerPress = null; + pointerEvent.rawPointerPress = null; + + if (pointerEvent.pointerDrag != null && pointerEvent.dragging) + ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.endDragHandler); + + pointerEvent.dragging = false; + pointerEvent.pointerDrag = null; + + // redo pointer enter / exit to refresh state + // so that if we moused over somethign that ignored it before + // due to having pressed on something else + // it now gets it. + if (currentOverGo != pointerEvent.pointerEnter) + { + HandlePointerExitAndEnter(pointerEvent, null); + HandlePointerExitAndEnter(pointerEvent, currentOverGo); + } + } + } +#endregion + #region Modified StandaloneInputModule methods + + /// + /// Process all mouse events. This is the same as the StandaloneInputModule version except that + /// it takes MouseState as a parameter, allowing it to be used for both Gaze and Mouse + /// pointerss. + /// + private void ProcessMouseEvent(MouseState mouseData) + { + var pressed = mouseData.AnyPressesThisFrame(); + var released = mouseData.AnyReleasesThisFrame(); + + var leftButtonData = mouseData.GetButtonState(PointerEventData.InputButton.Left).eventData; + + if (!UseMouse(pressed, released, leftButtonData.buttonData)) + return; + + // Process the first mouse button fully + ProcessMousePress(leftButtonData); + ProcessMove(leftButtonData.buttonData); + ProcessDrag(leftButtonData.buttonData); + + // Now process right / middle clicks + ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData); + ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Right).eventData.buttonData); + ProcessMousePress(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData); + ProcessDrag(mouseData.GetButtonState(PointerEventData.InputButton.Middle).eventData.buttonData); + + if (!Mathf.Approximately(leftButtonData.buttonData.scrollDelta.sqrMagnitude, 0.0f)) + { + var scrollHandler = ExecuteEvents.GetEventHandler(leftButtonData.buttonData.pointerCurrentRaycast.gameObject); + ExecuteEvents.ExecuteHierarchy(scrollHandler, leftButtonData.buttonData, ExecuteEvents.scrollHandler); + } + } + + /// + /// Process this InputModule. Same as the StandaloneInputModule version, except that it calls + /// ProcessMouseEvent twice, once for gaze pointers, and once for mouse pointers. + /// + public override void Process() + { + bool usedEvent = SendUpdateEventToSelectedObject(); + + if (eventSystem.sendNavigationEvents) + { + if (!usedEvent) + usedEvent |= SendMoveEventToSelectedObject(); + + if (!usedEvent) + SendSubmitEventToSelectedObject(); + } + + ProcessMouseEvent(GetGazePointerData()); +#if !UNITY_ANDROID + ProcessMouseEvent(GetCanvasPointerData()); +#endif + } + /// + /// Decide if mouse events need to be processed this frame. Same as StandloneInputModule except + /// that the IsPointerMoving method from this class is used, instead of the method on PointerEventData + /// + private static bool UseMouse(bool pressed, bool released, PointerEventData pointerData) + { + if (pressed || released || IsPointerMoving(pointerData) || pointerData.IsScrolling()) + return true; + + return false; + } + #endregion + + + /// + /// Convenience function for cloning PointerEventData + /// + /// Copy this value + /// to this object + protected void CopyFromTo(OVRPointerEventData @from, OVRPointerEventData @to) + { + @to.position = @from.position; + @to.delta = @from.delta; + @to.scrollDelta = @from.scrollDelta; + @to.pointerCurrentRaycast = @from.pointerCurrentRaycast; + @to.pointerEnter = @from.pointerEnter; + @to.worldSpaceRay = @from.worldSpaceRay; + } + /// + /// Convenience function for cloning PointerEventData + /// + /// Copy this value + /// to this object + protected new void CopyFromTo(PointerEventData @from, PointerEventData @to) + { + @to.position = @from.position; + @to.delta = @from.delta; + @to.scrollDelta = @from.scrollDelta; + @to.pointerCurrentRaycast = @from.pointerCurrentRaycast; + @to.pointerEnter = @from.pointerEnter; + } + + + // In the following region we extend the PointerEventData system implemented in PointerInputModule + // We define an additional dictionary for ray(e.g. gaze) based pointers. Mouse pointers still use the dictionary + // in PointerInputModule +#region PointerEventData pool + + // Pool for OVRRayPointerEventData for ray based pointers + protected Dictionary m_VRRayPointerData = new Dictionary(); + + + protected bool GetPointerData(int id, out OVRPointerEventData data, bool create) + { + if (!m_VRRayPointerData.TryGetValue(id, out data) && create) + { + data = new OVRPointerEventData(eventSystem) + { + pointerId = id, + }; + + m_VRRayPointerData.Add(id, data); + return true; + } + return false; + } + + /// + /// Clear pointer state for both types of pointer + /// + protected new void ClearSelection() + { + var baseEventData = GetBaseEventData(); + + foreach (var pointer in m_PointerData.Values) + { + // clear all selection + HandlePointerExitAndEnter(pointer, null); + } + foreach (var pointer in m_VRRayPointerData.Values) + { + // clear all selection + HandlePointerExitAndEnter(pointer, null); + } + + m_PointerData.Clear(); + eventSystem.SetSelectedGameObject(null, baseEventData); + } +#endregion + + /// + /// For RectTransform, calculate it's normal in world space + /// + static Vector3 GetRectTransformNormal(RectTransform rectTransform) + { + Vector3[] corners = new Vector3[4]; + rectTransform.GetWorldCorners(corners); + Vector3 BottomEdge = corners[3] - corners[0]; + Vector3 LeftEdge = corners[1] - corners[0]; + rectTransform.GetWorldCorners(corners); + return Vector3.Cross(BottomEdge, LeftEdge).normalized; + } + + private readonly MouseState m_MouseState = new MouseState(); + + + // The following 2 functions are equivalent to PointerInputModule.GetMousePointerEventData but are customized to + // get data for ray pointers and canvas mouse pointers. + + /// + /// State for a pointer controlled by a world space ray. E.g. gaze pointer + /// + /// + virtual protected MouseState GetGazePointerData() + { + // Get the OVRRayPointerEventData reference + OVRPointerEventData leftData; + GetPointerData(kMouseLeftId, out leftData, true ); + leftData.Reset(); + + //Now set the world space ray. This ray is what the user uses to point at UI elements + leftData.worldSpaceRay = new Ray(rayTransform.position, rayTransform.forward); + leftData.scrollDelta = GetExtraScrollDelta(); + + //Populate some default values + leftData.button = PointerEventData.InputButton.Left; + leftData.useDragThreshold = true; + // Perform raycast to find intersections with world + eventSystem.RaycastAll(leftData, m_RaycastResultCache); + var raycast = FindFirstRaycast(m_RaycastResultCache); + leftData.pointerCurrentRaycast = raycast; + m_RaycastResultCache.Clear(); + + m_Cursor.SetCursorRay(rayTransform); + + OVRRaycaster ovrRaycaster = raycast.module as OVRRaycaster; + // We're only interested in intersections from OVRRaycasters + if (ovrRaycaster) + { + // The Unity UI system expects event data to have a screen position + // so even though this raycast came from a world space ray we must get a screen + // space position for the camera attached to this raycaster for compatability + leftData.position = ovrRaycaster.GetScreenPosition(raycast); + + // Find the world position and normal the Graphic the ray intersected + RectTransform graphicRect = raycast.gameObject.GetComponent(); + if (graphicRect != null) + { + // Set are gaze indicator with this world position and normal + Vector3 worldPos = raycast.worldPosition; + Vector3 normal = GetRectTransformNormal(graphicRect); + m_Cursor.SetCursorStartDest(rayTransform.position, worldPos, normal); + } + } + + // Now process physical raycast intersections + OVRPhysicsRaycaster physicsRaycaster = raycast.module as OVRPhysicsRaycaster; + if (physicsRaycaster) + { + Vector3 position = raycast.worldPosition; + + if (performSphereCastForGazepointer) + { + // Here we cast a sphere into the scene rather than a ray. This gives a more accurate depth + // for positioning a circular gaze pointer + List results = new List(); + physicsRaycaster.Spherecast(leftData, results, m_SpherecastRadius); + if (results.Count > 0 && results[0].distance < raycast.distance) + { + position = results[0].worldPosition; + } + } + + leftData.position = physicsRaycaster.GetScreenPos(raycast.worldPosition); + + m_Cursor.SetCursorStartDest(rayTransform.position, position, raycast.worldNormal); + } + + // Stick default data values in right and middle slots for compatability + + // copy the apropriate data into right and middle slots + OVRPointerEventData rightData; + GetPointerData(kMouseRightId, out rightData, true ); + CopyFromTo(leftData, rightData); + rightData.button = PointerEventData.InputButton.Right; + + OVRPointerEventData middleData; + GetPointerData(kMouseMiddleId, out middleData, true ); + CopyFromTo(leftData, middleData); + middleData.button = PointerEventData.InputButton.Middle; + + + m_MouseState.SetButtonState(PointerEventData.InputButton.Left, GetGazeButtonState(), leftData); + m_MouseState.SetButtonState(PointerEventData.InputButton.Right, PointerEventData.FramePressState.NotChanged, rightData); + m_MouseState.SetButtonState(PointerEventData.InputButton.Middle, PointerEventData.FramePressState.NotChanged, middleData); + return m_MouseState; + } + + /// + /// Get state for pointer which is a pointer moving in world space across the surface of a world space canvas. + /// + /// + protected MouseState GetCanvasPointerData() + { + // Get the OVRRayPointerEventData reference + PointerEventData leftData; + GetPointerData(kMouseLeftId, out leftData, true ); + leftData.Reset(); + + // Setup default values here. Set position to zero because we don't actually know the pointer + // positions. Each canvas knows the position of its canvas pointer. + leftData.position = Vector2.zero; + leftData.scrollDelta = Input.mouseScrollDelta; + leftData.button = PointerEventData.InputButton.Left; + + if (activeGraphicRaycaster) + { + // Let the active raycaster find intersections on its canvas + activeGraphicRaycaster.RaycastPointer(leftData, m_RaycastResultCache); + var raycast = FindFirstRaycast(m_RaycastResultCache); + leftData.pointerCurrentRaycast = raycast; + m_RaycastResultCache.Clear(); + + OVRRaycaster ovrRaycaster = raycast.module as OVRRaycaster; + if (ovrRaycaster) // raycast may not actually contain a result + { + // The Unity UI system expects event data to have a screen position + // so even though this raycast came from a world space ray we must get a screen + // space position for the camera attached to this raycaster for compatability + Vector2 position = ovrRaycaster.GetScreenPosition(raycast); + + leftData.delta = position - leftData.position; + leftData.position = position; + } + } + + // copy the apropriate data into right and middle slots + PointerEventData rightData; + GetPointerData(kMouseRightId, out rightData, true ); + CopyFromTo(leftData, rightData); + rightData.button = PointerEventData.InputButton.Right; + + PointerEventData middleData; + GetPointerData(kMouseMiddleId, out middleData, true ); + CopyFromTo(leftData, middleData); + middleData.button = PointerEventData.InputButton.Middle; + + m_MouseState.SetButtonState(PointerEventData.InputButton.Left, StateForMouseButton(0), leftData); + m_MouseState.SetButtonState(PointerEventData.InputButton.Right, StateForMouseButton(1), rightData); + m_MouseState.SetButtonState(PointerEventData.InputButton.Middle, StateForMouseButton(2), middleData); + return m_MouseState; + } + + /// + /// New version of ShouldStartDrag implemented first in PointerInputModule. This version differs in that + /// for ray based pointers it makes a decision about whether a drag should start based on the angular change + /// the pointer has made so far, as seen from the camera. This also works when the world space ray is + /// translated rather than rotated, since the beginning and end of the movement are considered as angle from + /// the same point. + /// + private bool ShouldStartDrag(PointerEventData pointerEvent) + { + if (!pointerEvent.useDragThreshold) + return true; + + if (!pointerEvent.IsVRPointer()) + { + // Same as original behaviour for canvas based pointers + return (pointerEvent.pressPosition - pointerEvent.position).sqrMagnitude >= eventSystem.pixelDragThreshold * eventSystem.pixelDragThreshold; + } + else + { +#if UNITY_ANDROID && !UNITY_EDITOR // On android allow swiping to start drag + if (useSwipeScroll && ((Vector3)pointerEvent.GetSwipeStart() - Input.mousePosition).magnitude > swipeDragThreshold) + { + return true; + } +#endif + // When it's not a screen space pointer we have to look at the angle it moved rather than the pixels distance + // For gaze based pointing screen-space distance moved will always be near 0 + Vector3 cameraPos = pointerEvent.pressEventCamera.transform.position; + Vector3 pressDir = (pointerEvent.pointerPressRaycast.worldPosition - cameraPos).normalized; + Vector3 currentDir = (pointerEvent.pointerCurrentRaycast.worldPosition - cameraPos).normalized; + return Vector3.Dot(pressDir, currentDir) < Mathf.Cos(Mathf.Deg2Rad * (angleDragThreshold)); + } + } + + /// + /// The purpose of this function is to allow us to switch between using the standard IsPointerMoving + /// method for mouse driven pointers, but to always return true when it's a ray based pointer. + /// All real-world ray-based input devices are always moving so for simplicity we just return true + /// for them. + /// + /// If PointerEventData.IsPointerMoving was virtual we could just override that in + /// OVRRayPointerEventData. + /// + /// + /// + static bool IsPointerMoving(PointerEventData pointerEvent) + { + if (pointerEvent.IsVRPointer()) + return true; + else + return pointerEvent.IsPointerMoving(); + } + + protected Vector2 SwipeAdjustedPosition(Vector2 originalPosition, PointerEventData pointerEvent) + { +#if UNITY_ANDROID && !UNITY_EDITOR + // On android we use the touchpad position (accessed through Input.mousePosition) to modify + // the effective cursor position for events related to dragging. This allows the user to + // use the touchpad to drag draggable UI elements + if (useSwipeScroll) + { + Vector2 delta = (Vector2)Input.mousePosition - pointerEvent.GetSwipeStart(); + if (InvertSwipeXAxis) + delta.x *= -1; + return originalPosition + delta * swipeDragScale; + } +#endif + // If not Gear VR or swipe scroll isn't enabled just return original position + return originalPosition; + + } + + /// + /// Exactly the same as the code from PointerInputModule, except that we call our own + /// IsPointerMoving. + /// + /// This would also not be necessary if PointerEventData.IsPointerMoving was virtual + /// + /// + protected override void ProcessDrag(PointerEventData pointerEvent) + { + Vector2 originalPosition = pointerEvent.position; + bool moving = IsPointerMoving(pointerEvent); + if (moving && pointerEvent.pointerDrag != null + && !pointerEvent.dragging + && ShouldStartDrag(pointerEvent)) + { + if (pointerEvent.IsVRPointer()) + { + //adjust the position used based on swiping action. Allowing the user to + //drag items by swiping on the GearVR touchpad + pointerEvent.position = SwipeAdjustedPosition (originalPosition, pointerEvent); + } + ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.beginDragHandler); + pointerEvent.dragging = true; + } + + // Drag notification + if (pointerEvent.dragging && moving && pointerEvent.pointerDrag != null) + { + if (pointerEvent.IsVRPointer()) + { + pointerEvent.position = SwipeAdjustedPosition(originalPosition, pointerEvent); + } + // Before doing drag we should cancel any pointer down state + // And clear selection! + if (pointerEvent.pointerPress != pointerEvent.pointerDrag) + { + ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerUpHandler); + + pointerEvent.eligibleForClick = false; + pointerEvent.pointerPress = null; + pointerEvent.rawPointerPress = null; + } + ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.dragHandler); + } + } + + /// + /// Get state of button corresponding to gaze pointer + /// + /// + virtual protected PointerEventData.FramePressState GetGazeButtonState() + { + var pressed = Input.GetKeyDown(gazeClickKey) || OVRInput.GetDown(joyPadClickButton); + var released = Input.GetKeyUp(gazeClickKey) || OVRInput.GetUp(joyPadClickButton); + +#if UNITY_ANDROID && !UNITY_EDITOR + // On Gear VR the mouse button events correspond to touch pad events. We only use these as gaze pointer clicks + // on Gear VR because on PC the mouse clicks are used for actual mouse pointer interactions. + pressed |= Input.GetMouseButtonDown(0); + released |= Input.GetMouseButtonUp(0); +#endif + + if (pressed && released) + return PointerEventData.FramePressState.PressedAndReleased; + if (pressed) + return PointerEventData.FramePressState.Pressed; + if (released) + return PointerEventData.FramePressState.Released; + return PointerEventData.FramePressState.NotChanged; + } + + /// + /// Get extra scroll delta from gamepad + /// + protected Vector2 GetExtraScrollDelta() + { + Vector2 scrollDelta = new Vector2(); + if (useRightStickScroll) + { + Vector2 s = OVRInput.Get(OVRInput.Axis2D.SecondaryThumbstick); + if (Mathf.Abs(s.x) < rightStickDeadZone) s.x = 0; + if (Mathf.Abs(s.y) < rightStickDeadZone) s.y = 0; + scrollDelta = s; + } + return scrollDelta; + } + }; +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs.meta new file mode 100644 index 0000000..5b8e889 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRInputModule.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f1a9a1d119a5944aacfb87d1ec283a2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs b/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs new file mode 100644 index 0000000..df7e048 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs @@ -0,0 +1,149 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if UNITY_ANDROID && !UNITY_EDITOR +#define OVR_ANDROID_MRC +#endif + +using UnityEngine; +using System; +using System.IO; + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || OVR_ANDROID_MRC +public class OVRMixedRealityCaptureSettings : ScriptableObject +{ + public bool enableMixedReality = false; + public LayerMask extraHiddenLayers; + public OVRManager.CompositionMethod compositionMethod = OVRManager.CompositionMethod.External; + public Color externalCompositionBackdropColorRift = Color.green; + public Color externalCompositionBackdropColorQuest = Color.clear; + public OVRManager.CameraDevice capturingCameraDevice = OVRManager.CameraDevice.WebCamera0; + public bool flipCameraFrameHorizontally = false; + public bool flipCameraFrameVertically = false; + public float handPoseStateLatency = 0.0f; + public float sandwichCompositionRenderLatency = 0.0f; + public int sandwichCompositionBufferedFrames = 8; + public Color chromaKeyColor = Color.green; + public float chromaKeySimilarity = 0.6f; + public float chromaKeySmoothRange = 0.03f; + public float chromaKeySpillRange = 0.04f; + public bool useDynamicLighting = false; + public OVRManager.DepthQuality depthQuality = OVRManager.DepthQuality.Medium; + public float dynamicLightingSmoothFactor = 8.0f; + public float dynamicLightingDepthVariationClampingValue = 0.001f; + public OVRManager.VirtualGreenScreenType virtualGreenScreenType = OVRManager.VirtualGreenScreenType.Off; + public float virtualGreenScreenTopY; + public float virtualGreenScreenBottomY; + public bool virtualGreenScreenApplyDepthCulling = false; + public float virtualGreenScreenDepthTolerance = 0.2f; + + public void ReadFrom(OVRManager manager) + { + enableMixedReality = manager.enableMixedReality; + compositionMethod = manager.compositionMethod; + extraHiddenLayers = manager.extraHiddenLayers; + externalCompositionBackdropColorRift = manager.externalCompositionBackdropColorRift; + externalCompositionBackdropColorQuest = manager.externalCompositionBackdropColorQuest; + capturingCameraDevice = manager.capturingCameraDevice; + flipCameraFrameHorizontally = manager.flipCameraFrameHorizontally; + flipCameraFrameVertically = manager.flipCameraFrameVertically; + handPoseStateLatency = manager.handPoseStateLatency; + sandwichCompositionRenderLatency = manager.sandwichCompositionRenderLatency; + sandwichCompositionBufferedFrames = manager.sandwichCompositionBufferedFrames; + chromaKeyColor = manager.chromaKeyColor; + chromaKeySimilarity = manager.chromaKeySimilarity; + chromaKeySmoothRange = manager.chromaKeySmoothRange; + chromaKeySpillRange = manager.chromaKeySpillRange; + useDynamicLighting = manager.useDynamicLighting; + depthQuality = manager.depthQuality; + dynamicLightingSmoothFactor = manager.dynamicLightingSmoothFactor; + dynamicLightingDepthVariationClampingValue = manager.dynamicLightingDepthVariationClampingValue; + virtualGreenScreenType = manager.virtualGreenScreenType; + virtualGreenScreenTopY = manager.virtualGreenScreenTopY; + virtualGreenScreenBottomY = manager.virtualGreenScreenBottomY; + virtualGreenScreenApplyDepthCulling = manager.virtualGreenScreenApplyDepthCulling; + virtualGreenScreenDepthTolerance = manager.virtualGreenScreenDepthTolerance; + } + public void ApplyTo(OVRManager manager) + { + manager.enableMixedReality = enableMixedReality; + manager.compositionMethod = compositionMethod; + manager.extraHiddenLayers = extraHiddenLayers; + manager.externalCompositionBackdropColorRift = externalCompositionBackdropColorRift; + manager.externalCompositionBackdropColorQuest = externalCompositionBackdropColorQuest; + manager.capturingCameraDevice = capturingCameraDevice; + manager.flipCameraFrameHorizontally = flipCameraFrameHorizontally; + manager.flipCameraFrameVertically = flipCameraFrameVertically; + manager.handPoseStateLatency = handPoseStateLatency; + manager.sandwichCompositionRenderLatency = sandwichCompositionRenderLatency; + manager.sandwichCompositionBufferedFrames = sandwichCompositionBufferedFrames; + manager.chromaKeyColor = chromaKeyColor; + manager.chromaKeySimilarity = chromaKeySimilarity; + manager.chromaKeySmoothRange = chromaKeySmoothRange; + manager.chromaKeySpillRange = chromaKeySpillRange; + manager.useDynamicLighting = useDynamicLighting; + manager.depthQuality = depthQuality; + manager.dynamicLightingSmoothFactor = dynamicLightingSmoothFactor; + manager.dynamicLightingDepthVariationClampingValue = dynamicLightingDepthVariationClampingValue; + manager.virtualGreenScreenType = virtualGreenScreenType; + manager.virtualGreenScreenTopY = virtualGreenScreenTopY; + manager.virtualGreenScreenBottomY = virtualGreenScreenBottomY; + manager.virtualGreenScreenApplyDepthCulling = virtualGreenScreenApplyDepthCulling; + manager.virtualGreenScreenDepthTolerance = virtualGreenScreenDepthTolerance; + } + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN // Rift MRC only + const string configFileName = "mrc.config"; + public void WriteToConfigurationFile() + { + string text = JsonUtility.ToJson(this, true); + try + { + string configPath = Path.Combine(Application.dataPath, configFileName); + Debug.Log("Write OVRMixedRealityCaptureSettings to " + configPath); + File.WriteAllText(configPath, text); + } + catch(Exception e) + { + Debug.LogWarning("Exception caught " + e.Message); + } + } + + public void CombineWithConfigurationFile() + { + try + { + string configPath = Path.Combine(Application.dataPath, configFileName); + if (File.Exists(configPath)) + { + Debug.Log("MixedRealityCapture configuration file found at " + configPath); + string text = File.ReadAllText(configPath); + Debug.Log("Apply MixedRealityCapture configuration"); + JsonUtility.FromJsonOverwrite(text, this); + } + else + { + Debug.Log("MixedRealityCapture configuration file doesn't exist at " + configPath); + } + } + catch(Exception e) + { + Debug.LogWarning("Exception caught " + e.Message); + } + } +#endif +} +#endif diff --git a/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs.meta new file mode 100644 index 0000000..41233e0 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 99bbd170d56da4248941de890e6d7af5 +timeCreated: 1501004238 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs b/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs new file mode 100644 index 0000000..f286c34 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs @@ -0,0 +1,81 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; + +/// +/// Logs when the application enters power save mode and allows you to a low-power CPU/GPU level with a button press. +/// +public class OVRModeParms : MonoBehaviour +{ +#region Member Variables + + /// + /// The gamepad button that will switch the application to CPU level 0 and GPU level 1. + /// + public OVRInput.RawButton resetButton = OVRInput.RawButton.X; + +#endregion + + /// + /// Invoke power state mode test. + /// + void Start() + { + if (!OVRManager.isHmdPresent) + { + enabled = false; + return; + } + + // Call TestPowerLevelState after 10 seconds + // and repeats every 10 seconds. + InvokeRepeating ( "TestPowerStateMode", 10, 10.0f ); + } + + /// + /// Change default vr mode parms dynamically. + /// + void Update() + { + // NOTE: some of the buttons defined in OVRInput.RawButton are not available on the Android game pad controller + if ( OVRInput.GetDown(resetButton)) + { + //************************* + // Dynamically change VrModeParms cpu and gpu level. + // NOTE: Reset will cause 1 frame of flicker as it leaves + // and re-enters Vr mode. + //************************* + OVRPlugin.cpuLevel = 0; + OVRPlugin.gpuLevel = 1; + } + } + + /// + /// Check current power state mode. + /// + void TestPowerStateMode() + { + //************************* + // Check power-level state mode + //************************* + if (OVRPlugin.powerSaving) + { + // The device has been throttled + Debug.Log("POWER SAVE MODE ACTIVATED"); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs.meta new file mode 100644 index 0000000..235bdff --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRModeParms.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a6ae8e8def81df429a8fdfc00f63e5c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs b/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs new file mode 100644 index 0000000..6f3d0a0 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs @@ -0,0 +1,48 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; + +/// +/// Allows you to toggle monoscopic rendering with a gamepad button press. +/// +public class OVRMonoscopic : MonoBehaviour +{ + /// + /// The gamepad button that will toggle monoscopic rendering. + /// + public OVRInput.RawButton toggleButton = OVRInput.RawButton.B; + + private bool monoscopic = false; + + /// + /// Check input and toggle monoscopic rendering mode if necessary + /// See the input mapping setup in the Unity Integration guide + /// + void Update() + { + // NOTE: some of the buttons defined in OVRInput.RawButton are not available on the Android game pad controller + if (OVRInput.GetDown(toggleButton)) + { + //************************* + // toggle monoscopic rendering mode + //************************* + monoscopic = !monoscopic; + OVRManager.instance.monoscopic = monoscopic; + } + } + +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs.meta new file mode 100644 index 0000000..6261901 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRMonoscopic.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06ef2a389c534554c848533f88dbb32c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs b/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs new file mode 100644 index 0000000..594c56b --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs @@ -0,0 +1,435 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Threading; +using UnityEngine; + +using Debug = UnityEngine.Debug; + +public class OVRNetwork +{ + public const int MaxBufferLength = 65536; + public const int MaxPayloadLength = MaxBufferLength - FrameHeader.StructSize; + + public const uint FrameHeaderMagicIdentifier = 0x5283A76B; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + struct FrameHeader + { + public uint protocolIdentifier; + public int payloadType; + public int payloadLength; + + public const int StructSize = sizeof(uint) + sizeof(int) + sizeof(int); + + // endianness conversion is NOT handled since all our current mobile/PC devices are little-endian + public byte[] ToBytes() + { + int size = Marshal.SizeOf(this); + Trace.Assert(size == StructSize); + + byte[] arr = new byte[size]; + + IntPtr ptr = Marshal.AllocHGlobal(size); + Marshal.StructureToPtr(this, ptr, true); + Marshal.Copy(ptr, arr, 0, size); + Marshal.FreeHGlobal(ptr); + return arr; + } + + public static FrameHeader FromBytes(byte[] arr) + { + FrameHeader header = new FrameHeader(); + + int size = Marshal.SizeOf(header); + Trace.Assert(size == StructSize); + + IntPtr ptr = Marshal.AllocHGlobal(size); + + Marshal.Copy(arr, 0, ptr, size); + + header = (FrameHeader)Marshal.PtrToStructure(ptr, header.GetType()); + Marshal.FreeHGlobal(ptr); + + return header; + } + } + + public class OVRNetworkTcpServer + { + public TcpListener tcpListener = null; + + private readonly object clientsLock = new object(); + public readonly List clients = new List(); + + public void StartListening(int listeningPort) + { + if (tcpListener != null) + { + Debug.LogWarning("[OVRNetworkTcpServer] tcpListener is not null"); + return; + } + + IPAddress localAddr = IPAddress.Any; + + tcpListener = new TcpListener(localAddr, listeningPort); + try + { + tcpListener.Start(); + Debug.LogFormat("TcpListener started. Local endpoint: {0}", tcpListener.LocalEndpoint.ToString()); + } + catch (SocketException e) + { + Debug.LogWarningFormat("[OVRNetworkTcpServer] Unsable to start TcpListener. Socket exception: {0}", e.Message); + Debug.LogWarning("It could be caused by multiple instances listening at the same port, or the port is forwarded to the Android device through ADB"); + Debug.LogWarning("If the port is forwarded through ADB, use the Android Tools in Tools/Oculus/System Metrics Profiler to kill the server"); + tcpListener = null; + } + + if (tcpListener != null) + { + Debug.LogFormat("[OVRNetworkTcpServer] Start Listening on port {0}", listeningPort); + + try + { + tcpListener.BeginAcceptTcpClient(new AsyncCallback(DoAcceptTcpClientCallback), tcpListener); + } + catch (Exception e) + { + Debug.LogWarningFormat("[OVRNetworkTcpServer] can't accept new client: {0}", e.Message); + } + } + } + + public void StopListening() + { + if (tcpListener == null) + { + Debug.LogWarning("[OVRNetworkTcpServer] tcpListener is null"); + return; + } + + lock (clientsLock) + { + clients.Clear(); + } + tcpListener.Stop(); + tcpListener = null; + + Debug.Log("[OVRNetworkTcpServer] Stopped listening"); + } + + private void DoAcceptTcpClientCallback(IAsyncResult ar) + { + TcpListener listener = ar.AsyncState as TcpListener; + try + { + TcpClient client = listener.EndAcceptTcpClient(ar); + lock (clientsLock) + { + clients.Add(client); + Debug.Log("[OVRNetworkTcpServer] client added"); + } + + try + { + tcpListener.BeginAcceptTcpClient(new AsyncCallback(DoAcceptTcpClientCallback), tcpListener); + } + catch (Exception e) + { + Debug.LogWarningFormat("[OVRNetworkTcpServer] can't accept new client: {0}", e.Message); + } + } + catch (ObjectDisposedException) + { + // Do nothing. It happens when stop preview in editor, which is normal behavior. + } + catch (Exception e) + { + Debug.LogWarningFormat("[OVRNetworkTcpServer] EndAcceptTcpClient failed: {0}", e.Message); + } + } + + public bool HasConnectedClient() + { + lock (clientsLock) + { + foreach (TcpClient client in clients) + { + if (client.Connected) + { + return true; + } + } + } + return false; + } + + public void Broadcast(int payloadType, byte[] payload) + { + if (payload.Length > OVRNetwork.MaxPayloadLength) + { + Debug.LogWarningFormat("[OVRNetworkTcpServer] drop payload because it's too long: {0} bytes", payload.Length); + } + + FrameHeader header = new FrameHeader(); + header.protocolIdentifier = FrameHeaderMagicIdentifier; + header.payloadType = payloadType; + header.payloadLength = payload.Length; + + byte[] headerBuffer = header.ToBytes(); + + byte[] dataBuffer = new byte[headerBuffer.Length + payload.Length]; + headerBuffer.CopyTo(dataBuffer, 0); + payload.CopyTo(dataBuffer, headerBuffer.Length); + + lock (clientsLock) + { + foreach (TcpClient client in clients) + { + if (client.Connected) + { + try + { + client.GetStream().BeginWrite(dataBuffer, 0, dataBuffer.Length, new AsyncCallback(DoWriteDataCallback), client.GetStream()); + } + catch (SocketException e) + { + Debug.LogWarningFormat("[OVRNetworkTcpServer] close client because of socket error: {0}", e.Message); + client.GetStream().Close(); + client.Close(); + } + } + } + } + } + + private void DoWriteDataCallback(IAsyncResult ar) + { + NetworkStream stream = ar.AsyncState as NetworkStream; + stream.EndWrite(ar); + } + } + + public class OVRNetworkTcpClient + { + public Action connectionStateChangedCallback; + public Action payloadReceivedCallback; + + public enum ConnectionState + { + Disconnected, + Connected, + Connecting + } + + public ConnectionState connectionState + { + get + { + if (tcpClient == null) + { + return ConnectionState.Disconnected; + } + else + { + if (tcpClient.Connected) + { + return ConnectionState.Connected; + } + else + { + return ConnectionState.Connecting; + } + } + } + } + + public bool Connected + { + get + { + return connectionState == ConnectionState.Connected; + } + } + + TcpClient tcpClient = null; + + byte[][] receivedBuffers = { new byte[OVRNetwork.MaxBufferLength], new byte[OVRNetwork.MaxBufferLength] }; + int receivedBufferIndex = 0; + int receivedBufferDataSize = 0; + ManualResetEvent readyReceiveDataEvent = new ManualResetEvent(true); + + public void Connect(int listeningPort) + { + if (tcpClient == null) + { + receivedBufferIndex = 0; + receivedBufferDataSize = 0; + readyReceiveDataEvent.Set(); + + string remoteAddress = "127.0.0.1"; + tcpClient = new TcpClient(AddressFamily.InterNetwork); + tcpClient.BeginConnect(remoteAddress, listeningPort, new AsyncCallback(ConnectCallback), tcpClient); + + if (connectionStateChangedCallback != null) + { + connectionStateChangedCallback(); + } + } + else + { + Debug.LogWarning("[OVRNetworkTcpClient] already connected"); + } + } + + void ConnectCallback(IAsyncResult ar) + { + try + { + TcpClient client = ar.AsyncState as TcpClient; + client.EndConnect(ar); + Debug.LogFormat("[OVRNetworkTcpClient] connected to {0}", client.ToString()); + } + catch (Exception e) + { + Debug.LogWarningFormat("[OVRNetworkTcpClient] connect error {0}", e.Message); + } + + if (connectionStateChangedCallback != null) + { + connectionStateChangedCallback(); + } + } + + public void Disconnect() + { + if (tcpClient != null) + { + if (!readyReceiveDataEvent.WaitOne(5)) + { + Debug.LogWarning("[OVRNetworkTcpClient] readyReceiveDataEvent not signaled. data receiving timeout?"); + } + + Debug.Log("[OVRNetworkTcpClient] close tcpClient"); + try + { + tcpClient.GetStream().Close(); + tcpClient.Close(); + } + catch (Exception e) + { + Debug.LogWarning("[OVRNetworkTcpClient] " + e.Message); + } + tcpClient = null; + + if (connectionStateChangedCallback != null) + { + connectionStateChangedCallback(); + } + } + else + { + Debug.LogWarning("[OVRNetworkTcpClient] not connected"); + } + } + + public void Tick() + { + if (tcpClient == null || !tcpClient.Connected) + { + return; + } + + if (readyReceiveDataEvent.WaitOne(TimeSpan.Zero)) + { + if (tcpClient.GetStream().DataAvailable) + { + if (receivedBufferDataSize >= OVRNetwork.MaxBufferLength) + { + Debug.LogWarning("[OVRNetworkTcpClient] receive buffer overflow. It should not happen since we have the constraint on message size"); + Disconnect(); + return; + } + + readyReceiveDataEvent.Reset(); + int maximumDataSize = OVRSystemPerfMetrics.MaxBufferLength - receivedBufferDataSize; + + tcpClient.GetStream().BeginRead(receivedBuffers[receivedBufferIndex], receivedBufferDataSize, maximumDataSize, new AsyncCallback(OnReadDataCallback), tcpClient.GetStream()); + } + } + } + + void OnReadDataCallback(IAsyncResult ar) + { + NetworkStream stream = ar.AsyncState as NetworkStream; + try + { + int numBytes = stream.EndRead(ar); + receivedBufferDataSize += numBytes; + + while (receivedBufferDataSize >= FrameHeader.StructSize) + { + FrameHeader header = FrameHeader.FromBytes(receivedBuffers[receivedBufferIndex]); + if (header.protocolIdentifier != OVRNetwork.FrameHeaderMagicIdentifier) + { + Debug.LogWarning("[OVRNetworkTcpClient] header mismatch"); + Disconnect(); + return; + } + + if (header.payloadLength < 0 || header.payloadLength > OVRNetwork.MaxPayloadLength) + { + Debug.LogWarningFormat("[OVRNetworkTcpClient] Sanity check failed. PayloadLength %d", header.payloadLength); + Disconnect(); + return; + } + + if (receivedBufferDataSize >= FrameHeader.StructSize + header.payloadLength) + { + if (payloadReceivedCallback != null) + { + payloadReceivedCallback(header.payloadType, receivedBuffers[receivedBufferIndex], FrameHeader.StructSize, header.payloadLength); + } + + // swap receive buffer + int newBufferIndex = 1 - receivedBufferIndex; + int newBufferDataSize = receivedBufferDataSize - (FrameHeader.StructSize + header.payloadLength); + if (newBufferDataSize > 0) + { + Array.Copy(receivedBuffers[receivedBufferIndex], (FrameHeader.StructSize + header.payloadLength), receivedBuffers[newBufferIndex], 0, newBufferDataSize); + } + receivedBufferIndex = newBufferIndex; + receivedBufferDataSize = newBufferDataSize; + } + } + readyReceiveDataEvent.Set(); + } + catch (SocketException e) + { + Debug.LogErrorFormat("[OVRNetworkTcpClient] OnReadDataCallback: socket error: {0}", e.Message); + Disconnect(); + } + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs.meta new file mode 100644 index 0000000..474bd0f --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRNetwork.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df7e9afcfd21ebd44951ca0eeb5cd692 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs b/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs new file mode 100644 index 0000000..afcb723 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs @@ -0,0 +1,179 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System.Collections.Generic; + +namespace UnityEngine.EventSystems +{ + /// + /// Simple event system using physics raycasts. Very closely based on UnityEngine.EventSystems.PhysicsRaycaster + /// + [RequireComponent(typeof(OVRCameraRig))] + public class OVRPhysicsRaycaster : BaseRaycaster + { + /// + /// Const to use for clarity when no event mask is set + /// + protected const int kNoEventMaskSet = -1; + + + /// + /// Layer mask used to filter events. Always combined with the camera's culling mask if a camera is used. + /// + [SerializeField] + protected LayerMask m_EventMask = kNoEventMaskSet; + + protected OVRPhysicsRaycaster() + { } + + public override Camera eventCamera + { + get + { + return GetComponent().leftEyeCamera; + } + } + + /// + /// Depth used to determine the order of event processing. + /// + public virtual int depth + { + get { return (eventCamera != null) ? (int)eventCamera.depth : 0xFFFFFF; } + } + + public int sortOrder = 20; + public override int sortOrderPriority + { + get + { + return sortOrder; + } + } + + /// + /// Event mask used to determine which objects will receive events. + /// + public int finalEventMask + { + get { return (eventCamera != null) ? eventCamera.cullingMask & m_EventMask : kNoEventMaskSet; } + } + + /// + /// Layer mask used to filter events. Always combined with the camera's culling mask if a camera is used. + /// + public LayerMask eventMask + { + get { return m_EventMask; } + set { m_EventMask = value; } + } + + + /// + /// Perform a raycast using the worldSpaceRay in eventData. + /// + /// + /// + public override void Raycast(PointerEventData eventData, List resultAppendList) + { + // This function is closely based on PhysicsRaycaster.Raycast + + if (eventCamera == null) + return; + + if (!eventData.IsVRPointer()) + return; + + var ray = eventData.GetRay(); + + float dist = eventCamera.farClipPlane - eventCamera.nearClipPlane; + + var hits = Physics.RaycastAll(ray, dist, finalEventMask); + + if (hits.Length > 1) + System.Array.Sort(hits, (r1, r2) => r1.distance.CompareTo(r2.distance)); + + if (hits.Length != 0) + { + for (int b = 0, bmax = hits.Length; b < bmax; ++b) + { + var result = new RaycastResult + { + gameObject = hits[b].collider.gameObject, + module = this, + distance = hits[b].distance, + index = resultAppendList.Count, + worldPosition = hits[0].point, + worldNormal = hits[0].normal, + }; + resultAppendList.Add(result); + } + } + } + + /// + /// Perform a Spherecast using the worldSpaceRay in eventData. + /// + /// + /// + /// Radius of the sphere + public void Spherecast(PointerEventData eventData, List resultAppendList, float radius) + { + if (eventCamera == null) + return; + + if (!eventData.IsVRPointer()) + return; + + var ray = eventData.GetRay(); + + + float dist = eventCamera.farClipPlane - eventCamera.nearClipPlane; + + var hits = Physics.SphereCastAll(ray, radius, dist, finalEventMask); + + if (hits.Length > 1) + System.Array.Sort(hits, (r1, r2) => r1.distance.CompareTo(r2.distance)); + + if (hits.Length != 0) + { + for (int b = 0, bmax = hits.Length; b < bmax; ++b) + { + var result = new RaycastResult + { + gameObject = hits[b].collider.gameObject, + module = this, + distance = hits[b].distance, + index = resultAppendList.Count, + worldPosition = hits[0].point, + worldNormal = hits[0].normal, + }; + resultAppendList.Add(result); + } + } + } + /// + /// Get screen position of this world position as seen by the event camera of this OVRPhysicsRaycaster + /// + /// + /// + public Vector2 GetScreenPos(Vector3 worldPosition) + { + // In future versions of Uinty RaycastResult will contain screenPosition so this will not be necessary + return eventCamera.WorldToScreenPoint(worldPosition); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs.meta new file mode 100644 index 0000000..4af7e97 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRPhysicsRaycaster.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f8e7ff1cdf4c4e74db00c3684108bc9a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs b/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs new file mode 100644 index 0000000..93eb561 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs @@ -0,0 +1,613 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. +You may obtain a copy of the License at https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using UnityEngine; + +/// +/// Controls the player's movement in virtual reality. +/// +[RequireComponent(typeof(CharacterController))] +public class OVRPlayerController : MonoBehaviour +{ + /// + /// The rate acceleration during movement. + /// + public float Acceleration = 0.1f; + + /// + /// The rate of damping on movement. + /// + public float Damping = 0.3f; + + /// + /// The rate of additional damping when moving sideways or backwards. + /// + public float BackAndSideDampen = 0.5f; + + /// + /// The force applied to the character when jumping. + /// + public float JumpForce = 0.3f; + + /// + /// The rate of rotation when using a gamepad. + /// + public float RotationAmount = 1.5f; + + /// + /// The rate of rotation when using the keyboard. + /// + public float RotationRatchet = 45.0f; + + /// + /// The player will rotate in fixed steps if Snap Rotation is enabled. + /// + [Tooltip("The player will rotate in fixed steps if Snap Rotation is enabled.")] + public bool SnapRotation = true; + + /// + /// How many fixed speeds to use with linear movement? 0=linear control + /// + [Tooltip("How many fixed speeds to use with linear movement? 0=linear control")] + public int FixedSpeedSteps; + + /// + /// If true, reset the initial yaw of the player controller when the Hmd pose is recentered. + /// + public bool HmdResetsY = true; + + /// + /// If true, tracking data from a child OVRCameraRig will update the direction of movement. + /// + public bool HmdRotatesY = true; + + /// + /// Modifies the strength of gravity. + /// + public float GravityModifier = 0.379f; + + /// + /// If true, each OVRPlayerController will use the player's physical height. + /// + public bool useProfileData = true; + + /// + /// The CameraHeight is the actual height of the HMD and can be used to adjust the height of the character controller, which will affect the + /// ability of the character to move into areas with a low ceiling. + /// + [NonSerialized] + public float CameraHeight; + + /// + /// This event is raised after the character controller is moved. This is used by the OVRAvatarLocomotion script to keep the avatar transform synchronized + /// with the OVRPlayerController. + /// + public event Action TransformUpdated; + + /// + /// This bool is set to true whenever the player controller has been teleported. It is reset after every frame. Some systems, such as + /// CharacterCameraConstraint, test this boolean in order to disable logic that moves the character controller immediately + /// following the teleport. + /// + [NonSerialized] // This doesn't need to be visible in the inspector. + public bool Teleported; + + /// + /// This event is raised immediately after the camera transform has been updated, but before movement is updated. + /// + public event Action CameraUpdated; + + /// + /// This event is raised right before the character controller is actually moved in order to provide other systems the opportunity to + /// move the character controller in response to things other than user input, such as movement of the HMD. See CharacterCameraConstraint.cs + /// for an example of this. + /// + public event Action PreCharacterMove; + + /// + /// When true, user input will be applied to linear movement. Set this to false whenever the player controller needs to ignore input for + /// linear movement. + /// + public bool EnableLinearMovement = true; + + /// + /// When true, user input will be applied to rotation. Set this to false whenever the player controller needs to ignore input for rotation. + /// + public bool EnableRotation = true; + + /// + /// Rotation defaults to secondary thumbstick. You can allow either here. Note that this won't behave well if EnableLinearMovement is true. + /// + public bool RotationEitherThumbstick = false; + + protected CharacterController Controller = null; + protected OVRCameraRig CameraRig = null; + + private float MoveScale = 1.0f; + private Vector3 MoveThrottle = Vector3.zero; + private float FallSpeed = 0.0f; + private OVRPose? InitialPose; + public float InitialYRotation { get; private set; } + private float MoveScaleMultiplier = 1.0f; + private float RotationScaleMultiplier = 1.0f; + private bool SkipMouseRotation = true; // It is rare to want to use mouse movement in VR, so ignore the mouse by default. + private bool HaltUpdateMovement = false; + private bool prevHatLeft = false; + private bool prevHatRight = false; + private float SimulationRate = 60f; + private float buttonRotation = 0f; + private bool ReadyToSnapTurn; // Set to true when a snap turn has occurred, code requires one frame of centered thumbstick to enable another snap turn. + private bool playerControllerEnabled = false; + + void Start() + { + // Add eye-depth as a camera offset from the player controller + var p = CameraRig.transform.localPosition; + p.z = OVRManager.profile.eyeDepth; + CameraRig.transform.localPosition = p; + } + + void Awake() + { + Controller = gameObject.GetComponent(); + + if (Controller == null) + Debug.LogWarning("OVRPlayerController: No CharacterController attached."); + + // We use OVRCameraRig to set rotations to cameras, + // and to be influenced by rotation + OVRCameraRig[] CameraRigs = gameObject.GetComponentsInChildren(); + + if (CameraRigs.Length == 0) + Debug.LogWarning("OVRPlayerController: No OVRCameraRig attached."); + else if (CameraRigs.Length > 1) + Debug.LogWarning("OVRPlayerController: More then 1 OVRCameraRig attached."); + else + CameraRig = CameraRigs[0]; + + InitialYRotation = transform.rotation.eulerAngles.y; + } + + void OnEnable() + { + } + + void OnDisable() + { + if (playerControllerEnabled) + { + OVRManager.display.RecenteredPose -= ResetOrientation; + + if (CameraRig != null) + { + CameraRig.UpdatedAnchors -= UpdateTransform; + } + playerControllerEnabled = false; + } + } + + void Update() + { + if (!playerControllerEnabled) + { + if (OVRManager.OVRManagerinitialized) + { + OVRManager.display.RecenteredPose += ResetOrientation; + + if (CameraRig != null) + { + CameraRig.UpdatedAnchors += UpdateTransform; + } + playerControllerEnabled = true; + } + else + return; + } + //Use keys to ratchet rotation + if (Input.GetKeyDown(KeyCode.Q)) + buttonRotation -= RotationRatchet; + + if (Input.GetKeyDown(KeyCode.E)) + buttonRotation += RotationRatchet; + } + + protected virtual void UpdateController() + { + if (useProfileData) + { + if (InitialPose == null) + { + // Save the initial pose so it can be recovered if useProfileData + // is turned off later. + InitialPose = new OVRPose() + { + position = CameraRig.transform.localPosition, + orientation = CameraRig.transform.localRotation + }; + } + + var p = CameraRig.transform.localPosition; + if (OVRManager.instance.trackingOriginType == OVRManager.TrackingOrigin.EyeLevel) + { + p.y = OVRManager.profile.eyeHeight - (0.5f * Controller.height) + Controller.center.y; + } + else if (OVRManager.instance.trackingOriginType == OVRManager.TrackingOrigin.FloorLevel) + { + p.y = -(0.5f * Controller.height) + Controller.center.y; + } + CameraRig.transform.localPosition = p; + } + else if (InitialPose != null) + { + // Return to the initial pose if useProfileData was turned off at runtime + CameraRig.transform.localPosition = InitialPose.Value.position; + CameraRig.transform.localRotation = InitialPose.Value.orientation; + InitialPose = null; + } + + CameraHeight = CameraRig.centerEyeAnchor.localPosition.y; + + if (CameraUpdated != null) + { + CameraUpdated(); + } + + UpdateMovement(); + + Vector3 moveDirection = Vector3.zero; + + float motorDamp = (1.0f + (Damping * SimulationRate * Time.deltaTime)); + + MoveThrottle.x /= motorDamp; + MoveThrottle.y = (MoveThrottle.y > 0.0f) ? (MoveThrottle.y / motorDamp) : MoveThrottle.y; + MoveThrottle.z /= motorDamp; + + moveDirection += MoveThrottle * SimulationRate * Time.deltaTime; + + // Gravity + if (Controller.isGrounded && FallSpeed <= 0) + FallSpeed = ((Physics.gravity.y * (GravityModifier * 0.002f))); + else + FallSpeed += ((Physics.gravity.y * (GravityModifier * 0.002f)) * SimulationRate * Time.deltaTime); + + moveDirection.y += FallSpeed * SimulationRate * Time.deltaTime; + + + if (Controller.isGrounded && MoveThrottle.y <= transform.lossyScale.y * 0.001f) + { + // Offset correction for uneven ground + float bumpUpOffset = Mathf.Max(Controller.stepOffset, new Vector3(moveDirection.x, 0, moveDirection.z).magnitude); + moveDirection -= bumpUpOffset * Vector3.up; + } + + if (PreCharacterMove != null) + { + PreCharacterMove(); + Teleported = false; + } + + Vector3 predictedXZ = Vector3.Scale((Controller.transform.localPosition + moveDirection), new Vector3(1, 0, 1)); + + // Move contoller + Controller.Move(moveDirection); + Vector3 actualXZ = Vector3.Scale(Controller.transform.localPosition, new Vector3(1, 0, 1)); + + if (predictedXZ != actualXZ) + MoveThrottle += (actualXZ - predictedXZ) / (SimulationRate * Time.deltaTime); + } + + + + + + public virtual void UpdateMovement() + { + if (HaltUpdateMovement) + return; + + if (EnableLinearMovement) + { + bool moveForward = Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow); + bool moveLeft = Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow); + bool moveRight = Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow); + bool moveBack = Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow); + + bool dpad_move = false; + + if (OVRInput.Get(OVRInput.Button.DpadUp)) + { + moveForward = true; + dpad_move = true; + + } + + if (OVRInput.Get(OVRInput.Button.DpadDown)) + { + moveBack = true; + dpad_move = true; + } + + MoveScale = 1.0f; + + if ((moveForward && moveLeft) || (moveForward && moveRight) || + (moveBack && moveLeft) || (moveBack && moveRight)) + MoveScale = 0.70710678f; + + // No positional movement if we are in the air + if (!Controller.isGrounded) + MoveScale = 0.0f; + + MoveScale *= SimulationRate * Time.deltaTime; + + // Compute this for key movement + float moveInfluence = Acceleration * 0.1f * MoveScale * MoveScaleMultiplier; + + // Run! + if (dpad_move || Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) + moveInfluence *= 2.0f; + + Quaternion ort = transform.rotation; + Vector3 ortEuler = ort.eulerAngles; + ortEuler.z = ortEuler.x = 0f; + ort = Quaternion.Euler(ortEuler); + + if (moveForward) + MoveThrottle += ort * (transform.lossyScale.z * moveInfluence * Vector3.forward); + if (moveBack) + MoveThrottle += ort * (transform.lossyScale.z * moveInfluence * BackAndSideDampen * Vector3.back); + if (moveLeft) + MoveThrottle += ort * (transform.lossyScale.x * moveInfluence * BackAndSideDampen * Vector3.left); + if (moveRight) + MoveThrottle += ort * (transform.lossyScale.x * moveInfluence * BackAndSideDampen * Vector3.right); + + + + moveInfluence = Acceleration * 0.1f * MoveScale * MoveScaleMultiplier; + +#if !UNITY_ANDROID // LeftTrigger not avail on Android game pad + moveInfluence *= 1.0f + OVRInput.Get(OVRInput.Axis1D.PrimaryIndexTrigger); +#endif + + Vector2 primaryAxis = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick); + + // If speed quantization is enabled, adjust the input to the number of fixed speed steps. + if (FixedSpeedSteps > 0) + { + primaryAxis.y = Mathf.Round(primaryAxis.y * FixedSpeedSteps) / FixedSpeedSteps; + primaryAxis.x = Mathf.Round(primaryAxis.x * FixedSpeedSteps) / FixedSpeedSteps; + } + + if (primaryAxis.y > 0.0f) + MoveThrottle += ort * (primaryAxis.y * transform.lossyScale.z * moveInfluence * Vector3.forward); + + if (primaryAxis.y < 0.0f) + MoveThrottle += ort * (Mathf.Abs(primaryAxis.y) * transform.lossyScale.z * moveInfluence * + BackAndSideDampen * Vector3.back); + + if (primaryAxis.x < 0.0f) + MoveThrottle += ort * (Mathf.Abs(primaryAxis.x) * transform.lossyScale.x * moveInfluence * + BackAndSideDampen * Vector3.left); + + if (primaryAxis.x > 0.0f) + MoveThrottle += ort * (primaryAxis.x * transform.lossyScale.x * moveInfluence * BackAndSideDampen * + Vector3.right); + } + + if (EnableRotation) + { + Vector3 euler = transform.rotation.eulerAngles; + float rotateInfluence = SimulationRate * Time.deltaTime * RotationAmount * RotationScaleMultiplier; + + bool curHatLeft = OVRInput.Get(OVRInput.Button.PrimaryShoulder); + + if (curHatLeft && !prevHatLeft) + euler.y -= RotationRatchet; + + prevHatLeft = curHatLeft; + + bool curHatRight = OVRInput.Get(OVRInput.Button.SecondaryShoulder); + + if (curHatRight && !prevHatRight) + euler.y += RotationRatchet; + + prevHatRight = curHatRight; + + euler.y += buttonRotation; + buttonRotation = 0f; + + +#if !UNITY_ANDROID || UNITY_EDITOR + if (!SkipMouseRotation) + euler.y += Input.GetAxis("Mouse X") * rotateInfluence * 3.25f; +#endif + + if (SnapRotation) + { + if (OVRInput.Get(OVRInput.Button.SecondaryThumbstickLeft) || + (RotationEitherThumbstick && OVRInput.Get(OVRInput.Button.PrimaryThumbstickLeft))) + { + if (ReadyToSnapTurn) + { + euler.y -= RotationRatchet; + ReadyToSnapTurn = false; + } + } + else if (OVRInput.Get(OVRInput.Button.SecondaryThumbstickRight) || + (RotationEitherThumbstick && OVRInput.Get(OVRInput.Button.PrimaryThumbstickRight))) + { + if (ReadyToSnapTurn) + { + euler.y += RotationRatchet; + ReadyToSnapTurn = false; + } + } + else + { + ReadyToSnapTurn = true; + } + } + else + { + Vector2 secondaryAxis = OVRInput.Get(OVRInput.Axis2D.SecondaryThumbstick); + if (RotationEitherThumbstick) + { + Vector2 altSecondaryAxis = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick); + if (secondaryAxis.sqrMagnitude < altSecondaryAxis.sqrMagnitude) + { + secondaryAxis = altSecondaryAxis; + } + } + euler.y += secondaryAxis.x * rotateInfluence; + } + + transform.rotation = Quaternion.Euler(euler); + } + } + + + /// + /// Invoked by OVRCameraRig's UpdatedAnchors callback. Allows the Hmd rotation to update the facing direction of the player. + /// + public void UpdateTransform(OVRCameraRig rig) + { + Transform root = CameraRig.trackingSpace; + Transform centerEye = CameraRig.centerEyeAnchor; + + if (HmdRotatesY && !Teleported) + { + Vector3 prevPos = root.position; + Quaternion prevRot = root.rotation; + + transform.rotation = Quaternion.Euler(0.0f, centerEye.rotation.eulerAngles.y, 0.0f); + + root.position = prevPos; + root.rotation = prevRot; + } + + UpdateController(); + if (TransformUpdated != null) + { + TransformUpdated(root); + } + } + + /// + /// Jump! Must be enabled manually. + /// + public bool Jump() + { + if (!Controller.isGrounded) + return false; + + MoveThrottle += new Vector3(0, transform.lossyScale.y * JumpForce, 0); + + return true; + } + + /// + /// Stop this instance. + /// + public void Stop() + { + Controller.Move(Vector3.zero); + MoveThrottle = Vector3.zero; + FallSpeed = 0.0f; + } + + /// + /// Gets the move scale multiplier. + /// + /// Move scale multiplier. + public void GetMoveScaleMultiplier(ref float moveScaleMultiplier) + { + moveScaleMultiplier = MoveScaleMultiplier; + } + + /// + /// Sets the move scale multiplier. + /// + /// Move scale multiplier. + public void SetMoveScaleMultiplier(float moveScaleMultiplier) + { + MoveScaleMultiplier = moveScaleMultiplier; + } + + /// + /// Gets the rotation scale multiplier. + /// + /// Rotation scale multiplier. + public void GetRotationScaleMultiplier(ref float rotationScaleMultiplier) + { + rotationScaleMultiplier = RotationScaleMultiplier; + } + + /// + /// Sets the rotation scale multiplier. + /// + /// Rotation scale multiplier. + public void SetRotationScaleMultiplier(float rotationScaleMultiplier) + { + RotationScaleMultiplier = rotationScaleMultiplier; + } + + /// + /// Gets the allow mouse rotation. + /// + /// Allow mouse rotation. + public void GetSkipMouseRotation(ref bool skipMouseRotation) + { + skipMouseRotation = SkipMouseRotation; + } + + /// + /// Sets the allow mouse rotation. + /// + /// If set to true allow mouse rotation. + public void SetSkipMouseRotation(bool skipMouseRotation) + { + SkipMouseRotation = skipMouseRotation; + } + + /// + /// Gets the halt update movement. + /// + /// Halt update movement. + public void GetHaltUpdateMovement(ref bool haltUpdateMovement) + { + haltUpdateMovement = HaltUpdateMovement; + } + + /// + /// Sets the halt update movement. + /// + /// If set to true halt update movement. + public void SetHaltUpdateMovement(bool haltUpdateMovement) + { + HaltUpdateMovement = haltUpdateMovement; + } + + /// + /// Resets the player look rotation when the device orientation is reset. + /// + public void ResetOrientation() + { + if (HmdResetsY && !HmdRotatesY) + { + Vector3 euler = transform.rotation.eulerAngles; + euler.y = InitialYRotation; + transform.rotation = Quaternion.Euler(euler); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs.meta new file mode 100644 index 0000000..7c1e6ad --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRPlayerController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0950df82e7936c84983497630bde5b54 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs b/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs new file mode 100644 index 0000000..7d3bf1e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs @@ -0,0 +1,94 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Text; +using UnityEngine; +using UnityEngine.Assertions; + + +namespace UnityEngine.EventSystems +{ + /// + /// Extension of Unity's PointerEventData to support ray based pointing and also touchpad swiping + /// + public class OVRPointerEventData : PointerEventData + { + public OVRPointerEventData(EventSystem eventSystem) + : base(eventSystem) + { + + } + + public Ray worldSpaceRay; + public Vector2 swipeStart; + + public override string ToString() + { + var sb = new StringBuilder(); + sb.AppendLine("Position: " + position); + sb.AppendLine("delta: " + delta); + sb.AppendLine("eligibleForClick: " + eligibleForClick); + sb.AppendLine("pointerEnter: " + pointerEnter); + sb.AppendLine("pointerPress: " + pointerPress); + sb.AppendLine("lastPointerPress: " + lastPress); + sb.AppendLine("pointerDrag: " + pointerDrag); + sb.AppendLine("worldSpaceRay: " + worldSpaceRay); + sb.AppendLine("swipeStart: " + swipeStart); + sb.AppendLine("Use Drag Threshold: " + useDragThreshold); + return sb.ToString(); + } + + } + + + /// + /// Static helpers for OVRPointerEventData. + /// + public static class PointerEventDataExtension + { + + public static bool IsVRPointer(this PointerEventData pointerEventData) + { + return (pointerEventData is OVRPointerEventData); + } + public static Ray GetRay(this PointerEventData pointerEventData) + { + OVRPointerEventData vrPointerEventData = pointerEventData as OVRPointerEventData; + Assert.IsNotNull(vrPointerEventData); + + return vrPointerEventData.worldSpaceRay; + } + public static Vector2 GetSwipeStart(this PointerEventData pointerEventData) + { + OVRPointerEventData vrPointerEventData = pointerEventData as OVRPointerEventData; + Assert.IsNotNull(vrPointerEventData); + + return vrPointerEventData.swipeStart; + } + public static void SetSwipeStart(this PointerEventData pointerEventData, Vector2 start) + { + OVRPointerEventData vrPointerEventData = pointerEventData as OVRPointerEventData; + Assert.IsNotNull(vrPointerEventData); + + vrPointerEventData.swipeStart = start; + } + + + + + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs.meta new file mode 100644 index 0000000..4117752 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRPointerEventData.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 646c937ce12610744adc2b5e487f77ac +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs b/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs new file mode 100644 index 0000000..bfe8a70 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs @@ -0,0 +1,179 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +#if UNITY_EDITOR + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using Assets.OVR.Scripts; + +public class OVRProfiler : EditorWindow +{ + enum TargetPlatform + { + OculusGo, + GearVR, + Quest, + OculusRift + }; + + private static List mRecords = new List(); + private Vector2 mScrollPosition; + static private TargetPlatform mTargetPlatform; + + [MenuItem("Oculus/Tools/OVR Profiler")] + static void Init() + { + // Get existing open window or if none, make a new one: + EditorWindow.GetWindow(typeof(OVRProfiler)); +#if UNITY_ANDROID + mTargetPlatform = TargetPlatform.OculusGo; +#else + mTargetPlatform = TargetPlatform.OculusRift; +#endif + } + + void OnGUI() + { + GUILayout.Label("OVR Profiler", EditorStyles.boldLabel); + string[] options = new string[] + { + "Oculus Go", "Gear VR", "Oculus Quest", "Oculus Rift", + }; + mTargetPlatform = (TargetPlatform)EditorGUILayout.Popup("Target Oculus Platform", (int)mTargetPlatform, options); + + if (EditorApplication.isPlaying) + { + UpdateRecords(); + DrawResults(); + } + else + { + ShowCenterAlignedMessageLabel("Click Run in Unity to view stats."); + } + } + + void OnInspectorUpdate() + { + Repaint(); + } + + void DrawResults() + { + string lastCategory = ""; + + mScrollPosition = EditorGUILayout.BeginScrollView(mScrollPosition); + + foreach (RangedRecord record in mRecords) + { + // Add separator and label for new category + if (!record.category.Equals(lastCategory)) + { + lastCategory = record.category; + EditorGUILayout.Separator(); + EditorGUILayout.BeginHorizontal(); + GUILayout.Label(lastCategory, EditorStyles.label, GUILayout.Width(200)); + EditorGUILayout.EndHorizontal(); + } + + // Draw records + EditorGUILayout.BeginHorizontal(); + Rect r = EditorGUILayout.BeginVertical(); + EditorGUI.ProgressBar(r, record.value / (record.max * 2), record.category + " " + record.value.ToString()); + GUILayout.Space(16); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + GUILayout.Label(record.message); + EditorGUILayout.EndHorizontal(); + + GUI.enabled = true; + + } + + EditorGUILayout.EndScrollView(); + } + + private void UpdateRecords() + { + mRecords.Clear(); + + if (mTargetPlatform == TargetPlatform.OculusRift) + { + AddRecord("Client Frame CPU Time (ms)", "", UnityStats.frameTime * 1000, 0, 11); + AddRecord("Render Frame CPU Time (ms)", "", UnityStats.renderTime * 1000, 0, 11); + } + else + { + // Graphics memory + long memSizeByte = UnityStats.usedTextureMemorySize + UnityStats.vboTotalBytes; + AddRecord("Graphics Memory (MB)", "Please use less than 1024 MB of vertex and texture memory.", ConvertBytes(memSizeByte, "MB"), 0, 1024); + } + + float triVertRec = mTargetPlatform == TargetPlatform.OculusRift ? 1000000 : 100000; + // Triangle count + AddRecord("Triangles", "Please use less than 100000 triangles.", UnityStats.triangles, 0, triVertRec); + + // Vertices count + AddRecord("Vertices", "Please use less than 100000 vertices.", UnityStats.vertices, 0, triVertRec); + + float dcRec = mTargetPlatform == TargetPlatform.OculusRift ? 1000 : 100; + // Draw call count + AddRecord("Draw Call", "Please use less than 100 draw calls.", UnityStats.drawCalls, 0, dcRec); + } + + private string FormatBytes(long bytes, string target) + { + return System.String.Format("{0:0.##} {1}", ConvertBytes(bytes, target), target); + } + + private float ConvertBytes(long bytes, string target) + { + string[] Suffix = { "B", "KB", "MB", "GB", "TB" }; + int i; + double dblSByte = bytes; + for (i = 0; i < Suffix.Length; i++, bytes /= 1024) + { + if (Suffix[i] == target) + return (float)dblSByte; + dblSByte = bytes / 1024.0; + } + return 0; + } + + private void ShowCenterAlignedMessageLabel(string message) + { + GUILayout.BeginVertical(); + GUILayout.FlexibleSpace(); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + GUILayout.Label(message, EditorStyles.boldLabel); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + GUILayout.FlexibleSpace(); + GUILayout.EndVertical(); + } + + private void AddRecord(string category, string message, float value, float min, float max) + { + RangedRecord record = new RangedRecord(category, message, value, min, max); + mRecords.Add(record); + } +} + +#endif diff --git a/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs.meta new file mode 100644 index 0000000..6071a76 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRProfiler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3303d4232ee59ac40a9fdc223870fbbc +timeCreated: 1520636357 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs b/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs new file mode 100644 index 0000000..7c0ac58 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs @@ -0,0 +1,44 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +/// +/// Visualizes progress for operations such as loading. +/// +public class OVRProgressIndicator : MonoBehaviour +{ + public MeshRenderer progressImage; + + [Range(0, 1)] + public float currentProgress = 0.7f; + + void Awake() + { + progressImage.sortingOrder = 150; + } + + + + // Update is called once per frame + void Update() + { + progressImage.sharedMaterial.SetFloat("_AlphaCutoff", 1-currentProgress); + + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs.meta new file mode 100644 index 0000000..e66f8f6 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRProgressIndicator.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f14ece5575e2b1e4d80619901d65b428 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs b/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs new file mode 100644 index 0000000..cf9e440 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs @@ -0,0 +1,328 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using UnityEngine.Serialization; + +/// +/// Extension of GraphicRaycaster to support ray casting with world space rays instead of just screen-space +/// pointer positions +/// +[RequireComponent(typeof(Canvas))] +public class OVRRaycaster : GraphicRaycaster, IPointerEnterHandler +{ + [Tooltip("A world space pointer for this canvas")] + public GameObject pointer; + + public int sortOrder = 0; + + protected OVRRaycaster() + { } + + [NonSerialized] + private Canvas m_Canvas; + + private Canvas canvas + { + get + { + if (m_Canvas != null) + return m_Canvas; + + m_Canvas = GetComponent(); + return m_Canvas; + } + } + + public override Camera eventCamera + { + get + { + return canvas.worldCamera; + } + } + + public override int sortOrderPriority + { + get + { + return sortOrder; + } + } + + protected override void Start() + { + if(!canvas.worldCamera) + { + Debug.Log("Canvas does not have an event camera attached. Attaching OVRCameraRig.centerEyeAnchor as default."); + OVRCameraRig rig = FindObjectOfType(); + canvas.worldCamera = rig.centerEyeAnchor.gameObject.GetComponent(); + } + } + + /// + /// For the given ray, find graphics on this canvas which it intersects and are not blocked by other + /// world objects + /// + [NonSerialized] + private List m_RaycastResults = new List(); + private void Raycast(PointerEventData eventData, List resultAppendList, Ray ray, bool checkForBlocking) + { + //This function is closely based on + //void GraphicRaycaster.Raycast(PointerEventData eventData, List resultAppendList) + + if (canvas == null) + return; + + float hitDistance = float.MaxValue; + + if (checkForBlocking && blockingObjects != BlockingObjects.None) + { + float dist = eventCamera.farClipPlane; + + if (blockingObjects == BlockingObjects.ThreeD || blockingObjects == BlockingObjects.All) + { + var hits = Physics.RaycastAll(ray, dist, m_BlockingMask); + + if (hits.Length > 0 && hits[0].distance < hitDistance) + { + hitDistance = hits[0].distance; + } + } + + if (blockingObjects == BlockingObjects.TwoD || blockingObjects == BlockingObjects.All) + { + var hits = Physics2D.GetRayIntersectionAll(ray, dist, m_BlockingMask); + + if (hits.Length > 0 && hits[0].fraction * dist < hitDistance) + { + hitDistance = hits[0].fraction * dist; + } + } + } + + m_RaycastResults.Clear(); + + GraphicRaycast(canvas, ray, m_RaycastResults); + + for (var index = 0; index < m_RaycastResults.Count; index++) + { + var go = m_RaycastResults[index].graphic.gameObject; + bool appendGraphic = true; + + if (ignoreReversedGraphics) + { + // If we have a camera compare the direction against the cameras forward. + var cameraFoward = ray.direction; + var dir = go.transform.rotation * Vector3.forward; + appendGraphic = Vector3.Dot(cameraFoward, dir) > 0; + } + + // Ignore points behind us (can happen with a canvas pointer) + if (eventCamera.transform.InverseTransformPoint(m_RaycastResults[index].worldPos).z <= 0) + { + appendGraphic = false; + } + + if (appendGraphic) + { + float distance = Vector3.Distance(ray.origin, m_RaycastResults[index].worldPos); + + if (distance >= hitDistance) + { + continue; + } + + var castResult = new RaycastResult + { + gameObject = go, + module = this, + distance = distance, + index = resultAppendList.Count, + depth = m_RaycastResults[index].graphic.depth, + + worldPosition = m_RaycastResults[index].worldPos + }; + resultAppendList.Add(castResult); + } + } + } + + /// + /// Performs a raycast using eventData.worldSpaceRay + /// + /// + /// + public override void Raycast(PointerEventData eventData, List resultAppendList) + { + if (eventData.IsVRPointer()) + { + Raycast(eventData, resultAppendList, eventData.GetRay(), true); + } + } + /// + /// Performs a raycast using the pointer object attached to this OVRRaycaster + /// + /// + /// + public void RaycastPointer(PointerEventData eventData, List resultAppendList) + { + if (pointer != null && pointer.activeInHierarchy) + { + Raycast(eventData, resultAppendList, new Ray(eventCamera.transform.position, (pointer.transform.position - eventCamera.transform.position).normalized), false); + } + } + + + /// + /// Perform a raycast into the screen and collect all graphics underneath it. + /// + [NonSerialized] + static readonly List s_SortedGraphics = new List(); + private void GraphicRaycast(Canvas canvas, Ray ray, List results) + { + //This function is based closely on : + // void GraphicRaycaster.Raycast(Canvas canvas, Camera eventCamera, Vector2 pointerPosition, List results) + // But modified to take a Ray instead of a canvas pointer, and also to explicitly ignore + // the graphic associated with the pointer + + // Necessary for the event system + var foundGraphics = GraphicRegistry.GetGraphicsForCanvas(canvas); + s_SortedGraphics.Clear(); + for (int i = 0; i < foundGraphics.Count; ++i) + { + Graphic graphic = foundGraphics[i]; + + // -1 means it hasn't been processed by the canvas, which means it isn't actually drawn + if (graphic.depth == -1 || (pointer == graphic.gameObject)) + continue; + Vector3 worldPos; + if (RayIntersectsRectTransform(graphic.rectTransform, ray, out worldPos)) + { + //Work out where this is on the screen for compatibility with existing Unity UI code + Vector2 screenPos = eventCamera.WorldToScreenPoint(worldPos); + // mask/image intersection - See Unity docs on eventAlphaThreshold for when this does anything + if (graphic.Raycast(screenPos, eventCamera)) + { + RaycastHit hit; + hit.graphic = graphic; + hit.worldPos = worldPos; + hit.fromMouse = false; + s_SortedGraphics.Add(hit); + } + } + } + + s_SortedGraphics.Sort((g1, g2) => g2.graphic.depth.CompareTo(g1.graphic.depth)); + + for (int i = 0; i < s_SortedGraphics.Count; ++i) + { + results.Add(s_SortedGraphics[i]); + } + } + /// + /// Get screen position of worldPosition contained in this RaycastResult + /// + /// + /// + public Vector2 GetScreenPosition(RaycastResult raycastResult) + { + // In future versions of Uinty RaycastResult will contain screenPosition so this will not be necessary + return eventCamera.WorldToScreenPoint(raycastResult.worldPosition); + } + + + /// + /// Detects whether a ray intersects a RectTransform and if it does also + /// returns the world position of the intersection. + /// + /// + /// + /// + /// + static bool RayIntersectsRectTransform(RectTransform rectTransform, Ray ray, out Vector3 worldPos) + { + Vector3[] corners = new Vector3[4]; + rectTransform.GetWorldCorners(corners); + Plane plane = new Plane(corners[0], corners[1], corners[2]); + + float enter; + if (!plane.Raycast(ray, out enter)) + { + worldPos = Vector3.zero; + return false; + } + + Vector3 intersection = ray.GetPoint(enter); + + Vector3 BottomEdge = corners[3] - corners[0]; + Vector3 LeftEdge = corners[1] - corners[0]; + float BottomDot = Vector3.Dot(intersection - corners[0], BottomEdge); + float LeftDot = Vector3.Dot(intersection - corners[0], LeftEdge); + if (BottomDot < BottomEdge.sqrMagnitude && // Can use sqrMag because BottomEdge is not normalized + LeftDot < LeftEdge.sqrMagnitude && + BottomDot >= 0 && + LeftDot >= 0) + { + worldPos = corners[0] + LeftDot * LeftEdge / LeftEdge.sqrMagnitude + BottomDot * BottomEdge / BottomEdge.sqrMagnitude; + return true; + } + else + { + worldPos = Vector3.zero; + return false; + } + } + + + struct RaycastHit + { + public Graphic graphic; + public Vector3 worldPos; + public bool fromMouse; + }; + + + /// + /// Is this the currently focussed Raycaster according to the InputModule + /// + /// + public bool IsFocussed() + { + OVRInputModule inputModule = EventSystem.current.currentInputModule as OVRInputModule; + return inputModule && inputModule.activeGraphicRaycaster == this; + } + + public void OnPointerEnter(PointerEventData e) + { + if (e.IsVRPointer()) + { + // Gaze has entered this canvas. We'll make it the active one so that canvas-mouse pointer can be used. + OVRInputModule inputModule = EventSystem.current.currentInputModule as OVRInputModule; + if(inputModule != null) + { + inputModule.activeGraphicRaycaster = this; + } + + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs.meta new file mode 100644 index 0000000..053eab6 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRRaycaster.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7aaf960227867044282d921171d2d7ac +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs b/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs new file mode 100644 index 0000000..1771e36 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs @@ -0,0 +1,69 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Assets.OVR.Scripts +{ + public class Record + { + public string category; + public string message; + public Record(string cat, string msg) + { + category = cat; + message = msg; + } + } + + public class RangedRecord : Record + { + public float value; + public float min; + public float max; + public RangedRecord(string cat, string msg, float val, float minVal, float maxVal) + : base(cat, msg) + { + value = val; + min = minVal; + max = maxVal; + } + } + + public delegate void FixMethodDelegate(UnityEngine.Object obj, bool isLastInSet, int selectedIndex); + + public class FixRecord : Record + { + public FixMethodDelegate fixMethod; + public UnityEngine.Object targetObject; + public string[] buttonNames; + public bool editModeRequired; + public bool complete; + + public FixRecord(string cat, string msg, FixMethodDelegate fix, UnityEngine.Object target, bool editRequired, string[] buttons) + : base(cat, msg) + { + buttonNames = buttons; + fixMethod = fix; + targetObject = target; + editModeRequired = editRequired; + complete = false; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs.meta new file mode 100644 index 0000000..5021aa8 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRRecord.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 63f0fe0d60ddeb54f9f43d701286af2d +timeCreated: 1520636357 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs b/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs new file mode 100644 index 0000000..4724c26 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs @@ -0,0 +1,44 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; + +/// +/// Allows you to reset VR input tracking with a gamepad button press. +/// +public class OVRResetOrientation : MonoBehaviour +{ + /// + /// The gamepad button that will reset VR input tracking. + /// + public OVRInput.RawButton resetButton = OVRInput.RawButton.Y; + + /// + /// Check input and reset orientation if necessary + /// See the input mapping setup in the Unity Integration guide + /// + void Update() + { + // NOTE: some of the buttons defined in OVRInput.RawButton are not available on the Android game pad controller + if (OVRInput.GetDown(resetButton)) + { + //************************* + // reset orientation + //************************* + OVRManager.display.RecenterPose(); + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs.meta new file mode 100644 index 0000000..49ce73b --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRResetOrientation.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09bb0a17b6a704298b65be4fb08ef480 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs b/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs new file mode 100644 index 0000000..c1d7b9e --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs @@ -0,0 +1,213 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; + +/// +/// Sample that allows you to play with various VR settings. +/// +public class OVRSceneSampleController : MonoBehaviour +{ + /// + /// The key that quits the application. + /// + public KeyCode quitKey = KeyCode.Escape; + + /// + /// An optional texture that appears before the menu fades in. + /// + public Texture fadeInTexture = null; + + /// + /// Controls how quickly the player's speed and rotation change based on input. + /// + public float speedRotationIncrement = 0.05f; + + private OVRPlayerController playerController = null; + + // Handle to OVRCameraRig + private OVRCameraRig cameraController = null; + + /// + /// We can set the layer to be anything we want to, this allows + /// a specific camera to render it. + /// + public string layerName = "Default"; + + // Vision mode on/off + private bool visionMode = true; + + // We want to hold onto GridCube, for potential sharing + // of the menu RenderTarget + OVRGridCube gridCube = null; + +#if SHOW_DK2_VARIABLES + private string strVisionMode = "Vision Enabled: ON"; +#endif + + #region MonoBehaviour Message Handlers + /// + /// Awake this instance. + /// + void Awake() + { + // Find camera controller + OVRCameraRig[] cameraControllers; + cameraControllers = gameObject.GetComponentsInChildren(); + + if (cameraControllers.Length == 0) + { + Debug.LogWarning("OVRMainMenu: No OVRCameraRig attached."); + } + else if (cameraControllers.Length > 1) + { + Debug.LogWarning("OVRMainMenu: More then 1 OVRCameraRig attached."); + } + else + { + cameraController = cameraControllers[0]; + } + + // Find player controller + OVRPlayerController[] playerControllers; + playerControllers = gameObject.GetComponentsInChildren(); + + if (playerControllers.Length == 0) + { + Debug.LogWarning("OVRMainMenu: No OVRPlayerController attached."); + } + else if (playerControllers.Length > 1) + { + Debug.LogWarning("OVRMainMenu: More then 1 OVRPlayerController attached."); + } + else + { + playerController = playerControllers[0]; + } + } + + /// + /// Start this instance. + /// + void Start() + { + // Make sure to hide cursor + if (Application.isEditor == false) + { + Cursor.visible = false; + Cursor.lockState = CursorLockMode.Locked; + } + + // CameraController updates + if (cameraController != null) + { + // Add a GridCube component to this object + gridCube = gameObject.AddComponent(); + gridCube.SetOVRCameraController(ref cameraController); + } + } + + + /// + /// Update this instance. + /// + void Update() + { + // Recenter pose + UpdateRecenterPose(); + + // Turn On/Off Vision Mode + UpdateVisionMode(); + + // Update Speed and Rotation Scale + if (playerController != null) + UpdateSpeedAndRotationScaleMultiplier(); + + // Toggle Fullscreen + if (Input.GetKeyDown(KeyCode.F11)) + Screen.fullScreen = !Screen.fullScreen; + + if (Input.GetKeyDown(KeyCode.M)) +#if UNITY_2017_2_OR_NEWER + UnityEngine.XR.XRSettings.showDeviceView = !UnityEngine.XR.XRSettings.showDeviceView; +#else + UnityEngine.VR.VRSettings.showDeviceView = !UnityEngine.VR.VRSettings.showDeviceView; +#endif + +#if !UNITY_ANDROID || UNITY_EDITOR + // Escape Application + if (Input.GetKeyDown(quitKey)) + Application.Quit(); +#endif + } + #endregion + + /// + /// Updates the vision mode. + /// + void UpdateVisionMode() + { + if (Input.GetKeyDown(KeyCode.F2)) + { + visionMode ^= visionMode; + OVRManager.tracker.isEnabled = visionMode; + } + } + + /// + /// Updates the speed and rotation scale multiplier. + /// + void UpdateSpeedAndRotationScaleMultiplier() + { + float moveScaleMultiplier = 0.0f; + playerController.GetMoveScaleMultiplier(ref moveScaleMultiplier); + + if (Input.GetKeyDown(KeyCode.Alpha7)) + { + moveScaleMultiplier -= speedRotationIncrement; + } + else if (Input.GetKeyDown(KeyCode.Alpha8)) + { + moveScaleMultiplier += speedRotationIncrement; + } + + playerController.SetMoveScaleMultiplier(moveScaleMultiplier); + + float rotationScaleMultiplier = 0.0f; + playerController.GetRotationScaleMultiplier(ref rotationScaleMultiplier); + + if (Input.GetKeyDown(KeyCode.Alpha9)) + { + rotationScaleMultiplier -= speedRotationIncrement; + } + else if (Input.GetKeyDown(KeyCode.Alpha0)) + { + rotationScaleMultiplier += speedRotationIncrement; + } + + playerController.SetRotationScaleMultiplier(rotationScaleMultiplier); + } + + /// + /// Recenter pose + /// + void UpdateRecenterPose() + { + if (Input.GetKeyDown(KeyCode.R)) + OVRManager.display.RecenterPose(); + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs.meta new file mode 100644 index 0000000..4d9611a --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRSceneSampleController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f07515ada089df47868559a20dd6783 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs b/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs new file mode 100644 index 0000000..f10e654 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs @@ -0,0 +1,204 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; +using System.Collections; // required for Coroutines + +/// +/// Fades the screen from black after a new scene is loaded. Fade can also be controlled mid-scene using SetUIFade and SetFadeLevel +/// +public class OVRScreenFade : MonoBehaviour +{ + [Tooltip("Fade duration")] + public float fadeTime = 2.0f; + + [Tooltip("Screen color at maximum fade")] + public Color fadeColor = new Color(0.01f, 0.01f, 0.01f, 1.0f); + + public bool fadeOnStart = true; + + /// + /// The render queue used by the fade mesh. Reduce this if you need to render on top of it. + /// + public int renderQueue = 5000; + + private float uiFadeAlpha = 0; + + private MeshRenderer fadeRenderer; + private MeshFilter fadeMesh; + private Material fadeMaterial = null; + private bool isFading = false; + + public float currentAlpha { get; private set; } + + void Awake() + { + // create the fade material + fadeMaterial = new Material(Shader.Find("Oculus/Unlit Transparent Color")); + fadeMesh = gameObject.AddComponent(); + fadeRenderer = gameObject.AddComponent(); + + var mesh = new Mesh(); + fadeMesh.mesh = mesh; + + Vector3[] vertices = new Vector3[4]; + + float width = 2f; + float height = 2f; + float depth = 1f; + + vertices[0] = new Vector3(-width, -height, depth); + vertices[1] = new Vector3(width, -height, depth); + vertices[2] = new Vector3(-width, height, depth); + vertices[3] = new Vector3(width, height, depth); + + mesh.vertices = vertices; + + int[] tri = new int[6]; + + tri[0] = 0; + tri[1] = 2; + tri[2] = 1; + + tri[3] = 2; + tri[4] = 3; + tri[5] = 1; + + mesh.triangles = tri; + + Vector3[] normals = new Vector3[4]; + + normals[0] = -Vector3.forward; + normals[1] = -Vector3.forward; + normals[2] = -Vector3.forward; + normals[3] = -Vector3.forward; + + mesh.normals = normals; + + Vector2[] uv = new Vector2[4]; + + uv[0] = new Vector2(0, 0); + uv[1] = new Vector2(1, 0); + uv[2] = new Vector2(0, 1); + uv[3] = new Vector2(1, 1); + + mesh.uv = uv; + + SetFadeLevel(0); + } + + /// + /// Start a fade out + /// + public void FadeOut() + { + StartCoroutine(Fade(0,1)); + } + + + /// + /// Starts a fade in when a new level is loaded + /// + void OnLevelFinishedLoading(int level) + { + StartCoroutine(Fade(1,0)); + } + + /// + /// Automatically starts a fade in + /// + void Start() + { + if (fadeOnStart) + { + StartCoroutine(Fade(1,0)); + } + } + + void OnEnable() + { + if (!fadeOnStart) + { + SetFadeLevel(0); + } + } + + /// + /// Cleans up the fade material + /// + void OnDestroy() + { + if (fadeRenderer != null) + Destroy(fadeRenderer); + + if (fadeMaterial != null) + Destroy(fadeMaterial); + + if (fadeMesh != null) + Destroy(fadeMesh); + } + + /// + /// Set the UI fade level - fade due to UI in foreground + /// + public void SetUIFade(float level) + { + uiFadeAlpha = Mathf.Clamp01(level); + SetMaterialAlpha(); + } + /// + /// Override current fade level + /// + /// + public void SetFadeLevel(float level) + { + currentAlpha = level; + SetMaterialAlpha(); + } + + /// + /// Fades alpha from 1.0 to 0.0 + /// + IEnumerator Fade(float startAlpha, float endAlpha) + { + float elapsedTime = 0.0f; + while (elapsedTime < fadeTime) + { + elapsedTime += Time.deltaTime; + currentAlpha = Mathf.Lerp(startAlpha, endAlpha, Mathf.Clamp01(elapsedTime / fadeTime)); + SetMaterialAlpha(); + yield return new WaitForEndOfFrame(); + } + } + + /// + /// Update material alpha. UI fade and the current fade due to fade in/out animations (or explicit control) + /// both affect the fade. (The max is taken) + /// + private void SetMaterialAlpha() + { + Color color = fadeColor; + color.a = Mathf.Max(currentAlpha, uiFadeAlpha); + isFading = color.a > 0; + if (fadeMaterial != null) + { + fadeMaterial.color = color; + fadeMaterial.renderQueue = renderQueue; + fadeRenderer.material = fadeMaterial; + fadeRenderer.enabled = isFading; + } + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs.meta new file mode 100644 index 0000000..68714fc --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRScreenFade.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df8e1d778abf442e4bec449c360e9e1c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -100 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs b/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs new file mode 100644 index 0000000..3ef4a24 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs @@ -0,0 +1,276 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using UnityEngine; +using UnityEngine.Networking; + +using Debug = UnityEngine.Debug; + +public class OVRSystemPerfMetrics +{ + public const int TcpListeningPort = 32419; + public const int PayloadTypeMetrics = 100; + + public const int MaxBufferLength = 65536; + public const int MaxMessageLength = MaxBufferLength - sizeof(int); + + public class PerfMetrics + { + public int frameCount; + public float frameTime; + public float deltaFrameTime; + + public bool appCpuTime_IsValid; + public float appCpuTime; + public bool appGpuTime_IsValid; + public float appGpuTime; + public bool compositorCpuTime_IsValid; + public float compositorCpuTime; + public bool compositorGpuTime_IsValid; + public float compositorGpuTime; + public bool compositorDroppedFrameCount_IsValid; + public int compositorDroppedFrameCount; + public bool systemGpuUtilPercentage_IsValid; + public float systemGpuUtilPercentage; + public bool systemCpuUtilAveragePercentage_IsValid; + public float systemCpuUtilAveragePercentage; + public bool systemCpuUtilWorstPercentage_IsValid; + public float systemCpuUtilWorstPercentage; + public bool deviceCpuClockFrequencyInMHz_IsValid; + public float deviceCpuClockFrequencyInMHz; + public bool deviceGpuClockFrequencyInMHz_IsValid; + public float deviceGpuClockFrequencyInMHz; + public bool deviceCpuClockLevel_IsValid; + public int deviceCpuClockLevel; + public bool deviceGpuClockLevel_IsValid; + public int deviceGpuClockLevel; + + public string ToJSON() + { + OVRSimpleJSON.JSONObject jsonNode = new OVRSimpleJSON.JSONObject(); + jsonNode.Add("frameCount", new OVRSimpleJSON.JSONNumber(frameCount)); + jsonNode.Add("frameTime", new OVRSimpleJSON.JSONNumber(frameTime)); + jsonNode.Add("deltaFrameTime", new OVRSimpleJSON.JSONNumber(deltaFrameTime)); + if (appCpuTime_IsValid) + { + jsonNode.Add("appCpuTime", new OVRSimpleJSON.JSONNumber(appCpuTime)); + } + if (appGpuTime_IsValid) + { + jsonNode.Add("appGpuTime", new OVRSimpleJSON.JSONNumber(appGpuTime)); + } + if (compositorCpuTime_IsValid) + { + jsonNode.Add("compositorCpuTime", new OVRSimpleJSON.JSONNumber(compositorCpuTime)); + } + if (compositorGpuTime_IsValid) + { + jsonNode.Add("compositorGpuTime", new OVRSimpleJSON.JSONNumber(compositorGpuTime)); + } + if (compositorDroppedFrameCount_IsValid) + { + jsonNode.Add("compositorDroppedFrameCount", new OVRSimpleJSON.JSONNumber(compositorDroppedFrameCount)); + } + if (systemGpuUtilPercentage_IsValid) + { + jsonNode.Add("systemGpuUtilPercentage", new OVRSimpleJSON.JSONNumber(systemGpuUtilPercentage)); + } + if (systemCpuUtilAveragePercentage_IsValid) + { + jsonNode.Add("systemCpuUtilAveragePercentage", new OVRSimpleJSON.JSONNumber(systemCpuUtilAveragePercentage)); + } + if (systemCpuUtilWorstPercentage_IsValid) + { + jsonNode.Add("systemCpuUtilWorstPercentage", new OVRSimpleJSON.JSONNumber(systemCpuUtilWorstPercentage)); + } + if (deviceCpuClockFrequencyInMHz_IsValid) + { + jsonNode.Add("deviceCpuClockFrequencyInMHz", new OVRSimpleJSON.JSONNumber(deviceCpuClockFrequencyInMHz)); + } + if (deviceGpuClockFrequencyInMHz_IsValid) + { + jsonNode.Add("deviceGpuClockFrequencyInMHz", new OVRSimpleJSON.JSONNumber(deviceGpuClockFrequencyInMHz)); + } + if (deviceCpuClockLevel_IsValid) + { + jsonNode.Add("deviceCpuClockLevel", new OVRSimpleJSON.JSONNumber(deviceCpuClockLevel)); + } + if (deviceGpuClockLevel_IsValid) + { + jsonNode.Add("deviceGpuClockLevel", new OVRSimpleJSON.JSONNumber(deviceGpuClockLevel)); + } + string str = jsonNode.ToString(); + return str; + } + + public bool LoadFromJSON(string json) + { + OVRSimpleJSON.JSONObject jsonNode = OVRSimpleJSON.JSONObject.Parse(json) as OVRSimpleJSON.JSONObject; + if (jsonNode == null) + { + return false; + } + frameCount = jsonNode["frameCount"] != null ? jsonNode["frameCount"].AsInt : 0; + frameTime = jsonNode["frameTime"] != null ? jsonNode["frameTime"].AsFloat : 0; + deltaFrameTime = jsonNode["deltaFrameTime"] != null ? jsonNode["deltaFrameTime"].AsFloat : 0; + appCpuTime_IsValid = jsonNode["appCpuTime"] != null; + appCpuTime = appCpuTime_IsValid ? jsonNode["appCpuTime"].AsFloat : 0; + appGpuTime_IsValid = jsonNode["appGpuTime"] != null; + appGpuTime = appGpuTime_IsValid ? jsonNode["appGpuTime"].AsFloat : 0; + compositorCpuTime_IsValid = jsonNode["compositorCpuTime"] != null; + compositorCpuTime = compositorCpuTime_IsValid ? jsonNode["compositorCpuTime"].AsFloat : 0; + compositorGpuTime_IsValid = jsonNode["compositorGpuTime"] != null; + compositorGpuTime = compositorGpuTime_IsValid ? jsonNode["compositorGpuTime"].AsFloat : 0; + compositorDroppedFrameCount_IsValid = jsonNode["compositorDroppedFrameCount"] != null; + compositorDroppedFrameCount = compositorDroppedFrameCount_IsValid ? jsonNode["ompositorDroppedFrameCount"].AsInt : 0; + systemGpuUtilPercentage_IsValid = jsonNode["systemGpuUtilPercentage"] != null; + systemGpuUtilPercentage = systemGpuUtilPercentage_IsValid ? jsonNode["systemGpuUtilPercentage"].AsFloat : 0; + systemCpuUtilAveragePercentage_IsValid = jsonNode["systemCpuUtilAveragePercentage"] != null; + systemCpuUtilAveragePercentage = systemCpuUtilAveragePercentage_IsValid ? jsonNode["systemCpuUtilAveragePercentage"].AsFloat : 0; + systemCpuUtilWorstPercentage_IsValid = jsonNode["systemCpuUtilWorstPercentage"] != null; + systemCpuUtilWorstPercentage = systemCpuUtilWorstPercentage_IsValid ? jsonNode["systemCpuUtilWorstPercentage"].AsFloat : 0; + deviceCpuClockFrequencyInMHz_IsValid = jsonNode["deviceCpuClockFrequencyInMHz"] != null; + deviceCpuClockFrequencyInMHz = deviceCpuClockFrequencyInMHz_IsValid ? jsonNode["deviceCpuClockFrequencyInMHz"].AsFloat : 0; + deviceGpuClockFrequencyInMHz_IsValid = jsonNode["deviceGpuClockFrequencyInMHz"] != null; + deviceGpuClockFrequencyInMHz = deviceGpuClockFrequencyInMHz_IsValid ? jsonNode["deviceGpuClockFrequencyInMHz"].AsFloat : 0; + deviceCpuClockLevel_IsValid = jsonNode["deviceCpuClockLevel"] != null; + deviceCpuClockLevel = deviceCpuClockLevel_IsValid ? jsonNode["deviceCpuClockLevel"].AsInt : 0; + deviceGpuClockLevel_IsValid = jsonNode["deviceGpuClockLevel"] != null; + deviceGpuClockLevel = deviceGpuClockLevel_IsValid ? jsonNode["deviceGpuClockLevel"].AsInt : 0; + return true; + } + } + + public class OVRSystemPerfMetricsTcpServer : MonoBehaviour + { + public static OVRSystemPerfMetricsTcpServer singleton = null; + + private OVRNetwork.OVRNetworkTcpServer tcpServer = new OVRNetwork.OVRNetworkTcpServer(); + + public int listeningPort = OVRSystemPerfMetrics.TcpListeningPort; + + void OnEnable() + { + if (singleton != null) + { + Debug.LogError("Mutiple OVRSystemPerfMetricsTcpServer exists"); + return; + } + else + { + singleton = this; + } + + if (Application.isEditor) + { + Application.runInBackground = true; + } + tcpServer.StartListening(listeningPort); + } + + void OnDisable() + { + tcpServer.StopListening(); + + singleton = null; + + Debug.Log("[OVRSystemPerfMetricsTcpServer] server destroyed"); + } + + private void Update() + { + if (tcpServer.HasConnectedClient()) + { + PerfMetrics metrics = GatherPerfMetrics(); + string json = metrics.ToJSON(); + byte[] bytes = Encoding.UTF8.GetBytes(json); + tcpServer.Broadcast(OVRSystemPerfMetrics.PayloadTypeMetrics, bytes); + } + } + + PerfMetrics GatherPerfMetrics() + { + PerfMetrics metrics = new PerfMetrics(); + + metrics.frameCount = Time.frameCount; + metrics.frameTime = Time.unscaledTime; + metrics.deltaFrameTime = Time.unscaledDeltaTime; + + float? floatValue; + int? intValue; + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.App_CpuTime_Float); + metrics.appCpuTime_IsValid = floatValue.HasValue; + metrics.appCpuTime = floatValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.App_GpuTime_Float); + metrics.appGpuTime_IsValid = floatValue.HasValue; + metrics.appGpuTime = floatValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.Compositor_CpuTime_Float); + metrics.compositorCpuTime_IsValid = floatValue.HasValue; + metrics.compositorCpuTime = floatValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.Compositor_GpuTime_Float); + metrics.compositorGpuTime_IsValid = floatValue.HasValue; + metrics.compositorGpuTime = floatValue.GetValueOrDefault(); + + intValue = OVRPlugin.GetPerfMetricsInt(OVRPlugin.PerfMetrics.Compositor_DroppedFrameCount_Int); + metrics.compositorDroppedFrameCount_IsValid = intValue.HasValue; + metrics.compositorDroppedFrameCount = intValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.System_GpuUtilPercentage_Float); + metrics.systemGpuUtilPercentage_IsValid = floatValue.HasValue; + metrics.systemGpuUtilPercentage = floatValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.System_CpuUtilAveragePercentage_Float); + metrics.systemCpuUtilAveragePercentage_IsValid = floatValue.HasValue; + metrics.systemCpuUtilAveragePercentage = floatValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.System_CpuUtilWorstPercentage_Float); + metrics.systemCpuUtilWorstPercentage_IsValid = floatValue.HasValue; + metrics.systemCpuUtilWorstPercentage = floatValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.Device_CpuClockFrequencyInMHz_Float); + metrics.deviceCpuClockFrequencyInMHz_IsValid = floatValue.HasValue; + metrics.deviceCpuClockFrequencyInMHz = floatValue.GetValueOrDefault(); + + floatValue = OVRPlugin.GetPerfMetricsFloat(OVRPlugin.PerfMetrics.Device_GpuClockFrequencyInMHz_Float); + metrics.deviceGpuClockFrequencyInMHz_IsValid = floatValue.HasValue; + metrics.deviceGpuClockFrequencyInMHz = floatValue.GetValueOrDefault(); + + intValue = OVRPlugin.GetPerfMetricsInt(OVRPlugin.PerfMetrics.Device_CpuClockLevel_Int); + metrics.deviceCpuClockLevel_IsValid = intValue.HasValue; + metrics.deviceCpuClockLevel = intValue.GetValueOrDefault(); + + intValue = OVRPlugin.GetPerfMetricsInt(OVRPlugin.PerfMetrics.Device_GpuClockLevel_Int); + metrics.deviceGpuClockLevel_IsValid = intValue.HasValue; + metrics.deviceGpuClockLevel = intValue.GetValueOrDefault(); + + return metrics; + } + + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs.meta new file mode 100644 index 0000000..49e352a --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRSystemPerfMetrics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a987a7ebe2d568f459dab8dfb866479f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs b/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs new file mode 100644 index 0000000..28ba043 --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs @@ -0,0 +1,33 @@ +/************************************************************************************ +Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved. + +Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use +the Utilities SDK except in compliance with the License, which is provided at the time of installation +or download, or which otherwise accompanies this software in either electronic or hard copy form. + +You may obtain a copy of the License at +https://developer.oculus.com/licenses/utilities-1.31 + +Unless required by applicable law or agreed to in writing, the Utilities SDK distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. +************************************************************************************/ + +using UnityEngine; + +/// +/// Rotates this GameObject at a given speed. +/// +public class OVRWaitCursor : MonoBehaviour +{ + public Vector3 rotateSpeeds = new Vector3(0.0f, 0.0f, -60.0f); + + /// + /// Auto rotates the attached cursor. + /// + void Update() + { + transform.Rotate(rotateSpeeds * Time.smoothDeltaTime); + } +} diff --git a/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs.meta b/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs.meta new file mode 100644 index 0000000..3bb6dca --- /dev/null +++ b/Assets/Oculus/VR/Scripts/Util/OVRWaitCursor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d313011a8bc474fe49260bde01cffcd3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Oculus/VR/ThirdParty.meta b/Assets/Oculus/VR/ThirdParty.meta new file mode 100644 index 0000000..42aa760 --- /dev/null +++ b/Assets/Oculus/VR/ThirdParty.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3366bc22ba4a2bd4ab63507d836013d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/ThirdParty/SimpleJSON.cs b/Assets/Oculus/VR/ThirdParty/SimpleJSON.cs new file mode 100644 index 0000000..1910229 --- /dev/null +++ b/Assets/Oculus/VR/ThirdParty/SimpleJSON.cs @@ -0,0 +1,1352 @@ +/* * * * * + * A simple JSON Parser / builder + * ------------------------------ + * + * It mainly has been written as a simple JSON parser. It can build a JSON string + * from the node-tree, or generate a node tree from any valid JSON string. + * + * If you want to use compression when saving to file / stream / B64 you have to include + * SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) in your project and + * define "USE_SharpZipLib" at the top of the file + * + * Written by Bunny83 + * 2012-06-09 + * + * [2012-06-09 First Version] + * - provides strongly typed node classes and lists / dictionaries + * - provides easy access to class members / array items / data values + * - the parser now properly identifies types. So generating JSON with this framework should work. + * - only double quotes (") are used for quoting strings. + * - provides "casting" properties to easily convert to / from those types: + * int / float / double / bool + * - provides a common interface for each node so no explicit casting is required. + * - the parser tries to avoid errors, but if malformed JSON is parsed the result is more or less undefined + * - It can serialize/deserialize a node tree into/from an experimental compact binary format. It might + * be handy if you want to store things in a file and don't want it to be easily modifiable + * + * [2012-12-17 Update] + * - Added internal JSONLazyCreator class which simplifies the construction of a JSON tree + * Now you can simple reference any item that doesn't exist yet and it will return a JSONLazyCreator + * The class determines the required type by it's further use, creates the type and removes itself. + * - Added binary serialization / deserialization. + * - Added support for BZip2 zipped binary format. Requires the SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) + * The usage of the SharpZipLib library can be disabled by removing or commenting out the USE_SharpZipLib define at the top + * - The serializer uses different types when it comes to store the values. Since my data values + * are all of type string, the serializer will "try" which format fits best. The order is: int, float, double, bool, string. + * It's not the most efficient way but for a moderate amount of data it should work on all platforms. + * + * [2017-03-08 Update] + * - Optimised parsing by using a StringBuilder for token. This prevents performance issues when large + * string data fields are contained in the json data. + * - Finally refactored the badly named JSONClass into JSONObject. + * - Replaced the old JSONData class by distict typed classes ( JSONString, JSONNumber, JSONBool, JSONNull ) this + * allows to propertly convert the node tree back to json without type information loss. The actual value + * parsing now happens at parsing time and not when you actually access one of the casting properties. + * + * [2017-04-11 Update] + * - Fixed parsing bug where empty string values have been ignored. + * - Optimised "ToString" by using a StringBuilder internally. This should heavily improve performance for large files + * - Changed the overload of "ToString(string aIndent)" to "ToString(int aIndent)" + * + * [2017-11-29 Update] + * - Removed the IEnumerator implementations on JSONArray & JSONObject and replaced it with a common + * struct Enumerator in JSONNode that should avoid garbage generation. The enumerator always works + * on KeyValuePair, even for JSONArray. + * - Added two wrapper Enumerators that allows for easy key or value enumeration. A JSONNode now has + * a "Keys" and a "Values" enumerable property. Those are also struct enumerators / enumerables + * - A KeyValuePair can now be implicitly converted into a JSONNode. This allows + * a foreach loop over a JSONNode to directly access the values only. Since KeyValuePair as well as + * all the Enumerators are structs, no garbage is allocated. + * - To add Linq support another "LinqEnumerator" is available through the "Linq" property. This + * enumerator does implement the generic IEnumerable interface so most Linq extensions can be used + * on this enumerable object. This one does allocate memory as it's a wrapper class. + * - The Escape method now escapes all control characters (# < 32) in strings as uncode characters + * (\uXXXX) and if the static bool JSONNode.forceASCII is set to true it will also escape all + * characters # > 127. This might be useful if you require an ASCII output. Though keep in mind + * when your strings contain many non-ascii characters the strings become much longer (x6) and are + * no longer human readable. + * - The node types JSONObject and JSONArray now have an "Inline" boolean switch which will default to + * false. It can be used to serialize this element inline even you serialize with an indented format + * This is useful for arrays containing numbers so it doesn't place every number on a new line + * - Extracted the binary serialization code into a seperate extension file. All classes are now declared + * as "partial" so an extension file can even add a new virtual or abstract method / interface to + * JSONNode and override it in the concrete type classes. It's of course a hacky approach which is + * generally not recommended, but i wanted to keep everything tightly packed. + * - Added a static CreateOrGet method to the JSONNull class. Since this class is immutable it could + * be reused without major problems. If you have a lot null fields in your data it will help reduce + * the memory / garbage overhead. I also added a static setting (reuseSameInstance) to JSONNull + * (default is true) which will change the behaviour of "CreateOrGet". If you set this to false + * CreateOrGet will not reuse the cached instance but instead create a new JSONNull instance each time. + * I made the JSONNull constructor private so if you need to create an instance manually use + * JSONNull.CreateOrGet() + * + * [2018-01-09 Update] + * - Changed all double.TryParse and double.ToString uses to use the invariant culture to avoid problems + * on systems with a culture that uses a comma as decimal point. + * + * [2018-01-26 Update] + * - Added AsLong. Note that a JSONNumber is stored as double and can't represent all long values. However + * storing it as string would work. + * - Added static setting "JSONNode.longAsString" which controls the default type that is used by the + * LazyCreator when using AsLong + * + * [2018-04-25 Update] + * - Added support for parsing single values (JSONBool, JSONString, JSONNumber, JSONNull) as top level value. + * + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 Markus Göbel (Bunny83) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * * * * */ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; + +// renaming the namespace to avoid conflict +namespace OVRSimpleJSON // SimpleJSON +{ + public enum JSONNodeType + { + Array = 1, + Object = 2, + String = 3, + Number = 4, + NullValue = 5, + Boolean = 6, + None = 7, + Custom = 0xFF, + } + public enum JSONTextMode + { + Compact, + Indent + } + + public abstract partial class JSONNode + { + #region Enumerators + public struct Enumerator + { + private enum Type { None, Array, Object } + private Type type; + private Dictionary.Enumerator m_Object; + private List.Enumerator m_Array; + public bool IsValid { get { return type != Type.None; } } + public Enumerator(List.Enumerator aArrayEnum) + { + type = Type.Array; + m_Object = default(Dictionary.Enumerator); + m_Array = aArrayEnum; + } + public Enumerator(Dictionary.Enumerator aDictEnum) + { + type = Type.Object; + m_Object = aDictEnum; + m_Array = default(List.Enumerator); + } + public KeyValuePair Current + { + get { + if (type == Type.Array) + return new KeyValuePair(string.Empty, m_Array.Current); + else if (type == Type.Object) + return m_Object.Current; + return new KeyValuePair(string.Empty, null); + } + } + public bool MoveNext() + { + if (type == Type.Array) + return m_Array.MoveNext(); + else if (type == Type.Object) + return m_Object.MoveNext(); + return false; + } + } + public struct ValueEnumerator + { + private Enumerator m_Enumerator; + public ValueEnumerator(List.Enumerator aArrayEnum) : this(new Enumerator(aArrayEnum)) { } + public ValueEnumerator(Dictionary.Enumerator aDictEnum) : this(new Enumerator(aDictEnum)) { } + public ValueEnumerator(Enumerator aEnumerator) { m_Enumerator = aEnumerator; } + public JSONNode Current { get { return m_Enumerator.Current.Value; } } + public bool MoveNext() { return m_Enumerator.MoveNext(); } + public ValueEnumerator GetEnumerator() { return this; } + } + public struct KeyEnumerator + { + private Enumerator m_Enumerator; + public KeyEnumerator(List.Enumerator aArrayEnum) : this(new Enumerator(aArrayEnum)) { } + public KeyEnumerator(Dictionary.Enumerator aDictEnum) : this(new Enumerator(aDictEnum)) { } + public KeyEnumerator(Enumerator aEnumerator) { m_Enumerator = aEnumerator; } + public string Current { get { return m_Enumerator.Current.Key; } } + public bool MoveNext() { return m_Enumerator.MoveNext(); } + public KeyEnumerator GetEnumerator() { return this; } + } + + public class LinqEnumerator : IEnumerator>, IEnumerable> + { + private JSONNode m_Node; + private Enumerator m_Enumerator; + internal LinqEnumerator(JSONNode aNode) + { + m_Node = aNode; + if (m_Node != null) + m_Enumerator = m_Node.GetEnumerator(); + } + public KeyValuePair Current { get { return m_Enumerator.Current; } } + object IEnumerator.Current { get { return m_Enumerator.Current; } } + public bool MoveNext() { return m_Enumerator.MoveNext(); } + + public void Dispose() + { + m_Node = null; + m_Enumerator = new Enumerator(); + } + + public IEnumerator> GetEnumerator() + { + return new LinqEnumerator(m_Node); + } + + public void Reset() + { + if (m_Node != null) + m_Enumerator = m_Node.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return new LinqEnumerator(m_Node); + } + } + + #endregion Enumerators + + #region common interface + + public static bool forceASCII = false; // Use Unicode by default + public static bool longAsString = false; // lazy creator creates a JSONString instead of JSONNumber + + public abstract JSONNodeType Tag { get; } + + public virtual JSONNode this[int aIndex] { get { return null; } set { } } + + public virtual JSONNode this[string aKey] { get { return null; } set { } } + + public virtual string Value { get { return ""; } set { } } + + public virtual int Count { get { return 0; } } + + public virtual bool IsNumber { get { return false; } } + public virtual bool IsString { get { return false; } } + public virtual bool IsBoolean { get { return false; } } + public virtual bool IsNull { get { return false; } } + public virtual bool IsArray { get { return false; } } + public virtual bool IsObject { get { return false; } } + + public virtual bool Inline { get { return false; } set { } } + + public virtual void Add(string aKey, JSONNode aItem) + { + } + public virtual void Add(JSONNode aItem) + { + Add("", aItem); + } + + public virtual JSONNode Remove(string aKey) + { + return null; + } + + public virtual JSONNode Remove(int aIndex) + { + return null; + } + + public virtual JSONNode Remove(JSONNode aNode) + { + return aNode; + } + + public virtual IEnumerable Children + { + get + { + yield break; + } + } + + public IEnumerable DeepChildren + { + get + { + foreach (var C in Children) + foreach (var D in C.DeepChildren) + yield return D; + } + } + + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + WriteToStringBuilder(sb, 0, 0, JSONTextMode.Compact); + return sb.ToString(); + } + + public virtual string ToString(int aIndent) + { + StringBuilder sb = new StringBuilder(); + WriteToStringBuilder(sb, 0, aIndent, JSONTextMode.Indent); + return sb.ToString(); + } + internal abstract void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode); + + public abstract Enumerator GetEnumerator(); + public IEnumerable> Linq { get { return new LinqEnumerator(this); } } + public KeyEnumerator Keys { get { return new KeyEnumerator(GetEnumerator()); } } + public ValueEnumerator Values { get { return new ValueEnumerator(GetEnumerator()); } } + + #endregion common interface + + #region typecasting properties + + + public virtual double AsDouble + { + get + { + double v = 0.0; + if (double.TryParse(Value,NumberStyles.Float, CultureInfo.InvariantCulture, out v)) + return v; + return 0.0; + } + set + { + Value = value.ToString(CultureInfo.InvariantCulture); + } + } + + public virtual int AsInt + { + get { return (int)AsDouble; } + set { AsDouble = value; } + } + + public virtual float AsFloat + { + get { return (float)AsDouble; } + set { AsDouble = value; } + } + + public virtual bool AsBool + { + get + { + bool v = false; + if (bool.TryParse(Value, out v)) + return v; + return !string.IsNullOrEmpty(Value); + } + set + { + Value = (value) ? "true" : "false"; + } + } + + public virtual long AsLong + { + get + { + long val = 0; + if (long.TryParse(Value, out val)) + return val; + return 0L; + } + set + { + Value = value.ToString(); + } + } + + public virtual JSONArray AsArray + { + get + { + return this as JSONArray; + } + } + + public virtual JSONObject AsObject + { + get + { + return this as JSONObject; + } + } + + + #endregion typecasting properties + + #region operators + + public static implicit operator JSONNode(string s) + { + return new JSONString(s); + } + public static implicit operator string(JSONNode d) + { + return (d == null) ? null : d.Value; + } + + public static implicit operator JSONNode(double n) + { + return new JSONNumber(n); + } + public static implicit operator double(JSONNode d) + { + return (d == null) ? 0 : d.AsDouble; + } + + public static implicit operator JSONNode(float n) + { + return new JSONNumber(n); + } + public static implicit operator float(JSONNode d) + { + return (d == null) ? 0 : d.AsFloat; + } + + public static implicit operator JSONNode(int n) + { + return new JSONNumber(n); + } + public static implicit operator int(JSONNode d) + { + return (d == null) ? 0 : d.AsInt; + } + + public static implicit operator JSONNode(long n) + { + if (longAsString) + return new JSONString(n.ToString()); + return new JSONNumber(n); + } + public static implicit operator long(JSONNode d) + { + return (d == null) ? 0L : d.AsLong; + } + + public static implicit operator JSONNode(bool b) + { + return new JSONBool(b); + } + public static implicit operator bool(JSONNode d) + { + return (d == null) ? false : d.AsBool; + } + + public static implicit operator JSONNode(KeyValuePair aKeyValue) + { + return aKeyValue.Value; + } + + public static bool operator ==(JSONNode a, object b) + { + if (ReferenceEquals(a, b)) + return true; + bool aIsNull = a is JSONNull || ReferenceEquals(a, null) || a is JSONLazyCreator; + bool bIsNull = b is JSONNull || ReferenceEquals(b, null) || b is JSONLazyCreator; + if (aIsNull && bIsNull) + return true; + return !aIsNull && a.Equals(b); + } + + public static bool operator !=(JSONNode a, object b) + { + return !(a == b); + } + + public override bool Equals(object obj) + { + return ReferenceEquals(this, obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + #endregion operators + + [ThreadStatic] + private static StringBuilder m_EscapeBuilder; + internal static StringBuilder EscapeBuilder + { + get { + if (m_EscapeBuilder == null) + m_EscapeBuilder = new StringBuilder(); + return m_EscapeBuilder; + } + } + internal static string Escape(string aText) + { + var sb = EscapeBuilder; + sb.Length = 0; + if (sb.Capacity < aText.Length + aText.Length / 10) + sb.Capacity = aText.Length + aText.Length / 10; + foreach (char c in aText) + { + switch (c) + { + case '\\': + sb.Append("\\\\"); + break; + case '\"': + sb.Append("\\\""); + break; + case '\n': + sb.Append("\\n"); + break; + case '\r': + sb.Append("\\r"); + break; + case '\t': + sb.Append("\\t"); + break; + case '\b': + sb.Append("\\b"); + break; + case '\f': + sb.Append("\\f"); + break; + default: + if (c < ' ' || (forceASCII && c > 127)) + { + ushort val = c; + sb.Append("\\u").Append(val.ToString("X4")); + } + else + sb.Append(c); + break; + } + } + string result = sb.ToString(); + sb.Length = 0; + return result; + } + + private static JSONNode ParseElement(string token, bool quoted) + { + if (quoted) + return token; + string tmp = token.ToLower(); + if (tmp == "false" || tmp == "true") + return tmp == "true"; + if (tmp == "null") + return JSONNull.CreateOrGet(); + double val; + if (double.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out val)) + return val; + else + return token; + } + + public static JSONNode Parse(string aJSON) + { + Stack stack = new Stack(); + JSONNode ctx = null; + int i = 0; + StringBuilder Token = new StringBuilder(); + string TokenName = ""; + bool QuoteMode = false; + bool TokenIsQuoted = false; + while (i < aJSON.Length) + { + switch (aJSON[i]) + { + case '{': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + stack.Push(new JSONObject()); + if (ctx != null) + { + ctx.Add(TokenName, stack.Peek()); + } + TokenName = ""; + Token.Length = 0; + ctx = stack.Peek(); + break; + + case '[': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + + stack.Push(new JSONArray()); + if (ctx != null) + { + ctx.Add(TokenName, stack.Peek()); + } + TokenName = ""; + Token.Length = 0; + ctx = stack.Peek(); + break; + + case '}': + case ']': + if (QuoteMode) + { + + Token.Append(aJSON[i]); + break; + } + if (stack.Count == 0) + throw new Exception("JSON Parse: Too many closing brackets"); + + stack.Pop(); + if (Token.Length > 0 || TokenIsQuoted) + ctx.Add(TokenName, ParseElement(Token.ToString(), TokenIsQuoted)); + TokenIsQuoted = false; + TokenName = ""; + Token.Length = 0; + if (stack.Count > 0) + ctx = stack.Peek(); + break; + + case ':': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + TokenName = Token.ToString(); + Token.Length = 0; + TokenIsQuoted = false; + break; + + case '"': + QuoteMode ^= true; + TokenIsQuoted |= QuoteMode; + break; + + case ',': + if (QuoteMode) + { + Token.Append(aJSON[i]); + break; + } + if (Token.Length > 0 || TokenIsQuoted) + ctx.Add(TokenName, ParseElement(Token.ToString(), TokenIsQuoted)); + TokenIsQuoted = false; + TokenName = ""; + Token.Length = 0; + TokenIsQuoted = false; + break; + + case '\r': + case '\n': + break; + + case ' ': + case '\t': + if (QuoteMode) + Token.Append(aJSON[i]); + break; + + case '\\': + ++i; + if (QuoteMode) + { + char C = aJSON[i]; + switch (C) + { + case 't': + Token.Append('\t'); + break; + case 'r': + Token.Append('\r'); + break; + case 'n': + Token.Append('\n'); + break; + case 'b': + Token.Append('\b'); + break; + case 'f': + Token.Append('\f'); + break; + case 'u': + { + string s = aJSON.Substring(i + 1, 4); + Token.Append((char)int.Parse( + s, + System.Globalization.NumberStyles.AllowHexSpecifier)); + i += 4; + break; + } + default: + Token.Append(C); + break; + } + } + break; + + default: + Token.Append(aJSON[i]); + break; + } + ++i; + } + if (QuoteMode) + { + throw new Exception("JSON Parse: Quotation marks seems to be messed up."); + } + if (ctx == null) + return ParseElement(Token.ToString(), TokenIsQuoted); + return ctx; + } + + } + // End of JSONNode + + public partial class JSONArray : JSONNode + { + private List m_List = new List(); + private bool inline = false; + public override bool Inline + { + get { return inline; } + set { inline = value; } + } + + public override JSONNodeType Tag { get { return JSONNodeType.Array; } } + public override bool IsArray { get { return true; } } + public override Enumerator GetEnumerator() { return new Enumerator(m_List.GetEnumerator()); } + + public override JSONNode this[int aIndex] + { + get + { + if (aIndex < 0 || aIndex >= m_List.Count) + return new JSONLazyCreator(this); + return m_List[aIndex]; + } + set + { + if (value == null) + value = JSONNull.CreateOrGet(); + if (aIndex < 0 || aIndex >= m_List.Count) + m_List.Add(value); + else + m_List[aIndex] = value; + } + } + + public override JSONNode this[string aKey] + { + get { return new JSONLazyCreator(this); } + set + { + if (value == null) + value = JSONNull.CreateOrGet(); + m_List.Add(value); + } + } + + public override int Count + { + get { return m_List.Count; } + } + + public override void Add(string aKey, JSONNode aItem) + { + if (aItem == null) + aItem = JSONNull.CreateOrGet(); + m_List.Add(aItem); + } + + public override JSONNode Remove(int aIndex) + { + if (aIndex < 0 || aIndex >= m_List.Count) + return null; + JSONNode tmp = m_List[aIndex]; + m_List.RemoveAt(aIndex); + return tmp; + } + + public override JSONNode Remove(JSONNode aNode) + { + m_List.Remove(aNode); + return aNode; + } + + public override IEnumerable Children + { + get + { + foreach (JSONNode N in m_List) + yield return N; + } + } + + + internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) + { + aSB.Append('['); + int count = m_List.Count; + if (inline) + aMode = JSONTextMode.Compact; + for (int i = 0; i < count; i++) + { + if (i > 0) + aSB.Append(','); + if (aMode == JSONTextMode.Indent) + aSB.AppendLine(); + + if (aMode == JSONTextMode.Indent) + aSB.Append(' ', aIndent + aIndentInc); + m_List[i].WriteToStringBuilder(aSB, aIndent + aIndentInc, aIndentInc, aMode); + } + if (aMode == JSONTextMode.Indent) + aSB.AppendLine().Append(' ', aIndent); + aSB.Append(']'); + } + } + // End of JSONArray + + public partial class JSONObject : JSONNode + { + private Dictionary m_Dict = new Dictionary(); + + private bool inline = false; + public override bool Inline + { + get { return inline; } + set { inline = value; } + } + + public override JSONNodeType Tag { get { return JSONNodeType.Object; } } + public override bool IsObject { get { return true; } } + + public override Enumerator GetEnumerator() { return new Enumerator(m_Dict.GetEnumerator()); } + + + public override JSONNode this[string aKey] + { + get + { + if (m_Dict.ContainsKey(aKey)) + return m_Dict[aKey]; + else + return new JSONLazyCreator(this, aKey); + } + set + { + if (value == null) + value = JSONNull.CreateOrGet(); + if (m_Dict.ContainsKey(aKey)) + m_Dict[aKey] = value; + else + m_Dict.Add(aKey, value); + } + } + + public override JSONNode this[int aIndex] + { + get + { + if (aIndex < 0 || aIndex >= m_Dict.Count) + return null; + return m_Dict.ElementAt(aIndex).Value; + } + set + { + if (value == null) + value = JSONNull.CreateOrGet(); + if (aIndex < 0 || aIndex >= m_Dict.Count) + return; + string key = m_Dict.ElementAt(aIndex).Key; + m_Dict[key] = value; + } + } + + public override int Count + { + get { return m_Dict.Count; } + } + + public override void Add(string aKey, JSONNode aItem) + { + if (aItem == null) + aItem = JSONNull.CreateOrGet(); + + if (!string.IsNullOrEmpty(aKey)) + { + if (m_Dict.ContainsKey(aKey)) + m_Dict[aKey] = aItem; + else + m_Dict.Add(aKey, aItem); + } + else + m_Dict.Add(Guid.NewGuid().ToString(), aItem); + } + + public override JSONNode Remove(string aKey) + { + if (!m_Dict.ContainsKey(aKey)) + return null; + JSONNode tmp = m_Dict[aKey]; + m_Dict.Remove(aKey); + return tmp; + } + + public override JSONNode Remove(int aIndex) + { + if (aIndex < 0 || aIndex >= m_Dict.Count) + return null; + var item = m_Dict.ElementAt(aIndex); + m_Dict.Remove(item.Key); + return item.Value; + } + + public override JSONNode Remove(JSONNode aNode) + { + try + { + var item = m_Dict.Where(k => k.Value == aNode).First(); + m_Dict.Remove(item.Key); + return aNode; + } + catch + { + return null; + } + } + + public override IEnumerable Children + { + get + { + foreach (KeyValuePair N in m_Dict) + yield return N.Value; + } + } + + internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) + { + aSB.Append('{'); + bool first = true; + if (inline) + aMode = JSONTextMode.Compact; + foreach (var k in m_Dict) + { + if (!first) + aSB.Append(','); + first = false; + if (aMode == JSONTextMode.Indent) + aSB.AppendLine(); + if (aMode == JSONTextMode.Indent) + aSB.Append(' ', aIndent + aIndentInc); + aSB.Append('\"').Append(Escape(k.Key)).Append('\"'); + if (aMode == JSONTextMode.Compact) + aSB.Append(':'); + else + aSB.Append(" : "); + k.Value.WriteToStringBuilder(aSB, aIndent + aIndentInc, aIndentInc, aMode); + } + if (aMode == JSONTextMode.Indent) + aSB.AppendLine().Append(' ', aIndent); + aSB.Append('}'); + } + + } + // End of JSONObject + + public partial class JSONString : JSONNode + { + private string m_Data; + + public override JSONNodeType Tag { get { return JSONNodeType.String; } } + public override bool IsString { get { return true; } } + + public override Enumerator GetEnumerator() { return new Enumerator(); } + + + public override string Value + { + get { return m_Data; } + set + { + m_Data = value; + } + } + + public JSONString(string aData) + { + m_Data = aData; + } + + internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) + { + aSB.Append('\"').Append(Escape(m_Data)).Append('\"'); + } + public override bool Equals(object obj) + { + if (base.Equals(obj)) + return true; + string s = obj as string; + if (s != null) + return m_Data == s; + JSONString s2 = obj as JSONString; + if (s2 != null) + return m_Data == s2.m_Data; + return false; + } + public override int GetHashCode() + { + return m_Data.GetHashCode(); + } + } + // End of JSONString + + public partial class JSONNumber : JSONNode + { + private double m_Data; + + public override JSONNodeType Tag { get { return JSONNodeType.Number; } } + public override bool IsNumber { get { return true; } } + public override Enumerator GetEnumerator() { return new Enumerator(); } + + public override string Value + { + get { return m_Data.ToString(CultureInfo.InvariantCulture); } + set + { + double v; + if (double.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out v)) + m_Data = v; + } + } + + public override double AsDouble + { + get { return m_Data; } + set { m_Data = value; } + } + public override long AsLong + { + get { return (long)m_Data; } + set { m_Data = value; } + } + + public JSONNumber(double aData) + { + m_Data = aData; + } + + public JSONNumber(string aData) + { + Value = aData; + } + + internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) + { + aSB.Append(Value); + } + private static bool IsNumeric(object value) + { + return value is int || value is uint + || value is float || value is double + || value is decimal + || value is long || value is ulong + || value is short || value is ushort + || value is sbyte || value is byte; + } + public override bool Equals(object obj) + { + if (obj == null) + return false; + if (base.Equals(obj)) + return true; + JSONNumber s2 = obj as JSONNumber; + if (s2 != null) + return m_Data == s2.m_Data; + if (IsNumeric(obj)) + return Convert.ToDouble(obj) == m_Data; + return false; + } + public override int GetHashCode() + { + return m_Data.GetHashCode(); + } + } + // End of JSONNumber + + public partial class JSONBool : JSONNode + { + private bool m_Data; + + public override JSONNodeType Tag { get { return JSONNodeType.Boolean; } } + public override bool IsBoolean { get { return true; } } + public override Enumerator GetEnumerator() { return new Enumerator(); } + + public override string Value + { + get { return m_Data.ToString(); } + set + { + bool v; + if (bool.TryParse(value, out v)) + m_Data = v; + } + } + public override bool AsBool + { + get { return m_Data; } + set { m_Data = value; } + } + + public JSONBool(bool aData) + { + m_Data = aData; + } + + public JSONBool(string aData) + { + Value = aData; + } + + internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) + { + aSB.Append((m_Data) ? "true" : "false"); + } + public override bool Equals(object obj) + { + if (obj == null) + return false; + if (obj is bool) + return m_Data == (bool)obj; + return false; + } + public override int GetHashCode() + { + return m_Data.GetHashCode(); + } + } + // End of JSONBool + + public partial class JSONNull : JSONNode + { + static JSONNull m_StaticInstance = new JSONNull(); + public static bool reuseSameInstance = true; + public static JSONNull CreateOrGet() + { + if (reuseSameInstance) + return m_StaticInstance; + return new JSONNull(); + } + private JSONNull() { } + + public override JSONNodeType Tag { get { return JSONNodeType.NullValue; } } + public override bool IsNull { get { return true; } } + public override Enumerator GetEnumerator() { return new Enumerator(); } + + public override string Value + { + get { return "null"; } + set { } + } + public override bool AsBool + { + get { return false; } + set { } + } + + public override bool Equals(object obj) + { + if (object.ReferenceEquals(this, obj)) + return true; + return (obj is JSONNull); + } + public override int GetHashCode() + { + return 0; + } + + internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) + { + aSB.Append("null"); + } + } + // End of JSONNull + + internal partial class JSONLazyCreator : JSONNode + { + private JSONNode m_Node = null; + private string m_Key = null; + public override JSONNodeType Tag { get { return JSONNodeType.None; } } + public override Enumerator GetEnumerator() { return new Enumerator(); } + + public JSONLazyCreator(JSONNode aNode) + { + m_Node = aNode; + m_Key = null; + } + + public JSONLazyCreator(JSONNode aNode, string aKey) + { + m_Node = aNode; + m_Key = aKey; + } + + private T Set(T aVal) where T : JSONNode + { + if (m_Key == null) + m_Node.Add(aVal); + else + m_Node.Add(m_Key, aVal); + m_Node = null; // Be GC friendly. + return aVal; + } + + public override JSONNode this[int aIndex] + { + get { return new JSONLazyCreator(this); } + set { Set(new JSONArray()).Add(value); } + } + + public override JSONNode this[string aKey] + { + get { return new JSONLazyCreator(this, aKey); } + set { Set(new JSONObject()).Add(aKey, value); } + } + + public override void Add(JSONNode aItem) + { + Set(new JSONArray()).Add(aItem); + } + + public override void Add(string aKey, JSONNode aItem) + { + Set(new JSONObject()).Add(aKey, aItem); + } + + public static bool operator ==(JSONLazyCreator a, object b) + { + if (b == null) + return true; + return System.Object.ReferenceEquals(a, b); + } + + public static bool operator !=(JSONLazyCreator a, object b) + { + return !(a == b); + } + + public override bool Equals(object obj) + { + if (obj == null) + return true; + return System.Object.ReferenceEquals(this, obj); + } + + public override int GetHashCode() + { + return 0; + } + + public override int AsInt + { + get { Set(new JSONNumber(0)); return 0; } + set { Set(new JSONNumber(value)); } + } + + public override float AsFloat + { + get { Set(new JSONNumber(0.0f)); return 0.0f; } + set { Set(new JSONNumber(value)); } + } + + public override double AsDouble + { + get { Set(new JSONNumber(0.0)); return 0.0; } + set { Set(new JSONNumber(value)); } + } + + public override long AsLong + { + get + { + if (longAsString) + Set(new JSONString("0")); + else + Set(new JSONNumber(0.0)); + return 0L; + } + set + { + if (longAsString) + Set(new JSONString(value.ToString())); + else + Set(new JSONNumber(value)); + } + } + + public override bool AsBool + { + get { Set(new JSONBool(false)); return false; } + set { Set(new JSONBool(value)); } + } + + public override JSONArray AsArray + { + get { return Set(new JSONArray()); } + } + + public override JSONObject AsObject + { + get { return Set(new JSONObject()); } + } + internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) + { + aSB.Append("null"); + } + } + // End of JSONLazyCreator + + public static class JSON + { + public static JSONNode Parse(string aJSON) + { + return JSONNode.Parse(aJSON); + } + } +} diff --git a/Assets/Oculus/VR/ThirdParty/SimpleJSON.cs.meta b/Assets/Oculus/VR/ThirdParty/SimpleJSON.cs.meta new file mode 100644 index 0000000..042b0f4 --- /dev/null +++ b/Assets/Oculus/VR/ThirdParty/SimpleJSON.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0139b31452e91b94787e54aa18f7b7f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/ThirdParty/SimpleJSONUnity.cs b/Assets/Oculus/VR/ThirdParty/SimpleJSONUnity.cs new file mode 100644 index 0000000..c7aaa0f --- /dev/null +++ b/Assets/Oculus/VR/ThirdParty/SimpleJSONUnity.cs @@ -0,0 +1,370 @@ +#region License and information +/* * * * * + * + * Unity extension for the SimpleJSON framework. It does only work together with + * the SimpleJSON.cs + * It provides several helpers and conversion operators to serialize/deserialize + * common Unity types such as Vector2/3/4, Rect, RectOffset, Quaternion and + * Matrix4x4 as JSONObject or JSONArray. + * This extension will add 3 static settings to the JSONNode class: + * ( VectorContainerType, QuaternionContainerType, RectContainerType ) which + * control what node type should be used for serializing the given type. So a + * Vector3 as array would look like [12,32,24] and {"x":12, "y":32, "z":24} as + * object. + * + * + * The MIT License (MIT) + * + * Copyright (c) 2012-2017 Markus Göbel (Bunny83) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * * * * */ + +#endregion License and information + +using UnityEngine; + +// renaming the namespace to avoid conflict +namespace OVRSimpleJSON // SimpleJSON +{ + public enum JSONContainerType { Array, Object } + public partial class JSONNode + { + public static JSONContainerType VectorContainerType = JSONContainerType.Array; + public static JSONContainerType QuaternionContainerType = JSONContainerType.Array; + public static JSONContainerType RectContainerType = JSONContainerType.Array; + private static JSONNode GetContainer(JSONContainerType aType) + { + if (aType == JSONContainerType.Array) + return new JSONArray(); + return new JSONObject(); + } + + #region implicit conversion operators + public static implicit operator JSONNode(Vector2 aVec) + { + JSONNode n = GetContainer(VectorContainerType); + n.WriteVector2(aVec); + return n; + } + public static implicit operator JSONNode(Vector3 aVec) + { + JSONNode n = GetContainer(VectorContainerType); + n.WriteVector3(aVec); + return n; + } + public static implicit operator JSONNode(Vector4 aVec) + { + JSONNode n = GetContainer(VectorContainerType); + n.WriteVector4(aVec); + return n; + } + public static implicit operator JSONNode(Quaternion aRot) + { + JSONNode n = GetContainer(QuaternionContainerType); + n.WriteQuaternion(aRot); + return n; + } + public static implicit operator JSONNode(Rect aRect) + { + JSONNode n = GetContainer(RectContainerType); + n.WriteRect(aRect); + return n; + } + public static implicit operator JSONNode(RectOffset aRect) + { + JSONNode n = GetContainer(RectContainerType); + n.WriteRectOffset(aRect); + return n; + } + + public static implicit operator Vector2(JSONNode aNode) + { + return aNode.ReadVector2(); + } + public static implicit operator Vector3(JSONNode aNode) + { + return aNode.ReadVector3(); + } + public static implicit operator Vector4(JSONNode aNode) + { + return aNode.ReadVector4(); + } + public static implicit operator Quaternion(JSONNode aNode) + { + return aNode.ReadQuaternion(); + } + public static implicit operator Rect(JSONNode aNode) + { + return aNode.ReadRect(); + } + public static implicit operator RectOffset(JSONNode aNode) + { + return aNode.ReadRectOffset(); + } + #endregion implicit conversion operators + + #region Vector2 + public Vector2 ReadVector2(Vector2 aDefault) + { + if (IsObject) + return new Vector2(this["x"].AsFloat, this["y"].AsFloat); + if (IsArray) + return new Vector2(this[0].AsFloat, this[1].AsFloat); + return aDefault; + } + public Vector2 ReadVector2(string aXName, string aYName) + { + if (IsObject) + { + return new Vector2(this[aXName].AsFloat, this[aYName].AsFloat); + } + return Vector2.zero; + } + + public Vector2 ReadVector2() + { + return ReadVector2(Vector2.zero); + } + public JSONNode WriteVector2(Vector2 aVec, string aXName = "x", string aYName = "y") + { + if (IsObject) + { + Inline = true; + this[aXName].AsFloat = aVec.x; + this[aYName].AsFloat = aVec.y; + } + else if (IsArray) + { + Inline = true; + this[0].AsFloat = aVec.x; + this[1].AsFloat = aVec.y; + } + return this; + } + #endregion Vector2 + + #region Vector3 + public Vector3 ReadVector3(Vector3 aDefault) + { + if (IsObject) + return new Vector3(this["x"].AsFloat, this["y"].AsFloat, this["z"].AsFloat); + if (IsArray) + return new Vector3(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat); + return aDefault; + } + public Vector3 ReadVector3(string aXName, string aYName, string aZName) + { + if (IsObject) + return new Vector3(this[aXName].AsFloat, this[aYName].AsFloat, this[aZName].AsFloat); + return Vector3.zero; + } + public Vector3 ReadVector3() + { + return ReadVector3(Vector3.zero); + } + public JSONNode WriteVector3(Vector3 aVec, string aXName = "x", string aYName = "y", string aZName = "z") + { + if (IsObject) + { + Inline = true; + this[aXName].AsFloat = aVec.x; + this[aYName].AsFloat = aVec.y; + this[aZName].AsFloat = aVec.z; + } + else if (IsArray) + { + Inline = true; + this[0].AsFloat = aVec.x; + this[1].AsFloat = aVec.y; + this[2].AsFloat = aVec.z; + } + return this; + } + #endregion Vector3 + + #region Vector4 + public Vector4 ReadVector4(Vector4 aDefault) + { + if (IsObject) + return new Vector4(this["x"].AsFloat, this["y"].AsFloat, this["z"].AsFloat, this["w"].AsFloat); + if (IsArray) + return new Vector4(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat, this[3].AsFloat); + return aDefault; + } + public Vector4 ReadVector4() + { + return ReadVector4(Vector4.zero); + } + public JSONNode WriteVector4(Vector4 aVec) + { + if (IsObject) + { + Inline = true; + this["x"].AsFloat = aVec.x; + this["y"].AsFloat = aVec.y; + this["z"].AsFloat = aVec.z; + this["w"].AsFloat = aVec.w; + } + else if (IsArray) + { + Inline = true; + this[0].AsFloat = aVec.x; + this[1].AsFloat = aVec.y; + this[2].AsFloat = aVec.z; + this[3].AsFloat = aVec.w; + } + return this; + } + #endregion Vector4 + + #region Quaternion + public Quaternion ReadQuaternion(Quaternion aDefault) + { + if (IsObject) + return new Quaternion(this["x"].AsFloat, this["y"].AsFloat, this["z"].AsFloat, this["w"].AsFloat); + if (IsArray) + return new Quaternion(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat, this[3].AsFloat); + return aDefault; + } + public Quaternion ReadQuaternion() + { + return ReadQuaternion(Quaternion.identity); + } + public JSONNode WriteQuaternion(Quaternion aRot) + { + if (IsObject) + { + Inline = true; + this["x"].AsFloat = aRot.x; + this["y"].AsFloat = aRot.y; + this["z"].AsFloat = aRot.z; + this["w"].AsFloat = aRot.w; + } + else if (IsArray) + { + Inline = true; + this[0].AsFloat = aRot.x; + this[1].AsFloat = aRot.y; + this[2].AsFloat = aRot.z; + this[3].AsFloat = aRot.w; + } + return this; + } + #endregion Quaternion + + #region Rect + public Rect ReadRect(Rect aDefault) + { + if (IsObject) + return new Rect(this["x"].AsFloat, this["y"].AsFloat, this["width"].AsFloat, this["height"].AsFloat); + if (IsArray) + return new Rect(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat, this[3].AsFloat); + return aDefault; + } + public Rect ReadRect() + { + return ReadRect(new Rect()); + } + public JSONNode WriteRect(Rect aRect) + { + if (IsObject) + { + Inline = true; + this["x"].AsFloat = aRect.x; + this["y"].AsFloat = aRect.y; + this["width"].AsFloat = aRect.width; + this["height"].AsFloat = aRect.height; + } + else if (IsArray) + { + Inline = true; + this[0].AsFloat = aRect.x; + this[1].AsFloat = aRect.y; + this[2].AsFloat = aRect.width; + this[3].AsFloat = aRect.height; + } + return this; + } + #endregion Rect + + #region RectOffset + public RectOffset ReadRectOffset(RectOffset aDefault) + { + if (this is JSONObject) + return new RectOffset(this["left"].AsInt, this["right"].AsInt, this["top"].AsInt, this["bottom"].AsInt); + if (this is JSONArray) + return new RectOffset(this[0].AsInt, this[1].AsInt, this[2].AsInt, this[3].AsInt); + return aDefault; + } + public RectOffset ReadRectOffset() + { + return ReadRectOffset(new RectOffset()); + } + public JSONNode WriteRectOffset(RectOffset aRect) + { + if (IsObject) + { + Inline = true; + this["left"].AsInt = aRect.left; + this["right"].AsInt = aRect.right; + this["top"].AsInt = aRect.top; + this["bottom"].AsInt = aRect.bottom; + } + else if (IsArray) + { + Inline = true; + this[0].AsInt = aRect.left; + this[1].AsInt = aRect.right; + this[2].AsInt = aRect.top; + this[3].AsInt = aRect.bottom; + } + return this; + } + #endregion RectOffset + + #region Matrix4x4 + public Matrix4x4 ReadMatrix() + { + Matrix4x4 result = Matrix4x4.identity; + if (IsArray) + { + for (int i = 0; i < 16; i++) + { + result[i] = this[i].AsFloat; + } + } + return result; + } + public JSONNode WriteMatrix(Matrix4x4 aMatrix) + { + if (IsArray) + { + Inline = true; + for (int i = 0; i < 16; i++) + { + this[i].AsFloat = aMatrix[i]; + } + } + return this; + } + #endregion Matrix4x4 + } +} diff --git a/Assets/Oculus/VR/ThirdParty/SimpleJSONUnity.cs.meta b/Assets/Oculus/VR/ThirdParty/SimpleJSONUnity.cs.meta new file mode 100644 index 0000000..09e430a --- /dev/null +++ b/Assets/Oculus/VR/ThirdParty/SimpleJSONUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d45c5e402883c0048a1a69b7a1ca8901 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Oculus/VR/ThirdParty/openvr_api.cs b/Assets/Oculus/VR/ThirdParty/openvr_api.cs new file mode 100644 index 0000000..51bec27 --- /dev/null +++ b/Assets/Oculus/VR/ThirdParty/openvr_api.cs @@ -0,0 +1,6032 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This file contains C#/managed code bindings for the OpenVR interfaces +// This file is auto-generated, do not edit it. +// +//============================================================================= + +using System; +using System.Runtime.InteropServices; + +namespace OVR.OpenVR +{ + +[StructLayout(LayoutKind.Sequential)] +public struct IVRSystem +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetRecommendedRenderTargetSize(ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRecommendedRenderTargetSize GetRecommendedRenderTargetSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix44_t _GetProjectionMatrix(EVREye eEye, float fNearZ, float fFarZ); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetProjectionMatrix GetProjectionMatrix; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetProjectionRaw(EVREye eEye, ref float pfLeft, ref float pfRight, ref float pfTop, ref float pfBottom); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetProjectionRaw GetProjectionRaw; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ComputeDistortion(EVREye eEye, float fU, float fV, ref DistortionCoordinates_t pDistortionCoordinates); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ComputeDistortion ComputeDistortion; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetEyeToHeadTransform(EVREye eEye); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeToHeadTransform GetEyeToHeadTransform; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetTimeSinceLastVsync(ref float pfSecondsSinceLastVsync, ref ulong pulFrameCounter); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTimeSinceLastVsync GetTimeSinceLastVsync; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate int _GetD3D9AdapterIndex(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetD3D9AdapterIndex GetD3D9AdapterIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetDXGIOutputInfo(ref int pnAdapterIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDXGIOutputInfo GetDXGIOutputInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetOutputDevice(ref ulong pnDevice, ETextureType textureType, IntPtr pInstance); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOutputDevice GetOutputDevice; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsDisplayOnDesktop(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsDisplayOnDesktop IsDisplayOnDesktop; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _SetDisplayVisibility(bool bIsVisibleOnDesktop); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetDisplayVisibility SetDisplayVisibility; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, [In, Out] TrackedDevicePose_t[] pTrackedDevicePoseArray, uint unTrackedDevicePoseArrayCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDeviceToAbsoluteTrackingPose GetDeviceToAbsoluteTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ResetSeatedZeroPose(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ResetSeatedZeroPose ResetSeatedZeroPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetSeatedZeroPoseToStandingAbsoluteTrackingPose(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSeatedZeroPoseToStandingAbsoluteTrackingPose GetSeatedZeroPoseToStandingAbsoluteTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetRawZeroPoseToStandingAbsoluteTrackingPose(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRawZeroPoseToStandingAbsoluteTrackingPose GetRawZeroPoseToStandingAbsoluteTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetSortedTrackedDeviceIndicesOfClass(ETrackedDeviceClass eTrackedDeviceClass, [In, Out] uint[] punTrackedDeviceIndexArray, uint unTrackedDeviceIndexArrayCount, uint unRelativeToTrackedDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSortedTrackedDeviceIndicesOfClass GetSortedTrackedDeviceIndicesOfClass; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EDeviceActivityLevel _GetTrackedDeviceActivityLevel(uint unDeviceId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackedDeviceActivityLevel GetTrackedDeviceActivityLevel; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ApplyTransform(ref TrackedDevicePose_t pOutputPose, ref TrackedDevicePose_t pTrackedDevicePose, ref HmdMatrix34_t pTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ApplyTransform ApplyTransform; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole unDeviceType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackedDeviceIndexForControllerRole GetTrackedDeviceIndexForControllerRole; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ETrackedControllerRole _GetControllerRoleForTrackedDeviceIndex(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerRoleForTrackedDeviceIndex GetControllerRoleForTrackedDeviceIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ETrackedDeviceClass _GetTrackedDeviceClass(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackedDeviceClass GetTrackedDeviceClass; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsTrackedDeviceConnected(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsTrackedDeviceConnected IsTrackedDeviceConnected; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetBoolTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetBoolTrackedDeviceProperty GetBoolTrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetFloatTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFloatTrackedDeviceProperty GetFloatTrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate int _GetInt32TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetInt32TrackedDeviceProperty GetInt32TrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetUint64TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetUint64TrackedDeviceProperty GetUint64TrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetMatrix34TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMatrix34TrackedDeviceProperty GetMatrix34TrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetArrayTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, uint propType, IntPtr pBuffer, uint unBufferSize, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetArrayTrackedDeviceProperty GetArrayTrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetStringTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, System.Text.StringBuilder pchValue, uint unBufferSize, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetStringTrackedDeviceProperty GetStringTrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetPropErrorNameFromEnum(ETrackedPropertyError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPropErrorNameFromEnum GetPropErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextEvent(ref VREvent_t pEvent, uint uncbVREvent); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PollNextEvent PollNextEvent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextEventWithPose(ETrackingUniverseOrigin eOrigin, ref VREvent_t pEvent, uint uncbVREvent, ref TrackedDevicePose_t pTrackedDevicePose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PollNextEventWithPose PollNextEventWithPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetEventTypeNameFromEnum(EVREventType eType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEventTypeNameFromEnum GetEventTypeNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HiddenAreaMesh_t _GetHiddenAreaMesh(EVREye eEye, EHiddenAreaMeshType type); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetHiddenAreaMesh GetHiddenAreaMesh; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerState(uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, uint unControllerStateSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerState GetControllerState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin, uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, uint unControllerStateSize, ref TrackedDevicePose_t pTrackedDevicePose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerStateWithPose GetControllerStateWithPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _TriggerHapticPulse(uint unControllerDeviceIndex, uint unAxisId, ushort usDurationMicroSec); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _TriggerHapticPulse TriggerHapticPulse; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetButtonIdNameFromEnum(EVRButtonId eButtonId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetButtonIdNameFromEnum GetButtonIdNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerAxisTypeNameFromEnum GetControllerAxisTypeNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsInputAvailable(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsInputAvailable IsInputAvailable; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsSteamVRDrawingControllers(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsSteamVRDrawingControllers IsSteamVRDrawingControllers; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ShouldApplicationPause(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShouldApplicationPause ShouldApplicationPause; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ShouldApplicationReduceRenderingWork(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShouldApplicationReduceRenderingWork ShouldApplicationReduceRenderingWork; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _DriverDebugRequest(uint unDeviceIndex, string pchRequest, System.Text.StringBuilder pchResponseBuffer, uint unResponseBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _DriverDebugRequest DriverDebugRequest; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRFirmwareError _PerformFirmwareUpdate(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PerformFirmwareUpdate PerformFirmwareUpdate; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _AcknowledgeQuit_Exiting(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AcknowledgeQuit_Exiting AcknowledgeQuit_Exiting; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _AcknowledgeQuit_UserPrompt(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AcknowledgeQuit_UserPrompt AcknowledgeQuit_UserPrompt; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRExtendedDisplay +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetWindowBounds(ref int pnX, ref int pnY, ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWindowBounds GetWindowBounds; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetEyeOutputViewport(EVREye eEye, ref uint pnX, ref uint pnY, ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeOutputViewport GetEyeOutputViewport; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetDXGIOutputInfo(ref int pnAdapterIndex, ref int pnAdapterOutputIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDXGIOutputInfo GetDXGIOutputInfo; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRTrackedCamera +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraErrorNameFromEnum GetCameraErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _HasCamera(uint nDeviceIndex, ref bool pHasCamera); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HasCamera HasCamera; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraFrameSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref uint pnWidth, ref uint pnHeight, ref uint pnFrameBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraFrameSize GetCameraFrameSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraIntrinsics(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref HmdVector2_t pFocalLength, ref HmdVector2_t pCenter); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraIntrinsics GetCameraIntrinsics; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraProjection(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, ref HmdMatrix44_t pProjection); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraProjection GetCameraProjection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _AcquireVideoStreamingService(uint nDeviceIndex, ref ulong pHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AcquireVideoStreamingService AcquireVideoStreamingService; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _ReleaseVideoStreamingService(ulong hTrackedCamera); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseVideoStreamingService ReleaseVideoStreamingService; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamFrameBuffer(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pFrameBuffer, uint nFrameBufferSize, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamFrameBuffer GetVideoStreamFrameBuffer; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref VRTextureBounds_t pTextureBounds, ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureSize GetVideoStreamTextureSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureD3D11(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureD3D11 GetVideoStreamTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureGL(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, ref uint pglTextureId, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureGL GetVideoStreamTextureGL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _ReleaseVideoStreamTextureGL(ulong hTrackedCamera, uint glTextureId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseVideoStreamTextureGL ReleaseVideoStreamTextureGL; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRApplications +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _AddApplicationManifest(string pchApplicationManifestFullPath, bool bTemporary); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AddApplicationManifest AddApplicationManifest; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _RemoveApplicationManifest(string pchApplicationManifestFullPath); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveApplicationManifest RemoveApplicationManifest; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsApplicationInstalled(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsApplicationInstalled IsApplicationInstalled; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationCount(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationCount GetApplicationCount; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _GetApplicationKeyByIndex(uint unApplicationIndex, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationKeyByIndex GetApplicationKeyByIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _GetApplicationKeyByProcessId(uint unProcessId, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationKeyByProcessId GetApplicationKeyByProcessId; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchApplication(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchApplication LaunchApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchTemplateApplication(string pchTemplateAppKey, string pchNewAppKey, [In, Out] AppOverrideKeys_t[] pKeys, uint unKeys); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchTemplateApplication LaunchTemplateApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchApplicationFromMimeType(string pchMimeType, string pchArgs); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchApplicationFromMimeType LaunchApplicationFromMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchDashboardOverlay(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchDashboardOverlay LaunchDashboardOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _CancelApplicationLaunch(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CancelApplicationLaunch CancelApplicationLaunch; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _IdentifyApplication(uint unProcessId, string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IdentifyApplication IdentifyApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationProcessId(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationProcessId GetApplicationProcessId; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetApplicationsErrorNameFromEnum(EVRApplicationError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationsErrorNameFromEnum GetApplicationsErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationPropertyString(string pchAppKey, EVRApplicationProperty eProperty, System.Text.StringBuilder pchPropertyValueBuffer, uint unPropertyValueBufferLen, ref EVRApplicationError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationPropertyString GetApplicationPropertyString; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetApplicationPropertyBool(string pchAppKey, EVRApplicationProperty eProperty, ref EVRApplicationError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationPropertyBool GetApplicationPropertyBool; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetApplicationPropertyUint64(string pchAppKey, EVRApplicationProperty eProperty, ref EVRApplicationError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationPropertyUint64 GetApplicationPropertyUint64; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _SetApplicationAutoLaunch(string pchAppKey, bool bAutoLaunch); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetApplicationAutoLaunch SetApplicationAutoLaunch; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetApplicationAutoLaunch(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationAutoLaunch GetApplicationAutoLaunch; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _SetDefaultApplicationForMimeType(string pchAppKey, string pchMimeType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetDefaultApplicationForMimeType SetDefaultApplicationForMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetDefaultApplicationForMimeType(string pchMimeType, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDefaultApplicationForMimeType GetDefaultApplicationForMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetApplicationSupportedMimeTypes(string pchAppKey, System.Text.StringBuilder pchMimeTypesBuffer, uint unMimeTypesBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationSupportedMimeTypes GetApplicationSupportedMimeTypes; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationsThatSupportMimeType(string pchMimeType, System.Text.StringBuilder pchAppKeysThatSupportBuffer, uint unAppKeysThatSupportBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationsThatSupportMimeType GetApplicationsThatSupportMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationLaunchArguments(uint unHandle, System.Text.StringBuilder pchArgs, uint unArgs); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationLaunchArguments GetApplicationLaunchArguments; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _GetStartingApplication(System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetStartingApplication GetStartingApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationTransitionState _GetTransitionState(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTransitionState GetTransitionState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _PerformApplicationPrelaunchCheck(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PerformApplicationPrelaunchCheck PerformApplicationPrelaunchCheck; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetApplicationsTransitionStateNameFromEnum(EVRApplicationTransitionState state); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationsTransitionStateNameFromEnum GetApplicationsTransitionStateNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsQuitUserPromptRequested(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsQuitUserPromptRequested IsQuitUserPromptRequested; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchInternalProcess(string pchBinaryPath, string pchArguments, string pchWorkingDirectory); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchInternalProcess LaunchInternalProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetCurrentSceneProcessId(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentSceneProcessId GetCurrentSceneProcessId; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRChaperone +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ChaperoneCalibrationState _GetCalibrationState(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCalibrationState GetCalibrationState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetPlayAreaSize(ref float pSizeX, ref float pSizeZ); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPlayAreaSize GetPlayAreaSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetPlayAreaRect(ref HmdQuad_t rect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPlayAreaRect GetPlayAreaRect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ReloadInfo(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReloadInfo ReloadInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetSceneColor(HmdColor_t color); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetSceneColor SetSceneColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetBoundsColor(ref HmdColor_t pOutputColorArray, int nNumOutputColors, float flCollisionBoundsFadeDistance, ref HmdColor_t pOutputCameraColor); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetBoundsColor GetBoundsColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _AreBoundsVisible(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AreBoundsVisible AreBoundsVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ForceBoundsVisible(bool bForce); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ForceBoundsVisible ForceBoundsVisible; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRChaperoneSetup +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _CommitWorkingCopy(EChaperoneConfigFile configFile); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CommitWorkingCopy CommitWorkingCopy; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RevertWorkingCopy(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RevertWorkingCopy RevertWorkingCopy; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingPlayAreaSize(ref float pSizeX, ref float pSizeZ); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingPlayAreaSize GetWorkingPlayAreaSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingPlayAreaRect(ref HmdQuad_t rect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingPlayAreaRect GetWorkingPlayAreaRect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingCollisionBoundsInfo GetWorkingCollisionBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLiveCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLiveCollisionBoundsInfo GetLiveCollisionBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingSeatedZeroPoseToRawTrackingPose GetWorkingSeatedZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatStandingZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingStandingZeroPoseToRawTrackingPose GetWorkingStandingZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingPlayAreaSize(float sizeX, float sizeZ); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingPlayAreaSize SetWorkingPlayAreaSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, uint unQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingCollisionBoundsInfo SetWorkingCollisionBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatSeatedZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingSeatedZeroPoseToRawTrackingPose SetWorkingSeatedZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatStandingZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingStandingZeroPoseToRawTrackingPose SetWorkingStandingZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ReloadFromDisk(EChaperoneConfigFile configFile); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReloadFromDisk ReloadFromDisk; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLiveSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLiveSeatedZeroPoseToRawTrackingPose GetLiveSeatedZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingCollisionBoundsTagsInfo([In, Out] byte[] pTagsBuffer, uint unTagCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingCollisionBoundsTagsInfo SetWorkingCollisionBoundsTagsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLiveCollisionBoundsTagsInfo([In, Out] byte[] pTagsBuffer, ref uint punTagCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLiveCollisionBoundsTagsInfo GetLiveCollisionBoundsTagsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _SetWorkingPhysicalBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, uint unQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingPhysicalBoundsInfo SetWorkingPhysicalBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLivePhysicalBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLivePhysicalBoundsInfo GetLivePhysicalBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ExportLiveToBuffer(System.Text.StringBuilder pBuffer, ref uint pnBufferLength); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ExportLiveToBuffer ExportLiveToBuffer; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ImportFromBufferToWorking(string pBuffer, uint nImportFlags); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ImportFromBufferToWorking ImportFromBufferToWorking; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRCompositor +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetTrackingSpace(ETrackingUniverseOrigin eOrigin); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetTrackingSpace SetTrackingSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ETrackingUniverseOrigin _GetTrackingSpace(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackingSpace GetTrackingSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _WaitGetPoses([In, Out] TrackedDevicePose_t[] pRenderPoseArray, uint unRenderPoseArrayCount, [In, Out] TrackedDevicePose_t[] pGamePoseArray, uint unGamePoseArrayCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _WaitGetPoses WaitGetPoses; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetLastPoses([In, Out] TrackedDevicePose_t[] pRenderPoseArray, uint unRenderPoseArrayCount, [In, Out] TrackedDevicePose_t[] pGamePoseArray, uint unGamePoseArrayCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLastPoses GetLastPoses; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetLastPoseForTrackedDeviceIndex(uint unDeviceIndex, ref TrackedDevicePose_t pOutputPose, ref TrackedDevicePose_t pOutputGamePose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLastPoseForTrackedDeviceIndex GetLastPoseForTrackedDeviceIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _Submit(EVREye eEye, ref Texture_t pTexture, ref VRTextureBounds_t pBounds, EVRSubmitFlags nSubmitFlags); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Submit Submit; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ClearLastSubmittedFrame(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ClearLastSubmittedFrame ClearLastSubmittedFrame; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _PostPresentHandoff(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PostPresentHandoff PostPresentHandoff; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetFrameTiming(ref Compositor_FrameTiming pTiming, uint unFramesAgo); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFrameTiming GetFrameTiming; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetFrameTimings(ref Compositor_FrameTiming pTiming, uint nFrames); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFrameTimings GetFrameTimings; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetFrameTimeRemaining(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFrameTimeRemaining GetFrameTimeRemaining; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetCumulativeStats(ref Compositor_CumulativeStats pStats, uint nStatsSizeInBytes); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCumulativeStats GetCumulativeStats; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FadeToColor(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FadeToColor FadeToColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdColor_t _GetCurrentFadeColor(bool bBackground); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentFadeColor GetCurrentFadeColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FadeGrid(float fSeconds, bool bFadeIn); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FadeGrid FadeGrid; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetCurrentGridAlpha(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentGridAlpha GetCurrentGridAlpha; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _SetSkyboxOverride([In, Out] Texture_t[] pTextures, uint unTextureCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetSkyboxOverride SetSkyboxOverride; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ClearSkyboxOverride(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ClearSkyboxOverride ClearSkyboxOverride; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorBringToFront(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorBringToFront CompositorBringToFront; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorGoToBack(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorGoToBack CompositorGoToBack; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorQuit(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorQuit CompositorQuit; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsFullscreen(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsFullscreen IsFullscreen; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetCurrentSceneFocusProcess(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentSceneFocusProcess GetCurrentSceneFocusProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetLastFrameRenderer(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLastFrameRenderer GetLastFrameRenderer; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _CanRenderScene(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CanRenderScene CanRenderScene; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ShowMirrorWindow(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowMirrorWindow ShowMirrorWindow; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _HideMirrorWindow(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HideMirrorWindow HideMirrorWindow; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsMirrorWindowVisible(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsMirrorWindowVisible IsMirrorWindowVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorDumpImages(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorDumpImages CompositorDumpImages; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ShouldAppRenderWithLowResources(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShouldAppRenderWithLowResources ShouldAppRenderWithLowResources; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ForceInterleavedReprojectionOn(bool bOverride); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ForceInterleavedReprojectionOn ForceInterleavedReprojectionOn; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ForceReconnectProcess(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ForceReconnectProcess ForceReconnectProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SuspendRendering(bool bSuspend); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SuspendRendering SuspendRendering; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetMirrorTextureD3D11(EVREye eEye, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMirrorTextureD3D11 GetMirrorTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ReleaseMirrorTextureD3D11(IntPtr pD3D11ShaderResourceView); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseMirrorTextureD3D11 ReleaseMirrorTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetMirrorTextureGL(EVREye eEye, ref uint pglTextureId, IntPtr pglSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMirrorTextureGL GetMirrorTextureGL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ReleaseSharedGLTexture(uint glTextureId, IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseSharedGLTexture ReleaseSharedGLTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LockGLSharedTextureForAccess LockGLSharedTextureForAccess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _UnlockGLSharedTextureForAccess UnlockGLSharedTextureForAccess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetVulkanInstanceExtensionsRequired(System.Text.StringBuilder pchValue, uint unBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVulkanInstanceExtensionsRequired GetVulkanInstanceExtensionsRequired; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetVulkanDeviceExtensionsRequired(IntPtr pPhysicalDevice, System.Text.StringBuilder pchValue, uint unBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVulkanDeviceExtensionsRequired GetVulkanDeviceExtensionsRequired; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetExplicitTimingMode(EVRCompositorTimingMode eTimingMode); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetExplicitTimingMode SetExplicitTimingMode; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _SubmitExplicitTimingData(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SubmitExplicitTimingData SubmitExplicitTimingData; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVROverlay +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _FindOverlay(string pchOverlayKey, ref ulong pOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FindOverlay FindOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _CreateOverlay(string pchOverlayKey, string pchOverlayName, ref ulong pOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateOverlay CreateOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _DestroyOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _DestroyOverlay DestroyOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetHighQualityOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetHighQualityOverlay SetHighQualityOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetHighQualityOverlay(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetHighQualityOverlay GetHighQualityOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetOverlayKey(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref EVROverlayError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayKey GetOverlayKey; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetOverlayName(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref EVROverlayError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayName GetOverlayName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayName(ulong ulOverlayHandle, string pchName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayName SetOverlayName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayImageData(ulong ulOverlayHandle, IntPtr pvBuffer, uint unBufferSize, ref uint punWidth, ref uint punHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayImageData GetOverlayImageData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetOverlayErrorNameFromEnum(EVROverlayError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayErrorNameFromEnum GetOverlayErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayRenderingPid(ulong ulOverlayHandle, uint unPID); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayRenderingPid SetOverlayRenderingPid; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetOverlayRenderingPid(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayRenderingPid GetOverlayRenderingPid; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayFlag(ulong ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayFlag SetOverlayFlag; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayFlag(ulong ulOverlayHandle, VROverlayFlags eOverlayFlag, ref bool pbEnabled); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayFlag GetOverlayFlag; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayColor(ulong ulOverlayHandle, float fRed, float fGreen, float fBlue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayColor SetOverlayColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayColor(ulong ulOverlayHandle, ref float pfRed, ref float pfGreen, ref float pfBlue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayColor GetOverlayColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayAlpha(ulong ulOverlayHandle, float fAlpha); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayAlpha SetOverlayAlpha; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayAlpha(ulong ulOverlayHandle, ref float pfAlpha); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayAlpha GetOverlayAlpha; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTexelAspect(ulong ulOverlayHandle, float fTexelAspect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTexelAspect SetOverlayTexelAspect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTexelAspect(ulong ulOverlayHandle, ref float pfTexelAspect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTexelAspect GetOverlayTexelAspect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlaySortOrder(ulong ulOverlayHandle, uint unSortOrder); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlaySortOrder SetOverlaySortOrder; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlaySortOrder(ulong ulOverlayHandle, ref uint punSortOrder); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlaySortOrder GetOverlaySortOrder; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayWidthInMeters(ulong ulOverlayHandle, float fWidthInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayWidthInMeters SetOverlayWidthInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayWidthInMeters(ulong ulOverlayHandle, ref float pfWidthInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayWidthInMeters GetOverlayWidthInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayAutoCurveDistanceRangeInMeters SetOverlayAutoCurveDistanceRangeInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle, ref float pfMinDistanceInMeters, ref float pfMaxDistanceInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayAutoCurveDistanceRangeInMeters GetOverlayAutoCurveDistanceRangeInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTextureColorSpace(ulong ulOverlayHandle, EColorSpace eTextureColorSpace); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTextureColorSpace SetOverlayTextureColorSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTextureColorSpace(ulong ulOverlayHandle, ref EColorSpace peTextureColorSpace); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTextureColorSpace GetOverlayTextureColorSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTextureBounds(ulong ulOverlayHandle, ref VRTextureBounds_t pOverlayTextureBounds); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTextureBounds SetOverlayTextureBounds; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTextureBounds(ulong ulOverlayHandle, ref VRTextureBounds_t pOverlayTextureBounds); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTextureBounds GetOverlayTextureBounds; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetOverlayRenderModel(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref HmdColor_t pColor, ref EVROverlayError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayRenderModel GetOverlayRenderModel; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayRenderModel(ulong ulOverlayHandle, string pchRenderModel, ref HmdColor_t pColor); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayRenderModel SetOverlayRenderModel; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformType(ulong ulOverlayHandle, ref VROverlayTransformType peTransformType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformType GetOverlayTransformType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformAbsolute(ulong ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformAbsolute SetOverlayTransformAbsolute; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformAbsolute(ulong ulOverlayHandle, ref ETrackingUniverseOrigin peTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformAbsolute GetOverlayTransformAbsolute; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle, uint unTrackedDevice, ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformTrackedDeviceRelative SetOverlayTransformTrackedDeviceRelative; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle, ref uint punTrackedDevice, ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformTrackedDeviceRelative GetOverlayTransformTrackedDeviceRelative; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, uint unDeviceIndex, string pchComponentName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformTrackedDeviceComponent SetOverlayTransformTrackedDeviceComponent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, ref uint punDeviceIndex, System.Text.StringBuilder pchComponentName, uint unComponentNameSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformTrackedDeviceComponent GetOverlayTransformTrackedDeviceComponent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformOverlayRelative(ulong ulOverlayHandle, ref ulong ulOverlayHandleParent, ref HmdMatrix34_t pmatParentOverlayToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformOverlayRelative GetOverlayTransformOverlayRelative; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformOverlayRelative(ulong ulOverlayHandle, ulong ulOverlayHandleParent, ref HmdMatrix34_t pmatParentOverlayToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformOverlayRelative SetOverlayTransformOverlayRelative; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ShowOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowOverlay ShowOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _HideOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HideOverlay HideOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsOverlayVisible(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsOverlayVisible IsOverlayVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetTransformForOverlayCoordinates(ulong ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, HmdVector2_t coordinatesInOverlay, ref HmdMatrix34_t pmatTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTransformForOverlayCoordinates GetTransformForOverlayCoordinates; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextOverlayEvent(ulong ulOverlayHandle, ref VREvent_t pEvent, uint uncbVREvent); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PollNextOverlayEvent PollNextOverlayEvent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayInputMethod(ulong ulOverlayHandle, ref VROverlayInputMethod peInputMethod); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayInputMethod GetOverlayInputMethod; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayInputMethod(ulong ulOverlayHandle, VROverlayInputMethod eInputMethod); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayInputMethod SetOverlayInputMethod; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayMouseScale(ulong ulOverlayHandle, ref HmdVector2_t pvecMouseScale); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayMouseScale GetOverlayMouseScale; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayMouseScale(ulong ulOverlayHandle, ref HmdVector2_t pvecMouseScale); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayMouseScale SetOverlayMouseScale; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ComputeOverlayIntersection(ulong ulOverlayHandle, ref VROverlayIntersectionParams_t pParams, ref VROverlayIntersectionResults_t pResults); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ComputeOverlayIntersection ComputeOverlayIntersection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsHoverTargetOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsHoverTargetOverlay IsHoverTargetOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetGamepadFocusOverlay(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetGamepadFocusOverlay GetGamepadFocusOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetGamepadFocusOverlay(ulong ulNewFocusOverlay); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetGamepadFocusOverlay SetGamepadFocusOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayNeighbor(EOverlayDirection eDirection, ulong ulFrom, ulong ulTo); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayNeighbor SetOverlayNeighbor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _MoveGamepadFocusToNeighbor(EOverlayDirection eDirection, ulong ulFrom); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _MoveGamepadFocusToNeighbor MoveGamepadFocusToNeighbor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayDualAnalogTransform(ulong ulOverlay, EDualAnalogWhich eWhich, IntPtr vCenter, float fRadius); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayDualAnalogTransform SetOverlayDualAnalogTransform; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayDualAnalogTransform(ulong ulOverlay, EDualAnalogWhich eWhich, ref HmdVector2_t pvCenter, ref float pfRadius); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayDualAnalogTransform GetOverlayDualAnalogTransform; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTexture(ulong ulOverlayHandle, ref Texture_t pTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTexture SetOverlayTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ClearOverlayTexture(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ClearOverlayTexture ClearOverlayTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayRaw(ulong ulOverlayHandle, IntPtr pvBuffer, uint unWidth, uint unHeight, uint unDepth); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayRaw SetOverlayRaw; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayFromFile(ulong ulOverlayHandle, string pchFilePath); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayFromFile SetOverlayFromFile; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTexture(ulong ulOverlayHandle, ref IntPtr pNativeTextureHandle, IntPtr pNativeTextureRef, ref uint pWidth, ref uint pHeight, ref uint pNativeFormat, ref ETextureType pAPIType, ref EColorSpace pColorSpace, ref VRTextureBounds_t pTextureBounds); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTexture GetOverlayTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ReleaseNativeOverlayHandle(ulong ulOverlayHandle, IntPtr pNativeTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseNativeOverlayHandle ReleaseNativeOverlayHandle; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTextureSize(ulong ulOverlayHandle, ref uint pWidth, ref uint pHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTextureSize GetOverlayTextureSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _CreateDashboardOverlay(string pchOverlayKey, string pchOverlayFriendlyName, ref ulong pMainHandle, ref ulong pThumbnailHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateDashboardOverlay CreateDashboardOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsDashboardVisible(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsDashboardVisible IsDashboardVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsActiveDashboardOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsActiveDashboardOverlay IsActiveDashboardOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetDashboardOverlaySceneProcess(ulong ulOverlayHandle, uint unProcessId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetDashboardOverlaySceneProcess SetDashboardOverlaySceneProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetDashboardOverlaySceneProcess(ulong ulOverlayHandle, ref uint punProcessId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDashboardOverlaySceneProcess GetDashboardOverlaySceneProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ShowDashboard(string pchOverlayToShow); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowDashboard ShowDashboard; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetPrimaryDashboardDevice(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPrimaryDashboardDevice GetPrimaryDashboardDevice; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ShowKeyboard(int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText, bool bUseMinimalMode, ulong uUserValue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowKeyboard ShowKeyboard; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ShowKeyboardForOverlay(ulong ulOverlayHandle, int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText, bool bUseMinimalMode, ulong uUserValue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowKeyboardForOverlay ShowKeyboardForOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetKeyboardText(System.Text.StringBuilder pchText, uint cchText); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetKeyboardText GetKeyboardText; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _HideKeyboard(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HideKeyboard HideKeyboard; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToKeyboardTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetKeyboardTransformAbsolute SetKeyboardTransformAbsolute; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetKeyboardPositionForOverlay(ulong ulOverlayHandle, HmdRect2_t avoidRect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetKeyboardPositionForOverlay SetKeyboardPositionForOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayIntersectionMask(ulong ulOverlayHandle, ref VROverlayIntersectionMaskPrimitive_t pMaskPrimitives, uint unNumMaskPrimitives, uint unPrimitiveSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayIntersectionMask SetOverlayIntersectionMask; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayFlags(ulong ulOverlayHandle, ref uint pFlags); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayFlags GetOverlayFlags; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate VRMessageOverlayResponse _ShowMessageOverlay(string pchText, string pchCaption, string pchButton0Text, string pchButton1Text, string pchButton2Text, string pchButton3Text); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowMessageOverlay ShowMessageOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CloseMessageOverlay(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CloseMessageOverlay CloseMessageOverlay; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRRenderModels +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadRenderModel_Async(string pchRenderModelName, ref IntPtr ppRenderModel); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadRenderModel_Async LoadRenderModel_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FreeRenderModel(IntPtr pRenderModel); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FreeRenderModel FreeRenderModel; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadTexture_Async(int textureId, ref IntPtr ppTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadTexture_Async LoadTexture_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FreeTexture(IntPtr pTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FreeTexture FreeTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadTextureD3D11_Async(int textureId, IntPtr pD3D11Device, ref IntPtr ppD3D11Texture2D); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadTextureD3D11_Async LoadTextureD3D11_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadIntoTextureD3D11_Async(int textureId, IntPtr pDstTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadIntoTextureD3D11_Async LoadIntoTextureD3D11_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FreeTextureD3D11(IntPtr pD3D11Texture2D); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FreeTextureD3D11 FreeTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelName(uint unRenderModelIndex, System.Text.StringBuilder pchRenderModelName, uint unRenderModelNameLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelName GetRenderModelName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelCount(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelCount GetRenderModelCount; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetComponentCount(string pchRenderModelName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentCount GetComponentCount; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetComponentName(string pchRenderModelName, uint unComponentIndex, System.Text.StringBuilder pchComponentName, uint unComponentNameLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentName GetComponentName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetComponentButtonMask(string pchRenderModelName, string pchComponentName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentButtonMask GetComponentButtonMask; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetComponentRenderModelName(string pchRenderModelName, string pchComponentName, System.Text.StringBuilder pchComponentRenderModelName, uint unComponentRenderModelNameLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentRenderModelName GetComponentRenderModelName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetComponentStateForDevicePath(string pchRenderModelName, string pchComponentName, ulong devicePath, ref RenderModel_ControllerMode_State_t pState, ref RenderModel_ComponentState_t pComponentState); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentStateForDevicePath GetComponentStateForDevicePath; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetComponentState(string pchRenderModelName, string pchComponentName, ref VRControllerState_t pControllerState, ref RenderModel_ControllerMode_State_t pState, ref RenderModel_ComponentState_t pComponentState); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentState GetComponentState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _RenderModelHasComponent(string pchRenderModelName, string pchComponentName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RenderModelHasComponent RenderModelHasComponent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelThumbnailURL(string pchRenderModelName, System.Text.StringBuilder pchThumbnailURL, uint unThumbnailURLLen, ref EVRRenderModelError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelThumbnailURL GetRenderModelThumbnailURL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelOriginalPath(string pchRenderModelName, System.Text.StringBuilder pchOriginalPath, uint unOriginalPathLen, ref EVRRenderModelError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelOriginalPath GetRenderModelOriginalPath; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetRenderModelErrorNameFromEnum(EVRRenderModelError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelErrorNameFromEnum GetRenderModelErrorNameFromEnum; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRNotifications +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRNotificationError _CreateNotification(ulong ulOverlayHandle, ulong ulUserValue, EVRNotificationType type, string pchText, EVRNotificationStyle style, ref NotificationBitmap_t pImage, ref uint pNotificationId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateNotification CreateNotification; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRNotificationError _RemoveNotification(uint notificationId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveNotification RemoveNotification; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRSettings +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetSettingsErrorNameFromEnum(EVRSettingsError eError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSettingsErrorNameFromEnum GetSettingsErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _Sync(bool bForce, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Sync Sync; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetBool(string pchSection, string pchSettingsKey, bool bValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetBool SetBool; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetInt32(string pchSection, string pchSettingsKey, int nValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetInt32 SetInt32; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetFloat(string pchSection, string pchSettingsKey, float flValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetFloat SetFloat; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetString(string pchSection, string pchSettingsKey, string pchValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetString SetString; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetBool(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetBool GetBool; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate int _GetInt32(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetInt32 GetInt32; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetFloat(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFloat GetFloat; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetString(string pchSection, string pchSettingsKey, System.Text.StringBuilder pchValue, uint unValueLen, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetString GetString; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RemoveSection(string pchSection, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveSection RemoveSection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RemoveKeyInSection(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveKeyInSection RemoveKeyInSection; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRScreenshots +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _RequestScreenshot(ref uint pOutScreenshotHandle, EVRScreenshotType type, string pchPreviewFilename, string pchVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RequestScreenshot RequestScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _HookScreenshot([In, Out] EVRScreenshotType[] pSupportedTypes, int numTypes); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HookScreenshot HookScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotType _GetScreenshotPropertyType(uint screenshotHandle, ref EVRScreenshotError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetScreenshotPropertyType GetScreenshotPropertyType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetScreenshotPropertyFilename(uint screenshotHandle, EVRScreenshotPropertyFilenames filenameType, System.Text.StringBuilder pchFilename, uint cchFilename, ref EVRScreenshotError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetScreenshotPropertyFilename GetScreenshotPropertyFilename; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _UpdateScreenshotProgress(uint screenshotHandle, float flProgress); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _UpdateScreenshotProgress UpdateScreenshotProgress; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _TakeStereoScreenshot(ref uint pOutScreenshotHandle, string pchPreviewFilename, string pchVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _TakeStereoScreenshot TakeStereoScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _SubmitScreenshot(uint screenshotHandle, EVRScreenshotType type, string pchSourcePreviewFilename, string pchSourceVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SubmitScreenshot SubmitScreenshot; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRResources +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _LoadSharedResource(string pchResourceName, string pchBuffer, uint unBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadSharedResource LoadSharedResource; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetResourceFullPath(string pchResourceName, string pchResourceTypeDirectory, System.Text.StringBuilder pchPathBuffer, uint unBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetResourceFullPath GetResourceFullPath; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRDriverManager +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetDriverCount(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDriverCount GetDriverCount; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetDriverName(uint nDriver, System.Text.StringBuilder pchValue, uint unBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDriverName GetDriverName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetDriverHandle(string pchDriverName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDriverHandle GetDriverHandle; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRInput +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _SetActionManifestPath(string pchActionManifestPath); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetActionManifestPath SetActionManifestPath; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetActionSetHandle(string pchActionSetName, ref ulong pHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetActionSetHandle GetActionSetHandle; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetActionHandle(string pchActionName, ref ulong pHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetActionHandle GetActionHandle; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetInputSourceHandle(string pchInputSourcePath, ref ulong pHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetInputSourceHandle GetInputSourceHandle; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _UpdateActionState([In, Out] VRActiveActionSet_t[] pSets, uint unSizeOfVRSelectedActionSet_t, uint unSetCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _UpdateActionState UpdateActionState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetDigitalActionData(ulong action, ref InputDigitalActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDigitalActionData GetDigitalActionData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetAnalogActionData(ulong action, ref InputAnalogActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetAnalogActionData GetAnalogActionData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetPoseActionData(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPoseActionData GetPoseActionData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetSkeletalActionData(ulong action, ref InputSkeletalActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSkeletalActionData GetSkeletalActionData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetSkeletalBoneData(ulong action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, [In, Out] VRBoneTransform_t[] pTransformArray, uint unTransformArrayCount, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSkeletalBoneData GetSkeletalBoneData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetSkeletalBoneDataCompressed(ulong action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, IntPtr pvCompressedData, uint unCompressedSize, ref uint punRequiredCompressedSize, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSkeletalBoneDataCompressed GetSkeletalBoneDataCompressed; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _DecompressSkeletalBoneData(IntPtr pvCompressedBuffer, uint unCompressedBufferSize, ref EVRSkeletalTransformSpace peTransformSpace, [In, Out] VRBoneTransform_t[] pTransformArray, uint unTransformArrayCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _DecompressSkeletalBoneData DecompressSkeletalBoneData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _TriggerHapticVibrationAction(ulong action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _TriggerHapticVibrationAction TriggerHapticVibrationAction; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetActionOrigins(ulong actionSetHandle, ulong digitalActionHandle, [In, Out] ulong[] originsOut, uint originOutCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetActionOrigins GetActionOrigins; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetOriginLocalizedName(ulong origin, System.Text.StringBuilder pchNameArray, uint unNameArraySize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOriginLocalizedName GetOriginLocalizedName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetOriginTrackedDeviceInfo(ulong origin, ref InputOriginInfo_t pOriginInfo, uint unOriginInfoSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOriginTrackedDeviceInfo GetOriginTrackedDeviceInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _ShowActionOrigins(ulong actionSetHandle, ulong ulActionHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowActionOrigins ShowActionOrigins; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _ShowBindingsForActionSet([In, Out] VRActiveActionSet_t[] pSets, uint unSizeOfVRSelectedActionSet_t, uint unSetCount, ulong originToHighlight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowBindingsForActionSet ShowBindingsForActionSet; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRIOBuffer +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EIOBufferError _Open(string pchPath, EIOBufferMode mode, uint unElementSize, uint unElements, ref ulong pulBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Open Open; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EIOBufferError _Close(ulong ulBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Close Close; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EIOBufferError _Read(ulong ulBuffer, IntPtr pDst, uint unBytes, ref uint punRead); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Read Read; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EIOBufferError _Write(ulong ulBuffer, IntPtr pSrc, uint unBytes); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Write Write; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _PropertyContainer(ulong ulBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PropertyContainer PropertyContainer; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRSpatialAnchors +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRSpatialAnchorError _CreateSpatialAnchorFromDescriptor(string pchDescriptor, ref uint pHandleOut); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateSpatialAnchorFromDescriptor CreateSpatialAnchorFromDescriptor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRSpatialAnchorError _CreateSpatialAnchorFromPose(uint unDeviceIndex, ETrackingUniverseOrigin eOrigin, ref SpatialAnchorPose_t pPose, ref uint pHandleOut); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateSpatialAnchorFromPose CreateSpatialAnchorFromPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRSpatialAnchorError _GetSpatialAnchorPose(uint unHandle, ETrackingUniverseOrigin eOrigin, ref SpatialAnchorPose_t pPoseOut); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSpatialAnchorPose GetSpatialAnchorPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRSpatialAnchorError _GetSpatialAnchorDescriptor(uint unHandle, System.Text.StringBuilder pchDescriptorOut, ref uint punDescriptorBufferLenInOut); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSpatialAnchorDescriptor GetSpatialAnchorDescriptor; + +} + + +public class CVRSystem +{ + IVRSystem FnTable; + internal CVRSystem(IntPtr pInterface) + { + FnTable = (IVRSystem)Marshal.PtrToStructure(pInterface, typeof(IVRSystem)); + } + public void GetRecommendedRenderTargetSize(ref uint pnWidth,ref uint pnHeight) + { + pnWidth = 0; + pnHeight = 0; + FnTable.GetRecommendedRenderTargetSize(ref pnWidth,ref pnHeight); + } + public HmdMatrix44_t GetProjectionMatrix(EVREye eEye,float fNearZ,float fFarZ) + { + HmdMatrix44_t result = FnTable.GetProjectionMatrix(eEye,fNearZ,fFarZ); + return result; + } + public void GetProjectionRaw(EVREye eEye,ref float pfLeft,ref float pfRight,ref float pfTop,ref float pfBottom) + { + pfLeft = 0; + pfRight = 0; + pfTop = 0; + pfBottom = 0; + FnTable.GetProjectionRaw(eEye,ref pfLeft,ref pfRight,ref pfTop,ref pfBottom); + } + public bool ComputeDistortion(EVREye eEye,float fU,float fV,ref DistortionCoordinates_t pDistortionCoordinates) + { + bool result = FnTable.ComputeDistortion(eEye,fU,fV,ref pDistortionCoordinates); + return result; + } + public HmdMatrix34_t GetEyeToHeadTransform(EVREye eEye) + { + HmdMatrix34_t result = FnTable.GetEyeToHeadTransform(eEye); + return result; + } + public bool GetTimeSinceLastVsync(ref float pfSecondsSinceLastVsync,ref ulong pulFrameCounter) + { + pfSecondsSinceLastVsync = 0; + pulFrameCounter = 0; + bool result = FnTable.GetTimeSinceLastVsync(ref pfSecondsSinceLastVsync,ref pulFrameCounter); + return result; + } + public int GetD3D9AdapterIndex() + { + int result = FnTable.GetD3D9AdapterIndex(); + return result; + } + public void GetDXGIOutputInfo(ref int pnAdapterIndex) + { + pnAdapterIndex = 0; + FnTable.GetDXGIOutputInfo(ref pnAdapterIndex); + } + public void GetOutputDevice(ref ulong pnDevice,ETextureType textureType,IntPtr pInstance) + { + pnDevice = 0; + FnTable.GetOutputDevice(ref pnDevice,textureType,pInstance); + } + public bool IsDisplayOnDesktop() + { + bool result = FnTable.IsDisplayOnDesktop(); + return result; + } + public bool SetDisplayVisibility(bool bIsVisibleOnDesktop) + { + bool result = FnTable.SetDisplayVisibility(bIsVisibleOnDesktop); + return result; + } + public void GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin eOrigin,float fPredictedSecondsToPhotonsFromNow,TrackedDevicePose_t [] pTrackedDevicePoseArray) + { + FnTable.GetDeviceToAbsoluteTrackingPose(eOrigin,fPredictedSecondsToPhotonsFromNow,pTrackedDevicePoseArray,(uint) pTrackedDevicePoseArray.Length); + } + public void ResetSeatedZeroPose() + { + FnTable.ResetSeatedZeroPose(); + } + public HmdMatrix34_t GetSeatedZeroPoseToStandingAbsoluteTrackingPose() + { + HmdMatrix34_t result = FnTable.GetSeatedZeroPoseToStandingAbsoluteTrackingPose(); + return result; + } + public HmdMatrix34_t GetRawZeroPoseToStandingAbsoluteTrackingPose() + { + HmdMatrix34_t result = FnTable.GetRawZeroPoseToStandingAbsoluteTrackingPose(); + return result; + } + public uint GetSortedTrackedDeviceIndicesOfClass(ETrackedDeviceClass eTrackedDeviceClass,uint [] punTrackedDeviceIndexArray,uint unRelativeToTrackedDeviceIndex) + { + uint result = FnTable.GetSortedTrackedDeviceIndicesOfClass(eTrackedDeviceClass,punTrackedDeviceIndexArray,(uint) punTrackedDeviceIndexArray.Length,unRelativeToTrackedDeviceIndex); + return result; + } + public EDeviceActivityLevel GetTrackedDeviceActivityLevel(uint unDeviceId) + { + EDeviceActivityLevel result = FnTable.GetTrackedDeviceActivityLevel(unDeviceId); + return result; + } + public void ApplyTransform(ref TrackedDevicePose_t pOutputPose,ref TrackedDevicePose_t pTrackedDevicePose,ref HmdMatrix34_t pTransform) + { + FnTable.ApplyTransform(ref pOutputPose,ref pTrackedDevicePose,ref pTransform); + } + public uint GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole unDeviceType) + { + uint result = FnTable.GetTrackedDeviceIndexForControllerRole(unDeviceType); + return result; + } + public ETrackedControllerRole GetControllerRoleForTrackedDeviceIndex(uint unDeviceIndex) + { + ETrackedControllerRole result = FnTable.GetControllerRoleForTrackedDeviceIndex(unDeviceIndex); + return result; + } + public ETrackedDeviceClass GetTrackedDeviceClass(uint unDeviceIndex) + { + ETrackedDeviceClass result = FnTable.GetTrackedDeviceClass(unDeviceIndex); + return result; + } + public bool IsTrackedDeviceConnected(uint unDeviceIndex) + { + bool result = FnTable.IsTrackedDeviceConnected(unDeviceIndex); + return result; + } + public bool GetBoolTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + bool result = FnTable.GetBoolTrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public float GetFloatTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + float result = FnTable.GetFloatTrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public int GetInt32TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + int result = FnTable.GetInt32TrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public ulong GetUint64TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + ulong result = FnTable.GetUint64TrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public HmdMatrix34_t GetMatrix34TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + HmdMatrix34_t result = FnTable.GetMatrix34TrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public uint GetArrayTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,uint propType,IntPtr pBuffer,uint unBufferSize,ref ETrackedPropertyError pError) + { + uint result = FnTable.GetArrayTrackedDeviceProperty(unDeviceIndex,prop,propType,pBuffer,unBufferSize,ref pError); + return result; + } + public uint GetStringTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,System.Text.StringBuilder pchValue,uint unBufferSize,ref ETrackedPropertyError pError) + { + uint result = FnTable.GetStringTrackedDeviceProperty(unDeviceIndex,prop,pchValue,unBufferSize,ref pError); + return result; + } + public string GetPropErrorNameFromEnum(ETrackedPropertyError error) + { + IntPtr result = FnTable.GetPropErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } +// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextEventPacked(ref VREvent_t_Packed pEvent,uint uncbVREvent); + [StructLayout(LayoutKind.Explicit)] + struct PollNextEventUnion + { + [FieldOffset(0)] + public IVRSystem._PollNextEvent pPollNextEvent; + [FieldOffset(0)] + public _PollNextEventPacked pPollNextEventPacked; + } + public bool PollNextEvent(ref VREvent_t pEvent,uint uncbVREvent) + { +#if !UNITY_METRO + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + PollNextEventUnion u; + VREvent_t_Packed event_packed = new VREvent_t_Packed(); + u.pPollNextEventPacked = null; + u.pPollNextEvent = FnTable.PollNextEvent; + bool packed_result = u.pPollNextEventPacked(ref event_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VREvent_t_Packed))); + + event_packed.Unpack(ref pEvent); + return packed_result; + } +#endif + bool result = FnTable.PollNextEvent(ref pEvent,uncbVREvent); + return result; + } + public bool PollNextEventWithPose(ETrackingUniverseOrigin eOrigin,ref VREvent_t pEvent,uint uncbVREvent,ref TrackedDevicePose_t pTrackedDevicePose) + { + bool result = FnTable.PollNextEventWithPose(eOrigin,ref pEvent,uncbVREvent,ref pTrackedDevicePose); + return result; + } + public string GetEventTypeNameFromEnum(EVREventType eType) + { + IntPtr result = FnTable.GetEventTypeNameFromEnum(eType); + return Marshal.PtrToStringAnsi(result); + } + public HiddenAreaMesh_t GetHiddenAreaMesh(EVREye eEye,EHiddenAreaMeshType type) + { + HiddenAreaMesh_t result = FnTable.GetHiddenAreaMesh(eEye,type); + return result; + } +// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerStatePacked(uint unControllerDeviceIndex,ref VRControllerState_t_Packed pControllerState,uint unControllerStateSize); + [StructLayout(LayoutKind.Explicit)] + struct GetControllerStateUnion + { + [FieldOffset(0)] + public IVRSystem._GetControllerState pGetControllerState; + [FieldOffset(0)] + public _GetControllerStatePacked pGetControllerStatePacked; + } + public bool GetControllerState(uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,uint unControllerStateSize) + { +#if !UNITY_METRO + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + GetControllerStateUnion u; + VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(pControllerState); + u.pGetControllerStatePacked = null; + u.pGetControllerState = FnTable.GetControllerState; + bool packed_result = u.pGetControllerStatePacked(unControllerDeviceIndex,ref state_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t_Packed))); + + state_packed.Unpack(ref pControllerState); + return packed_result; + } +#endif + bool result = FnTable.GetControllerState(unControllerDeviceIndex,ref pControllerState,unControllerStateSize); + return result; + } +// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerStateWithPosePacked(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t_Packed pControllerState,uint unControllerStateSize,ref TrackedDevicePose_t pTrackedDevicePose); + [StructLayout(LayoutKind.Explicit)] + struct GetControllerStateWithPoseUnion + { + [FieldOffset(0)] + public IVRSystem._GetControllerStateWithPose pGetControllerStateWithPose; + [FieldOffset(0)] + public _GetControllerStateWithPosePacked pGetControllerStateWithPosePacked; + } + public bool GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,uint unControllerStateSize,ref TrackedDevicePose_t pTrackedDevicePose) + { +#if !UNITY_METRO + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + GetControllerStateWithPoseUnion u; + VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(pControllerState); + u.pGetControllerStateWithPosePacked = null; + u.pGetControllerStateWithPose = FnTable.GetControllerStateWithPose; + bool packed_result = u.pGetControllerStateWithPosePacked(eOrigin,unControllerDeviceIndex,ref state_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t_Packed)),ref pTrackedDevicePose); + + state_packed.Unpack(ref pControllerState); + return packed_result; + } +#endif + bool result = FnTable.GetControllerStateWithPose(eOrigin,unControllerDeviceIndex,ref pControllerState,unControllerStateSize,ref pTrackedDevicePose); + return result; + } + public void TriggerHapticPulse(uint unControllerDeviceIndex,uint unAxisId,ushort usDurationMicroSec) + { + FnTable.TriggerHapticPulse(unControllerDeviceIndex,unAxisId,usDurationMicroSec); + } + public string GetButtonIdNameFromEnum(EVRButtonId eButtonId) + { + IntPtr result = FnTable.GetButtonIdNameFromEnum(eButtonId); + return Marshal.PtrToStringAnsi(result); + } + public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType) + { + IntPtr result = FnTable.GetControllerAxisTypeNameFromEnum(eAxisType); + return Marshal.PtrToStringAnsi(result); + } + public bool IsInputAvailable() + { + bool result = FnTable.IsInputAvailable(); + return result; + } + public bool IsSteamVRDrawingControllers() + { + bool result = FnTable.IsSteamVRDrawingControllers(); + return result; + } + public bool ShouldApplicationPause() + { + bool result = FnTable.ShouldApplicationPause(); + return result; + } + public bool ShouldApplicationReduceRenderingWork() + { + bool result = FnTable.ShouldApplicationReduceRenderingWork(); + return result; + } + public uint DriverDebugRequest(uint unDeviceIndex,string pchRequest,System.Text.StringBuilder pchResponseBuffer,uint unResponseBufferSize) + { + uint result = FnTable.DriverDebugRequest(unDeviceIndex,pchRequest,pchResponseBuffer,unResponseBufferSize); + return result; + } + public EVRFirmwareError PerformFirmwareUpdate(uint unDeviceIndex) + { + EVRFirmwareError result = FnTable.PerformFirmwareUpdate(unDeviceIndex); + return result; + } + public void AcknowledgeQuit_Exiting() + { + FnTable.AcknowledgeQuit_Exiting(); + } + public void AcknowledgeQuit_UserPrompt() + { + FnTable.AcknowledgeQuit_UserPrompt(); + } +} + + +public class CVRExtendedDisplay +{ + IVRExtendedDisplay FnTable; + internal CVRExtendedDisplay(IntPtr pInterface) + { + FnTable = (IVRExtendedDisplay)Marshal.PtrToStructure(pInterface, typeof(IVRExtendedDisplay)); + } + public void GetWindowBounds(ref int pnX,ref int pnY,ref uint pnWidth,ref uint pnHeight) + { + pnX = 0; + pnY = 0; + pnWidth = 0; + pnHeight = 0; + FnTable.GetWindowBounds(ref pnX,ref pnY,ref pnWidth,ref pnHeight); + } + public void GetEyeOutputViewport(EVREye eEye,ref uint pnX,ref uint pnY,ref uint pnWidth,ref uint pnHeight) + { + pnX = 0; + pnY = 0; + pnWidth = 0; + pnHeight = 0; + FnTable.GetEyeOutputViewport(eEye,ref pnX,ref pnY,ref pnWidth,ref pnHeight); + } + public void GetDXGIOutputInfo(ref int pnAdapterIndex,ref int pnAdapterOutputIndex) + { + pnAdapterIndex = 0; + pnAdapterOutputIndex = 0; + FnTable.GetDXGIOutputInfo(ref pnAdapterIndex,ref pnAdapterOutputIndex); + } +} + + +public class CVRTrackedCamera +{ + IVRTrackedCamera FnTable; + internal CVRTrackedCamera(IntPtr pInterface) + { + FnTable = (IVRTrackedCamera)Marshal.PtrToStructure(pInterface, typeof(IVRTrackedCamera)); + } + public string GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError) + { + IntPtr result = FnTable.GetCameraErrorNameFromEnum(eCameraError); + return Marshal.PtrToStringAnsi(result); + } + public EVRTrackedCameraError HasCamera(uint nDeviceIndex,ref bool pHasCamera) + { + pHasCamera = false; + EVRTrackedCameraError result = FnTable.HasCamera(nDeviceIndex,ref pHasCamera); + return result; + } + public EVRTrackedCameraError GetCameraFrameSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref uint pnWidth,ref uint pnHeight,ref uint pnFrameBufferSize) + { + pnWidth = 0; + pnHeight = 0; + pnFrameBufferSize = 0; + EVRTrackedCameraError result = FnTable.GetCameraFrameSize(nDeviceIndex,eFrameType,ref pnWidth,ref pnHeight,ref pnFrameBufferSize); + return result; + } + public EVRTrackedCameraError GetCameraIntrinsics(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref HmdVector2_t pFocalLength,ref HmdVector2_t pCenter) + { + EVRTrackedCameraError result = FnTable.GetCameraIntrinsics(nDeviceIndex,eFrameType,ref pFocalLength,ref pCenter); + return result; + } + public EVRTrackedCameraError GetCameraProjection(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,float flZNear,float flZFar,ref HmdMatrix44_t pProjection) + { + EVRTrackedCameraError result = FnTable.GetCameraProjection(nDeviceIndex,eFrameType,flZNear,flZFar,ref pProjection); + return result; + } + public EVRTrackedCameraError AcquireVideoStreamingService(uint nDeviceIndex,ref ulong pHandle) + { + pHandle = 0; + EVRTrackedCameraError result = FnTable.AcquireVideoStreamingService(nDeviceIndex,ref pHandle); + return result; + } + public EVRTrackedCameraError ReleaseVideoStreamingService(ulong hTrackedCamera) + { + EVRTrackedCameraError result = FnTable.ReleaseVideoStreamingService(hTrackedCamera); + return result; + } + public EVRTrackedCameraError GetVideoStreamFrameBuffer(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pFrameBuffer,uint nFrameBufferSize,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + EVRTrackedCameraError result = FnTable.GetVideoStreamFrameBuffer(hTrackedCamera,eFrameType,pFrameBuffer,nFrameBufferSize,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref VRTextureBounds_t pTextureBounds,ref uint pnWidth,ref uint pnHeight) + { + pnWidth = 0; + pnHeight = 0; + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureSize(nDeviceIndex,eFrameType,ref pTextureBounds,ref pnWidth,ref pnHeight); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureD3D11(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureD3D11(hTrackedCamera,eFrameType,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureGL(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,ref uint pglTextureId,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + pglTextureId = 0; + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureGL(hTrackedCamera,eFrameType,ref pglTextureId,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError ReleaseVideoStreamTextureGL(ulong hTrackedCamera,uint glTextureId) + { + EVRTrackedCameraError result = FnTable.ReleaseVideoStreamTextureGL(hTrackedCamera,glTextureId); + return result; + } +} + + +public class CVRApplications +{ + IVRApplications FnTable; + internal CVRApplications(IntPtr pInterface) + { + FnTable = (IVRApplications)Marshal.PtrToStructure(pInterface, typeof(IVRApplications)); + } + public EVRApplicationError AddApplicationManifest(string pchApplicationManifestFullPath,bool bTemporary) + { + EVRApplicationError result = FnTable.AddApplicationManifest(pchApplicationManifestFullPath,bTemporary); + return result; + } + public EVRApplicationError RemoveApplicationManifest(string pchApplicationManifestFullPath) + { + EVRApplicationError result = FnTable.RemoveApplicationManifest(pchApplicationManifestFullPath); + return result; + } + public bool IsApplicationInstalled(string pchAppKey) + { + bool result = FnTable.IsApplicationInstalled(pchAppKey); + return result; + } + public uint GetApplicationCount() + { + uint result = FnTable.GetApplicationCount(); + return result; + } + public EVRApplicationError GetApplicationKeyByIndex(uint unApplicationIndex,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) + { + EVRApplicationError result = FnTable.GetApplicationKeyByIndex(unApplicationIndex,pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public EVRApplicationError GetApplicationKeyByProcessId(uint unProcessId,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) + { + EVRApplicationError result = FnTable.GetApplicationKeyByProcessId(unProcessId,pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public EVRApplicationError LaunchApplication(string pchAppKey) + { + EVRApplicationError result = FnTable.LaunchApplication(pchAppKey); + return result; + } + public EVRApplicationError LaunchTemplateApplication(string pchTemplateAppKey,string pchNewAppKey,AppOverrideKeys_t [] pKeys) + { + EVRApplicationError result = FnTable.LaunchTemplateApplication(pchTemplateAppKey,pchNewAppKey,pKeys,(uint) pKeys.Length); + return result; + } + public EVRApplicationError LaunchApplicationFromMimeType(string pchMimeType,string pchArgs) + { + EVRApplicationError result = FnTable.LaunchApplicationFromMimeType(pchMimeType,pchArgs); + return result; + } + public EVRApplicationError LaunchDashboardOverlay(string pchAppKey) + { + EVRApplicationError result = FnTable.LaunchDashboardOverlay(pchAppKey); + return result; + } + public bool CancelApplicationLaunch(string pchAppKey) + { + bool result = FnTable.CancelApplicationLaunch(pchAppKey); + return result; + } + public EVRApplicationError IdentifyApplication(uint unProcessId,string pchAppKey) + { + EVRApplicationError result = FnTable.IdentifyApplication(unProcessId,pchAppKey); + return result; + } + public uint GetApplicationProcessId(string pchAppKey) + { + uint result = FnTable.GetApplicationProcessId(pchAppKey); + return result; + } + public string GetApplicationsErrorNameFromEnum(EVRApplicationError error) + { + IntPtr result = FnTable.GetApplicationsErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } + public uint GetApplicationPropertyString(string pchAppKey,EVRApplicationProperty eProperty,System.Text.StringBuilder pchPropertyValueBuffer,uint unPropertyValueBufferLen,ref EVRApplicationError peError) + { + uint result = FnTable.GetApplicationPropertyString(pchAppKey,eProperty,pchPropertyValueBuffer,unPropertyValueBufferLen,ref peError); + return result; + } + public bool GetApplicationPropertyBool(string pchAppKey,EVRApplicationProperty eProperty,ref EVRApplicationError peError) + { + bool result = FnTable.GetApplicationPropertyBool(pchAppKey,eProperty,ref peError); + return result; + } + public ulong GetApplicationPropertyUint64(string pchAppKey,EVRApplicationProperty eProperty,ref EVRApplicationError peError) + { + ulong result = FnTable.GetApplicationPropertyUint64(pchAppKey,eProperty,ref peError); + return result; + } + public EVRApplicationError SetApplicationAutoLaunch(string pchAppKey,bool bAutoLaunch) + { + EVRApplicationError result = FnTable.SetApplicationAutoLaunch(pchAppKey,bAutoLaunch); + return result; + } + public bool GetApplicationAutoLaunch(string pchAppKey) + { + bool result = FnTable.GetApplicationAutoLaunch(pchAppKey); + return result; + } + public EVRApplicationError SetDefaultApplicationForMimeType(string pchAppKey,string pchMimeType) + { + EVRApplicationError result = FnTable.SetDefaultApplicationForMimeType(pchAppKey,pchMimeType); + return result; + } + public bool GetDefaultApplicationForMimeType(string pchMimeType,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) + { + bool result = FnTable.GetDefaultApplicationForMimeType(pchMimeType,pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public bool GetApplicationSupportedMimeTypes(string pchAppKey,System.Text.StringBuilder pchMimeTypesBuffer,uint unMimeTypesBuffer) + { + bool result = FnTable.GetApplicationSupportedMimeTypes(pchAppKey,pchMimeTypesBuffer,unMimeTypesBuffer); + return result; + } + public uint GetApplicationsThatSupportMimeType(string pchMimeType,System.Text.StringBuilder pchAppKeysThatSupportBuffer,uint unAppKeysThatSupportBuffer) + { + uint result = FnTable.GetApplicationsThatSupportMimeType(pchMimeType,pchAppKeysThatSupportBuffer,unAppKeysThatSupportBuffer); + return result; + } + public uint GetApplicationLaunchArguments(uint unHandle,System.Text.StringBuilder pchArgs,uint unArgs) + { + uint result = FnTable.GetApplicationLaunchArguments(unHandle,pchArgs,unArgs); + return result; + } + public EVRApplicationError GetStartingApplication(System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) + { + EVRApplicationError result = FnTable.GetStartingApplication(pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public EVRApplicationTransitionState GetTransitionState() + { + EVRApplicationTransitionState result = FnTable.GetTransitionState(); + return result; + } + public EVRApplicationError PerformApplicationPrelaunchCheck(string pchAppKey) + { + EVRApplicationError result = FnTable.PerformApplicationPrelaunchCheck(pchAppKey); + return result; + } + public string GetApplicationsTransitionStateNameFromEnum(EVRApplicationTransitionState state) + { + IntPtr result = FnTable.GetApplicationsTransitionStateNameFromEnum(state); + return Marshal.PtrToStringAnsi(result); + } + public bool IsQuitUserPromptRequested() + { + bool result = FnTable.IsQuitUserPromptRequested(); + return result; + } + public EVRApplicationError LaunchInternalProcess(string pchBinaryPath,string pchArguments,string pchWorkingDirectory) + { + EVRApplicationError result = FnTable.LaunchInternalProcess(pchBinaryPath,pchArguments,pchWorkingDirectory); + return result; + } + public uint GetCurrentSceneProcessId() + { + uint result = FnTable.GetCurrentSceneProcessId(); + return result; + } +} + + +public class CVRChaperone +{ + IVRChaperone FnTable; + internal CVRChaperone(IntPtr pInterface) + { + FnTable = (IVRChaperone)Marshal.PtrToStructure(pInterface, typeof(IVRChaperone)); + } + public ChaperoneCalibrationState GetCalibrationState() + { + ChaperoneCalibrationState result = FnTable.GetCalibrationState(); + return result; + } + public bool GetPlayAreaSize(ref float pSizeX,ref float pSizeZ) + { + pSizeX = 0; + pSizeZ = 0; + bool result = FnTable.GetPlayAreaSize(ref pSizeX,ref pSizeZ); + return result; + } + public bool GetPlayAreaRect(ref HmdQuad_t rect) + { + bool result = FnTable.GetPlayAreaRect(ref rect); + return result; + } + public void ReloadInfo() + { + FnTable.ReloadInfo(); + } + public void SetSceneColor(HmdColor_t color) + { + FnTable.SetSceneColor(color); + } + public void GetBoundsColor(ref HmdColor_t pOutputColorArray,int nNumOutputColors,float flCollisionBoundsFadeDistance,ref HmdColor_t pOutputCameraColor) + { + FnTable.GetBoundsColor(ref pOutputColorArray,nNumOutputColors,flCollisionBoundsFadeDistance,ref pOutputCameraColor); + } + public bool AreBoundsVisible() + { + bool result = FnTable.AreBoundsVisible(); + return result; + } + public void ForceBoundsVisible(bool bForce) + { + FnTable.ForceBoundsVisible(bForce); + } +} + + +public class CVRChaperoneSetup +{ + IVRChaperoneSetup FnTable; + internal CVRChaperoneSetup(IntPtr pInterface) + { + FnTable = (IVRChaperoneSetup)Marshal.PtrToStructure(pInterface, typeof(IVRChaperoneSetup)); + } + public bool CommitWorkingCopy(EChaperoneConfigFile configFile) + { + bool result = FnTable.CommitWorkingCopy(configFile); + return result; + } + public void RevertWorkingCopy() + { + FnTable.RevertWorkingCopy(); + } + public bool GetWorkingPlayAreaSize(ref float pSizeX,ref float pSizeZ) + { + pSizeX = 0; + pSizeZ = 0; + bool result = FnTable.GetWorkingPlayAreaSize(ref pSizeX,ref pSizeZ); + return result; + } + public bool GetWorkingPlayAreaRect(ref HmdQuad_t rect) + { + bool result = FnTable.GetWorkingPlayAreaRect(ref rect); + return result; + } + public bool GetWorkingCollisionBoundsInfo(out HmdQuad_t [] pQuadsBuffer) + { + uint punQuadsCount = 0; + bool result = FnTable.GetWorkingCollisionBoundsInfo(null,ref punQuadsCount); + pQuadsBuffer= new HmdQuad_t[punQuadsCount]; + result = FnTable.GetWorkingCollisionBoundsInfo(pQuadsBuffer,ref punQuadsCount); + return result; + } + public bool GetLiveCollisionBoundsInfo(out HmdQuad_t [] pQuadsBuffer) + { + uint punQuadsCount = 0; + bool result = FnTable.GetLiveCollisionBoundsInfo(null,ref punQuadsCount); + pQuadsBuffer= new HmdQuad_t[punQuadsCount]; + result = FnTable.GetLiveCollisionBoundsInfo(pQuadsBuffer,ref punQuadsCount); + return result; + } + public bool GetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose) + { + bool result = FnTable.GetWorkingSeatedZeroPoseToRawTrackingPose(ref pmatSeatedZeroPoseToRawTrackingPose); + return result; + } + public bool GetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatStandingZeroPoseToRawTrackingPose) + { + bool result = FnTable.GetWorkingStandingZeroPoseToRawTrackingPose(ref pmatStandingZeroPoseToRawTrackingPose); + return result; + } + public void SetWorkingPlayAreaSize(float sizeX,float sizeZ) + { + FnTable.SetWorkingPlayAreaSize(sizeX,sizeZ); + } + public void SetWorkingCollisionBoundsInfo(HmdQuad_t [] pQuadsBuffer) + { + FnTable.SetWorkingCollisionBoundsInfo(pQuadsBuffer,(uint) pQuadsBuffer.Length); + } + public void SetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatSeatedZeroPoseToRawTrackingPose) + { + FnTable.SetWorkingSeatedZeroPoseToRawTrackingPose(ref pMatSeatedZeroPoseToRawTrackingPose); + } + public void SetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatStandingZeroPoseToRawTrackingPose) + { + FnTable.SetWorkingStandingZeroPoseToRawTrackingPose(ref pMatStandingZeroPoseToRawTrackingPose); + } + public void ReloadFromDisk(EChaperoneConfigFile configFile) + { + FnTable.ReloadFromDisk(configFile); + } + public bool GetLiveSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose) + { + bool result = FnTable.GetLiveSeatedZeroPoseToRawTrackingPose(ref pmatSeatedZeroPoseToRawTrackingPose); + return result; + } + public void SetWorkingCollisionBoundsTagsInfo(byte [] pTagsBuffer) + { + FnTable.SetWorkingCollisionBoundsTagsInfo(pTagsBuffer,(uint) pTagsBuffer.Length); + } + public bool GetLiveCollisionBoundsTagsInfo(out byte [] pTagsBuffer) + { + uint punTagCount = 0; + bool result = FnTable.GetLiveCollisionBoundsTagsInfo(null,ref punTagCount); + pTagsBuffer= new byte[punTagCount]; + result = FnTable.GetLiveCollisionBoundsTagsInfo(pTagsBuffer,ref punTagCount); + return result; + } + public bool SetWorkingPhysicalBoundsInfo(HmdQuad_t [] pQuadsBuffer) + { + bool result = FnTable.SetWorkingPhysicalBoundsInfo(pQuadsBuffer,(uint) pQuadsBuffer.Length); + return result; + } + public bool GetLivePhysicalBoundsInfo(out HmdQuad_t [] pQuadsBuffer) + { + uint punQuadsCount = 0; + bool result = FnTable.GetLivePhysicalBoundsInfo(null,ref punQuadsCount); + pQuadsBuffer= new HmdQuad_t[punQuadsCount]; + result = FnTable.GetLivePhysicalBoundsInfo(pQuadsBuffer,ref punQuadsCount); + return result; + } + public bool ExportLiveToBuffer(System.Text.StringBuilder pBuffer,ref uint pnBufferLength) + { + pnBufferLength = 0; + bool result = FnTable.ExportLiveToBuffer(pBuffer,ref pnBufferLength); + return result; + } + public bool ImportFromBufferToWorking(string pBuffer,uint nImportFlags) + { + bool result = FnTable.ImportFromBufferToWorking(pBuffer,nImportFlags); + return result; + } +} + + +public class CVRCompositor +{ + IVRCompositor FnTable; + internal CVRCompositor(IntPtr pInterface) + { + FnTable = (IVRCompositor)Marshal.PtrToStructure(pInterface, typeof(IVRCompositor)); + } + public void SetTrackingSpace(ETrackingUniverseOrigin eOrigin) + { + FnTable.SetTrackingSpace(eOrigin); + } + public ETrackingUniverseOrigin GetTrackingSpace() + { + ETrackingUniverseOrigin result = FnTable.GetTrackingSpace(); + return result; + } + public EVRCompositorError WaitGetPoses(TrackedDevicePose_t [] pRenderPoseArray,TrackedDevicePose_t [] pGamePoseArray) + { + EVRCompositorError result = FnTable.WaitGetPoses(pRenderPoseArray,(uint) pRenderPoseArray.Length,pGamePoseArray,(uint) pGamePoseArray.Length); + return result; + } + public EVRCompositorError GetLastPoses(TrackedDevicePose_t [] pRenderPoseArray,TrackedDevicePose_t [] pGamePoseArray) + { + EVRCompositorError result = FnTable.GetLastPoses(pRenderPoseArray,(uint) pRenderPoseArray.Length,pGamePoseArray,(uint) pGamePoseArray.Length); + return result; + } + public EVRCompositorError GetLastPoseForTrackedDeviceIndex(uint unDeviceIndex,ref TrackedDevicePose_t pOutputPose,ref TrackedDevicePose_t pOutputGamePose) + { + EVRCompositorError result = FnTable.GetLastPoseForTrackedDeviceIndex(unDeviceIndex,ref pOutputPose,ref pOutputGamePose); + return result; + } + public EVRCompositorError Submit(EVREye eEye,ref Texture_t pTexture,ref VRTextureBounds_t pBounds,EVRSubmitFlags nSubmitFlags) + { + EVRCompositorError result = FnTable.Submit(eEye,ref pTexture,ref pBounds,nSubmitFlags); + return result; + } + public void ClearLastSubmittedFrame() + { + FnTable.ClearLastSubmittedFrame(); + } + public void PostPresentHandoff() + { + FnTable.PostPresentHandoff(); + } + public bool GetFrameTiming(ref Compositor_FrameTiming pTiming,uint unFramesAgo) + { + bool result = FnTable.GetFrameTiming(ref pTiming,unFramesAgo); + return result; + } + public uint GetFrameTimings(ref Compositor_FrameTiming pTiming,uint nFrames) + { + uint result = FnTable.GetFrameTimings(ref pTiming,nFrames); + return result; + } + public float GetFrameTimeRemaining() + { + float result = FnTable.GetFrameTimeRemaining(); + return result; + } + public void GetCumulativeStats(ref Compositor_CumulativeStats pStats,uint nStatsSizeInBytes) + { + FnTable.GetCumulativeStats(ref pStats,nStatsSizeInBytes); + } + public void FadeToColor(float fSeconds,float fRed,float fGreen,float fBlue,float fAlpha,bool bBackground) + { + FnTable.FadeToColor(fSeconds,fRed,fGreen,fBlue,fAlpha,bBackground); + } + public HmdColor_t GetCurrentFadeColor(bool bBackground) + { + HmdColor_t result = FnTable.GetCurrentFadeColor(bBackground); + return result; + } + public void FadeGrid(float fSeconds,bool bFadeIn) + { + FnTable.FadeGrid(fSeconds,bFadeIn); + } + public float GetCurrentGridAlpha() + { + float result = FnTable.GetCurrentGridAlpha(); + return result; + } + public EVRCompositorError SetSkyboxOverride(Texture_t [] pTextures) + { + EVRCompositorError result = FnTable.SetSkyboxOverride(pTextures,(uint) pTextures.Length); + return result; + } + public void ClearSkyboxOverride() + { + FnTable.ClearSkyboxOverride(); + } + public void CompositorBringToFront() + { + FnTable.CompositorBringToFront(); + } + public void CompositorGoToBack() + { + FnTable.CompositorGoToBack(); + } + public void CompositorQuit() + { + FnTable.CompositorQuit(); + } + public bool IsFullscreen() + { + bool result = FnTable.IsFullscreen(); + return result; + } + public uint GetCurrentSceneFocusProcess() + { + uint result = FnTable.GetCurrentSceneFocusProcess(); + return result; + } + public uint GetLastFrameRenderer() + { + uint result = FnTable.GetLastFrameRenderer(); + return result; + } + public bool CanRenderScene() + { + bool result = FnTable.CanRenderScene(); + return result; + } + public void ShowMirrorWindow() + { + FnTable.ShowMirrorWindow(); + } + public void HideMirrorWindow() + { + FnTable.HideMirrorWindow(); + } + public bool IsMirrorWindowVisible() + { + bool result = FnTable.IsMirrorWindowVisible(); + return result; + } + public void CompositorDumpImages() + { + FnTable.CompositorDumpImages(); + } + public bool ShouldAppRenderWithLowResources() + { + bool result = FnTable.ShouldAppRenderWithLowResources(); + return result; + } + public void ForceInterleavedReprojectionOn(bool bOverride) + { + FnTable.ForceInterleavedReprojectionOn(bOverride); + } + public void ForceReconnectProcess() + { + FnTable.ForceReconnectProcess(); + } + public void SuspendRendering(bool bSuspend) + { + FnTable.SuspendRendering(bSuspend); + } + public EVRCompositorError GetMirrorTextureD3D11(EVREye eEye,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView) + { + EVRCompositorError result = FnTable.GetMirrorTextureD3D11(eEye,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView); + return result; + } + public void ReleaseMirrorTextureD3D11(IntPtr pD3D11ShaderResourceView) + { + FnTable.ReleaseMirrorTextureD3D11(pD3D11ShaderResourceView); + } + public EVRCompositorError GetMirrorTextureGL(EVREye eEye,ref uint pglTextureId,IntPtr pglSharedTextureHandle) + { + pglTextureId = 0; + EVRCompositorError result = FnTable.GetMirrorTextureGL(eEye,ref pglTextureId,pglSharedTextureHandle); + return result; + } + public bool ReleaseSharedGLTexture(uint glTextureId,IntPtr glSharedTextureHandle) + { + bool result = FnTable.ReleaseSharedGLTexture(glTextureId,glSharedTextureHandle); + return result; + } + public void LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) + { + FnTable.LockGLSharedTextureForAccess(glSharedTextureHandle); + } + public void UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) + { + FnTable.UnlockGLSharedTextureForAccess(glSharedTextureHandle); + } + public uint GetVulkanInstanceExtensionsRequired(System.Text.StringBuilder pchValue,uint unBufferSize) + { + uint result = FnTable.GetVulkanInstanceExtensionsRequired(pchValue,unBufferSize); + return result; + } + public uint GetVulkanDeviceExtensionsRequired(IntPtr pPhysicalDevice,System.Text.StringBuilder pchValue,uint unBufferSize) + { + uint result = FnTable.GetVulkanDeviceExtensionsRequired(pPhysicalDevice,pchValue,unBufferSize); + return result; + } + public void SetExplicitTimingMode(EVRCompositorTimingMode eTimingMode) + { + FnTable.SetExplicitTimingMode(eTimingMode); + } + public EVRCompositorError SubmitExplicitTimingData() + { + EVRCompositorError result = FnTable.SubmitExplicitTimingData(); + return result; + } +} + + +public class CVROverlay +{ + IVROverlay FnTable; + internal CVROverlay(IntPtr pInterface) + { + FnTable = (IVROverlay)Marshal.PtrToStructure(pInterface, typeof(IVROverlay)); + } + public EVROverlayError FindOverlay(string pchOverlayKey,ref ulong pOverlayHandle) + { + pOverlayHandle = 0; + EVROverlayError result = FnTable.FindOverlay(pchOverlayKey,ref pOverlayHandle); + return result; + } + public EVROverlayError CreateOverlay(string pchOverlayKey,string pchOverlayName,ref ulong pOverlayHandle) + { + pOverlayHandle = 0; + EVROverlayError result = FnTable.CreateOverlay(pchOverlayKey,pchOverlayName,ref pOverlayHandle); + return result; + } + public EVROverlayError DestroyOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.DestroyOverlay(ulOverlayHandle); + return result; + } + public EVROverlayError SetHighQualityOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.SetHighQualityOverlay(ulOverlayHandle); + return result; + } + public ulong GetHighQualityOverlay() + { + ulong result = FnTable.GetHighQualityOverlay(); + return result; + } + public uint GetOverlayKey(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref EVROverlayError pError) + { + uint result = FnTable.GetOverlayKey(ulOverlayHandle,pchValue,unBufferSize,ref pError); + return result; + } + public uint GetOverlayName(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref EVROverlayError pError) + { + uint result = FnTable.GetOverlayName(ulOverlayHandle,pchValue,unBufferSize,ref pError); + return result; + } + public EVROverlayError SetOverlayName(ulong ulOverlayHandle,string pchName) + { + EVROverlayError result = FnTable.SetOverlayName(ulOverlayHandle,pchName); + return result; + } + public EVROverlayError GetOverlayImageData(ulong ulOverlayHandle,IntPtr pvBuffer,uint unBufferSize,ref uint punWidth,ref uint punHeight) + { + punWidth = 0; + punHeight = 0; + EVROverlayError result = FnTable.GetOverlayImageData(ulOverlayHandle,pvBuffer,unBufferSize,ref punWidth,ref punHeight); + return result; + } + public string GetOverlayErrorNameFromEnum(EVROverlayError error) + { + IntPtr result = FnTable.GetOverlayErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } + public EVROverlayError SetOverlayRenderingPid(ulong ulOverlayHandle,uint unPID) + { + EVROverlayError result = FnTable.SetOverlayRenderingPid(ulOverlayHandle,unPID); + return result; + } + public uint GetOverlayRenderingPid(ulong ulOverlayHandle) + { + uint result = FnTable.GetOverlayRenderingPid(ulOverlayHandle); + return result; + } + public EVROverlayError SetOverlayFlag(ulong ulOverlayHandle,VROverlayFlags eOverlayFlag,bool bEnabled) + { + EVROverlayError result = FnTable.SetOverlayFlag(ulOverlayHandle,eOverlayFlag,bEnabled); + return result; + } + public EVROverlayError GetOverlayFlag(ulong ulOverlayHandle,VROverlayFlags eOverlayFlag,ref bool pbEnabled) + { + pbEnabled = false; + EVROverlayError result = FnTable.GetOverlayFlag(ulOverlayHandle,eOverlayFlag,ref pbEnabled); + return result; + } + public EVROverlayError SetOverlayColor(ulong ulOverlayHandle,float fRed,float fGreen,float fBlue) + { + EVROverlayError result = FnTable.SetOverlayColor(ulOverlayHandle,fRed,fGreen,fBlue); + return result; + } + public EVROverlayError GetOverlayColor(ulong ulOverlayHandle,ref float pfRed,ref float pfGreen,ref float pfBlue) + { + pfRed = 0; + pfGreen = 0; + pfBlue = 0; + EVROverlayError result = FnTable.GetOverlayColor(ulOverlayHandle,ref pfRed,ref pfGreen,ref pfBlue); + return result; + } + public EVROverlayError SetOverlayAlpha(ulong ulOverlayHandle,float fAlpha) + { + EVROverlayError result = FnTable.SetOverlayAlpha(ulOverlayHandle,fAlpha); + return result; + } + public EVROverlayError GetOverlayAlpha(ulong ulOverlayHandle,ref float pfAlpha) + { + pfAlpha = 0; + EVROverlayError result = FnTable.GetOverlayAlpha(ulOverlayHandle,ref pfAlpha); + return result; + } + public EVROverlayError SetOverlayTexelAspect(ulong ulOverlayHandle,float fTexelAspect) + { + EVROverlayError result = FnTable.SetOverlayTexelAspect(ulOverlayHandle,fTexelAspect); + return result; + } + public EVROverlayError GetOverlayTexelAspect(ulong ulOverlayHandle,ref float pfTexelAspect) + { + pfTexelAspect = 0; + EVROverlayError result = FnTable.GetOverlayTexelAspect(ulOverlayHandle,ref pfTexelAspect); + return result; + } + public EVROverlayError SetOverlaySortOrder(ulong ulOverlayHandle,uint unSortOrder) + { + EVROverlayError result = FnTable.SetOverlaySortOrder(ulOverlayHandle,unSortOrder); + return result; + } + public EVROverlayError GetOverlaySortOrder(ulong ulOverlayHandle,ref uint punSortOrder) + { + punSortOrder = 0; + EVROverlayError result = FnTable.GetOverlaySortOrder(ulOverlayHandle,ref punSortOrder); + return result; + } + public EVROverlayError SetOverlayWidthInMeters(ulong ulOverlayHandle,float fWidthInMeters) + { + EVROverlayError result = FnTable.SetOverlayWidthInMeters(ulOverlayHandle,fWidthInMeters); + return result; + } + public EVROverlayError GetOverlayWidthInMeters(ulong ulOverlayHandle,ref float pfWidthInMeters) + { + pfWidthInMeters = 0; + EVROverlayError result = FnTable.GetOverlayWidthInMeters(ulOverlayHandle,ref pfWidthInMeters); + return result; + } + public EVROverlayError SetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle,float fMinDistanceInMeters,float fMaxDistanceInMeters) + { + EVROverlayError result = FnTable.SetOverlayAutoCurveDistanceRangeInMeters(ulOverlayHandle,fMinDistanceInMeters,fMaxDistanceInMeters); + return result; + } + public EVROverlayError GetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle,ref float pfMinDistanceInMeters,ref float pfMaxDistanceInMeters) + { + pfMinDistanceInMeters = 0; + pfMaxDistanceInMeters = 0; + EVROverlayError result = FnTable.GetOverlayAutoCurveDistanceRangeInMeters(ulOverlayHandle,ref pfMinDistanceInMeters,ref pfMaxDistanceInMeters); + return result; + } + public EVROverlayError SetOverlayTextureColorSpace(ulong ulOverlayHandle,EColorSpace eTextureColorSpace) + { + EVROverlayError result = FnTable.SetOverlayTextureColorSpace(ulOverlayHandle,eTextureColorSpace); + return result; + } + public EVROverlayError GetOverlayTextureColorSpace(ulong ulOverlayHandle,ref EColorSpace peTextureColorSpace) + { + EVROverlayError result = FnTable.GetOverlayTextureColorSpace(ulOverlayHandle,ref peTextureColorSpace); + return result; + } + public EVROverlayError SetOverlayTextureBounds(ulong ulOverlayHandle,ref VRTextureBounds_t pOverlayTextureBounds) + { + EVROverlayError result = FnTable.SetOverlayTextureBounds(ulOverlayHandle,ref pOverlayTextureBounds); + return result; + } + public EVROverlayError GetOverlayTextureBounds(ulong ulOverlayHandle,ref VRTextureBounds_t pOverlayTextureBounds) + { + EVROverlayError result = FnTable.GetOverlayTextureBounds(ulOverlayHandle,ref pOverlayTextureBounds); + return result; + } + public uint GetOverlayRenderModel(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref HmdColor_t pColor,ref EVROverlayError pError) + { + uint result = FnTable.GetOverlayRenderModel(ulOverlayHandle,pchValue,unBufferSize,ref pColor,ref pError); + return result; + } + public EVROverlayError SetOverlayRenderModel(ulong ulOverlayHandle,string pchRenderModel,ref HmdColor_t pColor) + { + EVROverlayError result = FnTable.SetOverlayRenderModel(ulOverlayHandle,pchRenderModel,ref pColor); + return result; + } + public EVROverlayError GetOverlayTransformType(ulong ulOverlayHandle,ref VROverlayTransformType peTransformType) + { + EVROverlayError result = FnTable.GetOverlayTransformType(ulOverlayHandle,ref peTransformType); + return result; + } + public EVROverlayError SetOverlayTransformAbsolute(ulong ulOverlayHandle,ETrackingUniverseOrigin eTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform) + { + EVROverlayError result = FnTable.SetOverlayTransformAbsolute(ulOverlayHandle,eTrackingOrigin,ref pmatTrackingOriginToOverlayTransform); + return result; + } + public EVROverlayError GetOverlayTransformAbsolute(ulong ulOverlayHandle,ref ETrackingUniverseOrigin peTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform) + { + EVROverlayError result = FnTable.GetOverlayTransformAbsolute(ulOverlayHandle,ref peTrackingOrigin,ref pmatTrackingOriginToOverlayTransform); + return result; + } + public EVROverlayError SetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle,uint unTrackedDevice,ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform) + { + EVROverlayError result = FnTable.SetOverlayTransformTrackedDeviceRelative(ulOverlayHandle,unTrackedDevice,ref pmatTrackedDeviceToOverlayTransform); + return result; + } + public EVROverlayError GetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle,ref uint punTrackedDevice,ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform) + { + punTrackedDevice = 0; + EVROverlayError result = FnTable.GetOverlayTransformTrackedDeviceRelative(ulOverlayHandle,ref punTrackedDevice,ref pmatTrackedDeviceToOverlayTransform); + return result; + } + public EVROverlayError SetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle,uint unDeviceIndex,string pchComponentName) + { + EVROverlayError result = FnTable.SetOverlayTransformTrackedDeviceComponent(ulOverlayHandle,unDeviceIndex,pchComponentName); + return result; + } + public EVROverlayError GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle,ref uint punDeviceIndex,System.Text.StringBuilder pchComponentName,uint unComponentNameSize) + { + punDeviceIndex = 0; + EVROverlayError result = FnTable.GetOverlayTransformTrackedDeviceComponent(ulOverlayHandle,ref punDeviceIndex,pchComponentName,unComponentNameSize); + return result; + } + public EVROverlayError GetOverlayTransformOverlayRelative(ulong ulOverlayHandle,ref ulong ulOverlayHandleParent,ref HmdMatrix34_t pmatParentOverlayToOverlayTransform) + { + ulOverlayHandleParent = 0; + EVROverlayError result = FnTable.GetOverlayTransformOverlayRelative(ulOverlayHandle,ref ulOverlayHandleParent,ref pmatParentOverlayToOverlayTransform); + return result; + } + public EVROverlayError SetOverlayTransformOverlayRelative(ulong ulOverlayHandle,ulong ulOverlayHandleParent,ref HmdMatrix34_t pmatParentOverlayToOverlayTransform) + { + EVROverlayError result = FnTable.SetOverlayTransformOverlayRelative(ulOverlayHandle,ulOverlayHandleParent,ref pmatParentOverlayToOverlayTransform); + return result; + } + public EVROverlayError ShowOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.ShowOverlay(ulOverlayHandle); + return result; + } + public EVROverlayError HideOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.HideOverlay(ulOverlayHandle); + return result; + } + public bool IsOverlayVisible(ulong ulOverlayHandle) + { + bool result = FnTable.IsOverlayVisible(ulOverlayHandle); + return result; + } + public EVROverlayError GetTransformForOverlayCoordinates(ulong ulOverlayHandle,ETrackingUniverseOrigin eTrackingOrigin,HmdVector2_t coordinatesInOverlay,ref HmdMatrix34_t pmatTransform) + { + EVROverlayError result = FnTable.GetTransformForOverlayCoordinates(ulOverlayHandle,eTrackingOrigin,coordinatesInOverlay,ref pmatTransform); + return result; + } +// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextOverlayEventPacked(ulong ulOverlayHandle,ref VREvent_t_Packed pEvent,uint uncbVREvent); + [StructLayout(LayoutKind.Explicit)] + struct PollNextOverlayEventUnion + { + [FieldOffset(0)] + public IVROverlay._PollNextOverlayEvent pPollNextOverlayEvent; + [FieldOffset(0)] + public _PollNextOverlayEventPacked pPollNextOverlayEventPacked; + } + public bool PollNextOverlayEvent(ulong ulOverlayHandle,ref VREvent_t pEvent,uint uncbVREvent) + { +#if !UNITY_METRO + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + PollNextOverlayEventUnion u; + VREvent_t_Packed event_packed = new VREvent_t_Packed(); + u.pPollNextOverlayEventPacked = null; + u.pPollNextOverlayEvent = FnTable.PollNextOverlayEvent; + bool packed_result = u.pPollNextOverlayEventPacked(ulOverlayHandle,ref event_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VREvent_t_Packed))); + + event_packed.Unpack(ref pEvent); + return packed_result; + } +#endif + bool result = FnTable.PollNextOverlayEvent(ulOverlayHandle,ref pEvent,uncbVREvent); + return result; + } + public EVROverlayError GetOverlayInputMethod(ulong ulOverlayHandle,ref VROverlayInputMethod peInputMethod) + { + EVROverlayError result = FnTable.GetOverlayInputMethod(ulOverlayHandle,ref peInputMethod); + return result; + } + public EVROverlayError SetOverlayInputMethod(ulong ulOverlayHandle,VROverlayInputMethod eInputMethod) + { + EVROverlayError result = FnTable.SetOverlayInputMethod(ulOverlayHandle,eInputMethod); + return result; + } + public EVROverlayError GetOverlayMouseScale(ulong ulOverlayHandle,ref HmdVector2_t pvecMouseScale) + { + EVROverlayError result = FnTable.GetOverlayMouseScale(ulOverlayHandle,ref pvecMouseScale); + return result; + } + public EVROverlayError SetOverlayMouseScale(ulong ulOverlayHandle,ref HmdVector2_t pvecMouseScale) + { + EVROverlayError result = FnTable.SetOverlayMouseScale(ulOverlayHandle,ref pvecMouseScale); + return result; + } + public bool ComputeOverlayIntersection(ulong ulOverlayHandle,ref VROverlayIntersectionParams_t pParams,ref VROverlayIntersectionResults_t pResults) + { + bool result = FnTable.ComputeOverlayIntersection(ulOverlayHandle,ref pParams,ref pResults); + return result; + } + public bool IsHoverTargetOverlay(ulong ulOverlayHandle) + { + bool result = FnTable.IsHoverTargetOverlay(ulOverlayHandle); + return result; + } + public ulong GetGamepadFocusOverlay() + { + ulong result = FnTable.GetGamepadFocusOverlay(); + return result; + } + public EVROverlayError SetGamepadFocusOverlay(ulong ulNewFocusOverlay) + { + EVROverlayError result = FnTable.SetGamepadFocusOverlay(ulNewFocusOverlay); + return result; + } + public EVROverlayError SetOverlayNeighbor(EOverlayDirection eDirection,ulong ulFrom,ulong ulTo) + { + EVROverlayError result = FnTable.SetOverlayNeighbor(eDirection,ulFrom,ulTo); + return result; + } + public EVROverlayError MoveGamepadFocusToNeighbor(EOverlayDirection eDirection,ulong ulFrom) + { + EVROverlayError result = FnTable.MoveGamepadFocusToNeighbor(eDirection,ulFrom); + return result; + } + public EVROverlayError SetOverlayDualAnalogTransform(ulong ulOverlay,EDualAnalogWhich eWhich,IntPtr vCenter,float fRadius) + { + EVROverlayError result = FnTable.SetOverlayDualAnalogTransform(ulOverlay,eWhich,vCenter,fRadius); + return result; + } + public EVROverlayError GetOverlayDualAnalogTransform(ulong ulOverlay,EDualAnalogWhich eWhich,ref HmdVector2_t pvCenter,ref float pfRadius) + { + pfRadius = 0; + EVROverlayError result = FnTable.GetOverlayDualAnalogTransform(ulOverlay,eWhich,ref pvCenter,ref pfRadius); + return result; + } + public EVROverlayError SetOverlayTexture(ulong ulOverlayHandle,ref Texture_t pTexture) + { + EVROverlayError result = FnTable.SetOverlayTexture(ulOverlayHandle,ref pTexture); + return result; + } + public EVROverlayError ClearOverlayTexture(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.ClearOverlayTexture(ulOverlayHandle); + return result; + } + public EVROverlayError SetOverlayRaw(ulong ulOverlayHandle,IntPtr pvBuffer,uint unWidth,uint unHeight,uint unDepth) + { + EVROverlayError result = FnTable.SetOverlayRaw(ulOverlayHandle,pvBuffer,unWidth,unHeight,unDepth); + return result; + } + public EVROverlayError SetOverlayFromFile(ulong ulOverlayHandle,string pchFilePath) + { + EVROverlayError result = FnTable.SetOverlayFromFile(ulOverlayHandle,pchFilePath); + return result; + } + public EVROverlayError GetOverlayTexture(ulong ulOverlayHandle,ref IntPtr pNativeTextureHandle,IntPtr pNativeTextureRef,ref uint pWidth,ref uint pHeight,ref uint pNativeFormat,ref ETextureType pAPIType,ref EColorSpace pColorSpace,ref VRTextureBounds_t pTextureBounds) + { + pWidth = 0; + pHeight = 0; + pNativeFormat = 0; + EVROverlayError result = FnTable.GetOverlayTexture(ulOverlayHandle,ref pNativeTextureHandle,pNativeTextureRef,ref pWidth,ref pHeight,ref pNativeFormat,ref pAPIType,ref pColorSpace,ref pTextureBounds); + return result; + } + public EVROverlayError ReleaseNativeOverlayHandle(ulong ulOverlayHandle,IntPtr pNativeTextureHandle) + { + EVROverlayError result = FnTable.ReleaseNativeOverlayHandle(ulOverlayHandle,pNativeTextureHandle); + return result; + } + public EVROverlayError GetOverlayTextureSize(ulong ulOverlayHandle,ref uint pWidth,ref uint pHeight) + { + pWidth = 0; + pHeight = 0; + EVROverlayError result = FnTable.GetOverlayTextureSize(ulOverlayHandle,ref pWidth,ref pHeight); + return result; + } + public EVROverlayError CreateDashboardOverlay(string pchOverlayKey,string pchOverlayFriendlyName,ref ulong pMainHandle,ref ulong pThumbnailHandle) + { + pMainHandle = 0; + pThumbnailHandle = 0; + EVROverlayError result = FnTable.CreateDashboardOverlay(pchOverlayKey,pchOverlayFriendlyName,ref pMainHandle,ref pThumbnailHandle); + return result; + } + public bool IsDashboardVisible() + { + bool result = FnTable.IsDashboardVisible(); + return result; + } + public bool IsActiveDashboardOverlay(ulong ulOverlayHandle) + { + bool result = FnTable.IsActiveDashboardOverlay(ulOverlayHandle); + return result; + } + public EVROverlayError SetDashboardOverlaySceneProcess(ulong ulOverlayHandle,uint unProcessId) + { + EVROverlayError result = FnTable.SetDashboardOverlaySceneProcess(ulOverlayHandle,unProcessId); + return result; + } + public EVROverlayError GetDashboardOverlaySceneProcess(ulong ulOverlayHandle,ref uint punProcessId) + { + punProcessId = 0; + EVROverlayError result = FnTable.GetDashboardOverlaySceneProcess(ulOverlayHandle,ref punProcessId); + return result; + } + public void ShowDashboard(string pchOverlayToShow) + { + FnTable.ShowDashboard(pchOverlayToShow); + } + public uint GetPrimaryDashboardDevice() + { + uint result = FnTable.GetPrimaryDashboardDevice(); + return result; + } + public EVROverlayError ShowKeyboard(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText,bool bUseMinimalMode,ulong uUserValue) + { + EVROverlayError result = FnTable.ShowKeyboard(eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText,bUseMinimalMode,uUserValue); + return result; + } + public EVROverlayError ShowKeyboardForOverlay(ulong ulOverlayHandle,int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText,bool bUseMinimalMode,ulong uUserValue) + { + EVROverlayError result = FnTable.ShowKeyboardForOverlay(ulOverlayHandle,eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText,bUseMinimalMode,uUserValue); + return result; + } + public uint GetKeyboardText(System.Text.StringBuilder pchText,uint cchText) + { + uint result = FnTable.GetKeyboardText(pchText,cchText); + return result; + } + public void HideKeyboard() + { + FnTable.HideKeyboard(); + } + public void SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToKeyboardTransform) + { + FnTable.SetKeyboardTransformAbsolute(eTrackingOrigin,ref pmatTrackingOriginToKeyboardTransform); + } + public void SetKeyboardPositionForOverlay(ulong ulOverlayHandle,HmdRect2_t avoidRect) + { + FnTable.SetKeyboardPositionForOverlay(ulOverlayHandle,avoidRect); + } + public EVROverlayError SetOverlayIntersectionMask(ulong ulOverlayHandle,ref VROverlayIntersectionMaskPrimitive_t pMaskPrimitives,uint unNumMaskPrimitives,uint unPrimitiveSize) + { + EVROverlayError result = FnTable.SetOverlayIntersectionMask(ulOverlayHandle,ref pMaskPrimitives,unNumMaskPrimitives,unPrimitiveSize); + return result; + } + public EVROverlayError GetOverlayFlags(ulong ulOverlayHandle,ref uint pFlags) + { + pFlags = 0; + EVROverlayError result = FnTable.GetOverlayFlags(ulOverlayHandle,ref pFlags); + return result; + } + public VRMessageOverlayResponse ShowMessageOverlay(string pchText,string pchCaption,string pchButton0Text,string pchButton1Text,string pchButton2Text,string pchButton3Text) + { + VRMessageOverlayResponse result = FnTable.ShowMessageOverlay(pchText,pchCaption,pchButton0Text,pchButton1Text,pchButton2Text,pchButton3Text); + return result; + } + public void CloseMessageOverlay() + { + FnTable.CloseMessageOverlay(); + } +} + + +public class CVRRenderModels +{ + IVRRenderModels FnTable; + internal CVRRenderModels(IntPtr pInterface) + { + FnTable = (IVRRenderModels)Marshal.PtrToStructure(pInterface, typeof(IVRRenderModels)); + } + public EVRRenderModelError LoadRenderModel_Async(string pchRenderModelName,ref IntPtr ppRenderModel) + { + EVRRenderModelError result = FnTable.LoadRenderModel_Async(pchRenderModelName,ref ppRenderModel); + return result; + } + public void FreeRenderModel(IntPtr pRenderModel) + { + FnTable.FreeRenderModel(pRenderModel); + } + public EVRRenderModelError LoadTexture_Async(int textureId,ref IntPtr ppTexture) + { + EVRRenderModelError result = FnTable.LoadTexture_Async(textureId,ref ppTexture); + return result; + } + public void FreeTexture(IntPtr pTexture) + { + FnTable.FreeTexture(pTexture); + } + public EVRRenderModelError LoadTextureD3D11_Async(int textureId,IntPtr pD3D11Device,ref IntPtr ppD3D11Texture2D) + { + EVRRenderModelError result = FnTable.LoadTextureD3D11_Async(textureId,pD3D11Device,ref ppD3D11Texture2D); + return result; + } + public EVRRenderModelError LoadIntoTextureD3D11_Async(int textureId,IntPtr pDstTexture) + { + EVRRenderModelError result = FnTable.LoadIntoTextureD3D11_Async(textureId,pDstTexture); + return result; + } + public void FreeTextureD3D11(IntPtr pD3D11Texture2D) + { + FnTable.FreeTextureD3D11(pD3D11Texture2D); + } + public uint GetRenderModelName(uint unRenderModelIndex,System.Text.StringBuilder pchRenderModelName,uint unRenderModelNameLen) + { + uint result = FnTable.GetRenderModelName(unRenderModelIndex,pchRenderModelName,unRenderModelNameLen); + return result; + } + public uint GetRenderModelCount() + { + uint result = FnTable.GetRenderModelCount(); + return result; + } + public uint GetComponentCount(string pchRenderModelName) + { + uint result = FnTable.GetComponentCount(pchRenderModelName); + return result; + } + public uint GetComponentName(string pchRenderModelName,uint unComponentIndex,System.Text.StringBuilder pchComponentName,uint unComponentNameLen) + { + uint result = FnTable.GetComponentName(pchRenderModelName,unComponentIndex,pchComponentName,unComponentNameLen); + return result; + } + public ulong GetComponentButtonMask(string pchRenderModelName,string pchComponentName) + { + ulong result = FnTable.GetComponentButtonMask(pchRenderModelName,pchComponentName); + return result; + } + public uint GetComponentRenderModelName(string pchRenderModelName,string pchComponentName,System.Text.StringBuilder pchComponentRenderModelName,uint unComponentRenderModelNameLen) + { + uint result = FnTable.GetComponentRenderModelName(pchRenderModelName,pchComponentName,pchComponentRenderModelName,unComponentRenderModelNameLen); + return result; + } + public bool GetComponentStateForDevicePath(string pchRenderModelName,string pchComponentName,ulong devicePath,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState) + { + bool result = FnTable.GetComponentStateForDevicePath(pchRenderModelName,pchComponentName,devicePath,ref pState,ref pComponentState); + return result; + } +// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were +// originally mis-compiled with the wrong packing for Linux and OSX. + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetComponentStatePacked(string pchRenderModelName,string pchComponentName,ref VRControllerState_t_Packed pControllerState,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState); + [StructLayout(LayoutKind.Explicit)] + struct GetComponentStateUnion + { + [FieldOffset(0)] + public IVRRenderModels._GetComponentState pGetComponentState; + [FieldOffset(0)] + public _GetComponentStatePacked pGetComponentStatePacked; + } + public bool GetComponentState(string pchRenderModelName,string pchComponentName,ref VRControllerState_t pControllerState,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState) + { +#if !UNITY_METRO + if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || + (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) + { + GetComponentStateUnion u; + VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(pControllerState); + u.pGetComponentStatePacked = null; + u.pGetComponentState = FnTable.GetComponentState; + bool packed_result = u.pGetComponentStatePacked(pchRenderModelName,pchComponentName,ref state_packed,ref pState,ref pComponentState); + + state_packed.Unpack(ref pControllerState); + return packed_result; + } +#endif + bool result = FnTable.GetComponentState(pchRenderModelName,pchComponentName,ref pControllerState,ref pState,ref pComponentState); + return result; + } + public bool RenderModelHasComponent(string pchRenderModelName,string pchComponentName) + { + bool result = FnTable.RenderModelHasComponent(pchRenderModelName,pchComponentName); + return result; + } + public uint GetRenderModelThumbnailURL(string pchRenderModelName,System.Text.StringBuilder pchThumbnailURL,uint unThumbnailURLLen,ref EVRRenderModelError peError) + { + uint result = FnTable.GetRenderModelThumbnailURL(pchRenderModelName,pchThumbnailURL,unThumbnailURLLen,ref peError); + return result; + } + public uint GetRenderModelOriginalPath(string pchRenderModelName,System.Text.StringBuilder pchOriginalPath,uint unOriginalPathLen,ref EVRRenderModelError peError) + { + uint result = FnTable.GetRenderModelOriginalPath(pchRenderModelName,pchOriginalPath,unOriginalPathLen,ref peError); + return result; + } + public string GetRenderModelErrorNameFromEnum(EVRRenderModelError error) + { + IntPtr result = FnTable.GetRenderModelErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } +} + + +public class CVRNotifications +{ + IVRNotifications FnTable; + internal CVRNotifications(IntPtr pInterface) + { + FnTable = (IVRNotifications)Marshal.PtrToStructure(pInterface, typeof(IVRNotifications)); + } + public EVRNotificationError CreateNotification(ulong ulOverlayHandle,ulong ulUserValue,EVRNotificationType type,string pchText,EVRNotificationStyle style,ref NotificationBitmap_t pImage,ref uint pNotificationId) + { + pNotificationId = 0; + EVRNotificationError result = FnTable.CreateNotification(ulOverlayHandle,ulUserValue,type,pchText,style,ref pImage,ref pNotificationId); + return result; + } + public EVRNotificationError RemoveNotification(uint notificationId) + { + EVRNotificationError result = FnTable.RemoveNotification(notificationId); + return result; + } +} + + +public class CVRSettings +{ + IVRSettings FnTable; + internal CVRSettings(IntPtr pInterface) + { + FnTable = (IVRSettings)Marshal.PtrToStructure(pInterface, typeof(IVRSettings)); + } + public string GetSettingsErrorNameFromEnum(EVRSettingsError eError) + { + IntPtr result = FnTable.GetSettingsErrorNameFromEnum(eError); + return Marshal.PtrToStringAnsi(result); + } + public bool Sync(bool bForce,ref EVRSettingsError peError) + { + bool result = FnTable.Sync(bForce,ref peError); + return result; + } + public void SetBool(string pchSection,string pchSettingsKey,bool bValue,ref EVRSettingsError peError) + { + FnTable.SetBool(pchSection,pchSettingsKey,bValue,ref peError); + } + public void SetInt32(string pchSection,string pchSettingsKey,int nValue,ref EVRSettingsError peError) + { + FnTable.SetInt32(pchSection,pchSettingsKey,nValue,ref peError); + } + public void SetFloat(string pchSection,string pchSettingsKey,float flValue,ref EVRSettingsError peError) + { + FnTable.SetFloat(pchSection,pchSettingsKey,flValue,ref peError); + } + public void SetString(string pchSection,string pchSettingsKey,string pchValue,ref EVRSettingsError peError) + { + FnTable.SetString(pchSection,pchSettingsKey,pchValue,ref peError); + } + public bool GetBool(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + bool result = FnTable.GetBool(pchSection,pchSettingsKey,ref peError); + return result; + } + public int GetInt32(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + int result = FnTable.GetInt32(pchSection,pchSettingsKey,ref peError); + return result; + } + public float GetFloat(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + float result = FnTable.GetFloat(pchSection,pchSettingsKey,ref peError); + return result; + } + public void GetString(string pchSection,string pchSettingsKey,System.Text.StringBuilder pchValue,uint unValueLen,ref EVRSettingsError peError) + { + FnTable.GetString(pchSection,pchSettingsKey,pchValue,unValueLen,ref peError); + } + public void RemoveSection(string pchSection,ref EVRSettingsError peError) + { + FnTable.RemoveSection(pchSection,ref peError); + } + public void RemoveKeyInSection(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + FnTable.RemoveKeyInSection(pchSection,pchSettingsKey,ref peError); + } +} + + +public class CVRScreenshots +{ + IVRScreenshots FnTable; + internal CVRScreenshots(IntPtr pInterface) + { + FnTable = (IVRScreenshots)Marshal.PtrToStructure(pInterface, typeof(IVRScreenshots)); + } + public EVRScreenshotError RequestScreenshot(ref uint pOutScreenshotHandle,EVRScreenshotType type,string pchPreviewFilename,string pchVRFilename) + { + pOutScreenshotHandle = 0; + EVRScreenshotError result = FnTable.RequestScreenshot(ref pOutScreenshotHandle,type,pchPreviewFilename,pchVRFilename); + return result; + } + public EVRScreenshotError HookScreenshot(EVRScreenshotType [] pSupportedTypes) + { + EVRScreenshotError result = FnTable.HookScreenshot(pSupportedTypes,(int) pSupportedTypes.Length); + return result; + } + public EVRScreenshotType GetScreenshotPropertyType(uint screenshotHandle,ref EVRScreenshotError pError) + { + EVRScreenshotType result = FnTable.GetScreenshotPropertyType(screenshotHandle,ref pError); + return result; + } + public uint GetScreenshotPropertyFilename(uint screenshotHandle,EVRScreenshotPropertyFilenames filenameType,System.Text.StringBuilder pchFilename,uint cchFilename,ref EVRScreenshotError pError) + { + uint result = FnTable.GetScreenshotPropertyFilename(screenshotHandle,filenameType,pchFilename,cchFilename,ref pError); + return result; + } + public EVRScreenshotError UpdateScreenshotProgress(uint screenshotHandle,float flProgress) + { + EVRScreenshotError result = FnTable.UpdateScreenshotProgress(screenshotHandle,flProgress); + return result; + } + public EVRScreenshotError TakeStereoScreenshot(ref uint pOutScreenshotHandle,string pchPreviewFilename,string pchVRFilename) + { + pOutScreenshotHandle = 0; + EVRScreenshotError result = FnTable.TakeStereoScreenshot(ref pOutScreenshotHandle,pchPreviewFilename,pchVRFilename); + return result; + } + public EVRScreenshotError SubmitScreenshot(uint screenshotHandle,EVRScreenshotType type,string pchSourcePreviewFilename,string pchSourceVRFilename) + { + EVRScreenshotError result = FnTable.SubmitScreenshot(screenshotHandle,type,pchSourcePreviewFilename,pchSourceVRFilename); + return result; + } +} + + +public class CVRResources +{ + IVRResources FnTable; + internal CVRResources(IntPtr pInterface) + { + FnTable = (IVRResources)Marshal.PtrToStructure(pInterface, typeof(IVRResources)); + } + public uint LoadSharedResource(string pchResourceName,string pchBuffer,uint unBufferLen) + { + uint result = FnTable.LoadSharedResource(pchResourceName,pchBuffer,unBufferLen); + return result; + } + public uint GetResourceFullPath(string pchResourceName,string pchResourceTypeDirectory,System.Text.StringBuilder pchPathBuffer,uint unBufferLen) + { + uint result = FnTable.GetResourceFullPath(pchResourceName,pchResourceTypeDirectory,pchPathBuffer,unBufferLen); + return result; + } +} + + +public class CVRDriverManager +{ + IVRDriverManager FnTable; + internal CVRDriverManager(IntPtr pInterface) + { + FnTable = (IVRDriverManager)Marshal.PtrToStructure(pInterface, typeof(IVRDriverManager)); + } + public uint GetDriverCount() + { + uint result = FnTable.GetDriverCount(); + return result; + } + public uint GetDriverName(uint nDriver,System.Text.StringBuilder pchValue,uint unBufferSize) + { + uint result = FnTable.GetDriverName(nDriver,pchValue,unBufferSize); + return result; + } + public ulong GetDriverHandle(string pchDriverName) + { + ulong result = FnTable.GetDriverHandle(pchDriverName); + return result; + } +} + + +public class CVRInput +{ + IVRInput FnTable; + internal CVRInput(IntPtr pInterface) + { + FnTable = (IVRInput)Marshal.PtrToStructure(pInterface, typeof(IVRInput)); + } + public EVRInputError SetActionManifestPath(string pchActionManifestPath) + { + EVRInputError result = FnTable.SetActionManifestPath(pchActionManifestPath); + return result; + } + public EVRInputError GetActionSetHandle(string pchActionSetName,ref ulong pHandle) + { + pHandle = 0; + EVRInputError result = FnTable.GetActionSetHandle(pchActionSetName,ref pHandle); + return result; + } + public EVRInputError GetActionHandle(string pchActionName,ref ulong pHandle) + { + pHandle = 0; + EVRInputError result = FnTable.GetActionHandle(pchActionName,ref pHandle); + return result; + } + public EVRInputError GetInputSourceHandle(string pchInputSourcePath,ref ulong pHandle) + { + pHandle = 0; + EVRInputError result = FnTable.GetInputSourceHandle(pchInputSourcePath,ref pHandle); + return result; + } + public EVRInputError UpdateActionState(VRActiveActionSet_t [] pSets,uint unSizeOfVRSelectedActionSet_t) + { + EVRInputError result = FnTable.UpdateActionState(pSets,unSizeOfVRSelectedActionSet_t,(uint) pSets.Length); + return result; + } + public EVRInputError GetDigitalActionData(ulong action,ref InputDigitalActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.GetDigitalActionData(action,ref pActionData,unActionDataSize,ulRestrictToDevice); + return result; + } + public EVRInputError GetAnalogActionData(ulong action,ref InputAnalogActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.GetAnalogActionData(action,ref pActionData,unActionDataSize,ulRestrictToDevice); + return result; + } + public EVRInputError GetPoseActionData(ulong action,ETrackingUniverseOrigin eOrigin,float fPredictedSecondsFromNow,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.GetPoseActionData(action,eOrigin,fPredictedSecondsFromNow,ref pActionData,unActionDataSize,ulRestrictToDevice); + return result; + } + public EVRInputError GetSkeletalActionData(ulong action,ref InputSkeletalActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.GetSkeletalActionData(action,ref pActionData,unActionDataSize,ulRestrictToDevice); + return result; + } + public EVRInputError GetSkeletalBoneData(ulong action,EVRSkeletalTransformSpace eTransformSpace,EVRSkeletalMotionRange eMotionRange,VRBoneTransform_t [] pTransformArray,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.GetSkeletalBoneData(action,eTransformSpace,eMotionRange,pTransformArray,(uint) pTransformArray.Length,ulRestrictToDevice); + return result; + } + public EVRInputError GetSkeletalBoneDataCompressed(ulong action,EVRSkeletalTransformSpace eTransformSpace,EVRSkeletalMotionRange eMotionRange,IntPtr pvCompressedData,uint unCompressedSize,ref uint punRequiredCompressedSize,ulong ulRestrictToDevice) + { + punRequiredCompressedSize = 0; + EVRInputError result = FnTable.GetSkeletalBoneDataCompressed(action,eTransformSpace,eMotionRange,pvCompressedData,unCompressedSize,ref punRequiredCompressedSize,ulRestrictToDevice); + return result; + } + public EVRInputError DecompressSkeletalBoneData(IntPtr pvCompressedBuffer,uint unCompressedBufferSize,ref EVRSkeletalTransformSpace peTransformSpace,VRBoneTransform_t [] pTransformArray) + { + EVRInputError result = FnTable.DecompressSkeletalBoneData(pvCompressedBuffer,unCompressedBufferSize,ref peTransformSpace,pTransformArray,(uint) pTransformArray.Length); + return result; + } + public EVRInputError TriggerHapticVibrationAction(ulong action,float fStartSecondsFromNow,float fDurationSeconds,float fFrequency,float fAmplitude,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.TriggerHapticVibrationAction(action,fStartSecondsFromNow,fDurationSeconds,fFrequency,fAmplitude,ulRestrictToDevice); + return result; + } + public EVRInputError GetActionOrigins(ulong actionSetHandle,ulong digitalActionHandle,ulong [] originsOut) + { + EVRInputError result = FnTable.GetActionOrigins(actionSetHandle,digitalActionHandle,originsOut,(uint) originsOut.Length); + return result; + } + public EVRInputError GetOriginLocalizedName(ulong origin,System.Text.StringBuilder pchNameArray,uint unNameArraySize) + { + EVRInputError result = FnTable.GetOriginLocalizedName(origin,pchNameArray,unNameArraySize); + return result; + } + public EVRInputError GetOriginTrackedDeviceInfo(ulong origin,ref InputOriginInfo_t pOriginInfo,uint unOriginInfoSize) + { + EVRInputError result = FnTable.GetOriginTrackedDeviceInfo(origin,ref pOriginInfo,unOriginInfoSize); + return result; + } + public EVRInputError ShowActionOrigins(ulong actionSetHandle,ulong ulActionHandle) + { + EVRInputError result = FnTable.ShowActionOrigins(actionSetHandle,ulActionHandle); + return result; + } + public EVRInputError ShowBindingsForActionSet(VRActiveActionSet_t [] pSets,uint unSizeOfVRSelectedActionSet_t,ulong originToHighlight) + { + EVRInputError result = FnTable.ShowBindingsForActionSet(pSets,unSizeOfVRSelectedActionSet_t,(uint) pSets.Length,originToHighlight); + return result; + } +} + + +public class CVRIOBuffer +{ + IVRIOBuffer FnTable; + internal CVRIOBuffer(IntPtr pInterface) + { + FnTable = (IVRIOBuffer)Marshal.PtrToStructure(pInterface, typeof(IVRIOBuffer)); + } + public EIOBufferError Open(string pchPath,EIOBufferMode mode,uint unElementSize,uint unElements,ref ulong pulBuffer) + { + pulBuffer = 0; + EIOBufferError result = FnTable.Open(pchPath,mode,unElementSize,unElements,ref pulBuffer); + return result; + } + public EIOBufferError Close(ulong ulBuffer) + { + EIOBufferError result = FnTable.Close(ulBuffer); + return result; + } + public EIOBufferError Read(ulong ulBuffer,IntPtr pDst,uint unBytes,ref uint punRead) + { + punRead = 0; + EIOBufferError result = FnTable.Read(ulBuffer,pDst,unBytes,ref punRead); + return result; + } + public EIOBufferError Write(ulong ulBuffer,IntPtr pSrc,uint unBytes) + { + EIOBufferError result = FnTable.Write(ulBuffer,pSrc,unBytes); + return result; + } + public ulong PropertyContainer(ulong ulBuffer) + { + ulong result = FnTable.PropertyContainer(ulBuffer); + return result; + } +} + + +public class CVRSpatialAnchors +{ + IVRSpatialAnchors FnTable; + internal CVRSpatialAnchors(IntPtr pInterface) + { + FnTable = (IVRSpatialAnchors)Marshal.PtrToStructure(pInterface, typeof(IVRSpatialAnchors)); + } + public EVRSpatialAnchorError CreateSpatialAnchorFromDescriptor(string pchDescriptor,ref uint pHandleOut) + { + pHandleOut = 0; + EVRSpatialAnchorError result = FnTable.CreateSpatialAnchorFromDescriptor(pchDescriptor,ref pHandleOut); + return result; + } + public EVRSpatialAnchorError CreateSpatialAnchorFromPose(uint unDeviceIndex,ETrackingUniverseOrigin eOrigin,ref SpatialAnchorPose_t pPose,ref uint pHandleOut) + { + pHandleOut = 0; + EVRSpatialAnchorError result = FnTable.CreateSpatialAnchorFromPose(unDeviceIndex,eOrigin,ref pPose,ref pHandleOut); + return result; + } + public EVRSpatialAnchorError GetSpatialAnchorPose(uint unHandle,ETrackingUniverseOrigin eOrigin,ref SpatialAnchorPose_t pPoseOut) + { + EVRSpatialAnchorError result = FnTable.GetSpatialAnchorPose(unHandle,eOrigin,ref pPoseOut); + return result; + } + public EVRSpatialAnchorError GetSpatialAnchorDescriptor(uint unHandle,System.Text.StringBuilder pchDescriptorOut,ref uint punDescriptorBufferLenInOut) + { + punDescriptorBufferLenInOut = 0; + EVRSpatialAnchorError result = FnTable.GetSpatialAnchorDescriptor(unHandle,pchDescriptorOut,ref punDescriptorBufferLenInOut); + return result; + } +} + + +public class OpenVRInterop +{ + [DllImportAttribute("openvr_api", EntryPoint = "VR_InitInternal", CallingConvention = CallingConvention.Cdecl)] + internal static extern uint InitInternal(ref EVRInitError peError, EVRApplicationType eApplicationType); + [DllImportAttribute("openvr_api", EntryPoint = "VR_InitInternal2", CallingConvention = CallingConvention.Cdecl)] + internal static extern uint InitInternal2(ref EVRInitError peError, EVRApplicationType eApplicationType,[In, MarshalAs(UnmanagedType.LPStr)] string pStartupInfo); + [DllImportAttribute("openvr_api", EntryPoint = "VR_ShutdownInternal", CallingConvention = CallingConvention.Cdecl)] + internal static extern void ShutdownInternal(); + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsHmdPresent", CallingConvention = CallingConvention.Cdecl)] + internal static extern bool IsHmdPresent(); + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsRuntimeInstalled", CallingConvention = CallingConvention.Cdecl)] + internal static extern bool IsRuntimeInstalled(); + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetStringForHmdError", CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr GetStringForHmdError(EVRInitError error); + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetGenericInterface", CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr GetGenericInterface([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion, ref EVRInitError peError); + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsInterfaceVersionValid", CallingConvention = CallingConvention.Cdecl)] + internal static extern bool IsInterfaceVersionValid([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion); + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetInitToken", CallingConvention = CallingConvention.Cdecl)] + internal static extern uint GetInitToken(); +} + + +public enum EVREye +{ + Eye_Left = 0, + Eye_Right = 1, +} +public enum ETextureType +{ + Invalid = -1, + DirectX = 0, + OpenGL = 1, + Vulkan = 2, + IOSurface = 3, + DirectX12 = 4, + DXGISharedHandle = 5, + Metal = 6, +} +public enum EColorSpace +{ + Auto = 0, + Gamma = 1, + Linear = 2, +} +public enum ETrackingResult +{ + Uninitialized = 1, + Calibrating_InProgress = 100, + Calibrating_OutOfRange = 101, + Running_OK = 200, + Running_OutOfRange = 201, +} +public enum ETrackedDeviceClass +{ + Invalid = 0, + HMD = 1, + Controller = 2, + GenericTracker = 3, + TrackingReference = 4, + DisplayRedirect = 5, + Max = 6, +} +public enum ETrackedControllerRole +{ + Invalid = 0, + LeftHand = 1, + RightHand = 2, + OptOut = 3, + Max = 4, +} +public enum ETrackingUniverseOrigin +{ + TrackingUniverseSeated = 0, + TrackingUniverseStanding = 1, + TrackingUniverseRawAndUncalibrated = 2, +} +public enum ETrackedDeviceProperty +{ + Prop_Invalid = 0, + Prop_TrackingSystemName_String = 1000, + Prop_ModelNumber_String = 1001, + Prop_SerialNumber_String = 1002, + Prop_RenderModelName_String = 1003, + Prop_WillDriftInYaw_Bool = 1004, + Prop_ManufacturerName_String = 1005, + Prop_TrackingFirmwareVersion_String = 1006, + Prop_HardwareRevision_String = 1007, + Prop_AllWirelessDongleDescriptions_String = 1008, + Prop_ConnectedWirelessDongle_String = 1009, + Prop_DeviceIsWireless_Bool = 1010, + Prop_DeviceIsCharging_Bool = 1011, + Prop_DeviceBatteryPercentage_Float = 1012, + Prop_StatusDisplayTransform_Matrix34 = 1013, + Prop_Firmware_UpdateAvailable_Bool = 1014, + Prop_Firmware_ManualUpdate_Bool = 1015, + Prop_Firmware_ManualUpdateURL_String = 1016, + Prop_HardwareRevision_Uint64 = 1017, + Prop_FirmwareVersion_Uint64 = 1018, + Prop_FPGAVersion_Uint64 = 1019, + Prop_VRCVersion_Uint64 = 1020, + Prop_RadioVersion_Uint64 = 1021, + Prop_DongleVersion_Uint64 = 1022, + Prop_BlockServerShutdown_Bool = 1023, + Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, + Prop_ContainsProximitySensor_Bool = 1025, + Prop_DeviceProvidesBatteryStatus_Bool = 1026, + Prop_DeviceCanPowerOff_Bool = 1027, + Prop_Firmware_ProgrammingTarget_String = 1028, + Prop_DeviceClass_Int32 = 1029, + Prop_HasCamera_Bool = 1030, + Prop_DriverVersion_String = 1031, + Prop_Firmware_ForceUpdateRequired_Bool = 1032, + Prop_ViveSystemButtonFixRequired_Bool = 1033, + Prop_ParentDriver_Uint64 = 1034, + Prop_ResourceRoot_String = 1035, + Prop_RegisteredDeviceType_String = 1036, + Prop_InputProfilePath_String = 1037, + Prop_NeverTracked_Bool = 1038, + Prop_NumCameras_Int32 = 1039, + Prop_CameraFrameLayout_Int32 = 1040, + Prop_ReportsTimeSinceVSync_Bool = 2000, + Prop_SecondsFromVsyncToPhotons_Float = 2001, + Prop_DisplayFrequency_Float = 2002, + Prop_UserIpdMeters_Float = 2003, + Prop_CurrentUniverseId_Uint64 = 2004, + Prop_PreviousUniverseId_Uint64 = 2005, + Prop_DisplayFirmwareVersion_Uint64 = 2006, + Prop_IsOnDesktop_Bool = 2007, + Prop_DisplayMCType_Int32 = 2008, + Prop_DisplayMCOffset_Float = 2009, + Prop_DisplayMCScale_Float = 2010, + Prop_EdidVendorID_Int32 = 2011, + Prop_DisplayMCImageLeft_String = 2012, + Prop_DisplayMCImageRight_String = 2013, + Prop_DisplayGCBlackClamp_Float = 2014, + Prop_EdidProductID_Int32 = 2015, + Prop_CameraToHeadTransform_Matrix34 = 2016, + Prop_DisplayGCType_Int32 = 2017, + Prop_DisplayGCOffset_Float = 2018, + Prop_DisplayGCScale_Float = 2019, + Prop_DisplayGCPrescale_Float = 2020, + Prop_DisplayGCImage_String = 2021, + Prop_LensCenterLeftU_Float = 2022, + Prop_LensCenterLeftV_Float = 2023, + Prop_LensCenterRightU_Float = 2024, + Prop_LensCenterRightV_Float = 2025, + Prop_UserHeadToEyeDepthMeters_Float = 2026, + Prop_CameraFirmwareVersion_Uint64 = 2027, + Prop_CameraFirmwareDescription_String = 2028, + Prop_DisplayFPGAVersion_Uint64 = 2029, + Prop_DisplayBootloaderVersion_Uint64 = 2030, + Prop_DisplayHardwareVersion_Uint64 = 2031, + Prop_AudioFirmwareVersion_Uint64 = 2032, + Prop_CameraCompatibilityMode_Int32 = 2033, + Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, + Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, + Prop_DisplaySuppressed_Bool = 2036, + Prop_DisplayAllowNightMode_Bool = 2037, + Prop_DisplayMCImageWidth_Int32 = 2038, + Prop_DisplayMCImageHeight_Int32 = 2039, + Prop_DisplayMCImageNumChannels_Int32 = 2040, + Prop_DisplayMCImageData_Binary = 2041, + Prop_SecondsFromPhotonsToVblank_Float = 2042, + Prop_DriverDirectModeSendsVsyncEvents_Bool = 2043, + Prop_DisplayDebugMode_Bool = 2044, + Prop_GraphicsAdapterLuid_Uint64 = 2045, + Prop_DriverProvidedChaperonePath_String = 2048, + Prop_ExpectedTrackingReferenceCount_Int32 = 2049, + Prop_ExpectedControllerCount_Int32 = 2050, + Prop_NamedIconPathControllerLeftDeviceOff_String = 2051, + Prop_NamedIconPathControllerRightDeviceOff_String = 2052, + Prop_NamedIconPathTrackingReferenceDeviceOff_String = 2053, + Prop_DoNotApplyPrediction_Bool = 2054, + Prop_CameraToHeadTransforms_Matrix34_Array = 2055, + Prop_DistortionMeshResolution_Int32 = 2056, + Prop_DriverIsDrawingControllers_Bool = 2057, + Prop_DriverRequestsApplicationPause_Bool = 2058, + Prop_DriverRequestsReducedRendering_Bool = 2059, + Prop_MinimumIpdStepMeters_Float = 2060, + Prop_AudioBridgeFirmwareVersion_Uint64 = 2061, + Prop_ImageBridgeFirmwareVersion_Uint64 = 2062, + Prop_ImuToHeadTransform_Matrix34 = 2063, + Prop_ImuFactoryGyroBias_Vector3 = 2064, + Prop_ImuFactoryGyroScale_Vector3 = 2065, + Prop_ImuFactoryAccelerometerBias_Vector3 = 2066, + Prop_ImuFactoryAccelerometerScale_Vector3 = 2067, + Prop_ConfigurationIncludesLighthouse20Features_Bool = 2069, + Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, + Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, + Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, + Prop_DriverRequestedMuraFeather_InnerTop_Int32 = 2203, + Prop_DriverRequestedMuraFeather_InnerBottom_Int32 = 2204, + Prop_DriverRequestedMuraFeather_OuterLeft_Int32 = 2205, + Prop_DriverRequestedMuraFeather_OuterRight_Int32 = 2206, + Prop_DriverRequestedMuraFeather_OuterTop_Int32 = 2207, + Prop_DriverRequestedMuraFeather_OuterBottom_Int32 = 2208, + Prop_AttachedDeviceId_String = 3000, + Prop_SupportedButtons_Uint64 = 3001, + Prop_Axis0Type_Int32 = 3002, + Prop_Axis1Type_Int32 = 3003, + Prop_Axis2Type_Int32 = 3004, + Prop_Axis3Type_Int32 = 3005, + Prop_Axis4Type_Int32 = 3006, + Prop_ControllerRoleHint_Int32 = 3007, + Prop_FieldOfViewLeftDegrees_Float = 4000, + Prop_FieldOfViewRightDegrees_Float = 4001, + Prop_FieldOfViewTopDegrees_Float = 4002, + Prop_FieldOfViewBottomDegrees_Float = 4003, + Prop_TrackingRangeMinimumMeters_Float = 4004, + Prop_TrackingRangeMaximumMeters_Float = 4005, + Prop_ModeLabel_String = 4006, + Prop_IconPathName_String = 5000, + Prop_NamedIconPathDeviceOff_String = 5001, + Prop_NamedIconPathDeviceSearching_String = 5002, + Prop_NamedIconPathDeviceSearchingAlert_String = 5003, + Prop_NamedIconPathDeviceReady_String = 5004, + Prop_NamedIconPathDeviceReadyAlert_String = 5005, + Prop_NamedIconPathDeviceNotReady_String = 5006, + Prop_NamedIconPathDeviceStandby_String = 5007, + Prop_NamedIconPathDeviceAlertLow_String = 5008, + Prop_DisplayHiddenArea_Binary_Start = 5100, + Prop_DisplayHiddenArea_Binary_End = 5150, + Prop_ParentContainer = 5151, + Prop_UserConfigPath_String = 6000, + Prop_InstallPath_String = 6001, + Prop_HasDisplayComponent_Bool = 6002, + Prop_HasControllerComponent_Bool = 6003, + Prop_HasCameraComponent_Bool = 6004, + Prop_HasDriverDirectModeComponent_Bool = 6005, + Prop_HasVirtualDisplayComponent_Bool = 6006, + Prop_HasSpatialAnchorsSupport_Bool = 6007, + Prop_ControllerType_String = 7000, + Prop_LegacyInputProfile_String = 7001, + Prop_VendorSpecific_Reserved_Start = 10000, + Prop_VendorSpecific_Reserved_End = 10999, + Prop_TrackedDeviceProperty_Max = 1000000, +} +public enum ETrackedPropertyError +{ + TrackedProp_Success = 0, + TrackedProp_WrongDataType = 1, + TrackedProp_WrongDeviceClass = 2, + TrackedProp_BufferTooSmall = 3, + TrackedProp_UnknownProperty = 4, + TrackedProp_InvalidDevice = 5, + TrackedProp_CouldNotContactServer = 6, + TrackedProp_ValueNotProvidedByDevice = 7, + TrackedProp_StringExceedsMaximumLength = 8, + TrackedProp_NotYetAvailable = 9, + TrackedProp_PermissionDenied = 10, + TrackedProp_InvalidOperation = 11, + TrackedProp_CannotWriteToWildcards = 12, +} +public enum EVRSubmitFlags +{ + Submit_Default = 0, + Submit_LensDistortionAlreadyApplied = 1, + Submit_GlRenderBuffer = 2, + Submit_Reserved = 4, + Submit_TextureWithPose = 8, + Submit_TextureWithDepth = 16, +} +public enum EVRState +{ + Undefined = -1, + Off = 0, + Searching = 1, + Searching_Alert = 2, + Ready = 3, + Ready_Alert = 4, + NotReady = 5, + Standby = 6, + Ready_Alert_Low = 7, +} +public enum EVREventType +{ + VREvent_None = 0, + VREvent_TrackedDeviceActivated = 100, + VREvent_TrackedDeviceDeactivated = 101, + VREvent_TrackedDeviceUpdated = 102, + VREvent_TrackedDeviceUserInteractionStarted = 103, + VREvent_TrackedDeviceUserInteractionEnded = 104, + VREvent_IpdChanged = 105, + VREvent_EnterStandbyMode = 106, + VREvent_LeaveStandbyMode = 107, + VREvent_TrackedDeviceRoleChanged = 108, + VREvent_WatchdogWakeUpRequested = 109, + VREvent_LensDistortionChanged = 110, + VREvent_PropertyChanged = 111, + VREvent_WirelessDisconnect = 112, + VREvent_WirelessReconnect = 113, + VREvent_ButtonPress = 200, + VREvent_ButtonUnpress = 201, + VREvent_ButtonTouch = 202, + VREvent_ButtonUntouch = 203, + VREvent_DualAnalog_Press = 250, + VREvent_DualAnalog_Unpress = 251, + VREvent_DualAnalog_Touch = 252, + VREvent_DualAnalog_Untouch = 253, + VREvent_DualAnalog_Move = 254, + VREvent_DualAnalog_ModeSwitch1 = 255, + VREvent_DualAnalog_ModeSwitch2 = 256, + VREvent_DualAnalog_Cancel = 257, + VREvent_MouseMove = 300, + VREvent_MouseButtonDown = 301, + VREvent_MouseButtonUp = 302, + VREvent_FocusEnter = 303, + VREvent_FocusLeave = 304, + VREvent_Scroll = 305, + VREvent_TouchPadMove = 306, + VREvent_OverlayFocusChanged = 307, + VREvent_InputFocusCaptured = 400, + VREvent_InputFocusReleased = 401, + VREvent_SceneFocusLost = 402, + VREvent_SceneFocusGained = 403, + VREvent_SceneApplicationChanged = 404, + VREvent_SceneFocusChanged = 405, + VREvent_InputFocusChanged = 406, + VREvent_SceneApplicationSecondaryRenderingStarted = 407, + VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, + VREvent_ActionBindingReloaded = 409, + VREvent_HideRenderModels = 410, + VREvent_ShowRenderModels = 411, + VREvent_ConsoleOpened = 420, + VREvent_ConsoleClosed = 421, + VREvent_OverlayShown = 500, + VREvent_OverlayHidden = 501, + VREvent_DashboardActivated = 502, + VREvent_DashboardDeactivated = 503, + VREvent_DashboardThumbSelected = 504, + VREvent_DashboardRequested = 505, + VREvent_ResetDashboard = 506, + VREvent_RenderToast = 507, + VREvent_ImageLoaded = 508, + VREvent_ShowKeyboard = 509, + VREvent_HideKeyboard = 510, + VREvent_OverlayGamepadFocusGained = 511, + VREvent_OverlayGamepadFocusLost = 512, + VREvent_OverlaySharedTextureChanged = 513, + VREvent_ScreenshotTriggered = 516, + VREvent_ImageFailed = 517, + VREvent_DashboardOverlayCreated = 518, + VREvent_SwitchGamepadFocus = 519, + VREvent_RequestScreenshot = 520, + VREvent_ScreenshotTaken = 521, + VREvent_ScreenshotFailed = 522, + VREvent_SubmitScreenshotToDashboard = 523, + VREvent_ScreenshotProgressToDashboard = 524, + VREvent_PrimaryDashboardDeviceChanged = 525, + VREvent_RoomViewShown = 526, + VREvent_RoomViewHidden = 527, + VREvent_Notification_Shown = 600, + VREvent_Notification_Hidden = 601, + VREvent_Notification_BeginInteraction = 602, + VREvent_Notification_Destroyed = 603, + VREvent_Quit = 700, + VREvent_ProcessQuit = 701, + VREvent_QuitAborted_UserPrompt = 702, + VREvent_QuitAcknowledged = 703, + VREvent_DriverRequestedQuit = 704, + VREvent_ChaperoneDataHasChanged = 800, + VREvent_ChaperoneUniverseHasChanged = 801, + VREvent_ChaperoneTempDataHasChanged = 802, + VREvent_ChaperoneSettingsHaveChanged = 803, + VREvent_SeatedZeroPoseReset = 804, + VREvent_AudioSettingsHaveChanged = 820, + VREvent_BackgroundSettingHasChanged = 850, + VREvent_CameraSettingsHaveChanged = 851, + VREvent_ReprojectionSettingHasChanged = 852, + VREvent_ModelSkinSettingsHaveChanged = 853, + VREvent_EnvironmentSettingsHaveChanged = 854, + VREvent_PowerSettingsHaveChanged = 855, + VREvent_EnableHomeAppSettingsHaveChanged = 856, + VREvent_SteamVRSectionSettingChanged = 857, + VREvent_LighthouseSectionSettingChanged = 858, + VREvent_NullSectionSettingChanged = 859, + VREvent_UserInterfaceSectionSettingChanged = 860, + VREvent_NotificationsSectionSettingChanged = 861, + VREvent_KeyboardSectionSettingChanged = 862, + VREvent_PerfSectionSettingChanged = 863, + VREvent_DashboardSectionSettingChanged = 864, + VREvent_WebInterfaceSectionSettingChanged = 865, + VREvent_TrackersSectionSettingChanged = 866, + VREvent_StatusUpdate = 900, + VREvent_WebInterface_InstallDriverCompleted = 950, + VREvent_MCImageUpdated = 1000, + VREvent_FirmwareUpdateStarted = 1100, + VREvent_FirmwareUpdateFinished = 1101, + VREvent_KeyboardClosed = 1200, + VREvent_KeyboardCharInput = 1201, + VREvent_KeyboardDone = 1202, + VREvent_ApplicationTransitionStarted = 1300, + VREvent_ApplicationTransitionAborted = 1301, + VREvent_ApplicationTransitionNewAppStarted = 1302, + VREvent_ApplicationListUpdated = 1303, + VREvent_ApplicationMimeTypeLoad = 1304, + VREvent_ApplicationTransitionNewAppLaunchComplete = 1305, + VREvent_ProcessConnected = 1306, + VREvent_ProcessDisconnected = 1307, + VREvent_Compositor_MirrorWindowShown = 1400, + VREvent_Compositor_MirrorWindowHidden = 1401, + VREvent_Compositor_ChaperoneBoundsShown = 1410, + VREvent_Compositor_ChaperoneBoundsHidden = 1411, + VREvent_TrackedCamera_StartVideoStream = 1500, + VREvent_TrackedCamera_StopVideoStream = 1501, + VREvent_TrackedCamera_PauseVideoStream = 1502, + VREvent_TrackedCamera_ResumeVideoStream = 1503, + VREvent_TrackedCamera_EditingSurface = 1550, + VREvent_PerformanceTest_EnableCapture = 1600, + VREvent_PerformanceTest_DisableCapture = 1601, + VREvent_PerformanceTest_FidelityLevel = 1602, + VREvent_MessageOverlay_Closed = 1650, + VREvent_MessageOverlayCloseRequested = 1651, + VREvent_Input_HapticVibration = 1700, + VREvent_Input_BindingLoadFailed = 1701, + VREvent_Input_BindingLoadSuccessful = 1702, + VREvent_Input_ActionManifestReloaded = 1703, + VREvent_Input_ActionManifestLoadFailed = 1704, + VREvent_SpatialAnchors_PoseUpdated = 1800, + VREvent_SpatialAnchors_DescriptorUpdated = 1801, + VREvent_SpatialAnchors_RequestPoseUpdate = 1802, + VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803, + VREvent_VendorSpecific_Reserved_Start = 10000, + VREvent_VendorSpecific_Reserved_End = 19999, +} +public enum EDeviceActivityLevel +{ + k_EDeviceActivityLevel_Unknown = -1, + k_EDeviceActivityLevel_Idle = 0, + k_EDeviceActivityLevel_UserInteraction = 1, + k_EDeviceActivityLevel_UserInteraction_Timeout = 2, + k_EDeviceActivityLevel_Standby = 3, +} +public enum EVRButtonId +{ + k_EButton_System = 0, + k_EButton_ApplicationMenu = 1, + k_EButton_Grip = 2, + k_EButton_DPad_Left = 3, + k_EButton_DPad_Up = 4, + k_EButton_DPad_Right = 5, + k_EButton_DPad_Down = 6, + k_EButton_A = 7, + k_EButton_ProximitySensor = 31, + k_EButton_Axis0 = 32, + k_EButton_Axis1 = 33, + k_EButton_Axis2 = 34, + k_EButton_Axis3 = 35, + k_EButton_Axis4 = 36, + k_EButton_SteamVR_Touchpad = 32, + k_EButton_SteamVR_Trigger = 33, + k_EButton_Dashboard_Back = 2, + k_EButton_Knuckles_A = 2, + k_EButton_Knuckles_B = 1, + k_EButton_Knuckles_JoyStick = 35, + k_EButton_Max = 64, +} +public enum EVRMouseButton +{ + Left = 1, + Right = 2, + Middle = 4, +} +public enum EDualAnalogWhich +{ + k_EDualAnalog_Left = 0, + k_EDualAnalog_Right = 1, +} +public enum EVRInputError +{ + None = 0, + NameNotFound = 1, + WrongType = 2, + InvalidHandle = 3, + InvalidParam = 4, + NoSteam = 5, + MaxCapacityReached = 6, + IPCError = 7, + NoActiveActionSet = 8, + InvalidDevice = 9, + InvalidSkeleton = 10, + InvalidBoneCount = 11, + InvalidCompressedData = 12, + NoData = 13, + BufferTooSmall = 14, + MismatchedActionManifest = 15, + MissingSkeletonData = 16, +} +public enum EVRSpatialAnchorError +{ + Success = 0, + Internal = 1, + UnknownHandle = 2, + ArrayTooSmall = 3, + InvalidDescriptorChar = 4, + NotYetAvailable = 5, + NotAvailableInThisUniverse = 6, + PermanentlyUnavailable = 7, + WrongDriver = 8, + DescriptorTooLong = 9, + Unknown = 10, + NoRoomCalibration = 11, + InvalidArgument = 12, + UnknownDriver = 13, +} +public enum EHiddenAreaMeshType +{ + k_eHiddenAreaMesh_Standard = 0, + k_eHiddenAreaMesh_Inverse = 1, + k_eHiddenAreaMesh_LineLoop = 2, + k_eHiddenAreaMesh_Max = 3, +} +public enum EVRControllerAxisType +{ + k_eControllerAxis_None = 0, + k_eControllerAxis_TrackPad = 1, + k_eControllerAxis_Joystick = 2, + k_eControllerAxis_Trigger = 3, +} +public enum EVRControllerEventOutputType +{ + ControllerEventOutput_OSEvents = 0, + ControllerEventOutput_VREvents = 1, +} +public enum ECollisionBoundsStyle +{ + COLLISION_BOUNDS_STYLE_BEGINNER = 0, + COLLISION_BOUNDS_STYLE_INTERMEDIATE = 1, + COLLISION_BOUNDS_STYLE_SQUARES = 2, + COLLISION_BOUNDS_STYLE_ADVANCED = 3, + COLLISION_BOUNDS_STYLE_NONE = 4, + COLLISION_BOUNDS_STYLE_COUNT = 5, +} +public enum EVROverlayError +{ + None = 0, + UnknownOverlay = 10, + InvalidHandle = 11, + PermissionDenied = 12, + OverlayLimitExceeded = 13, + WrongVisibilityType = 14, + KeyTooLong = 15, + NameTooLong = 16, + KeyInUse = 17, + WrongTransformType = 18, + InvalidTrackedDevice = 19, + InvalidParameter = 20, + ThumbnailCantBeDestroyed = 21, + ArrayTooSmall = 22, + RequestFailed = 23, + InvalidTexture = 24, + UnableToLoadFile = 25, + KeyboardAlreadyInUse = 26, + NoNeighbor = 27, + TooManyMaskPrimitives = 29, + BadMaskPrimitive = 30, + TextureAlreadyLocked = 31, + TextureLockCapacityReached = 32, + TextureNotLocked = 33, +} +public enum EVRApplicationType +{ + VRApplication_Other = 0, + VRApplication_Scene = 1, + VRApplication_Overlay = 2, + VRApplication_Background = 3, + VRApplication_Utility = 4, + VRApplication_VRMonitor = 5, + VRApplication_SteamWatchdog = 6, + VRApplication_Bootstrapper = 7, + VRApplication_Max = 8, +} +public enum EVRFirmwareError +{ + None = 0, + Success = 1, + Fail = 2, +} +public enum EVRNotificationError +{ + OK = 0, + InvalidNotificationId = 100, + NotificationQueueFull = 101, + InvalidOverlayHandle = 102, + SystemWithUserValueAlreadyExists = 103, +} +public enum EVRSkeletalMotionRange +{ + WithController = 0, + WithoutController = 1, +} +public enum EVRInitError +{ + None = 0, + Unknown = 1, + Init_InstallationNotFound = 100, + Init_InstallationCorrupt = 101, + Init_VRClientDLLNotFound = 102, + Init_FileNotFound = 103, + Init_FactoryNotFound = 104, + Init_InterfaceNotFound = 105, + Init_InvalidInterface = 106, + Init_UserConfigDirectoryInvalid = 107, + Init_HmdNotFound = 108, + Init_NotInitialized = 109, + Init_PathRegistryNotFound = 110, + Init_NoConfigPath = 111, + Init_NoLogPath = 112, + Init_PathRegistryNotWritable = 113, + Init_AppInfoInitFailed = 114, + Init_Retry = 115, + Init_InitCanceledByUser = 116, + Init_AnotherAppLaunching = 117, + Init_SettingsInitFailed = 118, + Init_ShuttingDown = 119, + Init_TooManyObjects = 120, + Init_NoServerForBackgroundApp = 121, + Init_NotSupportedWithCompositor = 122, + Init_NotAvailableToUtilityApps = 123, + Init_Internal = 124, + Init_HmdDriverIdIsNone = 125, + Init_HmdNotFoundPresenceFailed = 126, + Init_VRMonitorNotFound = 127, + Init_VRMonitorStartupFailed = 128, + Init_LowPowerWatchdogNotSupported = 129, + Init_InvalidApplicationType = 130, + Init_NotAvailableToWatchdogApps = 131, + Init_WatchdogDisabledInSettings = 132, + Init_VRDashboardNotFound = 133, + Init_VRDashboardStartupFailed = 134, + Init_VRHomeNotFound = 135, + Init_VRHomeStartupFailed = 136, + Init_RebootingBusy = 137, + Init_FirmwareUpdateBusy = 138, + Init_FirmwareRecoveryBusy = 139, + Init_USBServiceBusy = 140, + Init_VRWebHelperStartupFailed = 141, + Init_TrackerManagerInitFailed = 142, + Driver_Failed = 200, + Driver_Unknown = 201, + Driver_HmdUnknown = 202, + Driver_NotLoaded = 203, + Driver_RuntimeOutOfDate = 204, + Driver_HmdInUse = 205, + Driver_NotCalibrated = 206, + Driver_CalibrationInvalid = 207, + Driver_HmdDisplayNotFound = 208, + Driver_TrackedDeviceInterfaceUnknown = 209, + Driver_HmdDriverIdOutOfBounds = 211, + Driver_HmdDisplayMirrored = 212, + IPC_ServerInitFailed = 300, + IPC_ConnectFailed = 301, + IPC_SharedStateInitFailed = 302, + IPC_CompositorInitFailed = 303, + IPC_MutexInitFailed = 304, + IPC_Failed = 305, + IPC_CompositorConnectFailed = 306, + IPC_CompositorInvalidConnectResponse = 307, + IPC_ConnectFailedAfterMultipleAttempts = 308, + Compositor_Failed = 400, + Compositor_D3D11HardwareRequired = 401, + Compositor_FirmwareRequiresUpdate = 402, + Compositor_OverlayInitFailed = 403, + Compositor_ScreenshotsInitFailed = 404, + Compositor_UnableToCreateDevice = 405, + VendorSpecific_UnableToConnectToOculusRuntime = 1000, + VendorSpecific_WindowsNotInDevMode = 1001, + VendorSpecific_HmdFound_CantOpenDevice = 1101, + VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, + VendorSpecific_HmdFound_NoStoredConfig = 1103, + VendorSpecific_HmdFound_ConfigTooBig = 1104, + VendorSpecific_HmdFound_ConfigTooSmall = 1105, + VendorSpecific_HmdFound_UnableToInitZLib = 1106, + VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107, + VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108, + VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109, + VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110, + VendorSpecific_HmdFound_UserDataAddressRange = 1111, + VendorSpecific_HmdFound_UserDataError = 1112, + VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, + Steam_SteamInstallationNotFound = 2000, +} +public enum EVRScreenshotType +{ + None = 0, + Mono = 1, + Stereo = 2, + Cubemap = 3, + MonoPanorama = 4, + StereoPanorama = 5, +} +public enum EVRScreenshotPropertyFilenames +{ + Preview = 0, + VR = 1, +} +public enum EVRTrackedCameraError +{ + None = 0, + OperationFailed = 100, + InvalidHandle = 101, + InvalidFrameHeaderVersion = 102, + OutOfHandles = 103, + IPCFailure = 104, + NotSupportedForThisDevice = 105, + SharedMemoryFailure = 106, + FrameBufferingFailure = 107, + StreamSetupFailure = 108, + InvalidGLTextureId = 109, + InvalidSharedTextureHandle = 110, + FailedToGetGLTextureId = 111, + SharedTextureFailure = 112, + NoFrameAvailable = 113, + InvalidArgument = 114, + InvalidFrameBufferSize = 115, +} +public enum EVRTrackedCameraFrameLayout +{ + Mono = 1, + Stereo = 2, + VerticalLayout = 16, + HorizontalLayout = 32, +} +public enum EVRTrackedCameraFrameType +{ + Distorted = 0, + Undistorted = 1, + MaximumUndistorted = 2, + MAX_CAMERA_FRAME_TYPES = 3, +} +public enum EVSync +{ + None = 0, + WaitRender = 1, + NoWaitRender = 2, +} +public enum EVRMuraCorrectionMode +{ + Default = 0, + NoCorrection = 1, +} +public enum Imu_OffScaleFlags +{ + OffScale_AccelX = 1, + OffScale_AccelY = 2, + OffScale_AccelZ = 4, + OffScale_GyroX = 8, + OffScale_GyroY = 16, + OffScale_GyroZ = 32, +} +public enum EVRApplicationError +{ + None = 0, + AppKeyAlreadyExists = 100, + NoManifest = 101, + NoApplication = 102, + InvalidIndex = 103, + UnknownApplication = 104, + IPCFailed = 105, + ApplicationAlreadyRunning = 106, + InvalidManifest = 107, + InvalidApplication = 108, + LaunchFailed = 109, + ApplicationAlreadyStarting = 110, + LaunchInProgress = 111, + OldApplicationQuitting = 112, + TransitionAborted = 113, + IsTemplate = 114, + SteamVRIsExiting = 115, + BufferTooSmall = 200, + PropertyNotSet = 201, + UnknownProperty = 202, + InvalidParameter = 203, +} +public enum EVRApplicationProperty +{ + Name_String = 0, + LaunchType_String = 11, + WorkingDirectory_String = 12, + BinaryPath_String = 13, + Arguments_String = 14, + URL_String = 15, + Description_String = 50, + NewsURL_String = 51, + ImagePath_String = 52, + Source_String = 53, + ActionManifestURL_String = 54, + IsDashboardOverlay_Bool = 60, + IsTemplate_Bool = 61, + IsInstanced_Bool = 62, + IsInternal_Bool = 63, + WantsCompositorPauseInStandby_Bool = 64, + LastLaunchTime_Uint64 = 70, +} +public enum EVRApplicationTransitionState +{ + VRApplicationTransition_None = 0, + VRApplicationTransition_OldAppQuitSent = 10, + VRApplicationTransition_WaitingForExternalLaunch = 11, + VRApplicationTransition_NewAppLaunched = 20, +} +public enum ChaperoneCalibrationState +{ + OK = 1, + Warning = 100, + Warning_BaseStationMayHaveMoved = 101, + Warning_BaseStationRemoved = 102, + Warning_SeatedBoundsInvalid = 103, + Error = 200, + Error_BaseStationUninitialized = 201, + Error_BaseStationConflict = 202, + Error_PlayAreaInvalid = 203, + Error_CollisionBoundsInvalid = 204, +} +public enum EChaperoneConfigFile +{ + Live = 1, + Temp = 2, +} +public enum EChaperoneImportFlags +{ + EChaperoneImport_BoundsOnly = 1, +} +public enum EVRCompositorError +{ + None = 0, + RequestFailed = 1, + IncompatibleVersion = 100, + DoNotHaveFocus = 101, + InvalidTexture = 102, + IsNotSceneApplication = 103, + TextureIsOnWrongDevice = 104, + TextureUsesUnsupportedFormat = 105, + SharedTexturesNotSupported = 106, + IndexOutOfRange = 107, + AlreadySubmitted = 108, + InvalidBounds = 109, +} +public enum EVRCompositorTimingMode +{ + Implicit = 0, + Explicit_RuntimePerformsPostPresentHandoff = 1, + Explicit_ApplicationPerformsPostPresentHandoff = 2, +} +public enum VROverlayInputMethod +{ + None = 0, + Mouse = 1, + DualAnalog = 2, +} +public enum VROverlayTransformType +{ + VROverlayTransform_Absolute = 0, + VROverlayTransform_TrackedDeviceRelative = 1, + VROverlayTransform_SystemOverlay = 2, + VROverlayTransform_TrackedComponent = 3, +} +public enum VROverlayFlags +{ + None = 0, + Curved = 1, + RGSS4X = 2, + NoDashboardTab = 3, + AcceptsGamepadEvents = 4, + ShowGamepadFocus = 5, + SendVRScrollEvents = 6, + SendVRTouchpadEvents = 7, + ShowTouchPadScrollWheel = 8, + TransferOwnershipToInternalProcess = 9, + SideBySide_Parallel = 10, + SideBySide_Crossed = 11, + Panorama = 12, + StereoPanorama = 13, + SortWithNonSceneOverlays = 14, + VisibleInDashboard = 15, +} +public enum VRMessageOverlayResponse +{ + ButtonPress_0 = 0, + ButtonPress_1 = 1, + ButtonPress_2 = 2, + ButtonPress_3 = 3, + CouldntFindSystemOverlay = 4, + CouldntFindOrCreateClientOverlay = 5, + ApplicationQuit = 6, +} +public enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1, + k_EGamepadTextInputModeSubmit = 2, +} +public enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1, +} +public enum EOverlayDirection +{ + Up = 0, + Down = 1, + Left = 2, + Right = 3, + Count = 4, +} +public enum EVROverlayIntersectionMaskPrimitiveType +{ + OverlayIntersectionPrimitiveType_Rectangle = 0, + OverlayIntersectionPrimitiveType_Circle = 1, +} +public enum EVRRenderModelError +{ + None = 0, + Loading = 100, + NotSupported = 200, + InvalidArg = 300, + InvalidModel = 301, + NoShapes = 302, + MultipleShapes = 303, + TooManyVertices = 304, + MultipleTextures = 305, + BufferTooSmall = 306, + NotEnoughNormals = 307, + NotEnoughTexCoords = 308, + InvalidTexture = 400, +} +public enum EVRComponentProperty +{ + IsStatic = 1, + IsVisible = 2, + IsTouched = 4, + IsPressed = 8, + IsScrolled = 16, +} +public enum EVRNotificationType +{ + Transient = 0, + Persistent = 1, + Transient_SystemWithUserValue = 2, +} +public enum EVRNotificationStyle +{ + None = 0, + Application = 100, + Contact_Disabled = 200, + Contact_Enabled = 201, + Contact_Active = 202, +} +public enum EVRSettingsError +{ + None = 0, + IPCFailed = 1, + WriteFailed = 2, + ReadFailed = 3, + JsonParseFailed = 4, + UnsetSettingHasNoDefault = 5, +} +public enum EVRScreenshotError +{ + None = 0, + RequestFailed = 1, + IncompatibleVersion = 100, + NotFound = 101, + BufferTooSmall = 102, + ScreenshotAlreadyInProgress = 108, +} +public enum EVRSkeletalTransformSpace +{ + Model = 0, + Parent = 1, + Additive = 2, +} +public enum EVRInputFilterCancelType +{ + VRInputFilterCancel_Timers = 0, + VRInputFilterCancel_Momentum = 1, +} +public enum EIOBufferError +{ + IOBuffer_Success = 0, + IOBuffer_OperationFailed = 100, + IOBuffer_InvalidHandle = 101, + IOBuffer_InvalidArgument = 102, + IOBuffer_PathExists = 103, + IOBuffer_PathDoesNotExist = 104, + IOBuffer_Permission = 105, +} +public enum EIOBufferMode +{ + Read = 1, + Write = 2, + Create = 512, +} + +[StructLayout(LayoutKind.Explicit)] public struct VREvent_Data_t +{ + [FieldOffset(0)] public VREvent_Reserved_t reserved; + [FieldOffset(0)] public VREvent_Controller_t controller; + [FieldOffset(0)] public VREvent_Mouse_t mouse; + [FieldOffset(0)] public VREvent_Scroll_t scroll; + [FieldOffset(0)] public VREvent_Process_t process; + [FieldOffset(0)] public VREvent_Notification_t notification; + [FieldOffset(0)] public VREvent_Overlay_t overlay; + [FieldOffset(0)] public VREvent_Status_t status; + [FieldOffset(0)] public VREvent_Ipd_t ipd; + [FieldOffset(0)] public VREvent_Chaperone_t chaperone; + [FieldOffset(0)] public VREvent_PerformanceTest_t performanceTest; + [FieldOffset(0)] public VREvent_TouchPadMove_t touchPadMove; + [FieldOffset(0)] public VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; + [FieldOffset(0)] public VREvent_Screenshot_t screenshot; + [FieldOffset(0)] public VREvent_ScreenshotProgress_t screenshotProgress; + [FieldOffset(0)] public VREvent_ApplicationLaunch_t applicationLaunch; + [FieldOffset(0)] public VREvent_EditingCameraSurface_t cameraSurface; + [FieldOffset(0)] public VREvent_MessageOverlay_t messageOverlay; + [FieldOffset(0)] public VREvent_Property_t property; + [FieldOffset(0)] public VREvent_DualAnalog_t dualAnalog; + [FieldOffset(0)] public VREvent_HapticVibration_t hapticVibration; + [FieldOffset(0)] public VREvent_WebConsole_t webConsole; + [FieldOffset(0)] public VREvent_InputBindingLoad_t inputBinding; + [FieldOffset(0)] public VREvent_SpatialAnchor_t spatialAnchor; + [FieldOffset(0)] public VREvent_Keyboard_t keyboard; // This has to be at the end due to a mono bug +} + + +[StructLayout(LayoutKind.Explicit)] public struct VROverlayIntersectionMaskPrimitive_Data_t +{ + [FieldOffset(0)] public IntersectionMaskRectangle_t m_Rectangle; + [FieldOffset(0)] public IntersectionMaskCircle_t m_Circle; +} + +[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix34_t +{ + public float m0; //float[3][4] + public float m1; + public float m2; + public float m3; + public float m4; + public float m5; + public float m6; + public float m7; + public float m8; + public float m9; + public float m10; + public float m11; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix33_t +{ + public float m0; //float[3][3] + public float m1; + public float m2; + public float m3; + public float m4; + public float m5; + public float m6; + public float m7; + public float m8; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix44_t +{ + public float m0; //float[4][4] + public float m1; + public float m2; + public float m3; + public float m4; + public float m5; + public float m6; + public float m7; + public float m8; + public float m9; + public float m10; + public float m11; + public float m12; + public float m13; + public float m14; + public float m15; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector3_t +{ + public float v0; //float[3] + public float v1; + public float v2; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector4_t +{ + public float v0; //float[4] + public float v1; + public float v2; + public float v3; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector3d_t +{ + public double v0; //double[3] + public double v1; + public double v2; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector2_t +{ + public float v0; //float[2] + public float v1; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdQuaternion_t +{ + public double w; + public double x; + public double y; + public double z; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdQuaternionf_t +{ + public float w; + public float x; + public float y; + public float z; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdColor_t +{ + public float r; + public float g; + public float b; + public float a; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdQuad_t +{ + public HmdVector3_t vCorners0; //HmdVector3_t[4] + public HmdVector3_t vCorners1; + public HmdVector3_t vCorners2; + public HmdVector3_t vCorners3; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdRect2_t +{ + public HmdVector2_t vTopLeft; + public HmdVector2_t vBottomRight; +} +[StructLayout(LayoutKind.Sequential)] public struct DistortionCoordinates_t +{ + public float rfRed0; //float[2] + public float rfRed1; + public float rfGreen0; //float[2] + public float rfGreen1; + public float rfBlue0; //float[2] + public float rfBlue1; +} +[StructLayout(LayoutKind.Sequential)] public struct Texture_t +{ + public IntPtr handle; // void * + public ETextureType eType; + public EColorSpace eColorSpace; +} +[StructLayout(LayoutKind.Sequential)] public struct TrackedDevicePose_t +{ + public HmdMatrix34_t mDeviceToAbsoluteTracking; + public HmdVector3_t vVelocity; + public HmdVector3_t vAngularVelocity; + public ETrackingResult eTrackingResult; + [MarshalAs(UnmanagedType.I1)] + public bool bPoseIsValid; + [MarshalAs(UnmanagedType.I1)] + public bool bDeviceIsConnected; +} +[StructLayout(LayoutKind.Sequential)] public struct VRTextureBounds_t +{ + public float uMin; + public float vMin; + public float uMax; + public float vMax; +} +[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithPose_t +{ + public HmdMatrix34_t mDeviceToAbsoluteTracking; +} +[StructLayout(LayoutKind.Sequential)] public struct VRTextureDepthInfo_t +{ + public IntPtr handle; // void * + public HmdMatrix44_t mProjection; + public HmdVector2_t vRange; +} +[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithDepth_t +{ + public VRTextureDepthInfo_t depth; +} +[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithPoseAndDepth_t +{ + public VRTextureDepthInfo_t depth; +} +[StructLayout(LayoutKind.Sequential)] public struct VRVulkanTextureData_t +{ + public ulong m_nImage; + public IntPtr m_pDevice; // struct VkDevice_T * + public IntPtr m_pPhysicalDevice; // struct VkPhysicalDevice_T * + public IntPtr m_pInstance; // struct VkInstance_T * + public IntPtr m_pQueue; // struct VkQueue_T * + public uint m_nQueueFamilyIndex; + public uint m_nWidth; + public uint m_nHeight; + public uint m_nFormat; + public uint m_nSampleCount; +} +[StructLayout(LayoutKind.Sequential)] public struct D3D12TextureData_t +{ + public IntPtr m_pResource; // struct ID3D12Resource * + public IntPtr m_pCommandQueue; // struct ID3D12CommandQueue * + public uint m_nNodeMask; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Controller_t +{ + public uint button; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Mouse_t +{ + public float x; + public float y; + public uint button; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Scroll_t +{ + public float xdelta; + public float ydelta; + public uint repeatCount; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_TouchPadMove_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bFingerDown; + public float flSecondsFingerDown; + public float fValueXFirst; + public float fValueYFirst; + public float fValueXRaw; + public float fValueYRaw; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Notification_t +{ + public ulong ulUserValue; + public uint notificationId; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Process_t +{ + public uint pid; + public uint oldPid; + [MarshalAs(UnmanagedType.I1)] + public bool bForced; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Overlay_t +{ + public ulong overlayHandle; + public ulong devicePath; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Status_t +{ + public uint statusState; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Keyboard_t +{ + public byte cNewInput0,cNewInput1,cNewInput2,cNewInput3,cNewInput4,cNewInput5,cNewInput6,cNewInput7; + public string cNewInput + { + get + { + var stringBuilder = new System.Text.StringBuilder(8); + stringBuilder.Append(cNewInput0); + stringBuilder.Append(cNewInput1); + stringBuilder.Append(cNewInput2); + stringBuilder.Append(cNewInput3); + stringBuilder.Append(cNewInput4); + stringBuilder.Append(cNewInput5); + stringBuilder.Append(cNewInput6); + stringBuilder.Append(cNewInput7); + return stringBuilder.ToString(); + } + } + public ulong uUserValue; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Ipd_t +{ + public float ipdMeters; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Chaperone_t +{ + public ulong m_nPreviousUniverse; + public ulong m_nCurrentUniverse; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Reserved_t +{ + public ulong reserved0; + public ulong reserved1; + public ulong reserved2; + public ulong reserved3; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_PerformanceTest_t +{ + public uint m_nFidelityLevel; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_SeatedZeroPoseReset_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bResetBySystemMenu; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Screenshot_t +{ + public uint handle; + public uint type; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_ScreenshotProgress_t +{ + public float progress; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_ApplicationLaunch_t +{ + public uint pid; + public uint unArgsHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_EditingCameraSurface_t +{ + public ulong overlayHandle; + public uint nVisualMode; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_MessageOverlay_t +{ + public uint unVRMessageOverlayResponse; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Property_t +{ + public ulong container; + public ETrackedDeviceProperty prop; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_DualAnalog_t +{ + public float x; + public float y; + public float transformedX; + public float transformedY; + public EDualAnalogWhich which; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_HapticVibration_t +{ + public ulong containerHandle; + public ulong componentHandle; + public float fDurationSeconds; + public float fFrequency; + public float fAmplitude; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_WebConsole_t +{ + public ulong webConsoleHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_InputBindingLoad_t +{ + public ulong ulAppContainer; + public ulong pathMessage; + public ulong pathUrl; + public ulong pathControllerType; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_InputActionManifestLoad_t +{ + public ulong pathAppKey; + public ulong pathMessage; + public ulong pathMessageParam; + public ulong pathManifestPath; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_SpatialAnchor_t +{ + public uint unHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_t +{ + public uint eventType; + public uint trackedDeviceIndex; + public float eventAgeSeconds; + public VREvent_Data_t data; +} +// This structure is for backwards binary compatibility on Linux and OSX only +[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct VREvent_t_Packed +{ + public uint eventType; + public uint trackedDeviceIndex; + public float eventAgeSeconds; + public VREvent_Data_t data; + public VREvent_t_Packed(VREvent_t unpacked) + { + this.eventType = unpacked.eventType; + this.trackedDeviceIndex = unpacked.trackedDeviceIndex; + this.eventAgeSeconds = unpacked.eventAgeSeconds; + this.data = unpacked.data; + } + public void Unpack(ref VREvent_t unpacked) + { + unpacked.eventType = this.eventType; + unpacked.trackedDeviceIndex = this.trackedDeviceIndex; + unpacked.eventAgeSeconds = this.eventAgeSeconds; + unpacked.data = this.data; + } +} +[StructLayout(LayoutKind.Sequential)] public struct HiddenAreaMesh_t +{ + public IntPtr pVertexData; // const struct vr::HmdVector2_t * + public uint unTriangleCount; +} +[StructLayout(LayoutKind.Sequential)] public struct VRControllerAxis_t +{ + public float x; + public float y; +} +[StructLayout(LayoutKind.Sequential)] public struct VRControllerState_t +{ + public uint unPacketNum; + public ulong ulButtonPressed; + public ulong ulButtonTouched; + public VRControllerAxis_t rAxis0; //VRControllerAxis_t[5] + public VRControllerAxis_t rAxis1; + public VRControllerAxis_t rAxis2; + public VRControllerAxis_t rAxis3; + public VRControllerAxis_t rAxis4; +} +// This structure is for backwards binary compatibility on Linux and OSX only +[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct VRControllerState_t_Packed +{ + public uint unPacketNum; + public ulong ulButtonPressed; + public ulong ulButtonTouched; + public VRControllerAxis_t rAxis0; //VRControllerAxis_t[5] + public VRControllerAxis_t rAxis1; + public VRControllerAxis_t rAxis2; + public VRControllerAxis_t rAxis3; + public VRControllerAxis_t rAxis4; + public VRControllerState_t_Packed(VRControllerState_t unpacked) + { + this.unPacketNum = unpacked.unPacketNum; + this.ulButtonPressed = unpacked.ulButtonPressed; + this.ulButtonTouched = unpacked.ulButtonTouched; + this.rAxis0 = unpacked.rAxis0; + this.rAxis1 = unpacked.rAxis1; + this.rAxis2 = unpacked.rAxis2; + this.rAxis3 = unpacked.rAxis3; + this.rAxis4 = unpacked.rAxis4; + } + public void Unpack(ref VRControllerState_t unpacked) + { + unpacked.unPacketNum = this.unPacketNum; + unpacked.ulButtonPressed = this.ulButtonPressed; + unpacked.ulButtonTouched = this.ulButtonTouched; + unpacked.rAxis0 = this.rAxis0; + unpacked.rAxis1 = this.rAxis1; + unpacked.rAxis2 = this.rAxis2; + unpacked.rAxis3 = this.rAxis3; + unpacked.rAxis4 = this.rAxis4; + } +} +[StructLayout(LayoutKind.Sequential)] public struct Compositor_OverlaySettings +{ + public uint size; + [MarshalAs(UnmanagedType.I1)] + public bool curved; + [MarshalAs(UnmanagedType.I1)] + public bool antialias; + public float scale; + public float distance; + public float alpha; + public float uOffset; + public float vOffset; + public float uScale; + public float vScale; + public float gridDivs; + public float gridWidth; + public float gridScale; + public HmdMatrix44_t transform; +} +[StructLayout(LayoutKind.Sequential)] public struct VRBoneTransform_t +{ + public HmdVector4_t position; + public HmdQuaternionf_t orientation; +} +[StructLayout(LayoutKind.Sequential)] public struct CameraVideoStreamFrameHeader_t +{ + public EVRTrackedCameraFrameType eFrameType; + public uint nWidth; + public uint nHeight; + public uint nBytesPerPixel; + public uint nFrameSequence; + public TrackedDevicePose_t standingTrackedDevicePose; +} +[StructLayout(LayoutKind.Sequential)] public struct DriverDirectMode_FrameTiming +{ + public uint m_nSize; + public uint m_nNumFramePresents; + public uint m_nNumMisPresented; + public uint m_nNumDroppedFrames; + public uint m_nReprojectionFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct ImuSample_t +{ + public double fSampleTime; + public HmdVector3d_t vAccel; + public HmdVector3d_t vGyro; + public uint unOffScaleFlags; +} +[StructLayout(LayoutKind.Sequential)] public struct AppOverrideKeys_t +{ + public IntPtr pchKey; // const char * + public IntPtr pchValue; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct Compositor_FrameTiming +{ + public uint m_nSize; + public uint m_nFrameIndex; + public uint m_nNumFramePresents; + public uint m_nNumMisPresented; + public uint m_nNumDroppedFrames; + public uint m_nReprojectionFlags; + public double m_flSystemTimeInSeconds; + public float m_flPreSubmitGpuMs; + public float m_flPostSubmitGpuMs; + public float m_flTotalRenderGpuMs; + public float m_flCompositorRenderGpuMs; + public float m_flCompositorRenderCpuMs; + public float m_flCompositorIdleCpuMs; + public float m_flClientFrameIntervalMs; + public float m_flPresentCallCpuMs; + public float m_flWaitForPresentCpuMs; + public float m_flSubmitFrameMs; + public float m_flWaitGetPosesCalledMs; + public float m_flNewPosesReadyMs; + public float m_flNewFrameReadyMs; + public float m_flCompositorUpdateStartMs; + public float m_flCompositorUpdateEndMs; + public float m_flCompositorRenderStartMs; + public TrackedDevicePose_t m_HmdPose; +} +[StructLayout(LayoutKind.Sequential)] public struct Compositor_CumulativeStats +{ + public uint m_nPid; + public uint m_nNumFramePresents; + public uint m_nNumDroppedFrames; + public uint m_nNumReprojectedFrames; + public uint m_nNumFramePresentsOnStartup; + public uint m_nNumDroppedFramesOnStartup; + public uint m_nNumReprojectedFramesOnStartup; + public uint m_nNumLoading; + public uint m_nNumFramePresentsLoading; + public uint m_nNumDroppedFramesLoading; + public uint m_nNumReprojectedFramesLoading; + public uint m_nNumTimedOut; + public uint m_nNumFramePresentsTimedOut; + public uint m_nNumDroppedFramesTimedOut; + public uint m_nNumReprojectedFramesTimedOut; +} +[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionParams_t +{ + public HmdVector3_t vSource; + public HmdVector3_t vDirection; + public ETrackingUniverseOrigin eOrigin; +} +[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionResults_t +{ + public HmdVector3_t vPoint; + public HmdVector3_t vNormal; + public HmdVector2_t vUVs; + public float fDistance; +} +[StructLayout(LayoutKind.Sequential)] public struct IntersectionMaskRectangle_t +{ + public float m_flTopLeftX; + public float m_flTopLeftY; + public float m_flWidth; + public float m_flHeight; +} +[StructLayout(LayoutKind.Sequential)] public struct IntersectionMaskCircle_t +{ + public float m_flCenterX; + public float m_flCenterY; + public float m_flRadius; +} +[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionMaskPrimitive_t +{ + public EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType; + public VROverlayIntersectionMaskPrimitive_Data_t m_Primitive; +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_ComponentState_t +{ + public HmdMatrix34_t mTrackingToComponentRenderModel; + public HmdMatrix34_t mTrackingToComponentLocal; + public uint uProperties; +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_Vertex_t +{ + public HmdVector3_t vPosition; + public HmdVector3_t vNormal; + public float rfTextureCoord0; //float[2] + public float rfTextureCoord1; +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_TextureMap_t +{ + public ushort unWidth; + public ushort unHeight; + public IntPtr rubTextureMapData; // const uint8_t * +} +// This structure is for backwards binary compatibility on Linux and OSX only +[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct RenderModel_TextureMap_t_Packed +{ + public ushort unWidth; + public ushort unHeight; + public IntPtr rubTextureMapData; // const uint8_t * + public RenderModel_TextureMap_t_Packed(RenderModel_TextureMap_t unpacked) + { + this.unWidth = unpacked.unWidth; + this.unHeight = unpacked.unHeight; + this.rubTextureMapData = unpacked.rubTextureMapData; + } + public void Unpack(ref RenderModel_TextureMap_t unpacked) + { + unpacked.unWidth = this.unWidth; + unpacked.unHeight = this.unHeight; + unpacked.rubTextureMapData = this.rubTextureMapData; + } +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_t +{ + public IntPtr rVertexData; // const struct vr::RenderModel_Vertex_t * + public uint unVertexCount; + public IntPtr rIndexData; // const uint16_t * + public uint unTriangleCount; + public int diffuseTextureId; +} +// This structure is for backwards binary compatibility on Linux and OSX only +[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct RenderModel_t_Packed +{ + public IntPtr rVertexData; // const struct vr::RenderModel_Vertex_t * + public uint unVertexCount; + public IntPtr rIndexData; // const uint16_t * + public uint unTriangleCount; + public int diffuseTextureId; + public RenderModel_t_Packed(RenderModel_t unpacked) + { + this.rVertexData = unpacked.rVertexData; + this.unVertexCount = unpacked.unVertexCount; + this.rIndexData = unpacked.rIndexData; + this.unTriangleCount = unpacked.unTriangleCount; + this.diffuseTextureId = unpacked.diffuseTextureId; + } + public void Unpack(ref RenderModel_t unpacked) + { + unpacked.rVertexData = this.rVertexData; + unpacked.unVertexCount = this.unVertexCount; + unpacked.rIndexData = this.rIndexData; + unpacked.unTriangleCount = this.unTriangleCount; + unpacked.diffuseTextureId = this.diffuseTextureId; + } +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_ControllerMode_State_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bScrollWheelVisible; +} +[StructLayout(LayoutKind.Sequential)] public struct NotificationBitmap_t +{ + public IntPtr m_pImageData; // void * + public int m_nWidth; + public int m_nHeight; + public int m_nBytesPerPixel; +} +[StructLayout(LayoutKind.Sequential)] public struct CVRSettingHelper +{ + public IntPtr m_pSettings; // class vr::IVRSettings * +} +[StructLayout(LayoutKind.Sequential)] public struct InputAnalogActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bActive; + public ulong activeOrigin; + public float x; + public float y; + public float z; + public float deltaX; + public float deltaY; + public float deltaZ; + public float fUpdateTime; +} +[StructLayout(LayoutKind.Sequential)] public struct InputDigitalActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bActive; + public ulong activeOrigin; + [MarshalAs(UnmanagedType.I1)] + public bool bState; + [MarshalAs(UnmanagedType.I1)] + public bool bChanged; + public float fUpdateTime; +} +[StructLayout(LayoutKind.Sequential)] public struct InputPoseActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bActive; + public ulong activeOrigin; + public TrackedDevicePose_t pose; +} +[StructLayout(LayoutKind.Sequential)] public struct InputSkeletalActionData_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bActive; + public ulong activeOrigin; + public uint boneCount; +} +[StructLayout(LayoutKind.Sequential)] public struct InputOriginInfo_t +{ + public ulong devicePath; + public uint trackedDeviceIndex; + public byte rchRenderModelComponentName0,rchRenderModelComponentName1,rchRenderModelComponentName2,rchRenderModelComponentName3,rchRenderModelComponentName4,rchRenderModelComponentName5,rchRenderModelComponentName6,rchRenderModelComponentName7,rchRenderModelComponentName8,rchRenderModelComponentName9,rchRenderModelComponentName10,rchRenderModelComponentName11,rchRenderModelComponentName12,rchRenderModelComponentName13,rchRenderModelComponentName14,rchRenderModelComponentName15,rchRenderModelComponentName16,rchRenderModelComponentName17,rchRenderModelComponentName18,rchRenderModelComponentName19,rchRenderModelComponentName20,rchRenderModelComponentName21,rchRenderModelComponentName22,rchRenderModelComponentName23,rchRenderModelComponentName24,rchRenderModelComponentName25,rchRenderModelComponentName26,rchRenderModelComponentName27,rchRenderModelComponentName28,rchRenderModelComponentName29,rchRenderModelComponentName30,rchRenderModelComponentName31,rchRenderModelComponentName32,rchRenderModelComponentName33,rchRenderModelComponentName34,rchRenderModelComponentName35,rchRenderModelComponentName36,rchRenderModelComponentName37,rchRenderModelComponentName38,rchRenderModelComponentName39,rchRenderModelComponentName40,rchRenderModelComponentName41,rchRenderModelComponentName42,rchRenderModelComponentName43,rchRenderModelComponentName44,rchRenderModelComponentName45,rchRenderModelComponentName46,rchRenderModelComponentName47,rchRenderModelComponentName48,rchRenderModelComponentName49,rchRenderModelComponentName50,rchRenderModelComponentName51,rchRenderModelComponentName52,rchRenderModelComponentName53,rchRenderModelComponentName54,rchRenderModelComponentName55,rchRenderModelComponentName56,rchRenderModelComponentName57,rchRenderModelComponentName58,rchRenderModelComponentName59,rchRenderModelComponentName60,rchRenderModelComponentName61,rchRenderModelComponentName62,rchRenderModelComponentName63,rchRenderModelComponentName64,rchRenderModelComponentName65,rchRenderModelComponentName66,rchRenderModelComponentName67,rchRenderModelComponentName68,rchRenderModelComponentName69,rchRenderModelComponentName70,rchRenderModelComponentName71,rchRenderModelComponentName72,rchRenderModelComponentName73,rchRenderModelComponentName74,rchRenderModelComponentName75,rchRenderModelComponentName76,rchRenderModelComponentName77,rchRenderModelComponentName78,rchRenderModelComponentName79,rchRenderModelComponentName80,rchRenderModelComponentName81,rchRenderModelComponentName82,rchRenderModelComponentName83,rchRenderModelComponentName84,rchRenderModelComponentName85,rchRenderModelComponentName86,rchRenderModelComponentName87,rchRenderModelComponentName88,rchRenderModelComponentName89,rchRenderModelComponentName90,rchRenderModelComponentName91,rchRenderModelComponentName92,rchRenderModelComponentName93,rchRenderModelComponentName94,rchRenderModelComponentName95,rchRenderModelComponentName96,rchRenderModelComponentName97,rchRenderModelComponentName98,rchRenderModelComponentName99,rchRenderModelComponentName100,rchRenderModelComponentName101,rchRenderModelComponentName102,rchRenderModelComponentName103,rchRenderModelComponentName104,rchRenderModelComponentName105,rchRenderModelComponentName106,rchRenderModelComponentName107,rchRenderModelComponentName108,rchRenderModelComponentName109,rchRenderModelComponentName110,rchRenderModelComponentName111,rchRenderModelComponentName112,rchRenderModelComponentName113,rchRenderModelComponentName114,rchRenderModelComponentName115,rchRenderModelComponentName116,rchRenderModelComponentName117,rchRenderModelComponentName118,rchRenderModelComponentName119,rchRenderModelComponentName120,rchRenderModelComponentName121,rchRenderModelComponentName122,rchRenderModelComponentName123,rchRenderModelComponentName124,rchRenderModelComponentName125,rchRenderModelComponentName126,rchRenderModelComponentName127; + public string rchRenderModelComponentName + { + get + { + var stringBuilder = new System.Text.StringBuilder(128); + stringBuilder.Append(rchRenderModelComponentName0); + stringBuilder.Append(rchRenderModelComponentName1); + stringBuilder.Append(rchRenderModelComponentName2); + stringBuilder.Append(rchRenderModelComponentName3); + stringBuilder.Append(rchRenderModelComponentName4); + stringBuilder.Append(rchRenderModelComponentName5); + stringBuilder.Append(rchRenderModelComponentName6); + stringBuilder.Append(rchRenderModelComponentName7); + stringBuilder.Append(rchRenderModelComponentName8); + stringBuilder.Append(rchRenderModelComponentName9); + stringBuilder.Append(rchRenderModelComponentName10); + stringBuilder.Append(rchRenderModelComponentName11); + stringBuilder.Append(rchRenderModelComponentName12); + stringBuilder.Append(rchRenderModelComponentName13); + stringBuilder.Append(rchRenderModelComponentName14); + stringBuilder.Append(rchRenderModelComponentName15); + stringBuilder.Append(rchRenderModelComponentName16); + stringBuilder.Append(rchRenderModelComponentName17); + stringBuilder.Append(rchRenderModelComponentName18); + stringBuilder.Append(rchRenderModelComponentName19); + stringBuilder.Append(rchRenderModelComponentName20); + stringBuilder.Append(rchRenderModelComponentName21); + stringBuilder.Append(rchRenderModelComponentName22); + stringBuilder.Append(rchRenderModelComponentName23); + stringBuilder.Append(rchRenderModelComponentName24); + stringBuilder.Append(rchRenderModelComponentName25); + stringBuilder.Append(rchRenderModelComponentName26); + stringBuilder.Append(rchRenderModelComponentName27); + stringBuilder.Append(rchRenderModelComponentName28); + stringBuilder.Append(rchRenderModelComponentName29); + stringBuilder.Append(rchRenderModelComponentName30); + stringBuilder.Append(rchRenderModelComponentName31); + stringBuilder.Append(rchRenderModelComponentName32); + stringBuilder.Append(rchRenderModelComponentName33); + stringBuilder.Append(rchRenderModelComponentName34); + stringBuilder.Append(rchRenderModelComponentName35); + stringBuilder.Append(rchRenderModelComponentName36); + stringBuilder.Append(rchRenderModelComponentName37); + stringBuilder.Append(rchRenderModelComponentName38); + stringBuilder.Append(rchRenderModelComponentName39); + stringBuilder.Append(rchRenderModelComponentName40); + stringBuilder.Append(rchRenderModelComponentName41); + stringBuilder.Append(rchRenderModelComponentName42); + stringBuilder.Append(rchRenderModelComponentName43); + stringBuilder.Append(rchRenderModelComponentName44); + stringBuilder.Append(rchRenderModelComponentName45); + stringBuilder.Append(rchRenderModelComponentName46); + stringBuilder.Append(rchRenderModelComponentName47); + stringBuilder.Append(rchRenderModelComponentName48); + stringBuilder.Append(rchRenderModelComponentName49); + stringBuilder.Append(rchRenderModelComponentName50); + stringBuilder.Append(rchRenderModelComponentName51); + stringBuilder.Append(rchRenderModelComponentName52); + stringBuilder.Append(rchRenderModelComponentName53); + stringBuilder.Append(rchRenderModelComponentName54); + stringBuilder.Append(rchRenderModelComponentName55); + stringBuilder.Append(rchRenderModelComponentName56); + stringBuilder.Append(rchRenderModelComponentName57); + stringBuilder.Append(rchRenderModelComponentName58); + stringBuilder.Append(rchRenderModelComponentName59); + stringBuilder.Append(rchRenderModelComponentName60); + stringBuilder.Append(rchRenderModelComponentName61); + stringBuilder.Append(rchRenderModelComponentName62); + stringBuilder.Append(rchRenderModelComponentName63); + stringBuilder.Append(rchRenderModelComponentName64); + stringBuilder.Append(rchRenderModelComponentName65); + stringBuilder.Append(rchRenderModelComponentName66); + stringBuilder.Append(rchRenderModelComponentName67); + stringBuilder.Append(rchRenderModelComponentName68); + stringBuilder.Append(rchRenderModelComponentName69); + stringBuilder.Append(rchRenderModelComponentName70); + stringBuilder.Append(rchRenderModelComponentName71); + stringBuilder.Append(rchRenderModelComponentName72); + stringBuilder.Append(rchRenderModelComponentName73); + stringBuilder.Append(rchRenderModelComponentName74); + stringBuilder.Append(rchRenderModelComponentName75); + stringBuilder.Append(rchRenderModelComponentName76); + stringBuilder.Append(rchRenderModelComponentName77); + stringBuilder.Append(rchRenderModelComponentName78); + stringBuilder.Append(rchRenderModelComponentName79); + stringBuilder.Append(rchRenderModelComponentName80); + stringBuilder.Append(rchRenderModelComponentName81); + stringBuilder.Append(rchRenderModelComponentName82); + stringBuilder.Append(rchRenderModelComponentName83); + stringBuilder.Append(rchRenderModelComponentName84); + stringBuilder.Append(rchRenderModelComponentName85); + stringBuilder.Append(rchRenderModelComponentName86); + stringBuilder.Append(rchRenderModelComponentName87); + stringBuilder.Append(rchRenderModelComponentName88); + stringBuilder.Append(rchRenderModelComponentName89); + stringBuilder.Append(rchRenderModelComponentName90); + stringBuilder.Append(rchRenderModelComponentName91); + stringBuilder.Append(rchRenderModelComponentName92); + stringBuilder.Append(rchRenderModelComponentName93); + stringBuilder.Append(rchRenderModelComponentName94); + stringBuilder.Append(rchRenderModelComponentName95); + stringBuilder.Append(rchRenderModelComponentName96); + stringBuilder.Append(rchRenderModelComponentName97); + stringBuilder.Append(rchRenderModelComponentName98); + stringBuilder.Append(rchRenderModelComponentName99); + stringBuilder.Append(rchRenderModelComponentName100); + stringBuilder.Append(rchRenderModelComponentName101); + stringBuilder.Append(rchRenderModelComponentName102); + stringBuilder.Append(rchRenderModelComponentName103); + stringBuilder.Append(rchRenderModelComponentName104); + stringBuilder.Append(rchRenderModelComponentName105); + stringBuilder.Append(rchRenderModelComponentName106); + stringBuilder.Append(rchRenderModelComponentName107); + stringBuilder.Append(rchRenderModelComponentName108); + stringBuilder.Append(rchRenderModelComponentName109); + stringBuilder.Append(rchRenderModelComponentName110); + stringBuilder.Append(rchRenderModelComponentName111); + stringBuilder.Append(rchRenderModelComponentName112); + stringBuilder.Append(rchRenderModelComponentName113); + stringBuilder.Append(rchRenderModelComponentName114); + stringBuilder.Append(rchRenderModelComponentName115); + stringBuilder.Append(rchRenderModelComponentName116); + stringBuilder.Append(rchRenderModelComponentName117); + stringBuilder.Append(rchRenderModelComponentName118); + stringBuilder.Append(rchRenderModelComponentName119); + stringBuilder.Append(rchRenderModelComponentName120); + stringBuilder.Append(rchRenderModelComponentName121); + stringBuilder.Append(rchRenderModelComponentName122); + stringBuilder.Append(rchRenderModelComponentName123); + stringBuilder.Append(rchRenderModelComponentName124); + stringBuilder.Append(rchRenderModelComponentName125); + stringBuilder.Append(rchRenderModelComponentName126); + stringBuilder.Append(rchRenderModelComponentName127); + return stringBuilder.ToString(); + } + } +} +[StructLayout(LayoutKind.Sequential)] public struct VRActiveActionSet_t +{ + public ulong ulActionSet; + public ulong ulRestrictedToDevice; + public ulong ulSecondaryActionSet; + public uint unPadding; + public int nPriority; +} +[StructLayout(LayoutKind.Sequential)] public struct SpatialAnchorPose_t +{ + public HmdMatrix34_t mAnchorToAbsoluteTracking; +} +[StructLayout(LayoutKind.Sequential)] public struct COpenVRContext +{ + public IntPtr m_pVRSystem; // class vr::IVRSystem * + public IntPtr m_pVRChaperone; // class vr::IVRChaperone * + public IntPtr m_pVRChaperoneSetup; // class vr::IVRChaperoneSetup * + public IntPtr m_pVRCompositor; // class vr::IVRCompositor * + public IntPtr m_pVROverlay; // class vr::IVROverlay * + public IntPtr m_pVRResources; // class vr::IVRResources * + public IntPtr m_pVRRenderModels; // class vr::IVRRenderModels * + public IntPtr m_pVRExtendedDisplay; // class vr::IVRExtendedDisplay * + public IntPtr m_pVRSettings; // class vr::IVRSettings * + public IntPtr m_pVRApplications; // class vr::IVRApplications * + public IntPtr m_pVRTrackedCamera; // class vr::IVRTrackedCamera * + public IntPtr m_pVRScreenshots; // class vr::IVRScreenshots * + public IntPtr m_pVRDriverManager; // class vr::IVRDriverManager * + public IntPtr m_pVRInput; // class vr::IVRInput * + public IntPtr m_pVRIOBuffer; // class vr::IVRIOBuffer * + public IntPtr m_pVRSpatialAnchors; // class vr::IVRSpatialAnchors * +} + +public class OpenVR +{ + + public static uint InitInternal(ref EVRInitError peError, EVRApplicationType eApplicationType) + { + return OpenVRInterop.InitInternal(ref peError, eApplicationType); + } + + public static uint InitInternal2(ref EVRInitError peError, EVRApplicationType eApplicationType, string pchStartupInfo) + { + return OpenVRInterop.InitInternal2(ref peError, eApplicationType, pchStartupInfo); + } + + public static void ShutdownInternal() + { + OpenVRInterop.ShutdownInternal(); + } + + public static bool IsHmdPresent() + { + return OpenVRInterop.IsHmdPresent(); + } + + public static bool IsRuntimeInstalled() + { + return OpenVRInterop.IsRuntimeInstalled(); + } + + public static string GetStringForHmdError(EVRInitError error) + { + return Marshal.PtrToStringAnsi(OpenVRInterop.GetStringForHmdError(error)); + } + + public static IntPtr GetGenericInterface(string pchInterfaceVersion, ref EVRInitError peError) + { + return OpenVRInterop.GetGenericInterface(pchInterfaceVersion, ref peError); + } + + public static bool IsInterfaceVersionValid(string pchInterfaceVersion) + { + return OpenVRInterop.IsInterfaceVersionValid(pchInterfaceVersion); + } + + public static uint GetInitToken() + { + return OpenVRInterop.GetInitToken(); + } + + public const uint k_nDriverNone = 4294967295; + public const uint k_unMaxDriverDebugResponseSize = 32768; + public const uint k_unTrackedDeviceIndex_Hmd = 0; + public const uint k_unMaxTrackedDeviceCount = 64; + public const uint k_unTrackedDeviceIndexOther = 4294967294; + public const uint k_unTrackedDeviceIndexInvalid = 4294967295; + public const ulong k_ulInvalidPropertyContainer = 0; + public const uint k_unInvalidPropertyTag = 0; + public const ulong k_ulInvalidDriverHandle = 0; + public const uint k_unFloatPropertyTag = 1; + public const uint k_unInt32PropertyTag = 2; + public const uint k_unUint64PropertyTag = 3; + public const uint k_unBoolPropertyTag = 4; + public const uint k_unStringPropertyTag = 5; + public const uint k_unHmdMatrix34PropertyTag = 20; + public const uint k_unHmdMatrix44PropertyTag = 21; + public const uint k_unHmdVector3PropertyTag = 22; + public const uint k_unHmdVector4PropertyTag = 23; + public const uint k_unHiddenAreaPropertyTag = 30; + public const uint k_unPathHandleInfoTag = 31; + public const uint k_unActionPropertyTag = 32; + public const uint k_unInputValuePropertyTag = 33; + public const uint k_unWildcardPropertyTag = 34; + public const uint k_unHapticVibrationPropertyTag = 35; + public const uint k_unSkeletonPropertyTag = 36; + public const uint k_unSpatialAnchorPosePropertyTag = 40; + public const uint k_unOpenVRInternalReserved_Start = 1000; + public const uint k_unOpenVRInternalReserved_End = 10000; + public const uint k_unMaxPropertyStringSize = 32768; + public const ulong k_ulInvalidActionHandle = 0; + public const ulong k_ulInvalidActionSetHandle = 0; + public const ulong k_ulInvalidInputValueHandle = 0; + public const uint k_unControllerStateAxisCount = 5; + public const ulong k_ulOverlayHandleInvalid = 0; + public const uint k_unScreenshotHandleInvalid = 0; + public const string IVRSystem_Version = "IVRSystem_019"; + public const string IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; + public const string IVRTrackedCamera_Version = "IVRTrackedCamera_003"; + public const uint k_unMaxApplicationKeyLength = 128; + public const string k_pch_MimeType_HomeApp = "vr/home"; + public const string k_pch_MimeType_GameTheater = "vr/game_theater"; + public const string IVRApplications_Version = "IVRApplications_006"; + public const string IVRChaperone_Version = "IVRChaperone_003"; + public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_005"; + public const string IVRCompositor_Version = "IVRCompositor_022"; + public const uint k_unVROverlayMaxKeyLength = 128; + public const uint k_unVROverlayMaxNameLength = 128; + public const uint k_unMaxOverlayCount = 64; + public const uint k_unMaxOverlayIntersectionMaskPrimitivesCount = 32; + public const string IVROverlay_Version = "IVROverlay_018"; + public const string k_pch_Controller_Component_GDC2015 = "gdc2015"; + public const string k_pch_Controller_Component_Base = "base"; + public const string k_pch_Controller_Component_Tip = "tip"; + public const string k_pch_Controller_Component_HandGrip = "handgrip"; + public const string k_pch_Controller_Component_Status = "status"; + public const string IVRRenderModels_Version = "IVRRenderModels_006"; + public const uint k_unNotificationTextMaxSize = 256; + public const string IVRNotifications_Version = "IVRNotifications_002"; + public const uint k_unMaxSettingsKeyLength = 128; + public const string IVRSettings_Version = "IVRSettings_002"; + public const string k_pch_SteamVR_Section = "steamvr"; + public const string k_pch_SteamVR_RequireHmd_String = "requireHmd"; + public const string k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; + public const string k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; + public const string k_pch_SteamVR_DisplayDebug_Bool = "displayDebug"; + public const string k_pch_SteamVR_DebugProcessPipe_String = "debugProcessPipe"; + public const string k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX"; + public const string k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY"; + public const string k_pch_SteamVR_SendSystemButtonToAllApps_Bool = "sendSystemButtonToAllApps"; + public const string k_pch_SteamVR_LogLevel_Int32 = "loglevel"; + public const string k_pch_SteamVR_IPD_Float = "ipd"; + public const string k_pch_SteamVR_Background_String = "background"; + public const string k_pch_SteamVR_BackgroundUseDomeProjection_Bool = "backgroundUseDomeProjection"; + public const string k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight"; + public const string k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius"; + public const string k_pch_SteamVR_GridColor_String = "gridColor"; + public const string k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; + public const string k_pch_SteamVR_ShowStage_Bool = "showStage"; + public const string k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; + public const string k_pch_SteamVR_DirectMode_Bool = "directMode"; + public const string k_pch_SteamVR_DirectModeEdidVid_Int32 = "directModeEdidVid"; + public const string k_pch_SteamVR_DirectModeEdidPid_Int32 = "directModeEdidPid"; + public const string k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers"; + public const string k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees"; + public const string k_pch_SteamVR_BaseStationPowerManagement_Bool = "basestationPowerManagement"; + public const string k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses"; + public const string k_pch_SteamVR_SupersampleScale_Float = "supersampleScale"; + public const string k_pch_SteamVR_AllowAsyncReprojection_Bool = "allowAsyncReprojection"; + public const string k_pch_SteamVR_AllowReprojection_Bool = "allowInterleavedReprojection"; + public const string k_pch_SteamVR_ForceReprojection_Bool = "forceReprojection"; + public const string k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; + public const string k_pch_SteamVR_DefaultMirrorView_Int32 = "defaultMirrorView"; + public const string k_pch_SteamVR_ShowMirrorView_Bool = "showMirrorView"; + public const string k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; + public const string k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; + public const string k_pch_SteamVR_StartCompositorFromAppLaunch_Bool = "startCompositorFromAppLaunch"; + public const string k_pch_SteamVR_StartDashboardFromAppLaunch_Bool = "startDashboardFromAppLaunch"; + public const string k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool = "startOverlayAppsFromDashboard"; + public const string k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; + public const string k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; + public const string k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; + public const string k_pch_SteamVR_IpdOffset_Float = "ipdOffset"; + public const string k_pch_SteamVR_AllowSupersampleFiltering_Bool = "allowSupersampleFiltering"; + public const string k_pch_SteamVR_SupersampleManualOverride_Bool = "supersampleManualOverride"; + public const string k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = "enableLinuxVulkanAsync"; + public const string k_pch_SteamVR_AllowDisplayLockedMode_Bool = "allowDisplayLockedMode"; + public const string k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool = "haveStartedTutorialForNativeChaperoneDriver"; + public const string k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; + public const string k_pch_SteamVR_DebugInput = "debugInput"; + public const string k_pch_SteamVR_LegacyInputRebinding = "legacyInputRebinding"; + public const string k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; + public const string k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; + public const string k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; + public const string k_pch_Lighthouse_Section = "driver_lighthouse"; + public const string k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; + public const string k_pch_Lighthouse_DisableIMUExceptHMD_Bool = "disableimuexcepthmd"; + public const string k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; + public const string k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; + public const string k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; + public const string k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; + public const string k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; + public const string k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; + public const string k_pch_Null_Section = "driver_null"; + public const string k_pch_Null_SerialNumber_String = "serialNumber"; + public const string k_pch_Null_ModelNumber_String = "modelNumber"; + public const string k_pch_Null_WindowX_Int32 = "windowX"; + public const string k_pch_Null_WindowY_Int32 = "windowY"; + public const string k_pch_Null_WindowWidth_Int32 = "windowWidth"; + public const string k_pch_Null_WindowHeight_Int32 = "windowHeight"; + public const string k_pch_Null_RenderWidth_Int32 = "renderWidth"; + public const string k_pch_Null_RenderHeight_Int32 = "renderHeight"; + public const string k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons"; + public const string k_pch_Null_DisplayFrequency_Float = "displayFrequency"; + public const string k_pch_UserInterface_Section = "userinterface"; + public const string k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop"; + public const string k_pch_UserInterface_MinimizeToTray_Bool = "MinimizeToTray"; + public const string k_pch_UserInterface_Screenshots_Bool = "screenshots"; + public const string k_pch_UserInterface_ScreenshotType_Int = "screenshotType"; + public const string k_pch_Notifications_Section = "notifications"; + public const string k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; + public const string k_pch_Keyboard_Section = "keyboard"; + public const string k_pch_Keyboard_TutorialCompletions = "TutorialCompletions"; + public const string k_pch_Keyboard_ScaleX = "ScaleX"; + public const string k_pch_Keyboard_ScaleY = "ScaleY"; + public const string k_pch_Keyboard_OffsetLeftX = "OffsetLeftX"; + public const string k_pch_Keyboard_OffsetRightX = "OffsetRightX"; + public const string k_pch_Keyboard_OffsetY = "OffsetY"; + public const string k_pch_Keyboard_Smoothing = "Smoothing"; + public const string k_pch_Perf_Section = "perfcheck"; + public const string k_pch_Perf_HeuristicActive_Bool = "heuristicActive"; + public const string k_pch_Perf_NotifyInHMD_Bool = "warnInHMD"; + public const string k_pch_Perf_NotifyOnlyOnce_Bool = "warnOnlyOnce"; + public const string k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; + public const string k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; + public const string k_pch_Perf_TestData_Float = "perfTestData"; + public const string k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; + public const string k_pch_CollisionBounds_Section = "collisionBounds"; + public const string k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; + public const string k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; + public const string k_pch_CollisionBounds_CenterMarkerOn_Bool = "CollisionBoundsCenterMarkerOn"; + public const string k_pch_CollisionBounds_PlaySpaceOn_Bool = "CollisionBoundsPlaySpaceOn"; + public const string k_pch_CollisionBounds_FadeDistance_Float = "CollisionBoundsFadeDistance"; + public const string k_pch_CollisionBounds_ColorGammaR_Int32 = "CollisionBoundsColorGammaR"; + public const string k_pch_CollisionBounds_ColorGammaG_Int32 = "CollisionBoundsColorGammaG"; + public const string k_pch_CollisionBounds_ColorGammaB_Int32 = "CollisionBoundsColorGammaB"; + public const string k_pch_CollisionBounds_ColorGammaA_Int32 = "CollisionBoundsColorGammaA"; + public const string k_pch_Camera_Section = "camera"; + public const string k_pch_Camera_EnableCamera_Bool = "enableCamera"; + public const string k_pch_Camera_EnableCameraInDashboard_Bool = "enableCameraInDashboard"; + public const string k_pch_Camera_EnableCameraForCollisionBounds_Bool = "enableCameraForCollisionBounds"; + public const string k_pch_Camera_EnableCameraForRoomView_Bool = "enableCameraForRoomView"; + public const string k_pch_Camera_BoundsColorGammaR_Int32 = "cameraBoundsColorGammaR"; + public const string k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; + public const string k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; + public const string k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; + public const string k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; + public const string k_pch_Camera_RoomViewMode_Int32 = "cameraRoomViewMode"; + public const string k_pch_audio_Section = "audio"; + public const string k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice"; + public const string k_pch_audio_OnRecordDevice_String = "onRecordDevice"; + public const string k_pch_audio_OnPlaybackMirrorDevice_String = "onPlaybackMirrorDevice"; + public const string k_pch_audio_OffPlaybackDevice_String = "offPlaybackDevice"; + public const string k_pch_audio_OffRecordDevice_String = "offRecordDevice"; + public const string k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; + public const string k_pch_Power_Section = "power"; + public const string k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; + public const string k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; + public const string k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; + public const string k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; + public const string k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; + public const string k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby"; + public const string k_pch_Dashboard_Section = "dashboard"; + public const string k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; + public const string k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; + public const string k_pch_Dashboard_EnableWebUI = "webUI"; + public const string k_pch_Dashboard_EnableWebUIDevTools = "webUIDevTools"; + public const string k_pch_Dashboard_EnableWebUIDashboardReplacement = "webUIDashboard"; + public const string k_pch_modelskin_Section = "modelskins"; + public const string k_pch_Driver_Enable_Bool = "enable"; + public const string k_pch_WebInterface_Section = "WebInterface"; + public const string k_pch_WebInterface_WebEnable_Bool = "WebEnable"; + public const string k_pch_WebInterface_WebPort_String = "WebPort"; + public const string k_pch_TrackingOverride_Section = "TrackingOverrides"; + public const string k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL"; + public const string k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL"; + public const string k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave"; + public const string k_pch_App_ActionManifestURL_String = "ActionManifestURL"; + public const string k_pch_Trackers_Section = "trackers"; + public const string IVRScreenshots_Version = "IVRScreenshots_001"; + public const string IVRResources_Version = "IVRResources_001"; + public const string IVRDriverManager_Version = "IVRDriverManager_001"; + public const uint k_unMaxActionNameLength = 64; + public const uint k_unMaxActionSetNameLength = 64; + public const uint k_unMaxActionOriginCount = 16; + public const string IVRInput_Version = "IVRInput_004"; + public const ulong k_ulInvalidIOBufferHandle = 0; + public const string IVRIOBuffer_Version = "IVRIOBuffer_001"; + public const uint k_ulInvalidSpatialAnchorHandle = 0; + public const string IVRSpatialAnchors_Version = "IVRSpatialAnchors_001"; + + static uint VRToken { get; set; } + + const string FnTable_Prefix = "FnTable:"; + + class COpenVRContext + { + public COpenVRContext() { Clear(); } + + public void Clear() + { + m_pVRSystem = null; + m_pVRChaperone = null; + m_pVRChaperoneSetup = null; + m_pVRCompositor = null; + m_pVROverlay = null; + m_pVRRenderModels = null; + m_pVRExtendedDisplay = null; + m_pVRSettings = null; + m_pVRApplications = null; + m_pVRScreenshots = null; + m_pVRTrackedCamera = null; + m_pVRInput = null; + m_pVRSpatialAnchors = null; + } + + void CheckClear() + { + if (VRToken != GetInitToken()) + { + Clear(); + VRToken = GetInitToken(); + } + } + + public CVRSystem VRSystem() + { + CheckClear(); + if (m_pVRSystem == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRSystem_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRSystem = new CVRSystem(pInterface); + } + return m_pVRSystem; + } + + public CVRChaperone VRChaperone() + { + CheckClear(); + if (m_pVRChaperone == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRChaperone_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRChaperone = new CVRChaperone(pInterface); + } + return m_pVRChaperone; + } + + public CVRChaperoneSetup VRChaperoneSetup() + { + CheckClear(); + if (m_pVRChaperoneSetup == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRChaperoneSetup_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRChaperoneSetup = new CVRChaperoneSetup(pInterface); + } + return m_pVRChaperoneSetup; + } + + public CVRCompositor VRCompositor() + { + CheckClear(); + if (m_pVRCompositor == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRCompositor_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRCompositor = new CVRCompositor(pInterface); + } + return m_pVRCompositor; + } + + public CVROverlay VROverlay() + { + CheckClear(); + if (m_pVROverlay == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVROverlay_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVROverlay = new CVROverlay(pInterface); + } + return m_pVROverlay; + } + + public CVRRenderModels VRRenderModels() + { + CheckClear(); + if (m_pVRRenderModels == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRRenderModels_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRRenderModels = new CVRRenderModels(pInterface); + } + return m_pVRRenderModels; + } + + public CVRExtendedDisplay VRExtendedDisplay() + { + CheckClear(); + if (m_pVRExtendedDisplay == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRExtendedDisplay_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRExtendedDisplay = new CVRExtendedDisplay(pInterface); + } + return m_pVRExtendedDisplay; + } + + public CVRSettings VRSettings() + { + CheckClear(); + if (m_pVRSettings == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRSettings_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRSettings = new CVRSettings(pInterface); + } + return m_pVRSettings; + } + + public CVRApplications VRApplications() + { + CheckClear(); + if (m_pVRApplications == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRApplications_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRApplications = new CVRApplications(pInterface); + } + return m_pVRApplications; + } + + public CVRScreenshots VRScreenshots() + { + CheckClear(); + if (m_pVRScreenshots == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRScreenshots_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRScreenshots = new CVRScreenshots(pInterface); + } + return m_pVRScreenshots; + } + + public CVRTrackedCamera VRTrackedCamera() + { + CheckClear(); + if (m_pVRTrackedCamera == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRTrackedCamera_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRTrackedCamera = new CVRTrackedCamera(pInterface); + } + return m_pVRTrackedCamera; + } + + public CVRInput VRInput() + { + CheckClear(); + if (m_pVRInput == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRInput_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRInput = new CVRInput(pInterface); + } + return m_pVRInput; + } + + public CVRSpatialAnchors VRSpatialAnchors() + { + CheckClear(); + if (m_pVRSpatialAnchors == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix + IVRSpatialAnchors_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRSpatialAnchors = new CVRSpatialAnchors(pInterface); + } + return m_pVRSpatialAnchors; + } + + private CVRSystem m_pVRSystem; + private CVRChaperone m_pVRChaperone; + private CVRChaperoneSetup m_pVRChaperoneSetup; + private CVRCompositor m_pVRCompositor; + private CVROverlay m_pVROverlay; + private CVRRenderModels m_pVRRenderModels; + private CVRExtendedDisplay m_pVRExtendedDisplay; + private CVRSettings m_pVRSettings; + private CVRApplications m_pVRApplications; + private CVRScreenshots m_pVRScreenshots; + private CVRTrackedCamera m_pVRTrackedCamera; + private CVRInput m_pVRInput; + private CVRSpatialAnchors m_pVRSpatialAnchors; + }; + + private static COpenVRContext _OpenVRInternal_ModuleContext = null; + static COpenVRContext OpenVRInternal_ModuleContext + { + get + { + if (_OpenVRInternal_ModuleContext == null) + _OpenVRInternal_ModuleContext = new COpenVRContext(); + return _OpenVRInternal_ModuleContext; + } + } + + public static CVRSystem System { get { return OpenVRInternal_ModuleContext.VRSystem(); } } + public static CVRChaperone Chaperone { get { return OpenVRInternal_ModuleContext.VRChaperone(); } } + public static CVRChaperoneSetup ChaperoneSetup { get { return OpenVRInternal_ModuleContext.VRChaperoneSetup(); } } + public static CVRCompositor Compositor { get { return OpenVRInternal_ModuleContext.VRCompositor(); } } + public static CVROverlay Overlay { get { return OpenVRInternal_ModuleContext.VROverlay(); } } + public static CVRRenderModels RenderModels { get { return OpenVRInternal_ModuleContext.VRRenderModels(); } } + public static CVRExtendedDisplay ExtendedDisplay { get { return OpenVRInternal_ModuleContext.VRExtendedDisplay(); } } + public static CVRSettings Settings { get { return OpenVRInternal_ModuleContext.VRSettings(); } } + public static CVRApplications Applications { get { return OpenVRInternal_ModuleContext.VRApplications(); } } + public static CVRScreenshots Screenshots { get { return OpenVRInternal_ModuleContext.VRScreenshots(); } } + public static CVRTrackedCamera TrackedCamera { get { return OpenVRInternal_ModuleContext.VRTrackedCamera(); } } + public static CVRInput Input { get { return OpenVRInternal_ModuleContext.VRInput(); } } + public static CVRSpatialAnchors SpatialAnchors { get { return OpenVRInternal_ModuleContext.VRSpatialAnchors(); } } + + /** Finds the active installation of vrclient.dll and initializes it */ + public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene, string pchStartupInfo= "") + { + try + { + VRToken = InitInternal2(ref peError, eApplicationType, pchStartupInfo); + } + catch (EntryPointNotFoundException) + { + VRToken = InitInternal(ref peError, eApplicationType); + } + + OpenVRInternal_ModuleContext.Clear(); + + if (peError != EVRInitError.None) + return null; + + bool bInterfaceValid = IsInterfaceVersionValid(IVRSystem_Version); + if (!bInterfaceValid) + { + ShutdownInternal(); + peError = EVRInitError.Init_InterfaceNotFound; + return null; + } + + return OpenVR.System; + } + + /** unloads vrclient.dll. Any interface pointers from the interface are + * invalid after this point */ + public static void Shutdown() + { + ShutdownInternal(); + } + +} + + + +} + diff --git a/Assets/Oculus/VR/ThirdParty/openvr_api.cs.meta b/Assets/Oculus/VR/ThirdParty/openvr_api.cs.meta new file mode 100644 index 0000000..5d8ede7 --- /dev/null +++ b/Assets/Oculus/VR/ThirdParty/openvr_api.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c67f43f52cf38445a66e0ccabcd3ce1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 0000000..50f2ed1 --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 395c7440fe4f58a419abd06e441bc31f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android.meta b/Assets/Plugins/Android.meta new file mode 100644 index 0000000..cbf157b --- /dev/null +++ b/Assets/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9e3add01c9cfbd45bca7271bd51e396 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml new file mode 100644 index 0000000..208ccac --- /dev/null +++ b/Assets/Plugins/Android/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/Assets/Plugins/Android/AndroidManifest.xml.meta b/Assets/Plugins/Android/AndroidManifest.xml.meta new file mode 100644 index 0000000..11ed4ab --- /dev/null +++ b/Assets/Plugins/Android/AndroidManifest.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 542d0aaee3308a942b9f7903170f8b5d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100644 index 0000000..a2f49d8 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a975db466f2011446b91d8329d690d9b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/OVRBuildConfig.asset b/Assets/Resources/OVRBuildConfig.asset new file mode 100644 index 0000000..918a6e0 --- /dev/null +++ b/Assets/Resources/OVRBuildConfig.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 20553fac56ec59645857c0732b787431, type: 3} + m_Name: OVRBuildConfig + m_EditorClassIdentifier: + androidSDKPath: C:\Users\cadet\AppData\Local\Android\Sdk + gradlePath: + jdkPath: diff --git a/Assets/Resources/OVRBuildConfig.asset.meta b/Assets/Resources/OVRBuildConfig.asset.meta new file mode 100644 index 0000000..94f063e --- /dev/null +++ b/Assets/Resources/OVRBuildConfig.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ead21540a4b097c49aa95ab336d6ad2a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/OVRPlatformToolSettings.asset b/Assets/Resources/OVRPlatformToolSettings.asset new file mode 100644 index 0000000..5f00f8f --- /dev/null +++ b/Assets/Resources/OVRPlatformToolSettings.asset @@ -0,0 +1,124 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cd7bb81df5b74b34dadbf531f381a26b, type: 3} + m_Name: OVRPlatformToolSettings + m_EditorClassIdentifier: + appIDs: + - + - + - + appTokens: + - + - + - + releaseNotes: + - + - + - + releaseChannels: + - Alpha + - Alpha + - Alpha + riftBuildDiretory: + riftBuildVersion: + riftLaunchFile: + riftLaunchParams: + rift2DLaunchFile: + rift2DLaunchParams: + riftFirewallException: 0 + riftGamepadEmulation: 0 + riftRedistPackages: + - include: 0 + name: ' .NET Framework 3.5' + id: ' 606493776156948 ' + - include: 0 + name: ' .NET Framework 4.0' + id: ' 133610290311340 ' + - include: 0 + name: ' .NET Framework 4.5.1' + id: ' 1617306711884127 ' + - include: 0 + name: ' .NET Framework 4.7.1' + id: ' 1667821599930345 ' + - include: 0 + name: ' DirectX (June 2010)' + id: ' 822786567843179 ' + - include: 0 + name: ' OpenAL 1.1' + id: ' 1147517301974655 ' + - include: 0 + name: ' Visual C++ 2005' + id: ' 1604897159783747 ' + - include: 0 + name: ' Visual C++ 2008' + id: ' 118440348500045 ' + - include: 0 + name: ' Visual C++ 2010' + id: ' 532320330249657 ' + - include: 0 + name: ' Visual C++ 2010 x86' + id: ' 1008652072555515 ' + - include: 0 + name: ' Visual C++ 2012' + id: ' 1683508698536289 ' + - include: 0 + name: ' Visual C++ 2012 x86' + id: ' 1002692246447245 ' + - include: 0 + name: ' Visual C++ 2013' + id: ' 1675031999409058 ' + - include: 0 + name: ' Visual C++ 2013 x86' + id: ' 910524935693407 ' + - include: 0 + name: ' Visual C++ 2015 Update 3' + id: ' 1183534128364060 ' + - include: 0 + name: ' Visual C++ 2015 x86 Update 3' + id: ' 1113033105419344 ' + - include: 0 + name: ' Visual C++ 2017' + id: ' 1315322525257173 ' + - include: 0 + name: ' Visual C++ 2017 x86' + id: ' 1064693870299984 ' + - include: 0 + name: ' Visual C++ 2019' + id: ' 2657209094360789 ' + - include: 0 + name: ' Visual C++ 2019 x86' + id: ' 2556834837738356 ' + - include: 0 + name: ' Vulkan Runtime 1.0.65.1' + id: ' 1824471960899274 ' + - include: 0 + name: ' Vulkan Runtime 1.1.73.0' + id: ' 1941020095932382 ' + languagePackDirectory: + apkBuildPaths: + - + - + - + obbFilePaths: + - + - + - + assetsDirectorys: + - + - + - + assetConfigs: + - configList: [] + - configList: [] + - configList: [] + targetPlatform: 2 + runOvrLint: 1 diff --git a/Assets/Resources/OVRPlatformToolSettings.asset.meta b/Assets/Resources/OVRPlatformToolSettings.asset.meta new file mode 100644 index 0000000..0599f1a --- /dev/null +++ b/Assets/Resources/OVRPlatformToolSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 775c5ab9d750f3e4eacf847d6d762397 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/OculusPlatformSettings.asset b/Assets/Resources/OculusPlatformSettings.asset new file mode 100644 index 0000000..2324ee0 --- /dev/null +++ b/Assets/Resources/OculusPlatformSettings.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b3d881e962d099f4a8eb492ef7e9a8c0, type: 3} + m_Name: OculusPlatformSettings + m_EditorClassIdentifier: + ovrAppID: + ovrMobileAppID: 3156518597752790 + ovrUseStandalonePlatform: 0 + ovrEnableARM64Support: 0 diff --git a/Assets/Resources/OculusPlatformSettings.asset.meta b/Assets/Resources/OculusPlatformSettings.asset.meta new file mode 100644 index 0000000..8f2c7a6 --- /dev/null +++ b/Assets/Resources/OculusPlatformSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6300d5b68341694689eeffe769fdc39 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta new file mode 100644 index 0000000..b0ac1ca --- /dev/null +++ b/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bbe93819cb6809b40a518ab9198e9f07 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity new file mode 100644 index 0000000..97a0cc3 --- /dev/null +++ b/Assets/Scenes/Main.unity @@ -0,0 +1,8078 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0, g: 0, b: 0, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 1 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 2 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 112000000, guid: 99ba069efe353d844bfe565c4b0c4837, + type: 2} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &8339388 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8339389} + - component: {fileID: 8339393} + - component: {fileID: 8339392} + - component: {fileID: 8339391} + - component: {fileID: 8339390} + m_Layer: 0 + m_Name: Text Leaderboard + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8339389 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8339388} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.00999999} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 79236692} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1.6300005, y: -0.24} + m_SizeDelta: {x: 3.3, y: 2.55} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &8339390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8339388} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Username + + Username + + Username' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 5.57 + m_fontSizeBase: 5.57 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 257 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 31.17 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: -0.24460693, w: 0} + m_textInfo: + textComponent: {fileID: 8339390} + characterCount: 26 + spriteCount: 0 + spaceCount: 2 + wordCount: 3 + linkCount: 0 + lineCount: 3 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8339393} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &8339391 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8339388} + m_CullTransparentMesh: 0 +--- !u!33 &8339392 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8339388} + m_Mesh: {fileID: 0} +--- !u!23 &8339393 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8339388} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &42838980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 42838981} + - component: {fileID: 42838985} + - component: {fileID: 42838984} + - component: {fileID: 42838983} + - component: {fileID: 42838982} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &42838981 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42838980} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 766831860} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.7} + m_SizeDelta: {x: 1, y: 0.4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &42838982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42838980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Music + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 0 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 42838982} + characterCount: 5 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 42838983} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!23 &42838983 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42838980} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!222 &42838984 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42838980} + m_CullTransparentMesh: 0 +--- !u!33 &42838985 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42838980} + m_Mesh: {fileID: 0} +--- !u!1 &79236691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 79236692} + - component: {fileID: 79236694} + - component: {fileID: 79236693} + m_Layer: 0 + m_Name: Leaderboard + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &79236692 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79236691} + m_LocalRotation: {x: 0.007157867, y: 0.7070706, z: 0.007157867, w: 0.7070706} + m_LocalPosition: {x: 4.626, y: -0.25, z: 4.31} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8339389} + m_Father: {fileID: 383045425} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 1.16} +--- !u!23 &79236693 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79236691} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &79236694 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79236691} + m_Mesh: {fileID: 4300052, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &81886393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 81886394} + - component: {fileID: 81886398} + - component: {fileID: 81886397} + - component: {fileID: 81886396} + - component: {fileID: 81886395} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &81886394 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 81886393} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 315596728} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.7} + m_SizeDelta: {x: 1, y: 0.4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &81886395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 81886393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: MSAA + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 0 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 81886395} + characterCount: 4 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 81886396} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!23 &81886396 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 81886393} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!222 &81886397 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 81886393} + m_CullTransparentMesh: 0 +--- !u!33 &81886398 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 81886393} + m_Mesh: {fileID: 0} +--- !u!1 &202625280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 202625281} + - component: {fileID: 202625285} + - component: {fileID: 202625284} + - component: {fileID: 202625283} + - component: {fileID: 202625282} + m_Layer: 0 + m_Name: Text Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &202625281 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202625280} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 580349063} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &202625282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202625280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: '000 / 000 + + ^-^' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 2 + m_wordSpacing: 0 + m_lineSpacing: 80 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 10 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 202625282} + characterCount: 13 + spriteCount: 0 + spaceCount: 3 + wordCount: 3 + linkCount: 0 + lineCount: 2 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 202625285} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &202625283 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202625280} + m_CullTransparentMesh: 0 +--- !u!33 &202625284 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202625280} + m_Mesh: {fileID: 0} +--- !u!23 &202625285 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202625280} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &232198204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 232198205} + - component: {fileID: 232198209} + - component: {fileID: 232198208} + - component: {fileID: 232198207} + - component: {fileID: 232198206} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &232198205 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232198204} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.01} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 462344509} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &232198206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232198204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292601070 + m_fontColor: {r: 0.9333334, g: 0.8941177, b: 0.8588236, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 232198206} + characterCount: 3 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 232198209} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &232198207 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232198204} + m_CullTransparentMesh: 0 +--- !u!33 &232198208 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232198204} + m_Mesh: {fileID: 0} +--- !u!23 &232198209 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232198204} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &315596727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315596728} + - component: {fileID: 315596730} + - component: {fileID: 315596729} + m_Layer: 0 + m_Name: Stepper MSAA + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &315596728 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315596727} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.25, y: 0, z: -0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 611823982} + - {fileID: 81886394} + m_Father: {fileID: 2101684220} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &315596729 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315596727} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &315596730 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315596727} + m_Mesh: {fileID: 4300026, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &343354973 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 343354974} + - component: {fileID: 343354975} + m_Layer: 0 + m_Name: SFX + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &343354974 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 343354973} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.17, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &343354975 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 343354973} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 5 + MaxDistance: 2500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &351576463 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 351576464} + - component: {fileID: 351576466} + - component: {fileID: 351576465} + m_Layer: 0 + m_Name: Bounds + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &351576464 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 351576463} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1201621561} + m_Father: {fileID: 1796811813} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &351576465 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 351576463} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &351576466 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 351576463} + m_Mesh: {fileID: 4300002, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &383045424 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 383045425} + m_Layer: 0 + m_Name: Menu Main + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &383045425 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 383045424} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1283737051} + - {fileID: 1000942070} + - {fileID: 1409833484} + - {fileID: 1643476467} + - {fileID: 905512769} + - {fileID: 965477373} + - {fileID: 79236692} + m_Father: {fileID: 1510915030} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &408032439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 408032441} + - component: {fileID: 408032440} + - component: {fileID: 408032442} + m_Layer: 0 + m_Name: Loop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!82 &408032440 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408032439} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 11488f53bfe50f54284d1afb96ada393, type: 3} + m_PlayOnAwake: 1 + m_Volume: 0 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!4 &408032441 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408032439} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &408032442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408032439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5849458ceeb30fd4fb4dc81efde12d91, type: 3} + m_Name: + m_EditorClassIdentifier: + main: {fileID: 1796811812} + tick: 0 + gain: 0.5 + signatureLo: 4 +--- !u!1 &416451005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 416451006} + - component: {fileID: 416451007} + m_Layer: 0 + m_Name: Rig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &416451006 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 416451005} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 963194228} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &416451007 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 416451005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85a9e91f5490eb7459a500d8f39024fa, type: 3} + m_Name: + m_EditorClassIdentifier: + design: {fileID: 11400000, guid: e32077fc3027a1b48909bb54527a2ad4, type: 2} + main: {fileID: 1796811812} + disconnected: {fileID: 1638248270} + head: {fileID: 963194228} + remote: 0 + controllerRot: {x: 0, y: 0, z: 0, w: 1} + boxShake: {x: 0, y: 0, z: 0} + boxOffset: {x: 0, y: 0, z: 0} + ready: 0 +--- !u!1 &434999704 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 434999705} + - component: {fileID: 434999707} + - component: {fileID: 434999706} + m_Layer: 0 + m_Name: Button Color + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &434999705 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 434999704} + m_LocalRotation: {x: -0.008726535, y: 0.9999619, z: 3.8144898e-10, w: -0.000000043709722} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 580349063} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &434999706 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 434999704} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &434999707 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 434999704} + m_Mesh: {fileID: 4300072, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &462344508 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 462344509} + - component: {fileID: 462344511} + - component: {fileID: 462344510} + m_Layer: 0 + m_Name: Stepper BPM + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &462344509 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 462344508} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.75, y: 0, z: -0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 232198205} + - {fileID: 1051890145} + m_Father: {fileID: 2101684220} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &462344510 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 462344508} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &462344511 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 462344508} + m_Mesh: {fileID: 4300026, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &485926732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 485926733} + - component: {fileID: 485926737} + - component: {fileID: 485926736} + - component: {fileID: 485926735} + - component: {fileID: 485926734} + m_Layer: 0 + m_Name: From Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &485926733 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485926732} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.0010004044} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 965477373} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.25299996, y: 4.61} + m_SizeDelta: {x: 2.02, y: 1.9} + m_Pivot: {x: 0, y: 1} +--- !u!114 &485926734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485926732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'dofdev + + Spokane WA' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.2 + m_fontSizeBase: 4.2 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 257 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 485926734} + characterCount: 17 + spriteCount: 0 + spaceCount: 2 + wordCount: 3 + linkCount: 0 + lineCount: 2 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 485926737} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &485926735 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485926732} + m_CullTransparentMesh: 0 +--- !u!33 &485926736 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485926732} + m_Mesh: {fileID: 0} +--- !u!23 &485926737 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 485926732} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &542307034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 542307035} + - component: {fileID: 542307037} + - component: {fileID: 542307036} + m_Layer: 0 + m_Name: Button Home + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &542307035 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542307034} + m_LocalRotation: {x: 0.017452406, y: 0.9998477, z: -7.628689e-10, w: -0.00000004370473} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 580349063} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &542307036 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542307034} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &542307037 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542307034} + m_Mesh: {fileID: 4300024, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &558748033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 558748034} + - component: {fileID: 558748037} + - component: {fileID: 558748036} + - component: {fileID: 558748038} + - component: {fileID: 558748035} + m_Layer: 0 + m_Name: Text Title (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &558748034 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 558748033} + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1638248273} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.501, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &558748035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 558748033} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "3dof+ \ncontroller\nrequired" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 1.8 + m_fontSizeBase: 1.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 558748035} + characterCount: 26 + spriteCount: 0 + spaceCount: 3 + wordCount: 3 + linkCount: 0 + lineCount: 3 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 558748038} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &558748036 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 558748033} + m_CullTransparentMesh: 0 +--- !u!33 &558748037 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 558748033} + m_Mesh: {fileID: 0} +--- !u!23 &558748038 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 558748033} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &559954722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 559954723} + m_Layer: 0 + m_Name: Menu Pause + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &559954723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 559954722} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1414004966} + - {fileID: 1366624817} + - {fileID: 1518462475} + - {fileID: 1088530875} + m_Father: {fileID: 1510915030} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &580349062 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 580349063} + m_Layer: 0 + m_Name: Menu GameOver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &580349063 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580349062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 202625281} + - {fileID: 1616366179} + - {fileID: 434999705} + - {fileID: 813030301} + - {fileID: 542307035} + m_Father: {fileID: 1510915030} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &611823981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 611823982} + - component: {fileID: 611823986} + - component: {fileID: 611823985} + - component: {fileID: 611823984} + - component: {fileID: 611823983} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &611823982 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611823981} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 315596728} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &611823983 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611823981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292601070 + m_fontColor: {r: 0.9333334, g: 0.8941177, b: 0.8588236, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 611823983} + characterCount: 3 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 611823986} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &611823984 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611823981} + m_CullTransparentMesh: 0 +--- !u!33 &611823985 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611823981} + m_Mesh: {fileID: 0} +--- !u!23 &611823986 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611823981} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &662602230 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 662602231} + - component: {fileID: 662602234} + - component: {fileID: 662602233} + - component: {fileID: 662602235} + - component: {fileID: 662602232} + m_Layer: 0 + m_Name: Text Title (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &662602231 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662602230} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.501} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1638248273} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &662602232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662602230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "3dof+ \ncontroller\nrequired" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 1.8 + m_fontSizeBase: 1.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 662602232} + characterCount: 26 + spriteCount: 0 + spaceCount: 3 + wordCount: 3 + linkCount: 0 + lineCount: 3 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 662602235} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &662602233 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662602230} + m_CullTransparentMesh: 0 +--- !u!33 &662602234 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662602230} + m_Mesh: {fileID: 0} +--- !u!23 &662602235 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662602230} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &706504448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 706504449} + - component: {fileID: 706504451} + - component: {fileID: 706504450} + m_Layer: 0 + m_Name: Stepper SFX + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &706504449 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706504448} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.75, y: 0, z: -0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1306510285} + - {fileID: 1176141350} + m_Father: {fileID: 2101684220} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &706504450 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706504448} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &706504451 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706504448} + m_Mesh: {fileID: 4300026, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &766831859 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 766831860} + - component: {fileID: 766831862} + - component: {fileID: 766831861} + m_Layer: 0 + m_Name: Stepper Music + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &766831860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 766831859} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.25, y: 0, z: -0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1677932697} + - {fileID: 42838981} + m_Father: {fileID: 2101684220} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &766831861 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 766831859} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &766831862 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 766831859} + m_Mesh: {fileID: 4300026, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &813030300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 813030301} + - component: {fileID: 813030303} + - component: {fileID: 813030302} + m_Layer: 0 + m_Name: Button Color Disabled + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &813030301 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813030300} + m_LocalRotation: {x: -0.008726535, y: 0.9999619, z: 3.8144898e-10, w: -0.000000043709722} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 580349063} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &813030302 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813030300} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d584c93390323c84cbdb0665a4a3721a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &813030303 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813030300} + m_Mesh: {fileID: 4300072, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &850212507 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 850212508} + - component: {fileID: 850212509} + m_Layer: 0 + m_Name: Recording + m_TagString: Record + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &850212508 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850212507} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 963194228} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &850212509 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850212507} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.17156704, g: 0.13550195, b: 0.2735849, a: 1} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 3000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &888073833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 888073834} + - component: {fileID: 888073838} + - component: {fileID: 888073837} + - component: {fileID: 888073836} + - component: {fileID: 888073835} + m_Layer: 0 + m_Name: Username Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &888073834 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888073833} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 965477373} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 2.3} + m_SizeDelta: {x: 3.4, y: 0.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &888073835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888073833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'username + + 000 highscore ave' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4 + m_fontSizeBase: 4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 258 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 9 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 888073835} + characterCount: 26 + spriteCount: 0 + spaceCount: 3 + wordCount: 4 + linkCount: 0 + lineCount: 2 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 888073838} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &888073836 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888073833} + m_CullTransparentMesh: 0 +--- !u!33 &888073837 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888073833} + m_Mesh: {fileID: 0} +--- !u!23 &888073838 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888073833} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &905512768 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 905512769} + - component: {fileID: 905512771} + - component: {fileID: 905512770} + m_Layer: 0 + m_Name: Button Quit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &905512769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 905512768} + m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.00000004371139} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 383045425} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &905512770 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 905512768} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &905512771 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 905512768} + m_Mesh: {fileID: 4300018, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &915284777 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 915284778} + - component: {fileID: 915284780} + - component: {fileID: 915284779} + m_Layer: 0 + m_Name: Tape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &915284778 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 915284777} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 4.51} + m_LocalScale: {x: 1.02, y: 1.02, z: 1.02} + m_Children: [] + m_Father: {fileID: 1510915030} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &915284779 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 915284777} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &915284780 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 915284777} + m_Mesh: {fileID: 4300028, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &941696331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 941696333} + - component: {fileID: 941696332} + m_Layer: 0 + m_Name: Rain Loop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!82 &941696332 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 941696331} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 54853368e90ccf247aa2d98d22da8ffd, type: 3} + m_PlayOnAwake: 1 + m_Volume: 0.5 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 256 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!4 &941696333 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 941696331} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &950738597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 950738598} + - component: {fileID: 950738601} + - component: {fileID: 950738600} + - component: {fileID: 950738602} + - component: {fileID: 950738599} + m_Layer: 0 + m_Name: Text Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &950738598 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950738597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.501} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1638248273} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &950738599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950738597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "3dof+ \ncontroller\nrequired" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 1.8 + m_fontSizeBase: 1.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 950738599} + characterCount: 26 + spriteCount: 0 + spaceCount: 3 + wordCount: 3 + linkCount: 0 + lineCount: 3 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 950738602} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &950738600 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950738597} + m_CullTransparentMesh: 0 +--- !u!33 &950738601 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950738597} + m_Mesh: {fileID: 0} +--- !u!23 &950738602 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950738597} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + - component: {fileID: 963194227} + - component: {fileID: 963194226} + - component: {fileID: 963194229} + m_Layer: 0 + m_Name: Head + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &963194226 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 +--- !u!20 &963194227 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.17156704, g: 0.13550195, b: 0.2735849, a: 1} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 3000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -16} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 850212508} + m_Father: {fileID: 416451006} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &963194229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e933e81d3c20c74ea6fdc708a67e3a5, type: 3} + m_Name: + m_EditorClassIdentifier: + queueAhead: 1 + useRecommendedMSAALevel: 0 + _monoscopic: 0 + enableAdaptiveResolution: 0 + minRenderScale: 0.7 + maxRenderScale: 1 + _headPoseRelativeOffsetRotation: {x: 0, y: 0, z: 0} + _headPoseRelativeOffsetTranslation: {x: 0, y: 0, z: 0} + profilerTcpPort: 32419 + expandMixedRealityCapturePropertySheet: 0 + enableMixedReality: 0 + compositionMethod: 0 + extraHiddenLayers: + serializedVersion: 2 + m_Bits: 0 + externalCompositionBackdropColorRift: {r: 0, g: 1, b: 0, a: 1} + externalCompositionBackdropColorQuest: {r: 0, g: 0, b: 0, a: 0} + capturingCameraDevice: 0 + flipCameraFrameHorizontally: 0 + flipCameraFrameVertically: 0 + handPoseStateLatency: 0 + sandwichCompositionRenderLatency: 0 + sandwichCompositionBufferedFrames: 8 + chromaKeyColor: {r: 0, g: 1, b: 0, a: 1} + chromaKeySimilarity: 0.6 + chromaKeySmoothRange: 0.03 + chromaKeySpillRange: 0.06 + useDynamicLighting: 0 + depthQuality: 1 + dynamicLightingSmoothFactor: 8 + dynamicLightingDepthVariationClampingValue: 0.001 + virtualGreenScreenType: 0 + virtualGreenScreenTopY: 10 + virtualGreenScreenBottomY: -10 + virtualGreenScreenApplyDepthCulling: 0 + virtualGreenScreenDepthTolerance: 0.2 + mrcActivationMode: 0 + _trackingOriginType: 0 + usePositionTracking: 1 + useRotationTracking: 1 + useIPDInPositionTracking: 1 + resetTrackerOnLoad: 0 + AllowRecenter: 1 + _reorientHMDOnControllerRecenter: 1 + LateControllerUpdate: 1 +--- !u!1 &965477372 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965477373} + - component: {fileID: 965477375} + - component: {fileID: 965477374} + m_Layer: 0 + m_Name: Shipping Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &965477373 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965477372} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.94, y: -1.99, z: 9.22} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2065174152} + - {fileID: 485926733} + - {fileID: 1946433802} + - {fileID: 888073834} + m_Father: {fileID: 383045425} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &965477374 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965477372} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &965477375 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965477372} + m_Mesh: {fileID: 4300034, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &997515806 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 997515807} + - component: {fileID: 997515811} + - component: {fileID: 997515810} + - component: {fileID: 997515809} + - component: {fileID: 997515808} + m_Layer: 0 + m_Name: Text Track + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &997515807 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997515806} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 8.929999} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1510915030} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.78} + m_SizeDelta: {x: 9, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &997515808 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997515806} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Aloe for your snake bite + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 6.73 + m_fontSizeBase: 6.73 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 5 + m_wordSpacing: 5 + m_lineSpacing: 80 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 997515808} + characterCount: 24 + spriteCount: 0 + spaceCount: 4 + wordCount: 5 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 997515811} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &997515809 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997515806} + m_CullTransparentMesh: 0 +--- !u!33 &997515810 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997515806} + m_Mesh: {fileID: 0} +--- !u!23 &997515811 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997515806} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1000942069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1000942070} + - component: {fileID: 1000942074} + - component: {fileID: 1000942073} + - component: {fileID: 1000942072} + - component: {fileID: 1000942071} + m_Layer: 0 + m_Name: Credits + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1000942070 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000942069} + m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.11999998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 383045425} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 9, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1000942071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000942069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "Ethan Merchant \n[Unity Blender]\n\nNik McAvoy \n[PO-33 PO-20 Audacity]" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 6.73 + m_fontSizeBase: 6.73 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 5 + m_wordSpacing: 5 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 16 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1000942071} + characterCount: 67 + spriteCount: 0 + spaceCount: 11 + wordCount: 9 + linkCount: 0 + lineCount: 5 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1000942074} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1000942072 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000942069} + m_CullTransparentMesh: 0 +--- !u!33 &1000942073 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000942069} + m_Mesh: {fileID: 0} +--- !u!23 &1000942074 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000942069} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1051890144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1051890145} + - component: {fileID: 1051890149} + - component: {fileID: 1051890148} + - component: {fileID: 1051890147} + - component: {fileID: 1051890146} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1051890145 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1051890144} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 462344509} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.7} + m_SizeDelta: {x: 1, y: 0.4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1051890146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1051890144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: BPM + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 0 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1051890146} + characterCount: 3 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1051890147} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!23 &1051890147 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1051890144} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!222 &1051890148 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1051890144} + m_CullTransparentMesh: 0 +--- !u!33 &1051890149 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1051890144} + m_Mesh: {fileID: 0} +--- !u!1 &1088530874 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1088530875} + - component: {fileID: 1088530877} + - component: {fileID: 1088530876} + m_Layer: 0 + m_Name: Button Home + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1088530875 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1088530874} + m_LocalRotation: {x: -0.034899496, y: 0.99939084, z: 0.0000000015255054, w: -0.00000004368476} + m_LocalPosition: {x: 2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 559954723} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1088530876 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1088530874} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1088530877 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1088530874} + m_Mesh: {fileID: 4300024, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1115447029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1115447032} + - component: {fileID: 1115447031} + - component: {fileID: 1115447030} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!23 &1115447030 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115447029} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d584c93390323c84cbdb0665a4a3721a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1115447031 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115447029} + m_Mesh: {fileID: 4300076, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!4 &1115447032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115447029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -5.9, z: 0} + m_LocalScale: {x: 1, y: 62.2, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1176141349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1176141350} + - component: {fileID: 1176141354} + - component: {fileID: 1176141353} + - component: {fileID: 1176141352} + - component: {fileID: 1176141351} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1176141350 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1176141349} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 706504449} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.7} + m_SizeDelta: {x: 1, y: 0.4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1176141351 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1176141349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: SFX + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 0 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1176141351} + characterCount: 3 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1176141352} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!23 &1176141352 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1176141349} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!222 &1176141353 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1176141349} + m_CullTransparentMesh: 0 +--- !u!33 &1176141354 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1176141349} + m_Mesh: {fileID: 0} +--- !u!1 &1201621560 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1201621561} + - component: {fileID: 1201621563} + - component: {fileID: 1201621562} + m_Layer: 0 + m_Name: Corrugated + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1201621561 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201621560} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.02, y: 1.025, z: 1.02} + m_Children: [] + m_Father: {fileID: 351576464} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1201621562 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201621560} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 1c10cdae32840cd4da5fa22f18738db9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1201621563 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1201621560} + m_Mesh: {fileID: 4300002, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1283737050 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1283737051} + - component: {fileID: 1283737055} + - component: {fileID: 1283737054} + - component: {fileID: 1283737053} + - component: {fileID: 1283737052} + m_Layer: 0 + m_Name: Text Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1283737051 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283737050} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 383045425} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1283737052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283737050} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "Snake \nin a Box" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 5 + m_wordSpacing: 5 + m_lineSpacing: 80 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 7 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1283737052} + characterCount: 15 + spriteCount: 0 + spaceCount: 4 + wordCount: 4 + linkCount: 0 + lineCount: 2 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1283737055} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1283737053 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283737050} + m_CullTransparentMesh: 0 +--- !u!33 &1283737054 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283737050} + m_Mesh: {fileID: 0} +--- !u!23 &1283737055 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283737050} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1306510284 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1306510285} + - component: {fileID: 1306510289} + - component: {fileID: 1306510288} + - component: {fileID: 1306510287} + - component: {fileID: 1306510286} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1306510285 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306510284} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 706504449} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1306510286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306510284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292601070 + m_fontColor: {r: 0.9333334, g: 0.8941177, b: 0.8588236, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1306510286} + characterCount: 3 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1306510289} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1306510287 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306510284} + m_CullTransparentMesh: 0 +--- !u!33 &1306510288 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306510284} + m_Mesh: {fileID: 0} +--- !u!23 &1306510289 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306510284} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1317232481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1317232482} + - component: {fileID: 1317232484} + - component: {fileID: 1317232483} + m_Layer: 0 + m_Name: Cursor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1317232482 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1317232481} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: -0.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1510915030} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1317232483 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1317232481} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1317232484 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1317232481} + m_Mesh: {fileID: 4300016, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1366624816 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1366624817} + - component: {fileID: 1366624819} + - component: {fileID: 1366624818} + m_Layer: 0 + m_Name: Button Resume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1366624817 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366624816} + m_LocalRotation: {x: 0.008726535, y: 0.9999619, z: -3.8144898e-10, w: -0.000000043709722} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 559954723} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1366624818 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366624816} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1366624819 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366624816} + m_Mesh: {fileID: 4300012, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1409833483 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1409833484} + - component: {fileID: 1409833486} + - component: {fileID: 1409833485} + m_Layer: 0 + m_Name: Button Play + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1409833484 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1409833483} + m_LocalRotation: {x: 0.02617695, y: 0.99965733, z: -0.0000000011442308, w: -0.00000004369641} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 383045425} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1409833485 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1409833483} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1409833486 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1409833483} + m_Mesh: {fileID: 4300012, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1414004965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1414004966} + - component: {fileID: 1414004970} + - component: {fileID: 1414004969} + - component: {fileID: 1414004968} + - component: {fileID: 1414004967} + m_Layer: 0 + m_Name: Text Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1414004966 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414004965} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 559954723} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1414004967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414004965} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "Pause \nin a box" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 5 + m_wordSpacing: 5 + m_lineSpacing: 80 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 7 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1414004967} + characterCount: 15 + spriteCount: 0 + spaceCount: 4 + wordCount: 4 + linkCount: 0 + lineCount: 2 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 1 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1414004970} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1414004968 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414004965} + m_CullTransparentMesh: 0 +--- !u!33 &1414004969 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414004965} + m_Mesh: {fileID: 0} +--- !u!23 &1414004970 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414004965} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1462420883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1462420884} + - component: {fileID: 1462420888} + - component: {fileID: 1462420887} + - component: {fileID: 1462420886} + - component: {fileID: 1462420885} + m_Layer: 0 + m_Name: Text Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1462420884 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462420883} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2101684220} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1462420885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462420883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Change + + the box' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 5 + m_wordSpacing: 5 + m_lineSpacing: 80 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: 7 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1462420885} + characterCount: 14 + spriteCount: 0 + spaceCount: 2 + wordCount: 3 + linkCount: 0 + lineCount: 2 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 1 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1462420888} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1462420886 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462420883} + m_CullTransparentMesh: 0 +--- !u!33 &1462420887 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462420883} + m_Mesh: {fileID: 0} +--- !u!23 &1462420888 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462420883} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1510915027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1510915030} + - component: {fileID: 1510915028} + - component: {fileID: 1510915029} + - component: {fileID: 1510915031} + m_Layer: 0 + m_Name: UI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &1510915028 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1510915027} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300014, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!114 &1510915029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1510915027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2a4062f939aa4942813c7a1e1a25c99, type: 3} + m_Name: + m_EditorClassIdentifier: + active: 1 + uiButtons: + - {fileID: 1409833484} + - {fileID: 1643476467} + - {fileID: 905512769} + - {fileID: 1366624817} + - {fileID: 1518462475} + - {fileID: 1088530875} + - {fileID: 1616366179} + - {fileID: 434999705} + - {fileID: 542307035} + - {fileID: 1603319127} + uiSteppers: + - {fileID: 462344509} + - {fileID: 315596728} + - {fileID: 766831860} + - {fileID: 706504449} + stepRanges: + - steps: 50000000780000008c000000 + defaultIndex: 0 + - steps: 000000000200000004000000 + defaultIndex: 2 + - steps: 000000000100000002000000030000000400000005000000 + defaultIndex: 5 + - steps: 000000000100000002000000030000000400000005000000 + defaultIndex: 5 + main: {fileID: 1796811812} + uiCursor: {fileID: 1317232482} + tape: {fileID: 915284777} + menuMain: {fileID: 383045424} + menuPause: {fileID: 559954722} + menuGameOver: {fileID: 580349062} + menuConfig: {fileID: 2101684219} + audioSource: {fileID: 1510915031} + sfxHover: {fileID: 8300000, guid: 12aeb385f81005a49aa3de20b5984e02, type: 3} + sfxClick: {fileID: 8300000, guid: 10a0f63b840c3c74b950a0e71e433b45, type: 3} + sfxBack: {fileID: 8300000, guid: ed1ac1aed2049444bb77cab4305b5b7d, type: 3} + usernameText: {fileID: 888073835} + leaderboardText: {fileID: 8339390} + scoreText: {fileID: 1991466027} + trackText: {fileID: 997515808} + cursorIndex: 0 + tiltDegrees: 4 +--- !u!4 &1510915030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1510915027} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -4.51} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1317232482} + - {fileID: 915284778} + - {fileID: 1991466031} + - {fileID: 997515807} + - {fileID: 383045425} + - {fileID: 559954723} + - {fileID: 580349063} + - {fileID: 2101684220} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &1510915031 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1510915027} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &1518462474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1518462475} + - component: {fileID: 1518462477} + - component: {fileID: 1518462476} + m_Layer: 0 + m_Name: Button Restart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1518462475 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1518462474} + m_LocalRotation: {x: 0.017452406, y: 0.9998477, z: -7.628689e-10, w: -0.00000004370473} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 559954723} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1518462476 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1518462474} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1518462477 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1518462474} + m_Mesh: {fileID: 4300022, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1603319126 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1603319127} + - component: {fileID: 1603319129} + - component: {fileID: 1603319128} + m_Layer: 0 + m_Name: Button Home + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1603319127 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603319126} + m_LocalRotation: {x: 0.008726535, y: 0.9999619, z: -3.8144898e-10, w: -0.000000043709722} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2101684220} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1603319128 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603319126} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1603319129 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603319126} + m_Mesh: {fileID: 4300024, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1616366178 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1616366179} + - component: {fileID: 1616366181} + - component: {fileID: 1616366180} + m_Layer: 0 + m_Name: Button Restart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1616366179 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616366178} + m_LocalRotation: {x: 0.017452406, y: 0.9998477, z: -7.628689e-10, w: -0.00000004370473} + m_LocalPosition: {x: -2, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 580349063} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1616366180 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616366178} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1616366181 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616366178} + m_Mesh: {fileID: 4300022, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1637713051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1637713052} + - component: {fileID: 1637713055} + - component: {fileID: 1637713054} + - component: {fileID: 1637713056} + - component: {fileID: 1637713053} + m_Layer: 0 + m_Name: Text Title (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1637713052 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1637713051} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1638248273} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.501, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1637713053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1637713051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "3dof+ \ncontroller\nrequired" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 1.8 + m_fontSizeBase: 1.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1637713053} + characterCount: 26 + spriteCount: 0 + spaceCount: 3 + wordCount: 3 + linkCount: 0 + lineCount: 3 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1637713056} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1637713054 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1637713051} + m_CullTransparentMesh: 0 +--- !u!33 &1637713055 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1637713051} + m_Mesh: {fileID: 0} +--- !u!23 &1637713056 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1637713051} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1638248270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1638248273} + - component: {fileID: 1638248272} + - component: {fileID: 1638248271} + m_Layer: 0 + m_Name: Disconnected + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!23 &1638248271 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1638248270} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 1c10cdae32840cd4da5fa22f18738db9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1638248272 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1638248270} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1638248273 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1638248270} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 9.5, y: 9.5, z: 9.5} + m_Children: + - {fileID: 950738598} + - {fileID: 662602231} + - {fileID: 1637713052} + - {fileID: 558748034} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1643476466 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1643476467} + - component: {fileID: 1643476469} + - component: {fileID: 1643476468} + m_Layer: 0 + m_Name: Button Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1643476467 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1643476466} + m_LocalRotation: {x: 0.017452406, y: 0.9998477, z: -7.628689e-10, w: -0.00000004370473} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 383045425} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &1643476468 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1643476466} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bb5f41eecb5ccc546814746a66914984, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1643476469 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1643476466} + m_Mesh: {fileID: 4300020, guid: 1cc1b125262248c4ba967763bf40c861, type: 3} +--- !u!1 &1677932696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1677932697} + - component: {fileID: 1677932701} + - component: {fileID: 1677932700} + - component: {fileID: 1677932699} + - component: {fileID: 1677932698} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1677932697 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677932696} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.010000229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 766831860} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1677932698 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677932696} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292601070 + m_fontColor: {r: 0.9333334, g: 0.8941177, b: 0.8588236, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4.5 + m_fontSizeBase: 4.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1677932698} + characterCount: 3 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1677932701} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1677932699 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677932696} + m_CullTransparentMesh: 0 +--- !u!33 &1677932700 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677932696} + m_Mesh: {fileID: 0} +--- !u!23 &1677932701 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1677932696} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1796811811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1796811813} + - component: {fileID: 1796811812} + m_Layer: 0 + m_Name: Main + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1796811812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796811811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bd2ade5f012df4e4896599b9558c1601, type: 3} + m_Name: + m_EditorClassIdentifier: + sideQuest: 1 + design: {fileID: 11400000, guid: e32077fc3027a1b48909bb54527a2ad4, type: 2} + metro: {fileID: 408032442} + rig: {fileID: 416451007} + boxUI: {fileID: 1510915029} + graphXData: {fileID: 11400000, guid: a2a60279d0f57e841b54091e749bdccb, type: 2} + soundData: {fileID: 11400000, guid: 4e7fe59e4863c834fbf8ed54655e2385, type: 2} + loopSource: {fileID: 408032440} + musicSource: {fileID: 2081994160} + sfxSource: {fileID: 343354975} + snake: [] + initialSnake: + - {x: 3, y: 0, z: 0} + - {x: 3, y: 0, z: -1} + - {x: 3, y: 0, z: -2} + core: [] + initialCore: + - {x: -1, y: -1, z: -1} + - {x: -1, y: -1, z: 0} + - {x: -1, y: -1, z: 1} + - {x: -1, y: 0, z: -1} + - {x: -1, y: 0, z: 0} + - {x: -1, y: 0, z: 1} + - {x: -1, y: 1, z: -1} + - {x: -1, y: 1, z: 0} + - {x: -1, y: 1, z: 1} + - {x: 0, y: -1, z: -1} + - {x: 0, y: -1, z: 0} + - {x: 0, y: -1, z: 1} + - {x: 0, y: 0, z: -1} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + - {x: 0, y: 1, z: -1} + - {x: 0, y: 1, z: 0} + - {x: 0, y: 1, z: 1} + - {x: 1, y: -1, z: -1} + - {x: 1, y: -1, z: 0} + - {x: 1, y: -1, z: 1} + - {x: 1, y: 0, z: -1} + - {x: 1, y: 0, z: 0} + - {x: 1, y: 0, z: 1} + - {x: 1, y: 1, z: -1} + - {x: 1, y: 1, z: 0} + - {x: 1, y: 1, z: 1} + space: [] + initialSpace: [] + food: {x: 0, y: 0, z: 0} + initialFood: {x: 0, y: 2, z: -3} + bpm: 80 + dir: {x: 0, y: 1, z: 0} + aiMode: 1 + growQueue: 0 + fastQueue: 0 + justAte: 0 + dirDelay: 0 + poofPos: {x: 0, y: 0, z: 0} + restart: 0 + playing: 0 +--- !u!4 &1796811813 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796811811} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 351576464} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1946433801 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1946433802} + - component: {fileID: 1946433806} + - component: {fileID: 1946433805} + - component: {fileID: 1946433804} + - component: {fileID: 1946433803} + m_Layer: 0 + m_Name: Ship Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1946433802 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946433801} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.0010004044} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 965477373} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 3.51} + m_SizeDelta: {x: 3.4, y: 1} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1946433803 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946433801} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Ship To:' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 6.79 + m_fontSizeBase: 6.79 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 257 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1946433803} + characterCount: 8 + spriteCount: 0 + spaceCount: 1 + wordCount: 2 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1946433806} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1946433804 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946433801} + m_CullTransparentMesh: 0 +--- !u!33 &1946433805 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946433801} + m_Mesh: {fileID: 0} +--- !u!23 &1946433806 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946433801} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1991466026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1991466031} + - component: {fileID: 1991466030} + - component: {fileID: 1991466029} + - component: {fileID: 1991466028} + - component: {fileID: 1991466027} + m_Layer: 0 + m_Name: Score + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1991466027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991466026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 5 + m_wordSpacing: 5 + m_lineSpacing: 80 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1991466027} + characterCount: 3 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1991466030} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &1991466028 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991466026} + m_CullTransparentMesh: 0 +--- !u!33 &1991466029 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991466026} + m_Mesh: {fileID: 0} +--- !u!23 &1991466030 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991466026} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!224 &1991466031 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991466026} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 4.51} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1510915030} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 7} + m_SizeDelta: {x: 10, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2065174151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2065174152} + - component: {fileID: 2065174156} + - component: {fileID: 2065174155} + - component: {fileID: 2065174154} + - component: {fileID: 2065174153} + m_Layer: 0 + m_Name: Text Priority + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2065174152 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065174151} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.001} + m_LocalScale: {x: 1.2, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 965477373} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1.04, y: 4.08} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2065174153 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065174151} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_sharedMaterial: {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281215526 + m_fontColor: {r: 0.14901961, g: 0.16470589, b: 0.18039216, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 11.7 + m_fontSizeBase: 11.7 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 4098 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 2065174153} + characterCount: 0 + spriteCount: 0 + spaceCount: 0 + wordCount: 0 + linkCount: 0 + lineCount: 0 + pageCount: 0 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2065174156} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!222 &2065174154 +CanvasRenderer: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065174151} + m_CullTransparentMesh: 0 +--- !u!33 &2065174155 +MeshFilter: + m_ObjectHideFlags: 2 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065174151} + m_Mesh: {fileID: 0} +--- !u!23 &2065174156 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065174151} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21898195224422272, guid: 3821b3a54195a0844aaeb18b65cd5e63, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &2081994156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2081994158} + - component: {fileID: 2081994160} + m_Layer: 0 + m_Name: Music + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2081994158 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2081994156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &2081994160 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2081994156} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 0 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &2101684219 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2101684220} + m_Layer: 0 + m_Name: Menu Config + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2101684220 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2101684219} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1462420884} + - {fileID: 1603319127} + - {fileID: 462344509} + - {fileID: 315596728} + - {fileID: 766831860} + - {fileID: 706504449} + m_Father: {fileID: 1510915030} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/Main.unity.meta b/Assets/Scenes/Main.unity.meta new file mode 100644 index 0000000..952bd1e --- /dev/null +++ b/Assets/Scenes/Main.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fc0d4010bbf28b4594072e72b8655ab +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..11c1c65 --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0bc9cde9f408ef4a99cef6b6316c06d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AI.cs b/Assets/Scripts/AI.cs new file mode 100644 index 0000000..5336258 --- /dev/null +++ b/Assets/Scripts/AI.cs @@ -0,0 +1,43 @@ +using UnityEngine; + +public class AI +{ + public int aiChances; + + Quaternion rotation; + + public Vector3Int InputDirection(Main main) + { + Vector3 headPos = main.snake[0]; + float dist = Vector3.Distance(headPos, main.food); + + float turnRate = (1 + Mathf.Sin(Time.time)) + (1 + Mathf.Sin(Time.time / 3)) * (1 - (dist / ((float)main.design.bounds.x * 2))); + if (main.food != headPos && aiChances == main.design.aiMaxChances) + { + rotation = Quaternion.Lerp(rotation, Quaternion.LookRotation(main.food - headPos), turnRate * main.design.aiIQ * main.bpm * Time.deltaTime); + + Vector3Int newDir = Main.SnapDir(rotation * Vector3.forward); + + // rethink this system now that it is seperated from the player inputs + // chances get refueled each *ai* step + while (aiChances > 0 && main.snake.Contains(main.snake[0] + newDir) || Main.OutOfBounds(main.snake[0] + newDir, main.design.bounds)) + { + newDir = Main.dirs[Random.Range(0, Main.dirs.Length)]; + aiChances--; + } + + // NO neck snaps, ok? + if (aiChances > 0 && main.snake[0] + newDir != main.snake[1]) + { + if (aiChances < main.design.aiMaxChances) + { + rotation = Quaternion.LookRotation((Vector3)newDir); + } + + return newDir; + } + } + + return main.dir; + } +} \ No newline at end of file diff --git a/Assets/Scripts/AI.cs.meta b/Assets/Scripts/AI.cs.meta new file mode 100644 index 0000000..006f25b --- /dev/null +++ b/Assets/Scripts/AI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60a9820fbd2c2844c97c81a3b33b46cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/BoxUI.cs b/Assets/Scripts/BoxUI.cs new file mode 100644 index 0000000..8bde669 --- /dev/null +++ b/Assets/Scripts/BoxUI.cs @@ -0,0 +1,534 @@ +using UnityEngine; +using UnityEngine.Events; +using System; +using System.Collections.Generic; +using System.Collections; +using TMPro; +using Oculus.Platform; +using Oculus.Platform.Models; +using Platform = Oculus.Platform; +using Random = UnityEngine.Random; +using NaughtyAttributes; +using System.Text; + +public class BoxUI : MonoBehaviour +{ + public bool active; + public List uiButtons; + public List uiSteppers; + + public List stepRanges; + [Serializable] + public class Stepper { public int[] steps; public int defaultIndex; } + + [Header("References")] + public Main main; + public Transform uiCursor; + public GameObject tape, menuMain, menuPause, menuGameOver, menuConfig; + public AudioSource audioSource; + public AudioClip sfxHover, sfxClick, sfxBack; + public TextMeshPro usernameText, leaderboardText, scoreText, trackText; + + [Header("Runtime")] + public int cursorIndex; + + Color trackColor; + + void Awake() + { + if (main.sideQuest) + { + leaderboardText.transform.parent.gameObject.SetActive(false); + usernameText.transform.parent.gameObject.SetActive(false); + } + else + { + if (!UnityEngine.Application.isEditor) + { + Core.AsyncInitialize(); + Entitlements.IsUserEntitledToApplication().OnComplete(AreThey); + } + } + } + + void AreThey(Message msg) + { + if (msg.IsError) + { + Debug.Log("Not Verified"); + UnityEngine.Application.Quit(); + } + else + { + Debug.Log("Verified"); + Platform.Users.GetLoggedInUser().OnComplete(GetUsername); + } + } + + string username = "anon"; + void GetUsername(Message user) + { + username = user.Data.OculusID; + UpdateLabel(); + } + + public void UpdateLabel() + { + int highscore = PlayerPrefs.GetInt("highscore", 0); + usernameText.text = username + "\n" + highscore.ToString("000") + " Highscore Ave"; + + if (username != "anon") + { + if (!main.sideQuest) + { + Leaderboards.WriteEntry("AnyBPM", (uint)highscore); + + leaderboardText.text = "loading..."; + StartCoroutine(GetEntriesDelay()); + } + } + } + + IEnumerator GetEntriesDelay() + { + yield return new WaitForSeconds(3); + Leaderboards.GetEntries("AnyBPM", 3, LeaderboardFilterType.None, LeaderboardStartAt.Top).OnComplete(UpdateLeaderboard); + } + + void UpdateLeaderboard(Message msg) + { + string text = ""; + if (!msg.IsError) + { + foreach (LeaderboardEntry entry in msg.Data) + { + text += entry.Score.ToString("000") + " "; + text += entry.User.OculusID + "\n"; + } + } + + leaderboardText.text = text; + } + + void Start() + { + Rig.OnReady += RigReady; + Main.OnGameStart += GameStart; + Game.OnCrash += Crash; + + Screen.SetResolution(1280, 720, false); + + UpdateLabel(); + + // PlayerPref Defaults + int playCount = PlayerPrefs.GetInt("PlayCount", 0); + if (playCount == 0) + { + for (int i = 0; i < uiSteppers.Count; i++) + { + PlayerPrefs.SetInt(uiSteppers[i].name, stepRanges[i].defaultIndex); + } + } + playCount++; + + PlayerPrefs.SetInt("PlayCount", playCount); + Debug.Log("Play Count: " + playCount); + + Color backup = main.graphXData.snakeMat.GetColor("_Backup"); + Color customColor = new Color( + PlayerPrefs.GetFloat("rValue", backup.r), + PlayerPrefs.GetFloat("gValue", backup.g), + PlayerPrefs.GetFloat("bValue", backup.b) + ); + main.graphXData.snakeMat.SetColor("_Base", customColor); + + ApplyPref(); + TiltAll(); + } + + void ApplyPref() + { + for (int i = 0; i < uiSteppers.Count; i++) + { + int index = PlayerPrefs.GetInt(uiSteppers[i].name); + int value = stepRanges[i].steps[index]; + uiSteppers[i].GetComponentInChildren().text = "" + value; + + switch (i) + { + // CONFIG MENU + case 0: + if (index > 1 && PlayerPrefs.GetInt("BoxFills", 0) == 0) + { + index = 0; + PlayerPrefs.SetInt(uiSteppers[i].name, index); + value = stepRanges[i].steps[index]; + uiSteppers[i].GetComponentInChildren().text = "" + value; + } + main.bpm = value; + main.soundData.musicTrack = main.soundData.musicTracks[index]; + break; + + case 1: + QualitySettings.antiAliasing = value; + break; + + case 2: + main.soundData.musicVolume = (float)value / 5f; + break; + + case 3: + main.soundData.sfxVolume = (float)value / 5f; + break; + } + } + } + + void RigReady() + { + trackText.text = main.soundData.musicLoop.name; + trackColor.a = 0.5f; + } + + void GameStart(Main main) + { + trackText.text = main.soundData.musicTrack.name; + trackColor.a = 0.5f; + } + + void Crash() + { + if (!main.aiMode) + { + string endText; + int oldHighscore = PlayerPrefs.GetInt("highscore", 0); + + if (main.snake.Count > oldHighscore) + { + endText = (main.snake.Count).ToString("000") + " / " + oldHighscore.ToString("000") + "\n^-^"; + + PlayerPrefs.SetInt("highscore", main.snake.Count); + UpdateLabel(); + } + else + { + endText = (main.snake.Count).ToString("000") + " / " + oldHighscore.ToString("000") + "\n-_-"; + } + + // Use for unlocks and tracking + uiButtons[7].gameObject.SetActive(PlayerPrefs.GetInt("BoxFills", 0) > 0); + + active = true; + menuGameOver.SetActive(true); + menuGameOver.GetComponentInChildren().text = endText; + } + } + + bool backDown; + int oldScore = 0; + void Update() + { + backDown = OVRInput.GetDown(OVRInput.Button.Two, main.rig.remote); + + if (main.snake.Count != oldScore) + { + scoreText.text = "" + main.snake.Count.ToString("000") + ""; + oldScore = main.snake.Count; + } + scoreText.transform.forward = main.rig.head.forward; + scoreText.gameObject.SetActive(!main.aiMode); + + trackColor.a -= Time.deltaTime / 9; + trackText.color = trackColor; + } + + [Header("Editor")] + public float tiltDegrees = 4; + + [Button] + public void TiltAll() + { + Tilt(uiButtons); Tilt(uiSteppers); + } + + void Tilt(List transforms) + { + foreach (Transform t in transforms) + { + t.rotation = Quaternion.Euler(0, t.eulerAngles.y, Random.Range(-tiltDegrees, tiltDegrees)); + } + } + + Vector2 touchPos; + void LateUpdate() + { + tape.SetActive(active); + uiCursor.gameObject.SetActive(active); + + if (active) + { + int firstActive = -1; + int lastActive = -1; + for (int i = 0; i < uiButtons.Count; i++) + { + if (uiButtons[i].gameObject.activeInHierarchy) + { + if (firstActive < i) + { + if (lastActive == -1) + { + firstActive = i; + } + + lastActive = i; + } + } + } + + for (int i = 0; i < uiSteppers.Count; i++) + { + if (uiSteppers[i].gameObject.activeInHierarchy) + { + lastActive++; + } + } + + // SWIPE SYSTEM FOR OCULUS GO AND GEAR VR + if (OVRInput.Get(OVRInput.Touch.PrimaryTouchpad, main.rig.remote)) + { + touchPos = OVRInput.Get(OVRInput.Axis2D.PrimaryTouchpad, main.rig.remote); + } + + if (OVRInput.GetUp(OVRInput.Touch.PrimaryTouchpad, main.rig.remote)) + { + // check direction + if (touchPos.x < 0) + { + if (cursorIndex > 0) + { + cursorIndex--; + } + else + { + cursorIndex = lastActive - firstActive; // check + } + } + else + { + cursorIndex++; + } + + audioSource.PlayOneShot(sfxHover); + } + + if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstickLeft, main.rig.remote)) + { + if (cursorIndex > 0) + { + cursorIndex--; + } + else + { + cursorIndex = lastActive - firstActive; // check + } + + audioSource.PlayOneShot(sfxHover); + } + + if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstickRight, main.rig.remote)) + { + cursorIndex++; + + audioSource.PlayOneShot(sfxHover); + } + + if (firstActive + cursorIndex > lastActive) + { + cursorIndex = 0; + } + + if (firstActive + cursorIndex < uiButtons.Count) + { + uiCursor.position = uiButtons[firstActive + cursorIndex].position; + } + else + { + uiCursor.position = uiSteppers[firstActive + cursorIndex - uiButtons.Count].position; + } + + // uiCursor.position = hit.point * 3; + uiCursor.localPosition = new Vector3( + Mathf.Clamp(uiCursor.localPosition.x, -4.4f, 4.4f), + Mathf.Clamp(uiCursor.localPosition.y, -4.4f, 4.4f), + -0.2f + ); + + + + int buttonIndex = -1; + for (int i = 0; i < uiButtons.Count; i++) + { + uiButtons[i].localScale = Vector3.one; + + if (uiButtons[i].gameObject.activeInHierarchy && + uiButtons[i].localPosition.x + 0.5f > uiCursor.localPosition.x && + uiButtons[i].localPosition.x - 0.5f < uiCursor.localPosition.x && + uiButtons[i].localPosition.y + 0.5f > uiCursor.localPosition.y && + uiButtons[i].localPosition.y - 0.5f < uiCursor.localPosition.y) + { + buttonIndex = i; + } + } + + if (buttonIndex > -1) + { + uiButtons[buttonIndex].localScale = Vector3.one * 1.3f; + + if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, main.rig.remote)) + { + audioSource.PlayOneShot(sfxClick); + + switch (buttonIndex) + { + // MENU MAIN + case 0: // play + main.aiMode = false; + menuMain.SetActive(false); + active = false; + main.restart = 1; + break; + case 1: // config + menuConfig.SetActive(true); + menuMain.SetActive(false); + break; + case 2: // quit + UnityEngine.Application.Quit(); + Debug.Log("Quit"); + break; + + // MENU PAUSE + case 3: // RESUME + main.playing = true; + menuPause.SetActive(false); + active = false; + break; + case 4: // RESTART + menuPause.SetActive(false); + active = false; + main.restart = 1; + break; + case 5: // HOME + menuPause.SetActive(false); + menuMain.SetActive(true); + main.aiMode = true; + main.restart = 1; + break; + + // MENU GAMEOVER + case 6: // RESTART + menuGameOver.SetActive(false); + active = false; + main.restart = 1; + break; + + case 7: // COLOR + Color randomColor = new Color(Random.value, Random.value, Random.value); + main.graphXData.snakeMat.SetColor("_Base", randomColor); + PlayerPrefs.SetFloat("rValue", randomColor.r); + PlayerPrefs.SetFloat("gValue", randomColor.r); + PlayerPrefs.SetFloat("bValue", randomColor.r); + break; + + case 8: // HOME + menuGameOver.SetActive(false); + menuMain.SetActive(true); + main.aiMode = true; + main.restart = 1; + break; + + // MENU CONFIG + case 9: // HOME + menuConfig.SetActive(false); + menuMain.SetActive(true); + break; + + default: + break; + } + } + } + + int stepperIndex = -1; + for (int i = 0; i < uiSteppers.Count; i++) + { + uiSteppers[i].localScale = Vector3.one; + + if (uiSteppers[i].gameObject.activeInHierarchy && + uiSteppers[i].localPosition.x + 0.5f > uiCursor.localPosition.x && + uiSteppers[i].localPosition.x - 0.5f < uiCursor.localPosition.x && + uiSteppers[i].localPosition.y + 0.5f > uiCursor.localPosition.y && + uiSteppers[i].localPosition.y - 0.5f < uiCursor.localPosition.y) + { + stepperIndex = i; + } + } + + if (stepperIndex > -1) + { + uiSteppers[stepperIndex].localScale = Vector3.one * 1.2f; + + if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, main.rig.remote)) + { + audioSource.PlayOneShot(sfxClick); + + int step = PlayerPrefs.GetInt(uiSteppers[stepperIndex].name); + if (step < stepRanges[stepperIndex].steps.Length - 1) + { + step++; + } + else + { + step = 0; + } + PlayerPrefs.SetInt(uiSteppers[stepperIndex].name, step); + ApplyPref(); + } + } + + if (backDown) + { + if (menuConfig.activeSelf) + { + menuConfig.SetActive(false); + menuMain.SetActive(true); + } + else if (menuPause.activeSelf) + { + main.playing = true; + menuPause.SetActive(false); + active = false; + } + else if (menuGameOver.activeSelf) + { + menuGameOver.SetActive(false); + active = false; + main.restart = 1; + } + } + } + else + { + if (backDown) + { + main.playing = false; + menuPause.SetActive(true); + active = true; + } + } + + if (backDown) + { + audioSource.PlayOneShot(sfxBack); + } + } +} diff --git a/Assets/Scripts/BoxUI.cs.meta b/Assets/Scripts/BoxUI.cs.meta new file mode 100644 index 0000000..56ddc88 --- /dev/null +++ b/Assets/Scripts/BoxUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2a4062f939aa4942813c7a1e1a25c99 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Design.cs b/Assets/Scripts/Design.cs new file mode 100644 index 0000000..95e79e7 --- /dev/null +++ b/Assets/Scripts/Design.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu] +public class Design : ScriptableObject +{ + [Header("View")] + public Vector3 headOffset = new Vector3(0, 0, -60); + public float scale = 60; + + [Header("Game")] + public Vector3Int bounds = new Vector3Int(4, 3, 4); + public int foodValue = 6; + + + [Header("AI")] + public float aiIQ = 0.5f; + public int aiMaxChances = 12; + + public float boxSpring = 6; +} \ No newline at end of file diff --git a/Assets/Scripts/Design.cs.meta b/Assets/Scripts/Design.cs.meta new file mode 100644 index 0000000..3e037b0 --- /dev/null +++ b/Assets/Scripts/Design.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b37f4483e8f4f3047b5e67b5118cb74d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Drip.cs b/Assets/Scripts/Drip.cs new file mode 100644 index 0000000..164ce81 --- /dev/null +++ b/Assets/Scripts/Drip.cs @@ -0,0 +1,138 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.Collections; +using System.Collections.Generic; +using Random = UnityEngine.Random; +using NaughtyAttributes; + + +public class Drip +{ + public Drip(GraphXData data) + { + this.data = data; + } + GraphXData data; + // public AnimationCurve animCurve; + + public class Drop + { + public float x, z; + public float firstY, lastY, rot; + + public Drop() + { + this.x = 0; + this.z = 0; + this.firstY = -1000; + this.lastY = -1000; + this.rot = 0; + } + } + + + + Drop[] drops = new Drop[9]; + Matrix4x4[] matrices = new Matrix4x4[9]; + + public void Step(Main main) + { + for (int i = 0; i < drops.Length; i++) + { + if (drops[i] == null) + { + drops[i] = new Drop(); + } + else if (drops[i].lastY == 3.5f) + { + main.poof.Splash( + new Vector3(drops[i].x, 3.5f, drops[i].z), + new Vector3(0.3f, 1, 0.3f), + 0.1f + ); + } + + drops[i].x = Random.Range(-10f, 10f); + drops[i].z = Random.Range(-10f, 10f); + + float height = 60f; + float offset = Random.Range(-30f, 30f); + + drops[i].firstY = offset + (height / 2); + drops[i].lastY = offset - (height / 2); + + drops[i].rot = 360 * Random.value; + + if ((drops[i].x < main.design.bounds.x + 0.5f && drops[i].x > -main.design.bounds.x - 0.5f) + && (drops[i].z < main.design.bounds.z + 0.5f && drops[i].z > -main.design.bounds.z - 0.5f)) + { + // if its inside we need precise timing otherwise it doesn't matter + drops[i].lastY = 3.5f; + drops[i].firstY = drops[i].lastY + height; + } + } + + testTime = 0; + } + + float testTime; + public void Rain(Main main) + { + testTime += Time.deltaTime * 1.1f; + float stepTime = 60f / (float)main.bpm; + float lerp = Mathf.Clamp01(testTime / stepTime); + + for (int i = 0; i < drops.Length; i++) + { + Vector3 pos = Vector3.zero; + Vector3 scale = Vector3.zero; + float rot = 0; + + if (drops[i] != null) + { + pos = new Vector3( + drops[i].x, + Mathf.Lerp(drops[i].firstY, drops[i].lastY, lerp), + drops[i].z + ); + + + float s = lerp * 2; + if (s > 1) + { + s = 1 - (s - 1); + } + + if (drops[i].lastY == 3.5f) + { + s += 0.5f; + } + + // s *= 10f; + scale = new Vector3( + s, + s * 2 * Vector2.Distance(new Vector2(pos.x, pos.z), new Vector2(main.rig.head.position.x, main.rig.head.position.z)), + s + ); + + rot = drops[i].rot; + } + + matrices[i].SetTRS(pos, Quaternion.Euler(0, rot, 0), scale); + } + Graphics.DrawMeshInstanced(data.dripMesh, 0, data.wetMat, matrices); + } + + void OnDrawGizmos() + { + // for (int i = 0; i < tracks.Length; i++) + // { + // for (int j = 0; j < tracks[i].positionCount; j++) + // { + // Gizmos.color = Color.black; + // Gizmos.DrawSphere(tracks[i].GetPosition(j), 0.1f); + // } + // } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Drip.cs.meta b/Assets/Scripts/Drip.cs.meta new file mode 100644 index 0000000..038d15b --- /dev/null +++ b/Assets/Scripts/Drip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50aa0c3dad5d34648af185d92e1b3985 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game.cs b/Assets/Scripts/Game.cs new file mode 100644 index 0000000..b1c4cd1 --- /dev/null +++ b/Assets/Scripts/Game.cs @@ -0,0 +1,113 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +public class Game +{ + Vector3Int[] poss = new Vector3Int[9 * 7 * 9]; // not bounds compliant... + + public delegate void Step(); + public static event Step OnStep; + + public delegate void Eat(Vector3 pos); + public static event Eat OnEat; + + public delegate void Smell(); + public static event Smell OnSmell; + + public delegate void Bump(Vector3 dir); + public static event Bump OnBump; + + public delegate void Crash(); + public static event Crash OnCrash; + + + bool danger; + public void SnakeStep(Main main, Design design) // snake data? + { + OnStep(); + + Vector3Int future = main.snake[0] + main.dir; + if (main.snake.Contains(future) || Main.OutOfBounds(future, design.bounds)) + { + if (!danger) + { + // main.snake.RemoveAt(0); + OnBump(main.dir); + + danger = true; + } + else + { + main.snake.Insert(0, future); + + OnCrash(); + } + + return; + } + + danger = false; + + if (Vector3.Distance(future, main.food) <= 1) + { + OnSmell(); + } + + // Grow System (OOP *don't run into tail) + if (main.growQueue > 0) + { + main.growQueue--; + } + else + { + main.space.Add(main.snake[main.snake.Count - 1]); + main.snake.RemoveAt(main.snake.Count - 1); + } + + main.space.Remove(future); + main.snake.Insert(0, future); // Grow + + if (main.fastQueue > 0) + { + main.fastQueue--; + } + + // Eat Packing Peanut + if (main.food == future) + { + main.growQueue += design.foodValue; + main.justAte = 0; + + OnEat(future); + + if (main.space.Count == 0) + { + PlayerPrefs.SetInt("BoxFills", 1 + PlayerPrefs.GetInt("BoxFills", 0)); + } + else + { + main.food = main.space[Random.Range(0, main.space.Count)]; + main.graphX.foodScale = 0; + } + } + + // Eat main.Core Piece + for (int i = 0; i < main.core.Count; i++) + { + if (main.core[i] == future) + { + main.core.RemoveAt(i); + + main.growQueue += design.foodValue; + main.justAte = 0; + + main.fastQueue += design.foodValue; + + OnEat(future); + + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Game.cs.meta b/Assets/Scripts/Game.cs.meta new file mode 100644 index 0000000..b318f3d --- /dev/null +++ b/Assets/Scripts/Game.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67c7d614337402644bb7e4ab38bc55ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GraphX.cs b/Assets/Scripts/GraphX.cs new file mode 100644 index 0000000..3f48abe --- /dev/null +++ b/Assets/Scripts/GraphX.cs @@ -0,0 +1,105 @@ +using System.Collections.Generic; +using System.Collections; +using UnityEngine; + +public class GraphX +{ + public GraphX(GraphXData data) + { + this.data = data; + } + + GraphXData data; + + Matrix4x4[] bodyMatrices = new Matrix4x4[9 * 7 * 9]; + Matrix4x4[] coreMatrices = new Matrix4x4[3 * 3 * 3]; + Matrix4x4 foodMatrix = new Matrix4x4(); + Matrix4x4 arrowMatrix = new Matrix4x4(); + Matrix4x4 faceMatrix = new Matrix4x4(); + + public float foodScale = 0; + + public void Render(Main main) + { + foodScale = Mathf.Lerp(foodScale, 1, 6 * Time.deltaTime); + foodMatrix.SetTRS( + main.food, + Quaternion.Euler(new Vector3(Mathf.Sin(Time.time), Mathf.Sin(Time.time / 2), Mathf.Sin(Time.time / 3)) * 30), + foodScale * Vector3.one + ); Graphics.DrawMesh(data.foodMesh, foodMatrix, data.unlitMat, 0); + + if (!main.aiMode && main.playing) + { + arrowMatrix.SetTRS( + main.snake[0], + main.rig.controllerRot, + Vector3.one + ); Graphics.DrawMesh(data.arrowMesh, arrowMatrix, data.unlitMat, 0); + } + + // Face + if (main.snake.Count > 0) + { + faceMatrix.SetTRS( + main.snake[0], + Quaternion.LookRotation(main.dir), + Vector3.one + ); Graphics.DrawMesh(data.faceMesh, faceMatrix, data.snakeMat, 0); + + // Body + for (int i = 1; i < bodyMatrices.Length; i++) + { + if (i > 0 && i < main.snake.Count) + { + Vector3 segmentDir = main.snake[i - 1] - main.snake[i]; + if (segmentDir.sqrMagnitude == 0) + { + segmentDir = new Vector3Int(0, 0, 1); + } + bodyMatrices[i].SetTRS(main.snake[i], Quaternion.LookRotation(segmentDir), Vector3.one); + } + else + { + bodyMatrices[i].SetTRS(Vector3.zero, Quaternion.identity, Vector3.zero); + } + } + Graphics.DrawMeshInstanced(data.bodyMesh, 0, data.snakeMat, bodyMatrices); + } + + // Core + for (int i = 0; i < coreMatrices.Length; i++) + { + if (i < main.core.Count) + { + coreMatrices[i].SetTRS(main.core[i], Quaternion.identity, Vector3.one); + } + else + { + coreMatrices[i].SetTRS(Vector3.zero, Quaternion.identity, Vector3.zero); + } + } + Graphics.DrawMeshInstanced(data.coreMesh, 0, data.unlitMat, coreMatrices); + + + // Body Roll + if (rollTime > 0) + { + rollTime -= Time.deltaTime; + } + else + { + if (main.justAte < 729) + { + Shader.SetGlobalInt("_JustAte", ++main.justAte); + } + + rollTime = Mathf.Clamp01((60 / (float)main.bpm) / 27); + } + } + + float rollTime; + public void Step(Main main) + { + Shader.SetGlobalInt("_JustAte", main.justAte++); + } +} \ No newline at end of file diff --git a/Assets/Scripts/GraphX.cs.meta b/Assets/Scripts/GraphX.cs.meta new file mode 100644 index 0000000..5a6c69f --- /dev/null +++ b/Assets/Scripts/GraphX.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2552af40f5e0811479c7bd4c0f651f26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GraphXData.cs b/Assets/Scripts/GraphXData.cs new file mode 100644 index 0000000..2ceccf6 --- /dev/null +++ b/Assets/Scripts/GraphXData.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +[CreateAssetMenu] +public class GraphXData : ScriptableObject +{ + public Mesh foodMesh, arrowMesh, bodyMesh, coreMesh; + + [Header("Materials")] + public Material snakeMat; + public Material unlitMat; + public Material wetMat; + + [Header("Faces")] + public Mesh faceMesh; + public Mesh faceDefault, faceEat, faceEaten, faceBump, faceBoxGameover, faceSelfGameover; + + [Header("Poof")] + public Mesh poofMesh; + + [Header("Drip")] + public Mesh dripMesh; +} \ No newline at end of file diff --git a/Assets/Scripts/GraphXData.cs.meta b/Assets/Scripts/GraphXData.cs.meta new file mode 100644 index 0000000..037352b --- /dev/null +++ b/Assets/Scripts/GraphXData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13034f037cc52bc46945cbdb2ca0eae6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Main.cs b/Assets/Scripts/Main.cs new file mode 100644 index 0000000..d31b6b7 --- /dev/null +++ b/Assets/Scripts/Main.cs @@ -0,0 +1,281 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.XR; +using Random = UnityEngine.Random; +using NaughtyAttributes; +using TMPro; + +public class Main : MonoBehaviour +{ + + + public delegate void GameStart(Main main); + public static event GameStart OnGameStart; + + public bool sideQuest; + + [Header("References")] + public Design design; + public Metro metro; + public Rig rig; + public AI ai = new AI(); + public Game game = new Game(); + public BoxUI boxUI; + + public GraphXData graphXData; + public GraphX graphX; + public SnakeFace snakeFace; + public Poof poof; + public Drip drip; + + public SoundData soundData; + public Music music; + public AudioSource loopSource; + public AudioSource musicSource; + public SFX sfx; + public AudioSource sfxSource; + + + [Header("Positions")] + public List snake, initialSnake; + public List core, initialCore; + public List space, initialSpace; + public Vector3Int food, initialFood; + + [Header("Variables")] + public int bpm = 80; + public Vector3Int dir = new Vector3Int(0, 0, 1); + public bool aiMode = true; + public int growQueue, fastQueue; + public int justAte; + + public float dirDelay; + + public float BPM() + { + if (fastQueue > 0) + { + return bpm * 2; + } + else + { + return bpm; + } + } + + public void Start() + { + initialSpace = InitialSpace(); + + // plenty of space + // Metro.OnBeat += Beat; + metro.tick = false; + Game.OnCrash += Crash; + + music = new Music(soundData); + sfx = new SFX(soundData); + + graphX = new GraphX(graphXData); + snakeFace = new SnakeFace(graphXData); + poof = new Poof(graphXData); + drip = new Drip(graphXData); + + + restart = 0; + } + + void Crash() + { + fastQueue = 0; + playing = false; + restart = 0; + } + + void Update() + { + dirDelay -= Time.deltaTime; + if (playing && dirDelay < 0 && snake.Count >= initialSnake.Count) + { + if (aiMode) + { + dir = ai.InputDirection(this); + } + else + { + dir = rig.InputDirection(this); + } + } + + // VISUAL + graphX.Render(this); + poof.Run(this); + drip.Rain(this); + + + music.Fade(this); + } + + public Vector3 poofPos; + [Button] + public void Button() + { + poof.Burst(poofPos); + } + + + public int restart = 0; // set to zero during playtime to restart manually + public void Beat() + { + switch (restart) + { + case (0): + playing = false; + + if (aiMode) + { + restart++; + } + + break; + + case (1): + playing = false; + + Shader.SetGlobalInt("_Flash", 1); + food = initialFood; + restart++; + break; + + case (2): + growQueue = 0; + fastQueue = 0; + + snake = new List(initialSnake); + space = new List(initialSpace); + core = new List(initialCore); + dir = new Vector3Int(0, 0, 1); + + Shader.SetGlobalInt("_Flash", 0); + if (aiMode) + { + playing = true; + restart = 6; + } + else + { + metro.tick = true; + restart++; + } + break; + + case (3): + // some sort of count down to give the player prep time + // BEEP 1 + restart++; + break; + + case (4): + // BEEP 2 + restart++; + break; + + case (5): + // BEEP 3 + restart++; + metro.tick = false; + playing = true; + OnGameStart(this); + break; + + case (6): + if (playing) + { + if (aiMode) + { + ai.aiChances = design.aiMaxChances; + } + + game.SnakeStep(this, design); + dirDelay = (60 / BPM()) / 3; + } + break; + } + + graphX.Step(this); + drip.Step(this); + + sfx.Step(this); + } + + public bool playing; + + public static bool OutOfBounds(Vector3Int pos, Vector3Int bounds) + { + return Mathf.Abs(pos.x) > bounds.x || Mathf.Abs(pos.y) > bounds.y || Mathf.Abs(pos.z) > bounds.z; + } + + public static Vector3Int SnapDir(Vector3 dirty) + { + // Vector3Int snappedDir = new Vector3Int((int)(dirty.x / strongest), (int)(dirty.y / strongest), (int)(dirty.z / strongest)); + // 0.3 / 0.3 > 0.5f + // 0.2 / 0.3 > 0.5f + + float minDiff = 100; + int minIndex = 0; + for (int i = 0; i < dirs.Length; i++) + { + float diff = 0; + diff += Mathf.Abs(dirty.x - dirs[i].x); + diff += Mathf.Abs(dirty.y - dirs[i].y); + diff += Mathf.Abs(dirty.z - dirs[i].z); + + if (diff < minDiff) + { + minIndex = i; + minDiff = diff; + } + } + + + return dirs[minIndex]; + } + + public static Vector3Int[] dirs = new Vector3Int[] + { + new Vector3Int(-1, 0, 0), + new Vector3Int(1, 0, 0), + new Vector3Int(0, -1, 0), + new Vector3Int(0, 1, 0), + new Vector3Int(0, 0, -1), + new Vector3Int(0, 0, 1) + }; + + List InitialSpace() + { + List list = new List(); + for (int x = -design.bounds.x; x <= design.bounds.x; x++) + { + for (int y = -design.bounds.y; y <= design.bounds.y; y++) + { + for (int z = -design.bounds.z; z <= design.bounds.z; z++) + { + list.Add(new Vector3Int(x, y, z)); + } + } + } + + for (int i = 0; i < initialSnake.Count; i++) + { + list.Remove(initialSnake[i]); + } + + for (int i = 0; i < initialCore.Count; i++) + { + list.Remove(initialCore[i]); + } + + return list; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Main.cs.meta b/Assets/Scripts/Main.cs.meta new file mode 100644 index 0000000..31ceec7 --- /dev/null +++ b/Assets/Scripts/Main.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd2ade5f012df4e4896599b9558c1601 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Metro.cs b/Assets/Scripts/Metro.cs new file mode 100644 index 0000000..2b936c6 --- /dev/null +++ b/Assets/Scripts/Metro.cs @@ -0,0 +1,77 @@ +using UnityEngine; +using System.Collections; + +// The code example shows how to implement a metronome that procedurally generates the click sounds via the OnAudioFilterRead callback. +// While the game is paused or the suspended, this time will not be updated and sounds playing will be paused. Therefore developers of music scheduling routines do not have to do any rescheduling after the app is unpaused + +[RequireComponent(typeof(AudioSource))] +public class Metro : MonoBehaviour +{ + [Header("References")] + public Main main; + + public bool tick; + + public float gain = 0.5F; + public int signatureLo = 4; + private double nextTick = 0.0F; + private float amp = 0.0F; + private float phase = 0.0F; + private double sampleRate = 0.0F; + private bool running = false; + void Start() + { + double startTick = AudioSettings.dspTime; + sampleRate = AudioSettings.outputSampleRate; + nextTick = startTick * sampleRate; + running = true; + } + + bool beat; + void Update() + { + if (beat) + { + main.Beat(); + beat = false; + } + } + + void OnAudioFilterRead(float[] data, int channels) + { + if (!running) + return; + + gain = tick ? 0.25f : 0f; + + double samplesPerTick = sampleRate * 60.0F / (double)main.BPM() * 4.0F / signatureLo; + double sample = AudioSettings.dspTime * sampleRate; + int dataLen = data.Length / channels; + int n = 0; + while (n < dataLen) + { + float x = gain * amp * Mathf.Sin(phase); + int i = 0; + while (i < channels) + { + data[n * channels + i] += x; + i++; + } + while (sample + n >= nextTick) + { + nextTick += samplesPerTick; + amp = 1.0F; + // if (++accent > signatureHi) + // { + // accent = 1; + // amp *= 2.0F; + // } + // Debug.Log("Tick: " + accent + "/" + signatureHi); + beat = true; + } + phase += amp * 0.3F; + amp *= 0.993F; + n++; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Metro.cs.meta b/Assets/Scripts/Metro.cs.meta new file mode 100644 index 0000000..5f05165 --- /dev/null +++ b/Assets/Scripts/Metro.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5849458ceeb30fd4fb4dc81efde12d91 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Music.cs b/Assets/Scripts/Music.cs new file mode 100644 index 0000000..7b1c772 --- /dev/null +++ b/Assets/Scripts/Music.cs @@ -0,0 +1,61 @@ +using UnityEngine; +using TMPro; + +public class Music +{ + public Music(SoundData data) + { + Main.OnGameStart += this.GameStart; + this.data = data; + } + + SoundData data; + + float loopVolume, musicVolume; + float loopVolumeDelta, musicVolumeDelta; + + void GameStart(Main main) + { + main.musicSource.clip = data.musicTrack; + main.musicSource.time = 0; + } + + public void Fade(Main main) + { + if (main.boxUI.active) + { + musicVolumeDelta = -1; + main.musicSource.Pause(); + main.musicSource.volume = 0; + } + else if (main.playing && !main.musicSource.isPlaying) + { + musicVolumeDelta = 1; + main.musicSource.Play(); + } + + if (main.boxUI.menuMain.activeInHierarchy || main.boxUI.menuConfig.activeInHierarchy) + { + loopVolumeDelta = 3; + } + else + { + loopVolumeDelta = -3; + } + + loopVolume = Mathf.Clamp01(loopVolume + Time.deltaTime / loopVolumeDelta); + musicVolume = Mathf.Clamp01(musicVolume + Time.deltaTime / musicVolumeDelta); + + main.loopSource.volume = loopVolume * data.musicVolume; + main.musicSource.volume = musicVolume * data.musicVolume; + + if (main.fastQueue > 0) + { + main.loopSource.pitch = main.musicSource.pitch = 2; + } + else + { + main.loopSource.pitch = main.musicSource.pitch = 1; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Music.cs.meta b/Assets/Scripts/Music.cs.meta new file mode 100644 index 0000000..a042da9 --- /dev/null +++ b/Assets/Scripts/Music.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70da926b7053c1343aaa854107fdde89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Painter.cs b/Assets/Scripts/Painter.cs new file mode 100644 index 0000000..5c5f141 --- /dev/null +++ b/Assets/Scripts/Painter.cs @@ -0,0 +1,66 @@ +using UnityEngine; +using UnityEditor; +using NaughtyAttributes; + +#if UNITY_EDITOR +public class Painter : MonoBehaviour +{ + // public Texture3D texture; + // public Color left, right, bottom, top, back, front; + + // [Button] + // void LoadTexture() + // { + // left = texture.GetPixel(0, 1, 1); + // right = texture.GetPixel(2, 1, 1); + + // bottom = texture.GetPixel(1, 0, 1); + // top = texture.GetPixel(1, 2, 1); + + // back = texture.GetPixel(1, 1, 0); + // front = texture.GetPixel(1, 1, 2); + // } + + // [Button] + // void UpdateTexture() + // { + // texture.SetPixel(0, 1, 1, left); + // texture.SetPixel(2, 1, 1, right); + + // texture.SetPixel(1, 0, 1, bottom); + // texture.SetPixel(1, 2, 1, top); + + // texture.SetPixel(1, 1, 0, back); + // texture.SetPixel(1, 1, 2, front); + + // texture.Apply(); + // AssetDatabase.CreateAsset(texture, "Assets/Materials/" + texture.name + ".asset"); + // } + + // [Button] + // public void NewTexture() + // { + // // 3D texture for normal indexed colors + // Texture3D normalColors = new Texture3D(3, 3, 3, TextureFormat.RGBA32, false); + // normalColors.filterMode = FilterMode.Point; + // normalColors.wrapMode = TextureWrapMode.Clamp; + // normalColors.anisoLevel = 0; + + // Color[] colorArray = new Color[3 * 3 * 3]; + + // colorArray[4] = Color.blue; // Back + // colorArray[22] = Color.blue; // Forward + + // colorArray[10] = Color.green; // Down + // colorArray[16] = Color.green; // Up + + // colorArray[12] = Color.red; // Left + // colorArray[14] = Color.red; // Right + + // normalColors.SetPixels(colorArray); + // normalColors.Apply(); + + // AssetDatabase.CreateAsset(normalColors, "Assets/Materials/newTex.asset"); + // } +} +#endif \ No newline at end of file diff --git a/Assets/Scripts/Painter.cs.meta b/Assets/Scripts/Painter.cs.meta new file mode 100644 index 0000000..9450767 --- /dev/null +++ b/Assets/Scripts/Painter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0398ec04026615b42bcd4362f03041ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Poof.cs b/Assets/Scripts/Poof.cs new file mode 100644 index 0000000..fe973ba --- /dev/null +++ b/Assets/Scripts/Poof.cs @@ -0,0 +1,118 @@ +using UnityEngine; +using NaughtyAttributes; +using System; +using Random = UnityEngine.Random; + +public class Poof +{ + public Poof(GraphXData data) + { + Game.OnEat += this.Eat; + + this.data = data; + } + + GraphXData data; + + public class Pif + { + public bool inside; + public Vector3 zero, pos; + public float scale; + public Quaternion rot; + + public Pif() + { + this.inside = false; + this.zero = Vector3.zero; + this.pos = Vector3.zero; + this.scale = 0; + this.rot = Quaternion.Euler( + Random.Range(0, 4) * 90, + Random.Range(0, 4) * 90, + Random.Range(0, 4) * 90 + ); + } + } + Pif[] pifs = new Pif[32]; + Matrix4x4[] matrices = new Matrix4x4[32]; + + void Eat(Vector3 pos) + { + Burst(pos, 0.5f); + } + + public void Burst(Vector3 pos, float range = 0.25f, float scale = 1f) + { + for (int i = 0; i < pifs.Length; i++) + { + if (Random.value > 0.7f) + { + pifs[i].zero = pos; + pifs[i].pos = pos + (new Vector3( + Random.Range(-1f, 1f), + Random.Range(-1f, 1f), + Random.Range(-1f, 1f)) * range + ); + pifs[i].scale = Random.value * scale; + + pifs[i].inside = true; + } + } + } + + public void Splash(Vector3 pos, Vector3 spread, float scale = 0.1f) + { + for (int i = 0; i < pifs.Length; i++) + { + if (Random.value > 0.9f) + { + pifs[i].zero = pos; + pifs[i].pos = pos + new Vector3( + Random.Range(-spread.x, spread.x), + Random.Range(0, spread.y), + Random.Range(-spread.z, spread.z)); + pifs[i].scale = Random.value * scale; + pifs[i].inside = false; + } + } + } + + Vector3 oldFoodPos; + public void Run(Main main) + { + if (oldFoodPos != main.food) + { + Burst(main.food, 0.1f, 0.2f); + oldFoodPos = main.food; + } + + for (int i = 0; i < pifs.Length; i++) + { + if (pifs[i] == null) + { + pifs[i] = new Pif(); + } + pifs[i].scale = Mathf.Clamp01(pifs[i].scale - pifs[i].scale * Time.deltaTime / 1); + + Vector3 toPos = pifs[i].pos + (pifs[i].pos - pifs[i].zero).normalized * 3 * pifs[i].scale * Time.deltaTime; + toPos += Vector3.down * 0.3f * pifs[i].scale * Time.deltaTime; + + if (pifs[i].inside) + { + toPos.x = Mathf.Clamp(toPos.x, -main.design.bounds.x - 0.5f, main.design.bounds.x + 0.5f); + toPos.y = Mathf.Clamp(toPos.y, -main.design.bounds.y - 0.5f, main.design.bounds.y + 0.5f); + toPos.z = Mathf.Clamp(toPos.z, -main.design.bounds.z - 0.5f, main.design.bounds.z + 0.5f); + } + + pifs[i].pos = toPos; + + matrices[i].SetTRS( + pifs[i].pos, + pifs[i].rot, + pifs[i].scale * Vector3.one + ); + } + Graphics.DrawMeshInstanced(data.poofMesh, 0, data.unlitMat, matrices); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Poof.cs.meta b/Assets/Scripts/Poof.cs.meta new file mode 100644 index 0000000..4b65d93 --- /dev/null +++ b/Assets/Scripts/Poof.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 800b342cb3ed3df41987d23ca22aae33 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Rig.cs b/Assets/Scripts/Rig.cs new file mode 100644 index 0000000..b2ebf6e --- /dev/null +++ b/Assets/Scripts/Rig.cs @@ -0,0 +1,105 @@ +using UnityEngine; +using UnityEngine.XR; + +public class Rig : MonoBehaviour +{ + public delegate void Ready(); + public static event Ready OnReady; + + [Header("References")] + public Design design; + public Main main; + public GameObject disconnected; + public Transform head; + + [Header("Variables")] + public OVRInput.Controller remote; + public Quaternion controllerRot = Quaternion.identity; + + bool leftOn, rightOn, touchOn; + Vector3 headOffset; + public Vector3 boxShake, boxOffset; + + public bool ready; + + void Start() + { + Game.OnBump += Bump; + + headOffset.y = 32f; + headOffset.z = design.headOffset.z; + ready = false; + } + + void Update() + { + // Input System + UnityEngine.XR.XRDevice.DisableAutoXRCameraTracking(Camera.main, true); + leftOn = OVRInput.IsControllerConnected(OVRInput.Controller.LTrackedRemote); + rightOn = OVRInput.IsControllerConnected(OVRInput.Controller.RTrackedRemote); + touchOn = OVRInput.IsControllerConnected(OVRInput.Controller.RTouch); + + if (leftOn || rightOn || touchOn) + { + if (leftOn) { remote = OVRInput.Controller.LTrackedRemote; } + else if (rightOn) { remote = OVRInput.Controller.RTrackedRemote; } + else if (touchOn) { remote = OVRInput.Controller.RTouch; } + + disconnected.SetActive(false); + Time.timeScale = 1; + } + else + { + disconnected.SetActive(true); + Time.timeScale = 0; + } + + + // Rise Up Transition + if (!ready && headOffset.y == design.headOffset.y) + { + OnReady(); + + ready = true; + } + else + { + headOffset.y = Mathf.Lerp(headOffset.y, design.headOffset.y, Time.deltaTime); + headOffset.z = Mathf.Lerp(headOffset.z, design.headOffset.z, Time.deltaTime); + } + + Quaternion headsetRot = InputTracking.GetLocalRotation(XRNode.Head); + if (headsetRot != null) + { + head.rotation = headsetRot; + head.position = headsetRot * headOffset; + head.localScale = Vector3.one * design.scale; + } + + boxShake = Vector3.Lerp(boxShake, (boxShake - boxOffset) * 0.5f, design.boxSpring * Time.deltaTime); + boxOffset += boxShake * design.boxSpring * Time.deltaTime; + + head.position += boxOffset; + + + controllerRot = OVRInput.GetLocalControllerRotation(remote) * Quaternion.Euler(-30, 0, 0); + } + + public Vector3Int InputDirection(Main main) + { + Vector3Int newDir = Main.SnapDir((controllerRot * Vector3.forward)); + + // no neck snaps + if (main.snake[0] + newDir != main.snake[1]) + { + return newDir; + } + + return main.dir; + } + + void Bump(Vector3 dir) + { + boxShake -= dir; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Rig.cs.meta b/Assets/Scripts/Rig.cs.meta new file mode 100644 index 0000000..e7ff779 --- /dev/null +++ b/Assets/Scripts/Rig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85a9e91f5490eb7459a500d8f39024fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/SFX.cs b/Assets/Scripts/SFX.cs new file mode 100644 index 0000000..33ce203 --- /dev/null +++ b/Assets/Scripts/SFX.cs @@ -0,0 +1,58 @@ +using UnityEngine; + +public class SFX +{ + public SFX(SoundData data) + { + Game.OnStep += this.SnakeStep; + Game.OnEat += this.Eat; + Game.OnBump += this.Bump; + Game.OnCrash += this.Crash; + + this.data = data; + } + + SoundData data; + + // the only sfxs that are not step based is the UI + // same class different audioSources + + void SnakeStep() + { + data.PickClip(data.sfxSteps); + } + + void Eat(Vector3 pos) + { + data.queuedClip = data.sfxEat; + } + + void Bump(Vector3 dir) + { + data.PickClip(data.sfxBumps); + } + + void Crash() + { + data.queuedClip = data.sfxCrash; + } + + int oldGrowQueue; + public void Step(Main main) + { + // bump box + // if head pos hasb't changed in a step + + // game over + // some bool? restart int? + + if (data.queuedClip != null) + { + main.sfxSource.clip = data.queuedClip; + main.sfxSource.volume = data.sfxVolume; + main.sfxSource.Play(); + } + + data.queuedClip = null; // clear queue + } +} \ No newline at end of file diff --git a/Assets/Scripts/SFX.cs.meta b/Assets/Scripts/SFX.cs.meta new file mode 100644 index 0000000..05da0d8 --- /dev/null +++ b/Assets/Scripts/SFX.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e7169777756c8541819f2c3369f2faa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/SnakeFace.cs b/Assets/Scripts/SnakeFace.cs new file mode 100644 index 0000000..f4b964e --- /dev/null +++ b/Assets/Scripts/SnakeFace.cs @@ -0,0 +1,50 @@ +using UnityEngine; + +public class SnakeFace +{ + public SnakeFace(GraphXData data) + { + Main.OnGameStart += this.GameStart; + Game.OnStep += this.Step; + Game.OnSmell += this.Smell; + Game.OnEat += this.Eat; + Game.OnBump += this.Bump; + Game.OnCrash += this.Crash; + + this.data = data; + } + + GraphXData data; + + void GameStart(Main main) + { + data.faceMesh = data.faceDefault; + } + + void Step() + { + data.faceMesh = data.faceDefault; + } + + void Smell() + { + data.faceMesh = data.faceEat; + } + + void Eat(Vector3 pos) + { + data.faceMesh = data.faceEaten; + } + + void Bump(Vector3 dir) + { + data.faceMesh = data.faceBump; + } + + void Crash() + { + data.faceMesh = data.faceSelfGameover; + + // box gameover? + } +} \ No newline at end of file diff --git a/Assets/Scripts/SnakeFace.cs.meta b/Assets/Scripts/SnakeFace.cs.meta new file mode 100644 index 0000000..fdadc13 --- /dev/null +++ b/Assets/Scripts/SnakeFace.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1fcc635a7b24a84c86bf16040af4345 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/SoundData.cs b/Assets/Scripts/SoundData.cs new file mode 100644 index 0000000..0e7026f --- /dev/null +++ b/Assets/Scripts/SoundData.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +[CreateAssetMenu] +public class SoundData : ScriptableObject +{ + public float musicVolume = 1; + public float sfxVolume = 1; + + public AudioClip musicLoop; + public AudioClip[] musicTracks; + public AudioClip musicTrack; + + + public AudioClip sfxEat, sfxCrash; + public AudioClip[] sfxSteps, sfxBumps; + + public AudioClip queuedClip; + + public void PickClip(AudioClip[] clips) + { + // last used is 0 + int i = Random.Range(1, clips.Length); + AudioClip chosen = clips[i]; + clips[i] = clips[0]; + clips[0] = chosen; + queuedClip = chosen; + } +} \ No newline at end of file diff --git a/Assets/Scripts/SoundData.cs.meta b/Assets/Scripts/SoundData.cs.meta new file mode 100644 index 0000000..b21f3d8 --- /dev/null +++ b/Assets/Scripts/SoundData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc0cd9e751950a344a39517cf964b104 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Vibe.cs b/Assets/Scripts/Vibe.cs new file mode 100644 index 0000000..fd7b22b --- /dev/null +++ b/Assets/Scripts/Vibe.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using UnityEngine.XR; + +public class Vibe : MonoBehaviour +{ + + public void Pulse(float amplitude = 0.5f) + { + InputDevice device = InputDevices.GetDeviceAtXRNode(XRNode.RightHand); + HapticCapabilities capabilities; + + if (device.TryGetHapticCapabilities(out capabilities)) + { + if (capabilities.supportsImpulse) + { + uint channel = 0; + device.SendHapticImpulse(channel, amplitude, 0.5f / Time.timeScale); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Vibe.cs.meta b/Assets/Scripts/Vibe.cs.meta new file mode 100644 index 0000000..7212596 --- /dev/null +++ b/Assets/Scripts/Vibe.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a827a193cd4521499860159e7193fdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sound Data.asset b/Assets/Sound Data.asset new file mode 100644 index 0000000..0a182cd --- /dev/null +++ b/Assets/Sound Data.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fc0cd9e751950a344a39517cf964b104, type: 3} + m_Name: Sound Data + m_EditorClassIdentifier: + musicVolume: 1 + sfxVolume: 1 + musicLoop: {fileID: 8300000, guid: 11488f53bfe50f54284d1afb96ada393, type: 3} + musicTracks: + - {fileID: 8300000, guid: 61e6e2c2751e67a49bd094cc232ac63a, type: 3} + - {fileID: 8300000, guid: ee45376984c1fb649b543319a91e0e40, type: 3} + - {fileID: 8300000, guid: ee45376984c1fb649b543319a91e0e40, type: 3} + musicTrack: {fileID: 8300000, guid: 61e6e2c2751e67a49bd094cc232ac63a, type: 3} + sfxEat: {fileID: 8300000, guid: 82bd098f5506e3b41a07072eb3eb28d4, type: 3} + sfxCrash: {fileID: 8300000, guid: 72a6301a26f49e540b0848cfa2b67cfa, type: 3} + sfxSteps: + - {fileID: 8300000, guid: bcec00f74f7176348ac3050e78930705, type: 3} + - {fileID: 8300000, guid: b9b2d2b32f83fb0428cb365c1c48fe67, type: 3} + - {fileID: 8300000, guid: 41a9ee307ebbe314dbdb5ee57bd4fa30, type: 3} + - {fileID: 8300000, guid: 086cfe24db2eed14197af75d67dff5be, type: 3} + - {fileID: 8300000, guid: a2639ce18ce7b9e4c892a6eff137c09a, type: 3} + - {fileID: 8300000, guid: 3489e62039fcba54385e97408d832500, type: 3} + - {fileID: 8300000, guid: cbc38424ce7dc4843b2581fa33b54efb, type: 3} + sfxBumps: + - {fileID: 8300000, guid: 0851ca148366f844f9ba3ba700c55e1a, type: 3} + - {fileID: 8300000, guid: 19c9cc89f9023644faba1147e2c45d3a, type: 3} + - {fileID: 8300000, guid: d45fa403d7562df4cb4961e11956454e, type: 3} + queuedClip: {fileID: 0} diff --git a/Assets/Sound Data.asset.meta b/Assets/Sound Data.asset.meta new file mode 100644 index 0000000..86fb790 --- /dev/null +++ b/Assets/Sound Data.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4e7fe59e4863c834fbf8ed54655e2385 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator.meta b/Assets/SpaceNavigator.meta new file mode 100644 index 0000000..1be3e93 --- /dev/null +++ b/Assets/SpaceNavigator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6194fe9096daef4f8b60583434c9ee3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator/Changelog.txt b/Assets/SpaceNavigator/Changelog.txt new file mode 100644 index 0000000..dbb5a6b --- /dev/null +++ b/Assets/SpaceNavigator/Changelog.txt @@ -0,0 +1,37 @@ +Changelog + +1.5.2 +Fixes +- Fixed sceneview camera pos/rot being reset on play/stop. +- Settings are now saved immediately after any modification. + +1.5.1 +Fixes +- Merged Stephen Wolter's deadzone fix for drifting on mac. +- Added SpaceNavigatorDriver namespace. +- Renamed a script that was conflicting with another sdk. + +1.5 +Features +- Added option to navigate in the editor at runtime. +- Separate axis lock settings for navigation and manipulation modes. +- Autosave settings every 30 seconds. +Fixes +- Fixed horizon lock, coord sys and snap setting not being saved. +- Refactored driver settings. + +1.4.1 +- Fixed drift on Mac (contributed by Enrico Tuttobene) + +1.4 +- Driver works without having the editor window open. +- Fixed inverted yaw axis on PC. +- Tweaked sensitivity scale of PC and Mac implementations. +- Fixed errors in Follow Curve sample in Unity 5. + +1.3.3 +- Mac support. +- Added XCode project for Mac 3DConnexionWrapper (see github). +- Fixed incorrect default sensitivity presets. +- Added scroll bars to editor window. +- Lined up checkboxes in editor window. \ No newline at end of file diff --git a/Assets/SpaceNavigator/Changelog.txt.meta b/Assets/SpaceNavigator/Changelog.txt.meta new file mode 100644 index 0000000..7d17902 --- /dev/null +++ b/Assets/SpaceNavigator/Changelog.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: bc178cf68823e4e4fba3213d5b8eb35c +TextScriptImporter: + userData: diff --git a/Assets/SpaceNavigator/Editor.meta b/Assets/SpaceNavigator/Editor.meta new file mode 100644 index 0000000..2816efe --- /dev/null +++ b/Assets/SpaceNavigator/Editor.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b4c16fcccda65f34aa7057bacdf41c5c diff --git a/Assets/SpaceNavigator/Editor/SpaceNavigatorWindow.cs b/Assets/SpaceNavigator/Editor/SpaceNavigatorWindow.cs new file mode 100644 index 0000000..39033f0 --- /dev/null +++ b/Assets/SpaceNavigator/Editor/SpaceNavigatorWindow.cs @@ -0,0 +1,51 @@ +#if UNITY_EDITOR +using System; +using UnityEditor; + +namespace SpaceNavigatorDriver { + + [Serializable] + public class SpaceNavigatorWindow : EditorWindow, IDisposable { + + /// + /// Initializes the window. + /// + [MenuItem("Window/SpaceNavigator &s")] + public static void Init() { + SpaceNavigatorWindow window = GetWindow(typeof(SpaceNavigatorWindow)) as SpaceNavigatorWindow; + + if (window) { + window.Show(); + } + } + + public static void OnDisable() { + // Write settings to PlayerPrefs when EditorWindow is closed. + Settings.Write(); + } + + public static void OnDestroy() { + // Write settings to PlayerPrefs when EditorWindow is closed. + Settings.Write(); + } + + // This does not get called, unfortunately... + public void OnApplicationQuit() { + ViewportController.OnApplicationQuit(); + } + + public void OnSelectionChange() { + ViewportController.StoreSelectionTransforms(); + } + + public void OnGUI() { + Settings.OnGUI(); + } + + public void Dispose() { + // Write settings to PlayerPrefs when EditorWindow is closed. + Settings.Write(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/SpaceNavigator/Editor/SpaceNavigatorWindow.cs.meta b/Assets/SpaceNavigator/Editor/SpaceNavigatorWindow.cs.meta new file mode 100644 index 0000000..332230a --- /dev/null +++ b/Assets/SpaceNavigator/Editor/SpaceNavigatorWindow.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ef7c09094d3ecf24aba174a65757757d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/SpaceNavigator/Editor/ViewportController.cs b/Assets/SpaceNavigator/Editor/ViewportController.cs new file mode 100644 index 0000000..4f1f92a --- /dev/null +++ b/Assets/SpaceNavigator/Editor/ViewportController.cs @@ -0,0 +1,324 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace SpaceNavigatorDriver { + + [InitializeOnLoad] + [Serializable] + class ViewportController { + + // Snapping + private static Dictionary _unsnappedRotations = new Dictionary(); + private static Dictionary _unsnappedTranslations = new Dictionary(); + private static bool _wasIdle; + + // Rig components + private static GameObject _pivotGO, _cameraGO; + private static Transform _pivot, _camera; + private const string PivotName = "Scene camera pivot dummy"; + private const string CameraName = "Scene camera dummy"; + + private static bool _wasHorizonLocked; + private const float _saveInterval = 30; + private static float _lastSaveTime; + + static ViewportController() { + // Set up callbacks. + EditorApplication.update += Update; + EditorApplication.playmodeStateChanged += PlaymodeStateChanged; + + // Initialize. + Settings.Read(); + InitCameraRig(); + StoreSelectionTransforms(); + } + + #region - Callbacks - + private static void PlaymodeStateChanged() { + if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying) + Settings.Write(); + } + + public static void OnApplicationQuit() { + Settings.Write(); + DisposeCameraRig(); + SpaceNavigator.Instance.Dispose(); + } + #endregion - Callbacks - + + static void Update() { + // Autosave settings. + if (!Application.isPlaying && DateTime.Now.Second - _lastSaveTime > _saveInterval) { + Settings.Write(); + _lastSaveTime = DateTime.Now.Second; + } + + // If we don't want the driver to navigate the editor at runtime, exit now. + if (Application.isPlaying && !Settings.RuntimeEditorNav) return; + + SceneView sceneView = SceneView.lastActiveSceneView; + if (!sceneView) return; + + SyncRigWithScene(); + + if (Settings.LockHorizon && !_wasHorizonLocked) + StraightenHorizon(); + _wasHorizonLocked = Settings.LockHorizon; + + // Return if device is idle. + if (SpaceNavigator.Translation == Vector3.zero && + SpaceNavigator.Rotation == Quaternion.identity) { + _wasIdle = true; + return; + } + + switch (Settings.Mode) { + case OperationMode.Fly: + Fly(sceneView); + break; + case OperationMode.Orbit: + Orbit(sceneView); + break; + case OperationMode.Telekinesis: + // Manipulate the object free from the camera. + Telekinesis(sceneView); + break; + case OperationMode.GrabMove: + // Manipulate the object together with the camera. + GrabMove(sceneView); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + //// Detect keyboard clicks (not working). + //if (Keyboard.IsKeyDown(1)) + // D.log("Button 0 pressed"); + //if (Keyboard.IsKeyDown(2)) + // D.log("Button 1 pressed"); + + _wasIdle = false; + } + + #region - Navigation - + static void Fly(SceneView sceneView) { + Fly(sceneView, Settings.FlyInvertTranslation, Settings.FlyInvertRotation); + } + static void Fly(SceneView sceneView, Vector3 translationInversion, Vector3 rotationInversion) { + SyncRigWithScene(); + + // Apply inversion of axes for fly/grabmove mode. + Vector3 translation = Vector3.Scale(SpaceNavigator.Translation, translationInversion); + Vector3 rotation = Vector3.Scale(SpaceNavigator.Rotation.eulerAngles, rotationInversion); + + _camera.Translate(translation, Space.Self); + if (sceneView.orthographic) + sceneView.size -= translation.z; + else { + if (Settings.LockHorizon) { + // Perform azimuth in world coordinates. + _camera.Rotate(Vector3.up, rotation.y, Space.World); + // Perform pitch in local coordinates. + _camera.Rotate(Vector3.right, rotation.x, Space.Self); + } else { + // Default rotation method, applies the whole quaternion to the camera. + _camera.Rotate(rotation); + } + } + + // Update sceneview pivot and repaint view. + sceneView.pivot = _pivot.position; + sceneView.rotation = _pivot.rotation; + sceneView.Repaint(); + } + static void Orbit(SceneView sceneView) { + // If no object is selected don't orbit, fly instead. + if (Selection.gameObjects.Length == 0) { + Fly(sceneView); + return; + } + + SyncRigWithScene(); + + // Apply inversion of axes for orbit mode. + Vector3 translation = Vector3.Scale(SpaceNavigator.Translation, Settings.OrbitInvertTranslation); + Vector3 rotation = Vector3.Scale(SpaceNavigator.Rotation.eulerAngles, Settings.OrbitInvertRotation); + + _camera.Translate(translation, Space.Self); + + if (Settings.LockHorizon) { + _camera.RotateAround(Tools.handlePosition, Vector3.up, rotation.y); + _camera.RotateAround(Tools.handlePosition, _camera.right, rotation.x); + } else { + _camera.RotateAround(Tools.handlePosition, _camera.up, rotation.y); + _camera.RotateAround(Tools.handlePosition, _camera.right, rotation.x); + _camera.RotateAround(Tools.handlePosition, _camera.forward, rotation.z); + } + + // Update sceneview pivot and repaint view. + sceneView.pivot = _pivot.position; + sceneView.rotation = _pivot.rotation; + sceneView.Repaint(); + } + static void Telekinesis(SceneView sceneView) { + // Apply inversion of axes for telekinesis mode. + Vector3 translation = Vector3.Scale(SpaceNavigator.Translation, Settings.TelekinesisInvertTranslation); + Quaternion rotation = Quaternion.Euler(Vector3.Scale(SpaceNavigator.Rotation.eulerAngles, Settings.TelekinesisInvertRotation)); + + // Store the selection's transforms because the user could have edited them since we last used them via the inspector. + if (_wasIdle) + StoreSelectionTransforms(); + + foreach (Transform transform in Selection.GetTransforms(SelectionMode.TopLevel | SelectionMode.Editable)) { + if (!_unsnappedRotations.ContainsKey(transform)) continue; + + Transform reference; + switch (Settings.CoordSys) { + case CoordinateSystem.Camera: + reference = sceneView.camera.transform; + break; + case CoordinateSystem.World: + reference = null; + break; + case CoordinateSystem.Parent: + reference = transform.parent; + break; + case CoordinateSystem.Local: + reference = transform; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + if (reference == null) { + // Move the object in world coordinates. + _unsnappedTranslations[transform] += translation; + _unsnappedRotations[transform] = rotation * _unsnappedRotations[transform]; + } else { + // Move the object in the reference coordinate system. + Vector3 worldTranslation = reference.TransformPoint(translation) - + reference.position; + _unsnappedTranslations[transform] += worldTranslation; + _unsnappedRotations[transform] = (reference.rotation * rotation * Quaternion.Inverse(reference.rotation)) * _unsnappedRotations[transform]; + } + + // Perform rotation with or without snapping. + transform.rotation = Settings.SnapRotation ? SnapOnRotation(_unsnappedRotations[transform], Settings.SnapAngle) : _unsnappedRotations[transform]; + transform.position = Settings.SnapTranslation ? SnapOnTranslation(_unsnappedTranslations[transform], Settings.SnapDistance) : _unsnappedTranslations[transform]; + } + } + static void GrabMove(SceneView sceneView) { + // Apply inversion of axes for grab move mode. + Vector3 translation = Vector3.Scale(SpaceNavigator.Translation, Settings.GrabMoveInvertTranslation); + Vector3 rotation = Vector3.Scale(SpaceNavigator.Rotation.eulerAngles, Settings.GrabMoveInvertRotation); + + // Store the selection's transforms because the user could have edited them since we last used them via the inspector. + if (_wasIdle) + StoreSelectionTransforms(); + + foreach (Transform transform in Selection.GetTransforms(SelectionMode.TopLevel | SelectionMode.Editable)) { + if (!_unsnappedRotations.ContainsKey(transform)) continue; + + // Initialize transform to unsnapped state. + transform.rotation = _unsnappedRotations[transform]; + transform.position = _unsnappedTranslations[transform]; + Vector3 oldPos = transform.position; + + // Rotate with horizon lock. + transform.RotateAround(_camera.position, Vector3.up, rotation.y); + transform.RotateAround(_camera.position, _camera.right, rotation.x); + + // Interpret SpaceNavigator input in camera space, calculate the effect in world space. + Vector3 worldTranslation = sceneView.camera.transform.TransformPoint(translation) - + sceneView.camera.transform.position; + transform.position += worldTranslation; + + // Store new unsnapped state. + _unsnappedRotations[transform] = transform.rotation; + _unsnappedTranslations[transform] += transform.position - oldPos; // The rotation also added translation, so calculate the translation delta. + + // Perform snapping. + transform.position = Settings.SnapTranslation ? SnapOnTranslation(_unsnappedTranslations[transform], Settings.SnapDistance) : _unsnappedTranslations[transform]; + transform.rotation = Settings.SnapRotation ? SnapOnRotation(_unsnappedRotations[transform], Settings.SnapAngle) : _unsnappedRotations[transform]; + } + + // Move the scene camera. + Fly(sceneView, Settings.GrabMoveInvertTranslation, Settings.GrabMoveInvertRotation); + } + public static void StraightenHorizon() { + _camera.rotation = Quaternion.Euler(_camera.rotation.eulerAngles.x, _camera.rotation.eulerAngles.y, 0); + + // Update sceneview pivot and repaint view. + SceneView.lastActiveSceneView.pivot = _pivot.position; + SceneView.lastActiveSceneView.rotation = _pivot.rotation; + SceneView.lastActiveSceneView.Repaint(); + } + #endregion - Navigation - + + #region - Dummy Camera Rig - + /// + /// Sets up a dummy camera rig like the scene camera. + /// We can't move the camera, only the SceneView's pivot & rotation. + /// For some reason the camera does not always have the same position offset to the pivot. + /// This offset is unpredictable, so we have to update our dummy rig each time before using it. + /// + private static void InitCameraRig() { + _cameraGO = GameObject.Find(CameraName); + _pivotGO = GameObject.Find(PivotName); + // Create camera rig if one is not already present. + if (!_pivotGO) { + _cameraGO = new GameObject(CameraName) { hideFlags = HideFlags.HideAndDontSave }; + _pivotGO = new GameObject(PivotName) { hideFlags = HideFlags.HideAndDontSave }; + } + // Reassign these variables, they get destroyed when entering play mode. + _camera = _cameraGO.transform; + _pivot = _pivotGO.transform; + _pivot.parent = _camera; + + SyncRigWithScene(); + } + /// + /// Position the dummy camera rig like the scene view camera. + /// + private static void SyncRigWithScene() { + if (SceneView.lastActiveSceneView) { + _camera.position = SceneView.lastActiveSceneView.camera.transform.position; // <- this value changes w.r.t. pivot ! + _camera.rotation = SceneView.lastActiveSceneView.camera.transform.rotation; + _pivot.position = SceneView.lastActiveSceneView.pivot; + _pivot.rotation = SceneView.lastActiveSceneView.rotation; + } + } + private static void DisposeCameraRig() { + Object.DestroyImmediate(_cameraGO); + Object.DestroyImmediate(_pivotGO); + } + #endregion - Dummy Camera Rig - + + #region - Snapping - + public static void StoreSelectionTransforms() { + _unsnappedRotations.Clear(); + _unsnappedTranslations.Clear(); + foreach (Transform transform in Selection.GetTransforms(SelectionMode.TopLevel | SelectionMode.Editable)) { + _unsnappedRotations.Add(transform, transform.rotation); + _unsnappedTranslations.Add(transform, transform.position); + } + } + private static Quaternion SnapOnRotation(Quaternion q, float snap) { + Vector3 euler = q.eulerAngles; + return Quaternion.Euler( + Mathf.RoundToInt(euler.x / snap) * snap, + Mathf.RoundToInt(euler.y / snap) * snap, + Mathf.RoundToInt(euler.z / snap) * snap); + } + private static Vector3 SnapOnTranslation(Vector3 v, float snap) { + return new Vector3( + Mathf.RoundToInt(v.x / snap) * snap, + Mathf.RoundToInt(v.y / snap) * snap, + Mathf.RoundToInt(v.z / snap) * snap); + } + #endregion - Snapping - + } +} \ No newline at end of file diff --git a/Assets/SpaceNavigator/Editor/ViewportController.cs.meta b/Assets/SpaceNavigator/Editor/ViewportController.cs.meta new file mode 100644 index 0000000..2b8d8af --- /dev/null +++ b/Assets/SpaceNavigator/Editor/ViewportController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13158e59074494444a2604945ebd60a8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/SpaceNavigator/License.txt b/Assets/SpaceNavigator/License.txt new file mode 100644 index 0000000..0579369 --- /dev/null +++ b/Assets/SpaceNavigator/License.txt @@ -0,0 +1,7 @@ +Copyright (C) 2017 Patrick Hogenboom + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Assets/SpaceNavigator/License.txt.meta b/Assets/SpaceNavigator/License.txt.meta new file mode 100644 index 0000000..8076db7 --- /dev/null +++ b/Assets/SpaceNavigator/License.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 5ea19d7917f662545a371d9d7914a7d9 +TextScriptImporter: + userData: diff --git a/Assets/SpaceNavigator/Plugins.meta b/Assets/SpaceNavigator/Plugins.meta new file mode 100644 index 0000000..33e9143 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a66e355d7413000448c232b4522465eb diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle.meta b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle.meta new file mode 100644 index 0000000..9877e10 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 7e1de5677e2a74639b1548f87b60f0f6 +folderAsset: yes +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + OSXIntel: + enabled: 1 + settings: {} + OSXIntel64: + enabled: 1 + settings: {} + OSXUniversal: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents.meta b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents.meta new file mode 100644 index 0000000..b65765a --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 9faf54438aa8f4eb8ae5a73363c777c8 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Info.plist b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Info.plist new file mode 100644 index 0000000..cff2323 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Info.plist @@ -0,0 +1,42 @@ + + + + + BuildMachineOSBuild + 13F1066 + CFBundleDevelopmentRegion + en + CFBundleExecutable + 3DConnexionWrapperU5 + CFBundleIdentifier + nl.pathightree.-DConnexionWrapperU5 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + 3DConnexionWrapperU5 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 6C131e + DTPlatformVersion + GM + DTSDKBuild + 14A383 + DTSDKName + macosx10.10 + DTXcode + 0620 + DTXcodeBuild + 6C131e + NSHumanReadableCopyright + Copyright © 2015 Patrick Hogenboom. All rights reserved. + + diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Info.plist.meta b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Info.plist.meta new file mode 100644 index 0000000..44ad534 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Info.plist.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 321dce2b21a764e8e8f460c3bdb5875b +DefaultImporter: + userData: diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS.meta b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..8c4f665 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 8ba999efa02a140f5b44e022ec4b64bc +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS/3DConnexionWrapperU5 b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS/3DConnexionWrapperU5 new file mode 100644 index 0000000..82851b1 Binary files /dev/null and b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS/3DConnexionWrapperU5 differ diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS/3DConnexionWrapperU5.meta b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS/3DConnexionWrapperU5.meta new file mode 100644 index 0000000..dd298dc --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/MacOS/3DConnexionWrapperU5.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 134e8b77356cd4c8981c81a298c9591d +DefaultImporter: + userData: diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources.meta b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources.meta new file mode 100644 index 0000000..d4bf3ac --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 51097712ab8984f59bc0bbf3c41f60ec +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources/3DConnexionWrapperU5-Info.plist b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources/3DConnexionWrapperU5-Info.plist new file mode 100644 index 0000000..f34fc84 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources/3DConnexionWrapperU5-Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + nl.pathightree.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSHumanReadableCopyright + Copyright © 2015 Patrick Hogenboom. All rights reserved. + NSPrincipalClass + + + diff --git a/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources/3DConnexionWrapperU5-Info.plist.meta b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources/3DConnexionWrapperU5-Info.plist.meta new file mode 100644 index 0000000..3097580 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/3DConnexionWrapperU5.bundle/Contents/Resources/3DConnexionWrapperU5-Info.plist.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: b5bffc7d57f5d40fda833d88aab6462f +DefaultImporter: + userData: diff --git a/Assets/SpaceNavigator/Plugins/QuaternionExtensions.cs b/Assets/SpaceNavigator/Plugins/QuaternionExtensions.cs new file mode 100644 index 0000000..a9d45f3 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/QuaternionExtensions.cs @@ -0,0 +1,42 @@ +using UnityEngine; + +namespace SpaceNavigatorDriver { + + public static class QuaternionExtensions { + public static Quaternion Inverse(this Quaternion q) { + return Quaternion.Inverse(q); + } + public static Quaternion QuaternionFromMatrix(Matrix4x4 m) { + return Quaternion.LookRotation(m.GetColumn(2), m.GetColumn(1)); + } + public static Quaternion RotateInSpecifiedCoordinateSystem(Quaternion rotation, Transform referenceCoordSys) { + return referenceCoordSys.rotation * rotation * referenceCoordSys.rotation.Inverse(); + } + + // Math by Minahito: http://sunday-lab.blogspot.nl/2008/04/get-pitch-yaw-roll-from-quaternion.html + /// + /// The pitch angle of the quaternion in radians. + /// + /// The quaternion. + /// + public static float Pitch(this Quaternion q) { + return Mathf.Atan2(2 * (q.y * q.z + q.w * q.x), q.w * q.w - q.x * q.x - q.y * q.y + q.z * q.z); + } + /// + /// The yaw angle of the quaternion in radians. + /// + /// The quaternion. + /// + public static float Yaw(this Quaternion q) { + return Mathf.Asin(-2 * (q.x * q.z - q.w * q.y)); + } + /// + /// The roll angle of the quaternion in radians. + /// + /// The quaternion. + /// + public static float Roll(this Quaternion q) { + return Mathf.Atan2(2 * (q.x * q.y + q.w * q.z), q.w * q.w + q.x * q.x - q.y * q.y - q.z * q.z); + } + } +} \ No newline at end of file diff --git a/Assets/SpaceNavigator/Plugins/QuaternionExtensions.cs.meta b/Assets/SpaceNavigator/Plugins/QuaternionExtensions.cs.meta new file mode 100644 index 0000000..bab266a --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/QuaternionExtensions.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9f497175004ffbe4cbb6d50652b37663 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/SpaceNavigator/Plugins/Settings.meta b/Assets/SpaceNavigator/Plugins/Settings.meta new file mode 100644 index 0000000..6a3f661 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/Settings.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b6a4f20b1855dce4e82e4fc15a057a2d +folderAsset: yes +timeCreated: 1454173375 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator/Plugins/Settings/Locks.cs b/Assets/SpaceNavigator/Plugins/Settings/Locks.cs new file mode 100644 index 0000000..ba02489 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/Settings/Locks.cs @@ -0,0 +1,34 @@ +using System; +using UnityEngine; + +namespace SpaceNavigatorDriver { + + [Serializable] + public class Locks { + public bool X, Y, Z, All; + + [SerializeField] + private string _name; + + // Constructor + public Locks(string name) { + _name = name; + } + + // Methods + public void Write() { + string prefix = _name + " lock "; + PlayerPrefs.SetInt(prefix + "X", X ? 1 : 0); + PlayerPrefs.SetInt(prefix + "Y", Y ? 1 : 0); + PlayerPrefs.SetInt(prefix + "Z", Z ? 1 : 0); + PlayerPrefs.SetInt(prefix + "All", All ? 1 : 0); + } + public void Read() { + string prefix = _name + " lock "; + X = PlayerPrefs.GetInt(prefix + "X", 0) == 1; + Y = PlayerPrefs.GetInt(prefix + "Y", 0) == 1; + Z = PlayerPrefs.GetInt(prefix + "Z", 0) == 1; + All = PlayerPrefs.GetInt(prefix + "All", 0) == 1; + } + } +} \ No newline at end of file diff --git a/Assets/SpaceNavigator/Plugins/Settings/Locks.cs.meta b/Assets/SpaceNavigator/Plugins/Settings/Locks.cs.meta new file mode 100644 index 0000000..9eaea21 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/Settings/Locks.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 60068b541fe252041900e0d303e9f867 +timeCreated: 1454173378 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator/Plugins/Settings/Settings.cs b/Assets/SpaceNavigator/Plugins/Settings/Settings.cs new file mode 100644 index 0000000..2eb1265 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/Settings/Settings.cs @@ -0,0 +1,495 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace SpaceNavigatorDriver { + + public enum OperationMode { Fly, Orbit, Telekinesis, GrabMove } + public enum CoordinateSystem { Camera, World, Parent, Local } + public enum Axis { X, Y, Z } + public enum DoF { Translation, Rotation } + + [Serializable] + public static class Settings { + [SerializeField] + public static OperationMode Mode; + [SerializeField] + public static CoordinateSystem CoordSys; + + // Snapping + public static bool SnapRotation; + public static int SnapAngle = 45; + public static bool SnapTranslation; + public static float SnapDistance = 0.1f; + + // Locking + public static bool LockHorizon = true; + [SerializeField] + public static Locks NavTranslationLock; + [SerializeField] + public static Locks NavRotationLock; + [SerializeField] + public static Locks ManipulateTranslationLock; + [SerializeField] + public static Locks ManipulateRotationLock; + + // Sensitivity + private static int Gears = 3; + public static int CurrentGear = 1; + + public static List TransSensDefault = new List { 50, 1, 0.05f }; + public static List TransSensMinDefault = new List() { 1, 0.1f, 0.01f }; + public static List TransSensMaxDefault = new List() { 100, 10, 1 }; + public static float PlayTransSens = TransSensDefault[1]; + public static List TransSens = new List(TransSensDefault); + public static List TransSensMin = new List(TransSensMinDefault); + public static List TransSensMax = new List(TransSensMaxDefault); + + public const float RotSensDefault = 1, RotSensMinDefault = 0, RotSensMaxDefault = 5f; + public static float PlayRotSens = RotSensDefault; + public static float RotSens = RotSensDefault; + public static float RotSensMin = RotSensMinDefault; + public static float RotSensMax = RotSensMaxDefault; + +#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX + public const float RotDeadDefault = 30, RotDeadMinDefault = 0, RotDeadMaxDefault = 100f; + public static float RotDead = RotDeadDefault; + public static float RotDeadMin = RotDeadMinDefault; + public static float RotDeadMax = RotDeadMaxDefault; + + public const float TransDeadDefault = 30, TransDeadMinDefault = 0, TransDeadMaxDefault = 100f; + public static float TransDead = TransDeadDefault; + public static float TransDeadMin = TransDeadMinDefault; + public static float TransDeadMax = TransDeadMaxDefault; +#endif + + // Runtime editor navigation + public static bool RuntimeEditorNav = true; + + // Inversion + public static Vector3 FlyInvertTranslation, FlyInvertRotation; + public static Vector3 OrbitInvertTranslation, OrbitInvertRotation; + public static Vector3 TelekinesisInvertTranslation, TelekinesisInvertRotation; + public static Vector3 GrabMoveInvertTranslation, GrabMoveInvertRotation; + + private static Vector2 _scrollPos; + + static Settings() { + //Debug.Log("New Settings()"); + NavTranslationLock = new Locks("Navigation Translation"); + NavRotationLock = new Locks("Navigation Rotation"); + ManipulateTranslationLock = new Locks("Manipulation Translation"); + ManipulateRotationLock = new Locks("Manipulation Rotation"); + } + + public static void OnGUI() { +#if UNITY_EDITOR + EditorGUI.BeginChangeCheck(); + + _scrollPos = GUILayout.BeginScrollView(_scrollPos); + GUILayout.BeginVertical(); + + #region - Operation mode - + GUILayout.Label("Operation mode"); + GUIContent[] modes = new[] { + new GUIContent("Fly", "Where do you want to fly today?"), + new GUIContent("Orbit", "Round, round, round we go"), + new GUIContent("Telekinesis", "Watch where you're levitating that piano!"), + new GUIContent("Grab Move", "Excuse me, yes. HDS coming through. I've got a package people") + }; + Mode = (OperationMode)GUILayout.SelectionGrid((int)Mode, modes, 4); + #endregion - Operation mode - + + #region - Coordinate system - + // Enable the coordsys only in Telekinesis mode. + GUI.enabled = Mode == OperationMode.Telekinesis; + GUILayout.Label("Coordinate system"); + string[] coordSystems = new[] { "Camera", "World", "Parent", "Local" }; + CoordSys = (CoordinateSystem)GUILayout.SelectionGrid((int)CoordSys, coordSystems, 4); + #endregion - Coordinate system - + + #region - Snapping - + // Disable the constraint controls in Fly and Orbit mode. + GUI.enabled = Settings.Mode != OperationMode.Fly && Settings.Mode != OperationMode.Orbit; + + GUILayout.Space(10); + GUILayout.Label("Snap"); + GUILayout.Space(4); + GUILayout.BeginHorizontal(); + SnapTranslation = GUILayout.Toggle(SnapTranslation, "Grid snap"); + SnapDistance = EditorGUILayout.FloatField(SnapDistance); + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + SnapRotation = GUILayout.Toggle(SnapRotation, "Angle snap"); + SnapAngle = EditorGUILayout.IntField(SnapAngle); + GUILayout.EndHorizontal(); + + // Re-enable gui. + GUI.enabled = true; + #endregion- Snapping - + + #region - Locking - + + GUILayout.Space(10); + GUILayout.Label("Lock"); + GUILayout.Space(4); + LockHorizon = GUILayout.Toggle(LockHorizon, "Horizon"); + + #region - Translation - + GUILayout.BeginHorizontal(); + if (Mode == OperationMode.Fly || Mode == OperationMode.Orbit) { + NavTranslationLock.All = GUILayout.Toggle(NavTranslationLock.All, "Translation", GUILayout.Width(100)); + GUI.enabled = !NavTranslationLock.All; + NavTranslationLock.X = GUILayout.Toggle(NavTranslationLock.X, "X"); + NavTranslationLock.Y = GUILayout.Toggle(NavTranslationLock.Y, "Y"); + NavTranslationLock.Z = GUILayout.Toggle(NavTranslationLock.Z, "Z"); + GUI.enabled = true; + } else { + ManipulateTranslationLock.All = GUILayout.Toggle(ManipulateTranslationLock.All, "Translation", GUILayout.Width(100)); + GUI.enabled = !ManipulateTranslationLock.All; + ManipulateTranslationLock.X = GUILayout.Toggle(ManipulateTranslationLock.X, "X"); + ManipulateTranslationLock.Y = GUILayout.Toggle(ManipulateTranslationLock.Y, "Y"); + ManipulateTranslationLock.Z = GUILayout.Toggle(ManipulateTranslationLock.Z, "Z"); + GUI.enabled = true; + } + GUILayout.EndHorizontal(); + #endregion - Translation - + + #region - Rotation - + GUILayout.BeginHorizontal(); + if (Mode == OperationMode.Fly || Mode == OperationMode.Orbit) { + NavRotationLock.All = GUILayout.Toggle(NavRotationLock.All, "Rotation", GUILayout.Width(100)); + GUI.enabled = !NavRotationLock.All; + NavRotationLock.X = GUILayout.Toggle(NavRotationLock.X, "X"); + NavRotationLock.Y = GUILayout.Toggle(NavRotationLock.Y, "Y"); + NavRotationLock.Z = GUILayout.Toggle(NavRotationLock.Z, "Z"); + GUI.enabled = true; + } else { + ManipulateRotationLock.All = GUILayout.Toggle(ManipulateRotationLock.All, "Rotation", GUILayout.Width(100)); + GUI.enabled = !ManipulateRotationLock.All; + ManipulateRotationLock.X = GUILayout.Toggle(ManipulateRotationLock.X, "X"); + ManipulateRotationLock.Y = GUILayout.Toggle(ManipulateRotationLock.Y, "Y"); + ManipulateRotationLock.Z = GUILayout.Toggle(ManipulateRotationLock.Z, "Z"); + GUI.enabled = true; + } + GUILayout.EndHorizontal(); + #endregion - Rotation - + + #endregion - Locking - + + #region - Sensitivity + gearbox - + GUILayout.Space(10); + GUILayout.BeginHorizontal(); + + #region - Sensitivity - + GUILayout.BeginVertical(); + GUILayout.Label("Sensitivity"); + GUILayout.Space(4); + + + #region - Translation + rotation - + GUILayout.BeginVertical(); + #region - Translation - + GUILayout.BeginHorizontal(); + GUILayout.Label("Translation", GUILayout.Width(67)); + TransSens[CurrentGear] = EditorGUILayout.FloatField(TransSens[CurrentGear], GUILayout.Width(30)); + TransSensMin[CurrentGear] = EditorGUILayout.FloatField(TransSensMin[CurrentGear], GUILayout.Width(30)); + TransSens[CurrentGear] = GUILayout.HorizontalSlider(TransSens[CurrentGear], TransSensMin[CurrentGear], TransSensMax[CurrentGear]); + TransSensMax[CurrentGear] = EditorGUILayout.FloatField(TransSensMax[CurrentGear], GUILayout.Width(30)); + GUILayout.EndHorizontal(); + #endregion - Translation - + + #region - Rotation - + GUILayout.BeginHorizontal(); + GUILayout.Label("Rotation", GUILayout.Width(67)); + RotSens = EditorGUILayout.FloatField(RotSens, GUILayout.Width(30)); + RotSensMin = EditorGUILayout.FloatField(RotSensMin, GUILayout.Width(30)); + RotSens = GUILayout.HorizontalSlider(RotSens, RotSensMin, RotSensMax); + RotSensMax = EditorGUILayout.FloatField(RotSensMax, GUILayout.Width(30)); + GUILayout.EndHorizontal(); + #endregion - Rotation - + GUILayout.EndVertical(); + #endregion - Translation + rotation - + + GUILayout.EndVertical(); + #endregion - Sensitivity - + + #region - Gearbox - + GUILayout.BeginVertical(); + GUILayout.Label("Scale", GUILayout.Width(65)); + modes = new GUIContent[] { + new GUIContent("Huge", "Galactic scale"), + new GUIContent("Human", "What people consider 'normal'"), + new GUIContent("Minuscule", "Itsy-bitsy-scale") + }; + CurrentGear = GUILayout.SelectionGrid(CurrentGear, modes, 1, GUILayout.Width(67)); + GUILayout.EndVertical(); + #endregion - Gearbox - + + GUILayout.EndHorizontal(); + #endregion - Sensitivity + gearbox - + + RuntimeEditorNav = GUILayout.Toggle(RuntimeEditorNav, "Runtime Editor Navigation"); + + #region - Axes inversion per mode - + GUILayout.Space(10); + GUILayout.Label("Invert axes in " + Settings.Mode.ToString() + " mode"); + GUILayout.Space(4); + + bool tx, ty, tz, rx, ry, rz; + switch (Settings.Mode) { + case OperationMode.Fly: + tx = Settings.FlyInvertTranslation.x < 0; ty = Settings.FlyInvertTranslation.y < 0; tz = Settings.FlyInvertTranslation.z < 0; + rx = Settings.FlyInvertRotation.x < 0; ry = Settings.FlyInvertRotation.y < 0; rz = Settings.FlyInvertRotation.z < 0; + break; + case OperationMode.Orbit: + tx = Settings.OrbitInvertTranslation.x < 0; ty = Settings.OrbitInvertTranslation.y < 0; tz = Settings.OrbitInvertTranslation.z < 0; + rx = Settings.OrbitInvertRotation.x < 0; ry = Settings.OrbitInvertRotation.y < 0; rz = Settings.OrbitInvertRotation.z < 0; + break; + case OperationMode.Telekinesis: + tx = Settings.TelekinesisInvertTranslation.x < 0; ty = Settings.TelekinesisInvertTranslation.y < 0; tz = Settings.TelekinesisInvertTranslation.z < 0; + rx = Settings.TelekinesisInvertRotation.x < 0; ry = Settings.TelekinesisInvertRotation.y < 0; rz = Settings.TelekinesisInvertRotation.z < 0; + break; + case OperationMode.GrabMove: + tx = Settings.GrabMoveInvertTranslation.x < 0; ty = Settings.GrabMoveInvertTranslation.y < 0; tz = Settings.GrabMoveInvertTranslation.z < 0; + rx = Settings.GrabMoveInvertRotation.x < 0; ry = Settings.GrabMoveInvertRotation.y < 0; rz = Settings.GrabMoveInvertRotation.z < 0; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + GUILayout.BeginHorizontal(); + GUILayout.Label("Translation", GUILayout.Width(100)); + EditorGUI.BeginChangeCheck(); + tx = GUILayout.Toggle(tx, "X"); + ty = GUILayout.Toggle(ty, "Y"); + tz = GUILayout.Toggle(tz, "Z"); + if (EditorGUI.EndChangeCheck()) { + switch (Settings.Mode) { + case OperationMode.Fly: + Settings.FlyInvertTranslation = new Vector3(tx ? -1 : 1, ty ? -1 : 1, tz ? -1 : 1); + break; + case OperationMode.Orbit: + Settings.OrbitInvertTranslation = new Vector3(tx ? -1 : 1, ty ? -1 : 1, tz ? -1 : 1); + break; + case OperationMode.Telekinesis: + Settings.TelekinesisInvertTranslation = new Vector3(tx ? -1 : 1, ty ? -1 : 1, tz ? -1 : 1); + break; + case OperationMode.GrabMove: + Settings.GrabMoveInvertTranslation = new Vector3(tx ? -1 : 1, ty ? -1 : 1, tz ? -1 : 1); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + GUILayout.Label("Rotation", GUILayout.Width(100)); + EditorGUI.BeginChangeCheck(); + + rx = GUILayout.Toggle(rx, "X"); + ry = GUILayout.Toggle(ry, "Y"); + rz = GUILayout.Toggle(rz, "Z"); + if (EditorGUI.EndChangeCheck()) { + switch (Settings.Mode) { + case OperationMode.Fly: + Settings.FlyInvertRotation = new Vector3(rx ? -1 : 1, ry ? -1 : 1, rz ? -1 : 1); + break; + case OperationMode.Orbit: + Settings.OrbitInvertRotation = new Vector3(rx ? -1 : 1, ry ? -1 : 1, rz ? -1 : 1); + break; + case OperationMode.Telekinesis: + Settings.TelekinesisInvertRotation = new Vector3(rx ? -1 : 1, ry ? -1 : 1, rz ? -1 : 1); + break; + case OperationMode.GrabMove: + Settings.GrabMoveInvertRotation = new Vector3(rx ? -1 : 1, ry ? -1 : 1, rz ? -1 : 1); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + GUILayout.EndHorizontal(); + #endregion - Axes inversion per mode - + + #region - Dead Zone - +#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX + GUILayout.BeginVertical(); + GUILayout.Label("Dead Zone"); + GUILayout.Space(4); + + + #region - Translation + rotation - + GUILayout.BeginVertical(); + #region - Translation - + GUILayout.BeginHorizontal(); + GUILayout.Label("Translation", GUILayout.Width(67)); + TransDead = EditorGUILayout.FloatField(TransDead, GUILayout.Width(30)); + TransDeadMin = EditorGUILayout.FloatField(TransDeadMin, GUILayout.Width(30)); + TransDead = GUILayout.HorizontalSlider(TransDead, TransDeadMin, TransDeadMax); + TransDeadMax = EditorGUILayout.FloatField(TransDeadMax, GUILayout.Width(30)); + GUILayout.EndHorizontal(); + #endregion - Translation - + + #region - Rotation - + GUILayout.BeginHorizontal(); + GUILayout.Label("Rotation", GUILayout.Width(67)); + RotDead = EditorGUILayout.FloatField(RotDead, GUILayout.Width(30)); + RotDeadMin = EditorGUILayout.FloatField(RotDeadMin, GUILayout.Width(30)); + RotDead = GUILayout.HorizontalSlider(RotDead, RotDeadMin, RotDeadMax); + RotDeadMax = EditorGUILayout.FloatField(RotDeadMax, GUILayout.Width(30)); + GUILayout.EndHorizontal(); + #endregion - Rotation - + GUILayout.EndVertical(); + #endregion - Translation + rotation - + + GUILayout.EndVertical(); +#endif + #endregion - Deadzone - + + GUILayout.EndVertical(); + GUILayout.EndScrollView(); + + if (EditorGUI.EndChangeCheck()) + Write(); +#endif + } + + /// + /// Write settings to PlayerPrefs. + /// + public static void Write() { + //Debug.Log("Write settings"); + + // Navigation Mode + PlayerPrefs.SetInt("Navigation mode", (int)Mode); + // Coordinate System + PlayerPrefs.SetInt("Coordinate System", (int)CoordSys); + // Snap + PlayerPrefs.SetInt("Snap Translation", SnapTranslation ? 1 : 0); + PlayerPrefs.SetFloat("Snap Distance", SnapDistance); + PlayerPrefs.SetInt("Snap Rotation", SnapRotation ? 1 : 0); + PlayerPrefs.SetInt("Snap Angle", SnapAngle); + // Lock Horizon + PlayerPrefs.SetInt("LockHorizon", LockHorizon ? 1 : 0); + // Lock Axis + NavTranslationLock.Write(); + NavRotationLock.Write(); + ManipulateTranslationLock.Write(); + ManipulateRotationLock.Write(); + // Sensitivity + for (int gear = 0; gear < Gears; gear++) { + PlayerPrefs.SetFloat("Translation sensitivity" + gear, TransSens[gear]); + PlayerPrefs.SetFloat("Translation sensitivity minimum" + gear, TransSensMin[gear]); + PlayerPrefs.SetFloat("Translation sensitivity maximum" + gear, TransSensMax[gear]); + } + PlayerPrefs.SetFloat("Rotation sensitivity", RotSens); + PlayerPrefs.SetFloat("Rotation sensitivity minimum", RotSensMin); + PlayerPrefs.SetFloat("Rotation sensitivity maximum", RotSensMax); + // Runtime Editor Navigation + PlayerPrefs.SetInt("RuntimeEditorNav", RuntimeEditorNav ? 1 : 0); + // Axis Inversions + WriteAxisInversions(FlyInvertTranslation, FlyInvertRotation, "Fly"); + WriteAxisInversions(OrbitInvertTranslation, OrbitInvertRotation, "Orbit"); + WriteAxisInversions(TelekinesisInvertTranslation, TelekinesisInvertRotation, "Telekinesis"); + WriteAxisInversions(GrabMoveInvertTranslation, GrabMoveInvertRotation, "Grab move"); + } + + /// + /// Read settings from PlayerPrefs. + /// + public static void Read() { + //Debug.Log("Read settings"); + + // Navigation Mode + Mode = (OperationMode)PlayerPrefs.GetInt("Navigation mode", (int)OperationMode.Fly); + // Coordinate System + CoordSys = (CoordinateSystem)PlayerPrefs.GetInt("Coordinate System", (int)CoordinateSystem.Camera); + // Snap + SnapTranslation = PlayerPrefs.GetInt("Snap Translation", 0) == 1; + SnapDistance = PlayerPrefs.GetFloat("Snap Distance", 0.1f); + SnapRotation = PlayerPrefs.GetInt("Snap Rotation", 0) == 1; + SnapAngle = PlayerPrefs.GetInt("Snap Angle", 45); + // Lock Horizon + LockHorizon = PlayerPrefs.GetInt("LockHorizon", 1) == 1; + // Lock Axis + NavTranslationLock.Read(); + NavRotationLock.Read(); + ManipulateTranslationLock.Read(); + ManipulateRotationLock.Read(); + // Sensitivity + for (int gear = 0; gear < Gears; gear++) { + TransSens[gear] = PlayerPrefs.GetFloat("Translation sensitivity" + gear, TransSensDefault[gear]); + TransSensMin[gear] = PlayerPrefs.GetFloat("Translation sensitivity minimum" + gear, TransSensMinDefault[gear]); + TransSensMax[gear] = PlayerPrefs.GetFloat("Translation sensitivity maximum" + gear, TransSensMaxDefault[gear]); + } + RotSens = PlayerPrefs.GetFloat("Rotation sensitivity", RotSensDefault); + RotSensMin = PlayerPrefs.GetFloat("Rotation sensitivity minimum", RotSensMinDefault); + RotSensMax = PlayerPrefs.GetFloat("Rotation sensitivity maximum", RotSensMaxDefault); + // Runtime Editor Navigation + RuntimeEditorNav = PlayerPrefs.GetInt("RuntimeEditorNav", 1) == 1; + // Axis Inversions + ReadAxisInversions(ref FlyInvertTranslation, ref FlyInvertRotation, "Fly"); + ReadAxisInversions(ref OrbitInvertTranslation, ref OrbitInvertRotation, "Orbit"); + ReadAxisInversions(ref TelekinesisInvertTranslation, ref TelekinesisInvertRotation, "Telekinesis"); + ReadAxisInversions(ref GrabMoveInvertTranslation, ref GrabMoveInvertRotation, "Grab move"); + } + + /// + /// Utility function to write axis inversions to PlayerPrefs. + /// + /// + /// + /// + private static void WriteAxisInversions(Vector3 translation, Vector3 rotation, string baseName) { + PlayerPrefs.SetInt(baseName + " invert translation x", translation.x < 0 ? -1 : 1); + PlayerPrefs.SetInt(baseName + " invert translation y", translation.y < 0 ? -1 : 1); + PlayerPrefs.SetInt(baseName + " invert translation z", translation.z < 0 ? -1 : 1); + PlayerPrefs.SetInt(baseName + " invert rotation x", rotation.x < 0 ? -1 : 1); + PlayerPrefs.SetInt(baseName + " invert rotation y", rotation.y < 0 ? -1 : 1); + PlayerPrefs.SetInt(baseName + " invert rotation z", rotation.z < 0 ? -1 : 1); + } + + /// + /// Utility function to read axis inversions from PlayerPrefs. + /// + /// + /// + /// + private static void ReadAxisInversions(ref Vector3 translation, ref Vector3 rotation, string baseName) { + translation.x = PlayerPrefs.GetInt(baseName + " invert translation x", 1); + translation.y = PlayerPrefs.GetInt(baseName + " invert translation y", 1); + translation.z = PlayerPrefs.GetInt(baseName + " invert translation z", 1); + rotation.x = PlayerPrefs.GetInt(baseName + " invert rotation x", 1); + rotation.y = PlayerPrefs.GetInt(baseName + " invert rotation y", 1); + rotation.z = PlayerPrefs.GetInt(baseName + " invert rotation z", 1); + } + + /// + /// Utility function for retrieving axis locking settings at runtime. + /// + /// + /// + /// + public static bool GetLock(DoF doF, Axis axis) { + Locks translationLocks = Mode == OperationMode.Fly || Mode == OperationMode.Orbit ? NavTranslationLock : ManipulateTranslationLock; + Locks rotationLocks = Mode == OperationMode.Fly || Mode == OperationMode.Orbit ? NavRotationLock : ManipulateRotationLock; + Locks locks = doF == DoF.Translation ? translationLocks : rotationLocks; + + switch (axis) { + case Axis.X: + return (locks.X || locks.All) && !Application.isPlaying; + case Axis.Y: + return (locks.Y || locks.All) && !Application.isPlaying; + case Axis.Z: + return (locks.Z || locks.All) && !Application.isPlaying; + default: + throw new ArgumentOutOfRangeException("axis"); + } + } + } +} \ No newline at end of file diff --git a/Assets/SpaceNavigator/Plugins/Settings/Settings.cs.meta b/Assets/SpaceNavigator/Plugins/Settings/Settings.cs.meta new file mode 100644 index 0000000..73d4735 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/Settings/Settings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 181488744645d5e4d89ac03339c76394 +timeCreated: 1454192215 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator/Plugins/SpaceNavigator.cs b/Assets/SpaceNavigator/Plugins/SpaceNavigator.cs new file mode 100644 index 0000000..ca8508c --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/SpaceNavigator.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace SpaceNavigatorDriver { + + public abstract class SpaceNavigator : IDisposable { + // Public runtime API + public static Vector3 Translation { + get { return Instance.GetTranslation(); } + } + public static Quaternion Rotation { + get { return Instance.GetRotation(); } + } + public static Quaternion RotationInLocalCoordSys(Transform coordSys) { + return coordSys.rotation * Rotation * Quaternion.Inverse(coordSys.rotation); + } + public static void SetTranslationSensitivity(float newPlayTransSens) { + Settings.PlayTransSens = newPlayTransSens; + } + public static void SetRotationSensitivity(float newPlayRotSens) { + Settings.PlayRotSens = newPlayRotSens; + } + + // Abstract members + public abstract Vector3 GetTranslation(); + public abstract Quaternion GetRotation(); + + #region - Singleton - + public static SpaceNavigator Instance { + get { + if (_instance == null) { +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + _instance = SpaceNavigatorWindows.SubInstance; +#endif +#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX + _instance = SpaceNavigatorMac.SubInstance; +#endif + } + return _instance; + } + set { _instance = value; } + } + private static SpaceNavigator _instance; + #endregion - Singleton - + + #region - IDisposable - + public abstract void Dispose(); + #endregion - IDisposable - + } +} \ No newline at end of file diff --git a/Assets/SpaceNavigator/Plugins/SpaceNavigator.cs.meta b/Assets/SpaceNavigator/Plugins/SpaceNavigator.cs.meta new file mode 100644 index 0000000..f6452d3 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/SpaceNavigator.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 20e7622c62502e9429868cfd7b7a32c7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/SpaceNavigator/Plugins/SpaceNavigatorMac.cs b/Assets/SpaceNavigator/Plugins/SpaceNavigatorMac.cs new file mode 100644 index 0000000..82011a1 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/SpaceNavigatorMac.cs @@ -0,0 +1,99 @@ +using System.Runtime.InteropServices; +using UnityEngine; +using System; + +#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX + +namespace SpaceNavigatorDriver { + public class SpaceNavigatorMac : SpaceNavigator { + private const float TransSensScale = 0.007f, RotSensScale = 0.025f; + +#if UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 + private const string BundleName = "3DConnexionWrapperU4"; +#else + private const string BundleName = "3DConnexionWrapperU5"; +#endif + [DllImport(BundleName)] + private static extern int InitDevice(); + [DllImport(BundleName)] + private static extern void SampleTranslation(ref int x, ref int y, ref int z); + [DllImport(BundleName)] + private static extern void SampleRotation(ref int rx, ref int ry, ref int rz); + [DllImport(BundleName)] + private static extern int DisposeDevice(); + + private int _clientID; + + private const int TranslationDeadzone = 30; + private const int RotationDeadzone = 30; + + // Public API + public override Vector3 GetTranslation() { + int x = 0, y = 0, z = 0; + SampleTranslation(ref x, ref y, ref z); + float sensitivity = Application.isPlaying ? Settings.PlayTransSens : Settings.TransSens[Settings.CurrentGear]; + + return ( + _clientID == 0 ? + Vector3.zero : + new Vector3( + Settings.GetLock(DoF.Translation, Axis.X) ? 0 : SubtractDeadzone(x, Settings.TransDead), + Settings.GetLock(DoF.Translation, Axis.Y) ? 0 : SubtractDeadzone(-z, Settings.TransDead), + Settings.GetLock(DoF.Translation, Axis.Z) ? 0 : SubtractDeadzone(-y, Settings.TransDead)) * sensitivity * TransSensScale); + } + public override Quaternion GetRotation() { + int rx = 0, ry = 0, rz = 0; + SampleRotation(ref rx, ref ry, ref rz); + float sensitivity = Application.isPlaying ? Settings.PlayRotSens : Settings.RotSens; + + return ( + _clientID == 0 ? + Quaternion.identity : + Quaternion.Euler( + new Vector3( + Settings.GetLock(DoF.Rotation, Axis.X) ? 0 : SubtractDeadzone(-rx, Settings.RotDead), + Settings.GetLock(DoF.Rotation, Axis.Y) ? 0 : SubtractDeadzone(rz, Settings.RotDead), + Settings.GetLock(DoF.Rotation, Axis.Z) ? 0 : SubtractDeadzone(ry, Settings.RotDead)) * sensitivity * RotSensScale)); + } + + private float SubtractDeadzone(int value, float deadzone) { + return value < 0 + ? Math.Min(0, value + Math.Abs(deadzone)) + : Math.Max(0, value - Math.Abs(deadzone)); + } + +#region - Singleton - + /// + /// Private constructor, prevents a default instance of the class from being created. + /// + private SpaceNavigatorMac() { + _clientID = 0; + try { + _clientID = InitDevice(); + } + catch (Exception ex) { + Debug.LogError(ex.ToString()); + } + } + + public static SpaceNavigatorMac SubInstance { + get { return _subInstance ?? (_subInstance = new SpaceNavigatorMac()); } + } + private static SpaceNavigatorMac _subInstance; +#endregion - Singleton - + +#region - IDisposable - + public override void Dispose() { + try { + DisposeDevice(); + _clientID = 0; + } + catch (Exception ex) { + Debug.LogError(ex.ToString()); + } + } +#endregion - IDisposable - + } +} + +#endif // UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX diff --git a/Assets/SpaceNavigator/Plugins/SpaceNavigatorMac.cs.meta b/Assets/SpaceNavigator/Plugins/SpaceNavigatorMac.cs.meta new file mode 100644 index 0000000..4709d86 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/SpaceNavigatorMac.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c6d82792394643a5a92361d64b0e5da +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/SpaceNavigator/Plugins/SpaceNavigatorWindows.cs b/Assets/SpaceNavigator/Plugins/SpaceNavigatorWindows.cs new file mode 100644 index 0000000..9cf2bb4 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/SpaceNavigatorWindows.cs @@ -0,0 +1,82 @@ +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace SpaceNavigatorDriver { + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + using TDx.TDxInput; + + class SpaceNavigatorWindows : SpaceNavigator { + private const float TransSensScale = 0.0001f, RotSensScale = 0.0008f; + + // Public API + public override Vector3 GetTranslation() { + float sensitivity = Application.isPlaying ? Settings.PlayTransSens : Settings.TransSens[Settings.CurrentGear]; + return (SubInstance._sensor == null ? + Vector3.zero : + new Vector3( + Settings.GetLock(DoF.Translation, Axis.X) ? 0 : (float)SubInstance._sensor.Translation.X, + Settings.GetLock(DoF.Translation, Axis.Y) ? 0 : (float)SubInstance._sensor.Translation.Y, + Settings.GetLock(DoF.Translation, Axis.Z) ? 0 : -(float)SubInstance._sensor.Translation.Z) * + sensitivity * TransSensScale); + } + public override Quaternion GetRotation() { + float sensitivity = Application.isPlaying ? Settings.PlayRotSens : Settings.RotSens; + return (SubInstance._sensor == null ? + Quaternion.identity : + Quaternion.AngleAxis( + (float)SubInstance._sensor.Rotation.Angle * sensitivity * RotSensScale, + new Vector3( + Settings.GetLock(DoF.Rotation, Axis.X) ? 0 : -(float)SubInstance._sensor.Rotation.X, + Settings.GetLock(DoF.Rotation, Axis.Y) ? 0 : -(float)SubInstance._sensor.Rotation.Y, + Settings.GetLock(DoF.Rotation, Axis.Z) ? 0 : (float)SubInstance._sensor.Rotation.Z))); + } + + // Device variables + private Sensor _sensor; + private Device _device; + //private Keyboard _keyboard; + + #region - Singleton - + /// + /// Private constructor, prevents a default instance of the class from being created. + /// + private SpaceNavigatorWindows() { + try { + if (_device == null) { + _device = new DeviceClass(); + _sensor = _device.Sensor; + //_keyboard = _device.Keyboard; + } + if (!_device.IsConnected) + _device.Connect(); + } + catch (COMException ex) { + Debug.LogError(ex.ToString()); + } + } + + public static SpaceNavigatorWindows SubInstance { + get { return _subInstance ?? (_subInstance = new SpaceNavigatorWindows()); } + } + private static SpaceNavigatorWindows _subInstance; + #endregion - Singleton - + + #region - IDisposable - + public override void Dispose() { + try { + if (_device != null && _device.IsConnected) { + _device.Disconnect(); + _subInstance = null; + GC.Collect(); + } + } + catch (COMException ex) { + Debug.LogError(ex.ToString()); + } + } + #endregion - IDisposable - + } +#endif // UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN +} \ No newline at end of file diff --git a/Assets/SpaceNavigator/Plugins/SpaceNavigatorWindows.cs.meta b/Assets/SpaceNavigator/Plugins/SpaceNavigatorWindows.cs.meta new file mode 100644 index 0000000..b9208ba --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/SpaceNavigatorWindows.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2dd23ec43f35f4a4e8ee53062875f106 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/SpaceNavigator/Plugins/TDx.TDxInput.dll b/Assets/SpaceNavigator/Plugins/TDx.TDxInput.dll new file mode 100644 index 0000000..b4a8b44 Binary files /dev/null and b/Assets/SpaceNavigator/Plugins/TDx.TDxInput.dll differ diff --git a/Assets/SpaceNavigator/Plugins/TDx.TDxInput.dll.meta b/Assets/SpaceNavigator/Plugins/TDx.TDxInput.dll.meta new file mode 100644 index 0000000..85550d2 --- /dev/null +++ b/Assets/SpaceNavigator/Plugins/TDx.TDxInput.dll.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 4a1e21c70bd5173488121a174e1e74b6 +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator/README.txt b/Assets/SpaceNavigator/README.txt new file mode 100644 index 0000000..6d4d309 --- /dev/null +++ b/Assets/SpaceNavigator/README.txt @@ -0,0 +1,73 @@ +SpaceNavigator driver for Unity3D + +This driver lets you fly around your scene and allows you to move stuff around. +You can also use it at runtime via scripting. + +New: +- Mac support. +- The driver works with the SpaceNavigator window closed. + +The default mode is Fly mode and when you're flying around, this driver keeps your horizon horizontal. +So you don't have to worry about ending up upside down, just go where you want and get some work done. +To comfortably navigate large areas and minute details, you can easilly switch between 3 customizable sensitivity presets. +To move stuff around, you can use 2 modes: Telekinesis and GrabMove. +In Telekinesis mode, you can move the stuff you selected with the SpaceNavigator, while your camera stays put. +(this mode can be operated in Camera-, World-, Parent- and Local coordinates) +In GrabMove mode the stuff will be linked to your camera so you can take it with you and position it where you want. +Translation can be snapped to a grid and rotation can be angle-snapped. + +If you have feedback, please use this thread on the Unity forums http://forum.unity3d.com/threads/182382-SpaceNavigator-driver-OpenSource + +Platform support +--------- +As of version 1.3, this driver supports both PC and Mac. +The driver supports both Unity Personal and Pro versions. +Caveat: when running Unity 4 and lower on Mac you need the Pro version because Free did not allow plugins. + +Known bugs and limitations +--------- +- Grab Mode only works in the camera coordinate system (sorry, I couldn't get my head around the quaternion math of manipulating in one coordinate system while constraining in another) + +The goods +--------- +- The full package is available on the Unity asset store http://u3d.as/51X +- The package also contains a couple of runtime samples: + - Fly around.unity: Fly around with a sphere while knocking over some cubes. + - Folow curve.unity: Make your torus follow the curve, but don't touch it! +- The source code is available on Github https://github.com/PatHightree/SpaceNavigator + +Installation +--------- +- Install 3DConnexion driver and make sure it is running http://www.3dconnexion.com/service/drivers.html +- Import the unitypackage into your project +- Open the SpaceNavigator window from the pull-down menu Window/SpaceNavigator (or hit Alt-S) +- Fly away + +Upgrading +--------- +When installing a newer version of the plugin, please follow these steps: +- Close the SpaceNavigator editor window. +- Delete the SpaceNavigator folder from your project. +- Delete Plugins\3DConnexionWrapperU4.bundle from your project. +- Import the new package. +- Reopen the SpaceNavigator window (Alt-S). + +If you delete the folder while the SpaceNavigator window is still open, Unity will throw some errors. +When this happens, choose the default layout from the layout dropdown in the top right of Unity's UI and everything should return to normal. + +Pro tip +------- +Copy the SpaceNavigator.unitypackage to Unity/Editor/Standard Packages directory. +- SpaceNavigator is added to the packages list in the project creation in wizard. +- Easy to add later by right-clicking in Project View and choosing Import Package. + +Credits +------- +- Thanks to Stephen Wolter for further refinement to the mac drift fix. +- Thanks to Enrico Tuttobene for contributing the mac drift fix. +- Thanks to Kieron Lanning for implementing navigation at runtime. +- Big thanks to Chase Cobb for motivating me to implement the mac version. +- Thanks to Manuela Maier and Dave Buchhoffer (@vsaitoo) for testing and development feedback. +- Thanks to Ewoud Wijma for loaning me the Hackingtosh for building the Mac port. +- Quaternion math by Minahito + http://sunday-lab.blogspot.nl/2008/04/get-pitch-yaw-roll-from-quaternion.html \ No newline at end of file diff --git a/Assets/SpaceNavigator/README.txt.meta b/Assets/SpaceNavigator/README.txt.meta new file mode 100644 index 0000000..7b00a8f --- /dev/null +++ b/Assets/SpaceNavigator/README.txt.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 68936e1dd9ec65c4c968fe1d5db75636 diff --git a/Assets/SpaceNavigator/Runtime samples.meta b/Assets/SpaceNavigator/Runtime samples.meta new file mode 100644 index 0000000..a8af0d7 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 62266d2a14e68d847b4d084f10e94733 diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around.meta b/Assets/SpaceNavigator/Runtime samples/- Fly around.meta new file mode 100644 index 0000000..edc02ca --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 831fbed42a6a1ef43b4d32c839140efb diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around/Fly around.unity b/Assets/SpaceNavigator/Runtime samples/- Fly around/Fly around.unity new file mode 100644 index 0000000..f4f6f3d --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around/Fly around.unity @@ -0,0 +1,1726 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_Fog: 0 + m_FogColor: {r: .815686285, g: .823529422, b: .792156875, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientLight: {r: .313432813, g: .313432813, b: .313432813, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a2126534b3a11b34e977105bd9e3cc03, type: 2} + m_HaloStrength: .5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 0} + m_ObjectHideFlags: 0 +--- !u!127 &3 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + m_LightProbes: {fileID: 0} + m_Lightmaps: [] + m_LightmapsMode: 1 + m_BakedColorSpace: 0 + m_UseDualLightmapsInForward: 0 + m_LightmapEditorSettings: + m_Resolution: 50 + m_LastUsedResolution: 0 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_BounceBoost: 1 + m_BounceIntensity: 1 + m_SkyLightColor: {r: .860000014, g: .930000007, b: 1, a: 1} + m_SkyLightIntensity: 0 + m_Quality: 0 + m_Bounces: 1 + m_FinalGatherRays: 1000 + m_FinalGatherContrastThreshold: .0500000007 + m_FinalGatherGradientThreshold: 0 + m_FinalGatherInterpolationPoints: 15 + m_AOAmount: 0 + m_AOMaxDistance: .100000001 + m_AOContrast: 1 + m_LODSurfaceMappingDistance: 1 + m_Padding: 0 + m_TextureCompression: 0 + m_LockAtlas: 0 +--- !u!196 &5 +NavMeshSettings: + m_ObjectHideFlags: 0 + m_BuildSettings: + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + widthInaccuracy: 16.666666 + heightInaccuracy: 10 + m_NavMesh: {fileID: 0} +--- !u!1 &28674161 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 28674162} + - 33: {fileID: 28674164} + - 65: {fileID: 28674165} + - 23: {fileID: 28674163} + - 54: {fileID: 28674166} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &28674162 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 28674161} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5, y: 2.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!23 &28674163 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 28674161} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &28674164 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 28674161} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &28674165 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 28674161} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &28674166 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 28674161} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &41670799 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 41670800} + - 33: {fileID: 41670802} + - 135: {fileID: 41670803} + - 23: {fileID: 41670801} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &41670800 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 41670799} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1957987921} + m_RootOrder: 0 +--- !u!23 &41670801 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 41670799} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &41670802 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 41670799} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!135 &41670803 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 41670799} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: .500000119 + m_Center: {x: 5.96046448e-08, y: 0, z: -8.94069672e-08} +--- !u!1 &147344949 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 147344950} + - 33: {fileID: 147344952} + - 65: {fileID: 147344953} + - 23: {fileID: 147344951} + - 54: {fileID: 147344954} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &147344950 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 147344949} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: .5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!23 &147344951 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 147344949} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &147344952 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 147344949} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &147344953 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 147344949} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &147344954 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 147344949} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &307457367 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 307457368} + - 108: {fileID: 307457369} + m_Layer: 0 + m_Name: Directional light sun + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &307457368 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 307457367} + m_LocalRotation: {x: .482962936, y: -.224143878, z: .129409537, w: .836516321} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 17 +--- !u!108 &307457369 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 307457367} + m_Enabled: 1 + serializedVersion: 3 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: .5 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_Strength: 1 + m_Bias: .0500000007 + m_Softness: 4 + m_SoftnessFade: 1 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_ActuallyLightmapped: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_ShadowSamples: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_IndirectIntensity: 1 + m_AreaSize: {x: 1, y: 1} +--- !u!1 &377869481 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 377869482} + - 33: {fileID: 377869484} + - 65: {fileID: 377869485} + - 23: {fileID: 377869483} + - 54: {fileID: 377869486} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &377869482 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377869481} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: .5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!23 &377869483 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377869481} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &377869484 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377869481} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &377869485 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377869481} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &377869486 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377869481} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &490319697 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 490319698} + - 33: {fileID: 490319700} + - 65: {fileID: 490319701} + - 23: {fileID: 490319699} + - 54: {fileID: 490319702} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &490319698 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 490319697} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 +--- !u!23 &490319699 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 490319697} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &490319700 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 490319697} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &490319701 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 490319697} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &490319702 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 490319697} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &512311911 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 512311912} + - 33: {fileID: 512311914} + - 65: {fileID: 512311915} + - 23: {fileID: 512311913} + - 54: {fileID: 512311916} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &512311912 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 512311911} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: .75, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 +--- !u!23 &512311913 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 512311911} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &512311914 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 512311911} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &512311915 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 512311911} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &512311916 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 512311911} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &548313132 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 548313133} + - 33: {fileID: 548313135} + - 65: {fileID: 548313136} + - 23: {fileID: 548313134} + - 54: {fileID: 548313137} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &548313133 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548313132} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -.75, y: 3.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 +--- !u!23 &548313134 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548313132} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &548313135 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548313132} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &548313136 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548313132} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &548313137 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548313132} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &752810233 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 752810234} + - 33: {fileID: 752810236} + - 65: {fileID: 752810237} + - 23: {fileID: 752810235} + - 54: {fileID: 752810238} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &752810234 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 752810233} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 +--- !u!23 &752810235 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 752810233} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &752810236 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 752810233} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &752810237 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 752810233} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &752810238 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 752810233} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &869447623 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 869447624} + - 33: {fileID: 869447626} + - 65: {fileID: 869447627} + - 23: {fileID: 869447625} + - 54: {fileID: 869447628} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &869447624 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869447623} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.25, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 +--- !u!23 &869447625 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869447623} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &869447626 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869447623} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &869447627 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869447623} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &869447628 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 869447623} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &946653449 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 946653450} + - 20: {fileID: 946653451} + - 92: {fileID: 946653453} + - 124: {fileID: 946653454} + - 81: {fileID: 946653452} + - 114: {fileID: 946653455} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &946653450 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!20 &946653451 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 100 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 +--- !u!81 &946653452 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 +--- !u!92 &946653453 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 +--- !u!124 &946653454 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 +--- !u!114 &946653455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4c0d0fb0c102fa4abc523a9f5b5abc5, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 1957987921} + distance: 5 + height: 3 + damping: 5 + smoothRotation: 1 + followBehind: 1 + rotationDamping: 10 +--- !u!1 &1162572551 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1162572552} + - 33: {fileID: 1162572554} + - 65: {fileID: 1162572555} + - 23: {fileID: 1162572553} + - 54: {fileID: 1162572556} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1162572552 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1162572551} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -.75, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 10 +--- !u!23 &1162572553 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1162572551} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1162572554 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1162572551} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &1162572555 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1162572551} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &1162572556 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1162572551} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1181226493 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1181226494} + - 33: {fileID: 1181226496} + - 64: {fileID: 1181226497} + - 23: {fileID: 1181226495} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1181226494 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -4.37113883e-08} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 18 +--- !u!23 &1181226495 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: 397f27ffc66da944285bff5e0bb094d2, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1181226496 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &1181226497 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 0 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1365552163 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1365552164} + - 33: {fileID: 1365552166} + - 65: {fileID: 1365552167} + - 23: {fileID: 1365552165} + - 54: {fileID: 1365552168} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1365552164 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365552163} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 11 +--- !u!23 &1365552165 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365552163} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1365552166 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365552163} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &1365552167 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365552163} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &1365552168 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1365552163} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1423913760 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1423913761} + - 33: {fileID: 1423913763} + - 65: {fileID: 1423913764} + - 23: {fileID: 1423913762} + - 54: {fileID: 1423913765} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1423913761 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423913760} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: .75, y: 3.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 12 +--- !u!23 &1423913762 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423913760} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1423913763 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423913760} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &1423913764 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423913760} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &1423913765 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423913760} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1426988947 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1426988948} + - 33: {fileID: 1426988950} + - 65: {fileID: 1426988951} + - 23: {fileID: 1426988949} + - 54: {fileID: 1426988952} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1426988948 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426988947} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.25, y: 1.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 13 +--- !u!23 &1426988949 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426988947} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1426988950 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426988947} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &1426988951 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426988947} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &1426988952 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426988947} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1543946033 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1543946034} + - 33: {fileID: 1543946036} + - 65: {fileID: 1543946037} + - 23: {fileID: 1543946035} + - 54: {fileID: 1543946038} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1543946034 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1543946033} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: .5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 14 +--- !u!23 &1543946035 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1543946033} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1543946036 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1543946033} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &1543946037 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1543946033} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &1543946038 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1543946033} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &1957987920 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1957987921} + - 114: {fileID: 1957987922} + - 65: {fileID: 1957987923} + - 54: {fileID: 1957987924} + m_Layer: 0 + m_Name: Companion cube parent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1957987921 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1957987920} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: .0145744681, y: 1.0233072, z: -6.49147415} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 41670800} + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!114 &1957987922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1957987920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af1a4ffa8139e0d4dacc81af24067546, type: 3} + m_Name: + m_EditorClassIdentifier: + HorizonLock: 1 +--- !u!65 &1957987923 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1957987920} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.20000005, y: 1.20000005, z: 1.20000005} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &1957987924 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1957987920} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &2051819513 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2051819514} + - 33: {fileID: 2051819516} + - 65: {fileID: 2051819517} + - 23: {fileID: 2051819515} + - 54: {fileID: 2051819518} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2051819514 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051819513} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5, y: .5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 15 +--- !u!23 &2051819515 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051819513} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2051819516 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051819513} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &2051819517 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051819513} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &2051819518 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051819513} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &2093847318 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2093847319} + - 33: {fileID: 2093847321} + - 65: {fileID: 2093847322} + - 23: {fileID: 2093847320} + - 54: {fileID: 2093847323} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2093847319 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093847318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: 2.5, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 16 +--- !u!23 &2093847320 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093847318} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2093847321 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093847318} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &2093847322 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093847318} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &2093847323 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2093847318} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around/Fly around.unity.meta b/Assets/SpaceNavigator/Runtime samples/- Fly around/Fly around.unity.meta new file mode 100644 index 0000000..d4fa813 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around/Fly around.unity.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9e74fad5a3cf3a741ae10d165e5ca757 diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts.meta b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts.meta new file mode 100644 index 0000000..81db9fd --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2e74c50b4db63374a8f4c2081e181546 diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/FlyAround.cs b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/FlyAround.cs new file mode 100644 index 0000000..c7da42a --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/FlyAround.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using SpaceNavigatorDriver; + +public class FlyAround : MonoBehaviour { + public bool HorizonLock = true; + + public void Update () { + transform.Translate(SpaceNavigator.Translation, Space.Self); + + if (HorizonLock) { + // This method keeps the horizon horizontal at all times. + // Perform azimuth in world coordinates. + transform.Rotate(Vector3.up, SpaceNavigator.Rotation.Yaw() * Mathf.Rad2Deg, Space.World); + // Perform pitch in local coordinates. + transform.Rotate(Vector3.right, SpaceNavigator.Rotation.Pitch() * Mathf.Rad2Deg, Space.Self); + } + else { + transform.Rotate(SpaceNavigator.Rotation.eulerAngles, Space.Self); + } + } +} diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/FlyAround.cs.meta b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/FlyAround.cs.meta new file mode 100644 index 0000000..ceb1de6 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/FlyAround.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: af1a4ffa8139e0d4dacc81af24067546 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/SmoothFollow2.cs b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/SmoothFollow2.cs new file mode 100644 index 0000000..879945d --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/SmoothFollow2.cs @@ -0,0 +1,26 @@ +using UnityEngine; + +public class SmoothFollow2 : MonoBehaviour { + public Transform target; + public float distance = 3.0f; + public float height = 3.0f; + public float damping = 5.0f; + public bool smoothRotation = true; + public bool followBehind = true; + public float rotationDamping = 10.0f; + + public void Update() { + Vector3 wantedPosition; + if (followBehind) + wantedPosition = target.TransformPoint(0, height, -distance); + else + wantedPosition = target.TransformPoint(0, height, distance); + + transform.position = Vector3.Lerp(transform.position, wantedPosition, Time.deltaTime * damping); + + if (smoothRotation) { + Quaternion wantedRotation = Quaternion.LookRotation(target.position - transform.position, target.up); + transform.rotation = Quaternion.Slerp(transform.rotation, wantedRotation, Time.deltaTime * rotationDamping); + } else transform.LookAt(target, target.up); + } +} diff --git a/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/SmoothFollow2.cs.meta b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/SmoothFollow2.cs.meta new file mode 100644 index 0000000..f0cd137 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Fly around/Scripts/SmoothFollow2.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a4c0d0fb0c102fa4abc523a9f5b5abc5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve.meta new file mode 100644 index 0000000..9fbd157 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5783ecbcdd260aa4d85323de79026490 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio.meta new file mode 100644 index 0000000..ad8e29a --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6fa12e093a99218408fcd8016a97b778 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric hum.wav b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric hum.wav new file mode 100644 index 0000000..9ad5db8 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric hum.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:158254677211d26bb8ef7bd085d123ca874e4f95bc8b63da18f773269be4f429 +size 183352 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric hum.wav.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric hum.wav.meta new file mode 100644 index 0000000..b31583e --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric hum.wav.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0bc6cc9bb0569f4ab30e31450e30c68 +AudioImporter: + serializedVersion: 4 + format: -1 + quality: -1 + stream: 1 + 3D: 1 + forceToMono: 0 + useHardware: 0 + loopable: 0 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric zap.wav b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric zap.wav new file mode 100644 index 0000000..a610840 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric zap.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7be4d3c80ca40ec13e2c70057dd9a48e764d1f8cdc3418c8497299a983c30227 +size 204412 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric zap.wav.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric zap.wav.meta new file mode 100644 index 0000000..d7c9210 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Audio/Electric zap.wav.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8ebc07473df9bb4d8b58c070faa0797 +AudioImporter: + serializedVersion: 4 + format: -1 + quality: -1 + stream: 1 + 3D: 1 + forceToMono: 0 + useHardware: 0 + loopable: 0 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Folow curve.unity b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Folow curve.unity new file mode 100644 index 0000000..94de76c --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Folow curve.unity @@ -0,0 +1,2581 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_Fog: 0 + m_FogColor: {r: .815686285, g: .823529422, b: .792156875, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientLight: {r: .313432813, g: .313432813, b: .313432813, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: .5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 0} + m_ObjectHideFlags: 0 +--- !u!127 &3 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + m_LightProbes: {fileID: 0} + m_Lightmaps: [] + m_LightmapsMode: 1 + m_BakedColorSpace: 0 + m_UseDualLightmapsInForward: 0 + m_LightmapEditorSettings: + m_Resolution: 50 + m_LastUsedResolution: 0 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_BounceBoost: 1 + m_BounceIntensity: 1 + m_SkyLightColor: {r: .860000014, g: .930000007, b: 1, a: 1} + m_SkyLightIntensity: 0 + m_Quality: 0 + m_Bounces: 1 + m_FinalGatherRays: 1000 + m_FinalGatherContrastThreshold: .0500000007 + m_FinalGatherGradientThreshold: 0 + m_FinalGatherInterpolationPoints: 15 + m_AOAmount: 0 + m_AOMaxDistance: .100000001 + m_AOContrast: 1 + m_LODSurfaceMappingDistance: 1 + m_Padding: 0 + m_TextureCompression: 0 + m_LockAtlas: 0 +--- !u!196 &5 +NavMeshSettings: + m_ObjectHideFlags: 0 + m_BuildSettings: + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + widthInaccuracy: 16.666666 + heightInaccuracy: 10 + m_NavMesh: {fileID: 0} +--- !u!1 &121089963 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100008, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 121089964} + - 33: {fileID: 121089966} + - 23: {fileID: 121089965} + - 64: {fileID: 121089967} + m_Layer: 0 + m_Name: Tube08 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &121089964 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400008, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 121089963} + m_LocalRotation: {x: .976296008, y: .216439649, z: -7.84387382e-08, w: -3.76783653e-08} + m_LocalPosition: {x: 4.99792242, y: 2.00497031, z: -.200000554} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 7 +--- !u!23 &121089965 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300006, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 121089963} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &121089966 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300006, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 121089963} + m_Mesh: {fileID: 4300016, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &121089967 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 121089963} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300016, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &166960668 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 166960672} + - 33: {fileID: 166960671} + - 136: {fileID: 166960670} + - 23: {fileID: 166960669} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &166960669 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 166960668} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &166960670 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 166960668} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &166960671 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 166960668} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &166960672 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 166960668} + m_LocalRotation: {x: 1.2488934e-07, y: -2.96562011e-08, z: .889946103, w: .456065744} + m_LocalPosition: {x: -.201618999, y: .288975209, z: -5.28584962e-08} + m_LocalScale: {x: .112972975, y: .112973012, z: .112973012} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 2 +--- !u!1 &239442933 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100004, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 239442934} + - 33: {fileID: 239442936} + - 23: {fileID: 239442935} + - 64: {fileID: 239442937} + m_Layer: 0 + m_Name: Tube09 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &239442934 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400004, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 239442933} + m_LocalRotation: {x: .707106829, y: .707106829, z: -6.88393911e-08, w: -6.88393911e-08} + m_LocalPosition: {x: 6.00026369, y: 1.00690496, z: -.200000584} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 8 +--- !u!23 &239442935 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300002, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 239442933} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &239442936 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300002, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 239442933} + m_Mesh: {fileID: 4300018, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &239442937 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 239442933} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300018, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &242931215 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100016, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 242931216} + - 33: {fileID: 242931218} + - 23: {fileID: 242931217} + - 64: {fileID: 242931219} + m_Layer: 0 + m_Name: Tube06 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &242931216 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400016, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 242931215} + m_LocalRotation: {x: .843391478, y: .537299573, z: -7.54173399e-08, w: -5.89978981e-08} + m_LocalPosition: {x: 4.00040436, y: 4.00051928, z: -.20000045} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 5 +--- !u!23 &242931217 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300014, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 242931215} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &242931218 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300014, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 242931215} + m_Mesh: {fileID: 4300012, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &242931219 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 242931215} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300012, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &253356626 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 253356627} + - 114: {fileID: 253356631} + - 54: {fileID: 253356628} + - 138: {fileID: 253356630} + - 82: {fileID: 253356629} + m_Layer: 0 + m_Name: game_controller + m_TagString: Torus controller + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &253356627 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 253356626} + m_LocalRotation: {x: -.70707351, y: -.00686130673, z: -.00686130673, w: .70707351} + m_LocalPosition: {x: -.620797455, y: .347695708, z: -.371252179} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 +--- !u!54 &253356628 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 253356626} + serializedVersion: 2 + m_Mass: 1.00000001e-07 + m_Drag: 0 + m_AngularDrag: 0 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!82 &253356629 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 253356626} + m_Enabled: 1 + serializedVersion: 3 + m_audioClip: {fileID: 8300000, guid: e0bc6cc9bb0569f4ab30e31450e30c68, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 +--- !u!138 &253356630 +FixedJoint: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 253356626} + m_ConnectedBody: {fileID: 1251993242} + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 +--- !u!114 &253356631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 253356626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 935a72c6c991b1e4e9c1d48dd7ccb016, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &263763835 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 263763836} + - 33: {fileID: 263763839} + - 136: {fileID: 263763838} + - 23: {fileID: 263763837} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &263763836 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 263763835} + m_LocalRotation: {x: 1.04666491e-07, y: 7.43085664e-08, z: .244213745, w: .969721437} + m_LocalPosition: {x: .310973257, y: .162756011, z: -1.50683217e-08} + m_LocalScale: {x: .112972982, y: .112973005, z: .112972982} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 6 +--- !u!23 &263763837 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 263763835} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &263763838 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 263763835} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &263763839 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 263763835} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &307457367 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 307457368} + - 108: {fileID: 307457369} + m_Layer: 0 + m_Name: light_sun + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &307457368 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 307457367} + m_LocalRotation: {x: .213222146, y: -.783332109, z: .452256948, w: .369311363} + m_LocalPosition: {x: 0, y: 2.53462076, z: 1.33412933} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 +--- !u!108 &307457369 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 307457367} + m_Enabled: 1 + serializedVersion: 3 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: .5 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_Strength: 1 + m_Bias: .0500000007 + m_Softness: 4 + m_SoftnessFade: 1 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_ActuallyLightmapped: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_ShadowSamples: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_IndirectIntensity: 1 + m_AreaSize: {x: 1, y: 1} +--- !u!1 &372430546 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 372430547} + - 33: {fileID: 372430549} + - 23: {fileID: 372430548} + - 64: {fileID: 372430550} + m_Layer: 0 + m_Name: Tube04 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &372430547 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 372430546} + m_LocalRotation: {x: .46174863, y: .887010872, z: -5.42472911e-08, w: -7.70592976e-08} + m_LocalPosition: {x: 2.00057364, y: 1.99971712, z: -.200000554} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 3 +--- !u!23 &372430548 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300004, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 372430546} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &372430549 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300004, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 372430546} + m_Mesh: {fileID: 4300008, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &372430550 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 372430546} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300008, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &408882651 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 408882652} + - 33: {fileID: 408882655} + - 136: {fileID: 408882654} + - 23: {fileID: 408882653} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &408882652 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 408882651} + m_LocalRotation: {x: 9.68060263e-08, y: -8.42936956e-08, z: .999952912, w: -.00970557798} + m_LocalPosition: {x: -.346559405, y: .00445622904, z: 7.95245825e-09} + m_LocalScale: {x: .112973027, y: .112973116, z: .112973116} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 0 +--- !u!23 &408882653 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 408882651} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &408882654 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 408882651} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &408882655 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 408882651} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &447663086 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 447663087} + - 33: {fileID: 447663090} + - 136: {fileID: 447663089} + - 23: {fileID: 447663088} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &447663087 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 447663086} + m_LocalRotation: {x: -6.7868136e-08, y: -4.22145767e-08, z: .911138177, w: -.412100971} + m_LocalPosition: {x: -.224416032, y: -.268207937, z: -1.037444e-08} + m_LocalScale: {x: .112972967, y: .112972982, z: .112972997} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 8 +--- !u!23 &447663088 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 447663086} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &447663089 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 447663086} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &447663090 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 447663086} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &448310215 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 448310216} + - 33: {fileID: 448310219} + - 136: {fileID: 448310218} + - 23: {fileID: 448310217} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &448310216 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448310215} + m_LocalRotation: {x: -1.15324276e-07, y: 5.63662041e-08, z: -.968392372, w: -.249432087} + m_LocalPosition: {x: -.304950505, y: .164349824, z: -1.48090171e-08} + m_LocalScale: {x: .112972938, y: .112972997, z: .112972997} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 1 +--- !u!23 &448310217 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448310215} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &448310218 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448310215} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &448310219 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 448310215} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &457349858 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 457349859} + - 33: {fileID: 457349862} + - 136: {fileID: 457349861} + - 23: {fileID: 457349860} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &457349859 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 457349858} + m_LocalRotation: {x: 1.16172792e-07, y: 5.45959615e-08, z: .412103325, w: .911137164} + m_LocalPosition: {x: .224414989, y: .268205971, z: -4.79453277e-08} + m_LocalScale: {x: .112972975, y: .112972967, z: .112972967} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 5 +--- !u!23 &457349860 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 457349858} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &457349861 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 457349858} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &457349862 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 457349858} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &484451068 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 484451069} + - 132: {fileID: 484451070} + m_Layer: 0 + m_Name: help_text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &484451069 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484451068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: .5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 +--- !u!132 &484451070 +GUIText: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 484451068} + m_Enabled: 1 + serializedVersion: 3 + m_Text: Press space to toggle between controlling the ring and orbiting the camera + m_Anchor: 1 + m_Alignment: 0 + m_PixelOffset: {x: 0, y: 16} + m_LineSpacing: 1 + m_TabSize: 4 + m_Font: {fileID: 0} + m_Material: {fileID: 2100000, guid: 6113a5a1cc1aa91419e9b4608167c078, type: 2} + m_FontSize: 0 + m_FontStyle: 0 + m_Color: + serializedVersion: 2 + rgba: 4294967295 + m_PixelCorrect: 1 + m_RichText: 1 +--- !u!1 &578513295 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 578513296} + - 33: {fileID: 578513299} + - 136: {fileID: 578513298} + - 23: {fileID: 578513297} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &578513296 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 578513295} + m_LocalRotation: {x: 1.77910646e-08, y: 4.91004251e-08, z: -.00970335491, w: -.999952972} + m_LocalPosition: {x: .346559197, y: -.00445777224, z: -4.39756925e-10} + m_LocalScale: {x: .112972997, y: .112973012, z: .112973012} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 13 +--- !u!23 &578513297 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 578513295} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &578513298 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 578513295} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &578513299 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 578513295} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &629862888 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100020, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 629862889} + - 33: {fileID: 629862891} + - 23: {fileID: 629862890} + - 64: {fileID: 629862892} + m_Layer: 0 + m_Name: Tube03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &629862889 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400020, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 629862888} + m_LocalRotation: {x: .537299633, y: .843391418, z: -5.89978981e-08, w: -7.54173399e-08} + m_LocalPosition: {x: .999846697, y: 2.00001073, z: -.200000554} + m_LocalScale: {x: 1.00000012, y: 1, z: 1.00000012} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 2 +--- !u!23 &629862890 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300018, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 629862888} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &629862891 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300018, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 629862888} + m_Mesh: {fileID: 4300006, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &629862892 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 629862888} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300006, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &653856175 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 653856176} + - 33: {fileID: 653856179} + - 136: {fileID: 653856178} + - 23: {fileID: 653856177} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &653856176 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653856175} + m_LocalRotation: {x: -2.61818878e-09, y: -6.11993016e-08, z: .456068337, w: -.889944792} + m_LocalPosition: {x: .201617271, y: -.288979292, z: -1.15162857e-08} + m_LocalScale: {x: .112972997, y: .11297299, z: .112973012} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 11 +--- !u!23 &653856177 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653856175} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &653856178 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653856175} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &653856179 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 653856175} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &742551046 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100018, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 742551047} + - 33: {fileID: 742551049} + - 23: {fileID: 742551048} + - 64: {fileID: 742551050} + m_Layer: 0 + m_Name: Tube05 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &742551047 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400018, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 742551046} + m_LocalRotation: {x: .5, y: .866025388, z: -5.66765372e-08, w: -7.63109469e-08} + m_LocalPosition: {x: 3.00136375, y: 4.00114202, z: -.20000045} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 4 +--- !u!23 &742551048 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300016, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 742551046} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &742551049 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300016, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 742551046} + m_Mesh: {fileID: 4300010, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &742551050 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 742551046} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300010, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1001 &778116406 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_LocalPosition.x + value: -.61472106 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_LocalPosition.y + value: -.0271426439 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_LocalPosition.z + value: -.568260312 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_LocalRotation.x + value: -1.71129137e-15 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_LocalRotation.z + value: -2.18556941e-08 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_LocalRotation.w + value: -7.54979013e-08 + objectReference: {fileID: 0} + - target: {fileID: 100000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + propertyPath: m_Name + value: game_curve + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_RootGameObject: {fileID: 989892839} + m_IsPrefabParent: 0 + m_IsExploded: 1 +--- !u!1 &946653449 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 946653450} + - 20: {fileID: 946653451} + - 92: {fileID: 946653453} + - 124: {fileID: 946653454} + - 81: {fileID: 946653452} + m_Layer: 0 + m_Name: game_camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &946653450 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_LocalRotation: {x: .000869369193, y: -.995211959, z: .0952078402, w: .0220891051} + m_LocalPosition: {x: -.528036237, y: .758313894, z: .823754311} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!20 &946653451 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 100 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 +--- !u!81 &946653452 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 +--- !u!92 &946653453 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 +--- !u!124 &946653454 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946653449} + m_Enabled: 1 +--- !u!1 &989892839 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 989892840} + - 111: {fileID: 989892843} + - 64: {fileID: 989892844} + m_Layer: 0 + m_Name: game_curve + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &989892840 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 989892839} + m_LocalRotation: {x: -1.71129137e-15, y: 1, z: -2.18556941e-08, w: -7.54979013e-08} + m_LocalPosition: {x: -.61472106, y: -.0271426439, z: -.568260312} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1108734468} + - {fileID: 2098762233} + - {fileID: 629862889} + - {fileID: 372430547} + - {fileID: 742551047} + - {fileID: 242931216} + - {fileID: 2054766163} + - {fileID: 121089964} + - {fileID: 239442934} + - {fileID: 1827868819} + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!111 &989892843 +Animation: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11100000, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 989892839} + m_Enabled: 1 + serializedVersion: 3 + m_Animation: {fileID: 0} + m_Animations: [] + m_WrapMode: 0 + m_PlayAutomatically: 1 + m_AnimatePhysics: 0 + m_CullingType: 0 +--- !u!64 &989892844 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 989892839} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 0 + m_Mesh: {fileID: 0} +--- !u!1 &1108734467 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100010, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1108734468} + - 33: {fileID: 1108734470} + - 23: {fileID: 1108734469} + - 64: {fileID: 1108734471} + m_Layer: 0 + m_Name: Tube01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1108734468 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400010, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 1108734467} + m_LocalRotation: {x: -1.71129137e-15, y: 1, z: -2.18556941e-08, w: -7.54979013e-08} + m_LocalPosition: {x: -.005633316, y: .135548681, z: -.200000554} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 0 +--- !u!23 &1108734469 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300008, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 1108734467} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1108734470 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300008, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 1108734467} + m_Mesh: {fileID: 4300002, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &1108734471 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1108734467} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300002, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &1120107975 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1120107976} + - 131: {fileID: 1120107977} + m_Layer: 0 + m_Name: help_text_background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1120107976 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1120107975} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: .5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 0, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 +--- !u!131 &1120107977 +GUITexture: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1120107975} + m_Enabled: 1 + m_Texture: {fileID: 2800000, guid: 4ae8cf895dbf1364dbfb4148acb84484, type: 3} + m_Color: {r: 0, g: 0, b: 0, a: .501960814} + m_PixelInset: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 16 + m_LeftBorder: 0 + m_RightBorder: 0 + m_TopBorder: 0 + m_BottomBorder: 0 +--- !u!1 &1181226493 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1181226494} + - 33: {fileID: 1181226496} + - 64: {fileID: 1181226497} + - 23: {fileID: 1181226495} + m_Layer: 0 + m_Name: env_plane + m_TagString: Floor + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1181226494 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &1181226495 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: 397f27ffc66da944285bff5e0bb094d2, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1181226496 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &1181226497 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1181226493} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 0 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1251993237 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + m_PrefabInternal: {fileID: 1377142337} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1251993238} + - 33: {fileID: 1251993240} + - 23: {fileID: 1251993239} + - 54: {fileID: 1251993242} + - 82: {fileID: 1251993243} + - 114: {fileID: 1251993244} + m_Layer: 0 + m_Name: game_torus + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1251993238 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + m_PrefabInternal: {fileID: 1377142337} + m_GameObject: {fileID: 1251993237} + m_LocalRotation: {x: -.707073569, y: -.0068612569, z: -.00686131697, w: .70707351} + m_LocalPosition: {x: -.620797455, y: .347695708, z: -.371252179} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 408882652} + - {fileID: 448310216} + - {fileID: 166960672} + - {fileID: 1792264453} + - {fileID: 1958888582} + - {fileID: 457349859} + - {fileID: 263763836} + - {fileID: 2109870948} + - {fileID: 447663087} + - {fileID: 2073256351} + - {fileID: 1335787195} + - {fileID: 653856176} + - {fileID: 1385593758} + - {fileID: 578513296} + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!23 &1251993239 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300000, guid: c957533afa9aa1549b576a76f3c9a6f0, + type: 3} + m_PrefabInternal: {fileID: 1377142337} + m_GameObject: {fileID: 1251993237} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1251993240 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300000, guid: c957533afa9aa1549b576a76f3c9a6f0, + type: 3} + m_PrefabInternal: {fileID: 1377142337} + m_GameObject: {fileID: 1251993237} + m_Mesh: {fileID: 4300000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} +--- !u!54 &1251993242 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251993237} + serializedVersion: 2 + m_Mass: 1.00000001e-07 + m_Drag: 0 + m_AngularDrag: 0 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!82 &1251993243 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251993237} + m_Enabled: 1 + serializedVersion: 3 + m_audioClip: {fileID: 8300000, guid: a8ebc07473df9bb4d8b58c070faa0797, type: 3} + m_PlayOnAwake: 0 + m_Volume: .5 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 +--- !u!114 &1251993244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251993237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 336788f71e406ce4fafe783a1bbb0091, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1335787194 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1335787195} + - 33: {fileID: 1335787198} + - 136: {fileID: 1335787197} + - 23: {fileID: 1335787196} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1335787195 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335787194} + m_LocalRotation: {x: -2.06030148e-09, y: 5.38906653e-09, z: -.634709835, w: .772750616} + m_LocalPosition: {x: .0654990077, y: -.348617047, z: -1.375731e-08} + m_LocalScale: {x: .11297299, y: .112972982, z: .112972982} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 10 +--- !u!23 &1335787196 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335787194} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &1335787197 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335787194} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1335787198 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335787194} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1377142337 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_LocalPosition.x + value: -.620797455 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_LocalPosition.y + value: .347695708 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_LocalPosition.z + value: -.371252179 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_LocalRotation.x + value: -.707073569 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_LocalRotation.y + value: -.0068612569 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_LocalRotation.z + value: -.00686131697 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_LocalRotation.w + value: .70707351 + objectReference: {fileID: 0} + - target: {fileID: 100000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_Name + value: game_torus + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 11100000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + m_ParentPrefab: {fileID: 100100000, guid: c957533afa9aa1549b576a76f3c9a6f0, type: 3} + m_RootGameObject: {fileID: 1251993237} + m_IsPrefabParent: 0 + m_IsExploded: 1 +--- !u!1 &1385593757 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1385593758} + - 33: {fileID: 1385593761} + - 136: {fileID: 1385593760} + - 23: {fileID: 1385593759} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1385593758 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1385593757} + m_LocalRotation: {x: -2.15588454e-08, y: 7.46358531e-09, z: -.249434426, w: .968391716} + m_LocalPosition: {x: .304949284, y: -.164352983, z: -6.6949446e-09} + m_LocalScale: {x: .112972997, y: .112973019, z: .112973027} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 12 +--- !u!23 &1385593759 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1385593757} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &1385593760 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1385593757} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1385593761 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1385593757} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1792264452 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1792264453} + - 33: {fileID: 1792264456} + - 136: {fileID: 1792264455} + - 23: {fileID: 1792264454} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1792264453 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792264452} + m_LocalRotation: {x: -1.28338769e-07, y: 2.44904741e-09, z: -.772751987, w: -.634708166} + m_LocalPosition: {x: -.0655006319, y: .348613769, z: -4.37926531e-08} + m_LocalScale: {x: .112972982, y: .112972975, z: .112972997} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 3 +--- !u!23 &1792264454 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792264452} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &1792264455 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792264452} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1792264456 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792264452} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1827868818 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100012, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1827868819} + - 33: {fileID: 1827868821} + - 23: {fileID: 1827868820} + - 64: {fileID: 1827868822} + m_Layer: 0 + m_Name: Tube10 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1827868819 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400012, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 1827868818} + m_LocalRotation: {x: .30070582, y: .953716993, z: -4.35468053e-08, w: -7.85757663e-08} + m_LocalPosition: {x: 7.00003815, y: 2.00070739, z: -.200000554} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 9 +--- !u!23 &1827868820 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300010, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 1827868818} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1827868821 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300010, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 1827868818} + m_Mesh: {fileID: 4300020, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &1827868822 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1827868818} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300020, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &1958888581 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1958888582} + - 33: {fileID: 1958888585} + - 136: {fileID: 1958888584} + - 23: {fileID: 1958888583} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1958888582 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1958888581} + m_LocalRotation: {x: -1.25624325e-07, y: -2.63697579e-08, z: -.610886276, w: -.791718364} + m_LocalPosition: {x: .0926518515, y: .340507001, z: -4.53936231e-08} + m_LocalScale: {x: .112973005, y: .112972982, z: .112972967} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 4 +--- !u!23 &1958888583 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1958888581} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &1958888584 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1958888581} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1958888585 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1958888581} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2054766162 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2054766163} + - 33: {fileID: 2054766165} + - 23: {fileID: 2054766164} + - 64: {fileID: 2054766166} + m_Layer: 0 + m_Name: Tube07 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2054766163 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 2054766162} + m_LocalRotation: {x: .976296008, y: .216439649, z: -7.84387382e-08, w: -3.76783653e-08} + m_LocalPosition: {x: 5.00032043, y: 2.99915957, z: -.20000051} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 6 +--- !u!23 &2054766164 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300000, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 2054766162} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2054766165 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300000, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 2054766162} + m_Mesh: {fileID: 4300014, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &2054766166 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2054766162} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300014, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &2073256350 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2073256351} + - 33: {fileID: 2073256354} + - 136: {fileID: 2073256353} + - 23: {fileID: 2073256352} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2073256351 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2073256350} + m_LocalRotation: {x: -9.65512004e-10, y: 2.13682156e-08, z: -.791720033, w: .61088419} + m_LocalPosition: {x: -.0926531106, y: -.340509564, z: -1.33178348e-08} + m_LocalScale: {x: .112972967, y: .112972975, z: .112972982} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 9 +--- !u!23 &2073256352 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2073256350} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &2073256353 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2073256350} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2073256354 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2073256350} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2098762232 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100014, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2098762233} + - 33: {fileID: 2098762235} + - 23: {fileID: 2098762234} + - 64: {fileID: 2098762236} + m_Layer: 0 + m_Name: Tube02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2098762233 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400014, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 2098762232} + m_LocalRotation: {x: .173648179, y: .984807789, z: -3.46337323e-08, w: -7.81461296e-08} + m_LocalPosition: {x: .000417518604, y: .998978376, z: -.200000584} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 989892840} + m_RootOrder: 1 +--- !u!23 &2098762234 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300012, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 2098762232} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 2100000, guid: e7a1d57de0f8cdb43b03ef4401c0b6b0, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &2098762235 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300012, guid: f5d89f21ea7f3c94887ed48e340759ad, + type: 3} + m_PrefabInternal: {fileID: 778116406} + m_GameObject: {fileID: 2098762232} + m_Mesh: {fileID: 4300004, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!64 &2098762236 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2098762232} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_SmoothSphereCollisions: 0 + m_Convex: 1 + m_Mesh: {fileID: 4300004, guid: f5d89f21ea7f3c94887ed48e340759ad, type: 3} +--- !u!1 &2109870947 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2109870948} + - 33: {fileID: 2109870951} + - 136: {fileID: 2109870950} + - 23: {fileID: 2109870949} + m_Layer: 0 + m_Name: Capsule collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2109870948 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2109870947} + m_LocalRotation: {x: 2.18654304e-08, y: -1.23549047e-08, z: .969721973, w: -.244211718} + m_LocalPosition: {x: -.310973763, y: -.16275616, z: -6.16210905e-09} + m_LocalScale: {x: .112973027, y: .112973012, z: .112973012} + m_Children: [] + m_Father: {fileID: 1251993238} + m_RootOrder: 7 +--- !u!23 &2109870949 +Renderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2109870947} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightmapIndex: 255 + m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 0 + m_LightProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!136 &2109870950 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2109870947} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2109870951 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2109870947} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2140864778 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2140864779} + - 114: {fileID: 2140864780} + m_Layer: 0 + m_Name: game_lookat_target + m_TagString: Torus look at target + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2140864779 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2140864778} + m_LocalRotation: {x: -.70707351, y: -.00686130673, z: -.00686130673, w: .70707351} + m_LocalPosition: {x: -.620797455, y: .347695708, z: -.371252179} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!114 &2140864780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2140864778} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4c0d0fb0c102fa4abc523a9f5b5abc5, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 253356627} + distance: .00999999978 + height: .00999999978 + damping: 5 + smoothRotation: 1 + followBehind: 1 + rotationDamping: 10 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Folow curve.unity.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Folow curve.unity.meta new file mode 100644 index 0000000..0267b33 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Folow curve.unity.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1757bb3586df3234889e06ed72565379 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models.meta new file mode 100644 index 0000000..9cb6cc8 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bab88958dd8eed445be8e466b927ed87 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Curve.FBX b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Curve.FBX new file mode 100644 index 0000000..3a84fa1 Binary files /dev/null and b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Curve.FBX differ diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Curve.FBX.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Curve.FBX.meta new file mode 100644 index 0000000..94897a7 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Curve.FBX.meta @@ -0,0 +1,189 @@ +fileFormatVersion: 2 +guid: f5d89f21ea7f3c94887ed48e340759ad +ModelImporter: + fileIDToRecycleName: + 4300000: Line001 + 4300002: Tube01 + 4300004: Tube02 + 4300006: Tube03 + 4300008: Tube04 + 4300010: Tube05 + 4300012: Tube06 + 4300014: Tube07 + 4300016: Tube08 + 4300018: Tube09 + 4300020: Tube10 + serializedVersion: 10 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + generateAnimations: 3 + bakeSimulation: 0 + splitAnimations: 1 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + clipAnimations: [] + meshes: + lODScreenPercentages: [] + globalScale: .00999999978 + meshCompression: 0 + addColliders: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMesh: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + textMetaNamesToFileIDs: + //RootNode: + data: + first: 1 + second: a0860100 + data: + first: 4 + second: 801a0600 + data: + first: 111 + second: 605fa900 + Tube01: + data: + first: 1 + second: aa860100 + data: + first: 4 + second: 8a1a0600 + data: + first: 23 + second: 68182300 + data: + first: 33 + second: a85a3200 + Tube02: + data: + first: 1 + second: ae860100 + data: + first: 4 + second: 8e1a0600 + data: + first: 23 + second: 6c182300 + data: + first: 33 + second: ac5a3200 + Tube03: + data: + first: 1 + second: b4860100 + data: + first: 4 + second: 941a0600 + data: + first: 23 + second: 72182300 + data: + first: 33 + second: b25a3200 + Tube04: + data: + first: 1 + second: a6860100 + data: + first: 4 + second: 861a0600 + data: + first: 23 + second: 64182300 + data: + first: 33 + second: a45a3200 + Tube05: + data: + first: 1 + second: b2860100 + data: + first: 4 + second: 921a0600 + data: + first: 23 + second: 70182300 + data: + first: 33 + second: b05a3200 + Tube06: + data: + first: 1 + second: b0860100 + data: + first: 4 + second: 901a0600 + data: + first: 23 + second: 6e182300 + data: + first: 33 + second: ae5a3200 + Tube07: + data: + first: 1 + second: a2860100 + data: + first: 4 + second: 821a0600 + data: + first: 23 + second: 60182300 + data: + first: 33 + second: a05a3200 + Tube08: + data: + first: 1 + second: a8860100 + data: + first: 4 + second: 881a0600 + data: + first: 23 + second: 66182300 + data: + first: 33 + second: a65a3200 + Tube09: + data: + first: 1 + second: a4860100 + data: + first: 4 + second: 841a0600 + data: + first: 23 + second: 62182300 + data: + first: 33 + second: a25a3200 + Tube10: + data: + first: 1 + second: ac860100 + data: + first: 4 + second: 8c1a0600 + data: + first: 23 + second: 6a182300 + data: + first: 33 + second: aa5a3200 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials.meta new file mode 100644 index 0000000..1262cec --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c0b724700285bca46b471d4261e7f1f5 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials/No Name.mat b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials/No Name.mat new file mode 100644 index 0000000..8bf6a81 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials/No Name.mat @@ -0,0 +1,26 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: No Name + m_Shader: {fileID: 7, guid: 0000000000000000e000000000000000, type: 0} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials/No Name.mat.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials/No Name.mat.meta new file mode 100644 index 0000000..ea4d775 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Materials/No Name.mat.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e7a1d57de0f8cdb43b03ef4401c0b6b0 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Torus.FBX b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Torus.FBX new file mode 100644 index 0000000..09d1655 Binary files /dev/null and b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Torus.FBX differ diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Torus.FBX.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Torus.FBX.meta new file mode 100644 index 0000000..e22a725 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Models/Torus.FBX.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: c957533afa9aa1549b576a76f3c9a6f0 +ModelImporter: + fileIDToRecycleName: + 4300000: Torus easy + serializedVersion: 10 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + generateAnimations: 3 + bakeSimulation: 0 + splitAnimations: 1 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + clipAnimations: [] + meshes: + lODScreenPercentages: [] + globalScale: .00999999978 + meshCompression: 0 + addColliders: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMesh: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + textMetaNamesToFileIDs: + //RootNode: + data: + first: 1 + second: a0860100 + data: + first: 4 + second: 801a0600 + data: + first: 23 + second: 60182300 + data: + first: 33 + second: a05a3200 + data: + first: 111 + second: 605fa900 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts.meta new file mode 100644 index 0000000..585ae73 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 71b91b636b3223245997a1ee2d0f2e63 diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/Torus.cs b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/Torus.cs new file mode 100644 index 0000000..f6ef8d7 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/Torus.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +public class Torus : MonoBehaviour { + private Rigidbody _controller; + private List _colliders; + private Vector3 _startPos; + + public void Awake() { + _controller = GameObject.FindGameObjectWithTag("Torus controller").GetComponent(); + _colliders = GetComponentsInChildren().ToList(); + _startPos = transform.position; + } + + public void OnCollisionEnter(Collision collision) { + GetComponent().Play(); + + Vector3 resetPos = collision.collider.tag == "Floor" ? _startPos : collision.collider.transform.position; + + + // Move the torus. + GetComponent().isKinematic = true; + _colliders.ForEach(c => c.isTrigger = true); + transform.position = resetPos; + GetComponent().isKinematic = false; + _colliders.ForEach(c => c.isTrigger = false); + + // Move the controller. + Vector3 oldPos = _controller.transform.position; + _controller.transform.position = resetPos; + Vector3 delta = _controller.transform.position - oldPos; + + // Move the camera. + Camera.main.transform.Translate(delta, Space.World); + } +} diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/Torus.cs.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/Torus.cs.meta new file mode 100644 index 0000000..31cab6d --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/Torus.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 336788f71e406ce4fafe783a1bbb0091 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/TorusController.cs b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/TorusController.cs new file mode 100644 index 0000000..354c88f --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/TorusController.cs @@ -0,0 +1,36 @@ +using UnityEngine; +using SpaceNavigatorDriver; + +public class TorusController : MonoBehaviour { + private Transform _camera; + private Transform _LookAtTarget; + private bool _isControllingTorus = true; + + public void Awake() { + SpaceNavigator.SetTranslationSensitivity(1); + SpaceNavigator.SetRotationSensitivity(1); + + _camera = Camera.main.transform; + _LookAtTarget = GameObject.FindGameObjectWithTag("Torus look at target").transform; + } + + public void Update() { + if (Input.GetKeyDown(KeyCode.Space)) + _isControllingTorus = !_isControllingTorus; + + if (_isControllingTorus) { + // Move the torus. + transform.Translate(_camera.transform.TransformDirection(SpaceNavigator.Translation), Space.World); + transform.rotation = SpaceNavigator.RotationInLocalCoordSys(_camera) * transform.rotation; + + // Move the camera. + _camera.Translate(SpaceNavigator.Translation, Space.Self); + _camera.LookAt(_LookAtTarget); + } else { + // Perform azimuth in world coordinates. + _camera.RotateAround(transform.position, Vector3.up, SpaceNavigator.Rotation.Yaw() * Mathf.Rad2Deg); + // Perform pitch in local coordinates. + _camera.RotateAround(transform.position, _camera.transform.right, SpaceNavigator.Rotation.Pitch() * Mathf.Rad2Deg); + } + } +} diff --git a/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/TorusController.cs.meta b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/TorusController.cs.meta new file mode 100644 index 0000000..1bd33d9 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/- Follow curve/Scripts/TorusController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bd2296ba0f06d4f45b9b64b5f668d955 +timeCreated: 1456665691 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpaceNavigator/Runtime samples/Materials.meta b/Assets/SpaceNavigator/Runtime samples/Materials.meta new file mode 100644 index 0000000..205458b --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/Materials.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0a06e2af228af904287a977f221400da diff --git a/Assets/SpaceNavigator/Runtime samples/Materials/grid.mat b/Assets/SpaceNavigator/Runtime samples/Materials/grid.mat new file mode 100644 index 0000000..a9ba8d4 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/Materials/grid.mat @@ -0,0 +1,26 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: grid + m_Shader: {fileID: 7, guid: 0000000000000000e000000000000000, type: 0} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 8b23c9e3952e246c180a8080104ae60b, type: 1} + m_Scale: {x: 1000, y: 1000} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 0, g: 1, b: .0769231319, a: 1} diff --git a/Assets/SpaceNavigator/Runtime samples/Materials/grid.mat.meta b/Assets/SpaceNavigator/Runtime samples/Materials/grid.mat.meta new file mode 100644 index 0000000..9e1ac65 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/Materials/grid.mat.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 397f27ffc66da944285bff5e0bb094d2 diff --git a/Assets/SpaceNavigator/Runtime samples/Textures.meta b/Assets/SpaceNavigator/Runtime samples/Textures.meta new file mode 100644 index 0000000..57b19c4 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/Textures.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c9ef188278e0b364cba5d73e7261dbc1 diff --git a/Assets/SpaceNavigator/Runtime samples/Textures/grid.psd b/Assets/SpaceNavigator/Runtime samples/Textures/grid.psd new file mode 100644 index 0000000..89c45d6 Binary files /dev/null and b/Assets/SpaceNavigator/Runtime samples/Textures/grid.psd differ diff --git a/Assets/SpaceNavigator/Runtime samples/Textures/grid.psd.meta b/Assets/SpaceNavigator/Runtime samples/Textures/grid.psd.meta new file mode 100644 index 0000000..8702838 --- /dev/null +++ b/Assets/SpaceNavigator/Runtime samples/Textures/grid.psd.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 8b23c9e3952e246c180a8080104ae60b +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: 2 + aniso: 9 + mipBias: 0 + wrapMode: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + textureType: -1 + buildTargetSettings: [] diff --git a/Assets/TextMesh Pro.meta b/Assets/TextMesh Pro.meta new file mode 100644 index 0000000..f9da8b5 --- /dev/null +++ b/Assets/TextMesh Pro.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f54d1bd14bd3ca042bd867b519fee8cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources.meta b/Assets/TextMesh Pro/Editor Resources.meta new file mode 100644 index 0000000..4d200fb --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cbf93dc9270513c4dacd74d4308b4b21 +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos.meta b/Assets/TextMesh Pro/Editor Resources/Gizmos.meta new file mode 100644 index 0000000..e19e52f --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Gizmos.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3e662f7a768ede648a4252fb1c0fc77c +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Dropdown Icon.psd b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Dropdown Icon.psd new file mode 100644 index 0000000..93f5a2c Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Dropdown Icon.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Dropdown Icon.psd.meta b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Dropdown Icon.psd.meta new file mode 100644 index 0000000..8721ed3 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Dropdown Icon.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 55f8e7db943fe154ea3b3289fc82f8fa +timeCreated: 1464846400 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -2 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Font Asset Icon.psd b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Font Asset Icon.psd new file mode 100644 index 0000000..2fb1164 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Font Asset Icon.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Font Asset Icon.psd.meta b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Font Asset Icon.psd.meta new file mode 100644 index 0000000..98f6627 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Font Asset Icon.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 7b024bd8880037b4bb6bcd92fa3620e4 +timeCreated: 1463559213 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Input Field Icon.psd b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Input Field Icon.psd new file mode 100644 index 0000000..f0360d3 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Input Field Icon.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Input Field Icon.psd.meta b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Input Field Icon.psd.meta new file mode 100644 index 0000000..6a423b1 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Input Field Icon.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: b0033ea3f5cebf942a8f9a11d98a0944 +timeCreated: 1457860876 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Text Component Icon.psd b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Text Component Icon.psd new file mode 100644 index 0000000..3cc4163 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Text Component Icon.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Text Component Icon.psd.meta b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Text Component Icon.psd.meta new file mode 100644 index 0000000..39f375c --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Gizmos/TMP - Text Component Icon.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 8e098d8d28c5182419f7a1c8b91ca722 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TextMeshPro Inline Graphics icon.psd b/Assets/TextMesh Pro/Editor Resources/Gizmos/TextMeshPro Inline Graphics icon.psd new file mode 100644 index 0000000..602f891 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Gizmos/TextMeshPro Inline Graphics icon.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Gizmos/TextMeshPro Inline Graphics icon.psd.meta b/Assets/TextMesh Pro/Editor Resources/Gizmos/TextMeshPro Inline Graphics icon.psd.meta new file mode 100644 index 0000000..9f47011 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Gizmos/TextMeshPro Inline Graphics icon.psd.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 05706b7e8626d0640963a40382e6358a +timeCreated: 1427494109 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/TMPro_DarkSkin.guiskin b/Assets/TextMesh Pro/Editor Resources/TMPro_DarkSkin.guiskin new file mode 100644 index 0000000..b73b172 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/TMPro_DarkSkin.guiskin @@ -0,0 +1,1607 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12001, guid: 0000000000000000e000000000000000, type: 0} + m_Name: TMPro_DarkSkin + m_EditorClassIdentifier: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_box: + m_Name: box + m_Normal: + m_Background: {fileID: 11001, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.79999995, g: 0.79999995, b: 0.79999995, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_button: + m_Name: button + m_Normal: + m_Background: {fileID: 11006, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Hover: + m_Background: {fileID: 11003, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 11002, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 11005, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_OnHover: + m_Background: {fileID: 11004, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 11002, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_toggle: + m_Name: toggle + m_Normal: + m_Background: {fileID: 11018, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.89112896, g: 0.89112896, b: 0.89112896, a: 1} + m_Hover: + m_Background: {fileID: 11014, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 11013, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11016, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.8901961, g: 0.8901961, b: 0.8901961, a: 1} + m_OnHover: + m_Background: {fileID: 11015, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 11017, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 14 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 15 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: 0 + m_Top: -4 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_label: + m_Name: label + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textField: + m_Name: textfield + m_Normal: + m_Background: {fileID: 11024, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.79999995, g: 0.79999995, b: 0.79999995, a: 1} + m_Hover: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.9, g: 0.9, b: 0.9, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 11025, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textArea: + m_Name: textarea + m_Normal: + m_Background: {fileID: 11024, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} + m_Hover: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0.79999995, g: 0.79999995, b: 0.79999995, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11025, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_window: + m_Name: window + m_Normal: + m_Background: {fileID: 11023, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11022, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 18 + m_Bottom: 8 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 20 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -18} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalSlider: + m_Name: horizontalslider + m_Normal: + m_Background: {fileID: 11009, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: -3 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalSliderThumb: + m_Name: horizontalsliderthumb + m_Normal: + m_Background: {fileID: 11011, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 11012, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 11010, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalSlider: + m_Name: verticalslider + m_Normal: + m_Background: {fileID: 11021, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Overflow: + m_Left: -2 + m_Right: -3 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_verticalSliderThumb: + m_Name: verticalsliderthumb + m_Normal: + m_Background: {fileID: 11011, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 11012, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 11010, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 7 + m_Bottom: 7 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_horizontalScrollbar: + m_Name: horizontalscrollbar + m_Normal: + m_Background: {fileID: 11008, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 1 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarThumb: + m_Name: horizontalscrollbarthumb + m_Normal: + m_Background: {fileID: 11007, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarLeftButton: + m_Name: horizontalscrollbarleftbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarRightButton: + m_Name: horizontalscrollbarrightbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbar: + m_Name: verticalscrollbar + m_Normal: + m_Background: {fileID: 11020, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 9 + m_Bottom: 9 + m_Margin: + m_Left: 1 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarThumb: + m_Name: verticalscrollbarthumb + m_Normal: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0.66176474, g: 0.66176474, b: 0.66176474, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + m_verticalScrollbarUpButton: + m_Name: verticalscrollbarupbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarDownButton: + m_Name: verticalscrollbardownbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_ScrollView: + m_Name: scrollview + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_CustomStyles: + - m_Name: Texture Area Box + m_Normal: + m_Background: {fileID: 2800000, guid: b0d8d060130619d4094328fa33fccdee, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: b0d8d060130619d4094328fa33fccdee, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 4, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Text Area Box (Editor) + m_Normal: + m_Background: {fileID: 2800000, guid: bc6736bb43aae2f48a0f45fd83e9a970, type: 3} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: bc6736bb43aae2f48a0f45fd83e9a970, type: 3} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 2, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Text Area Box (Window) + m_Normal: + m_Background: {fileID: 2800000, guid: bc6736bb43aae2f48a0f45fd83e9a970, type: 3} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: bc6736bb43aae2f48a0f45fd83e9a970, type: 3} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 2, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Square Area Box (85 Grey) + m_Normal: + m_Background: {fileID: 2800000, guid: c9d259bea4bc21140b426beca59bbfc2, type: 3} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: c9d259bea4bc21140b426beca59bbfc2, type: 3} + m_TextColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Group Label + m_Normal: + m_Background: {fileID: 2800000, guid: bc6736bb43aae2f48a0f45fd83e9a970, type: 3} + m_TextColor: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: bc6736bb43aae2f48a0f45fd83e9a970, type: 3} + m_TextColor: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Group Label - Left Half + m_Normal: + m_Background: {fileID: 2800000, guid: 9d98c183d7ac6cd428fd132cb4d58634, type: 3} + m_TextColor: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: 9d98c183d7ac6cd428fd132cb4d58634, type: 3} + m_TextColor: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Section Label + m_Normal: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0.078431375, g: 0.078431375, b: 0.078431375, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0.078431375, g: 0.078431375, b: 0.078431375, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: 0.7835821, g: 0.7835821, b: 0.7835821, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_Settings: + m_DoubleClickSelectsWord: 1 + m_TripleClickSelectsLine: 1 + m_CursorColor: {r: 1, g: 1, b: 1, a: 1} + m_CursorFlashSpeed: -1 + m_SelectionColor: {r: 1, g: 0.38403907, b: 0, a: 0.7} diff --git a/Assets/TextMesh Pro/Editor Resources/TMPro_DarkSkin.guiskin.meta b/Assets/TextMesh Pro/Editor Resources/TMPro_DarkSkin.guiskin.meta new file mode 100644 index 0000000..24f596b --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/TMPro_DarkSkin.guiskin.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: eea6ec55e77d406479dac17d76595b27 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/TMPro_LightSkin.guiskin b/Assets/TextMesh Pro/Editor Resources/TMPro_LightSkin.guiskin new file mode 100644 index 0000000..8519129 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/TMPro_LightSkin.guiskin @@ -0,0 +1,1607 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12001, guid: 0000000000000000e000000000000000, type: 0} + m_Name: TMPro_LightSkin + m_EditorClassIdentifier: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_box: + m_Name: box + m_Normal: + m_Background: {fileID: 11001, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .799999952, g: .799999952, b: .799999952, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_button: + m_Name: button + m_Normal: + m_Background: {fileID: 11006, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .899999976, g: .899999976, b: .899999976, a: 1} + m_Hover: + m_Background: {fileID: 11003, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 11002, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .899999976, g: .899999976, b: .899999976, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 11005, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .90196079, g: .90196079, b: .90196079, a: 1} + m_OnHover: + m_Background: {fileID: 11004, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 11002, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .899999976, g: .899999976, b: .899999976, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 4 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_toggle: + m_Name: toggle + m_Normal: + m_Background: {fileID: 11018, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .891128957, g: .891128957, b: .891128957, a: 1} + m_Hover: + m_Background: {fileID: 11014, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Active: + m_Background: {fileID: 11013, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11016, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .890196085, g: .890196085, b: .890196085, a: 1} + m_OnHover: + m_Background: {fileID: 11015, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnActive: + m_Background: {fileID: 11017, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 14 + m_Right: 0 + m_Top: 14 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 15 + m_Right: 0 + m_Top: 3 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: 0 + m_Top: -4 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_label: + m_Name: label + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 2 + m_Bottom: 2 + m_Padding: + m_Left: 2 + m_Right: 2 + m_Top: 1 + m_Bottom: 2 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textField: + m_Name: textfield + m_Normal: + m_Background: {fileID: 11024, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .799999952, g: .799999952, b: .799999952, a: 1} + m_Hover: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .899999976, g: .899999976, b: .899999976, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnNormal: + m_Background: {fileID: 11025, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 3 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_textArea: + m_Name: textarea + m_Normal: + m_Background: {fileID: 11024, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .90196079, g: .90196079, b: .90196079, a: 1} + m_Hover: + m_Background: {fileID: 11026, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: .799999952, g: .799999952, b: .799999952, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11025, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 3 + m_Right: 3 + m_Top: 3 + m_Bottom: 3 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_window: + m_Name: window + m_Normal: + m_Background: {fileID: 11023, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 11022, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 8 + m_Right: 8 + m_Top: 18 + m_Bottom: 8 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 20 + m_Bottom: 10 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 1 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: -18} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalSlider: + m_Name: horizontalslider + m_Normal: + m_Background: {fileID: 11009, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 3 + m_Right: 3 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -2 + m_Bottom: -3 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalSliderThumb: + m_Name: horizontalsliderthumb + m_Normal: + m_Background: {fileID: 11011, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 11012, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 11010, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 4 + m_Right: 4 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 7 + m_Right: 7 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 12 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalSlider: + m_Name: verticalslider + m_Normal: + m_Background: {fileID: 11021, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 3 + m_Bottom: 3 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Overflow: + m_Left: -2 + m_Right: -3 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_verticalSliderThumb: + m_Name: verticalsliderthumb + m_Normal: + m_Background: {fileID: 11011, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 11012, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 11010, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 7 + m_Bottom: 7 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: -1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 12 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 1 + m_horizontalScrollbar: + m_Name: horizontalscrollbar + m_Normal: + m_Background: {fileID: 11008, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 9 + m_Right: 9 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 1 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 15 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarThumb: + m_Name: horizontalscrollbarthumb + m_Normal: + m_Background: {fileID: 11007, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: -1 + m_Bottom: 1 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 13 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarLeftButton: + m_Name: horizontalscrollbarleftbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_horizontalScrollbarRightButton: + m_Name: horizontalscrollbarrightbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbar: + m_Name: verticalscrollbar + m_Normal: + m_Background: {fileID: 11020, guid: 0000000000000000e000000000000000, type: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 9 + m_Bottom: 9 + m_Margin: + m_Left: 1 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 1 + m_Bottom: 1 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarThumb: + m_Name: verticalscrollbarthumb + m_Normal: + m_Background: {fileID: 2800000, guid: bc6736bb43aae2f48a0f45fd83e9a970, type: 3} + m_TextColor: {r: 1, g: 1, b: 1, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: -1 + m_Right: -1 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 2 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 15 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + m_verticalScrollbarUpButton: + m_Name: verticalscrollbarupbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_verticalScrollbarDownButton: + m_Name: verticalscrollbardownbutton + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_ScrollView: + m_Name: scrollview + m_Normal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Margin: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 0 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 0, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_CustomStyles: + - m_Name: Texture Area Box + m_Normal: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: .0470588244, g: .0470588244, b: .0470588244, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: .783582091, g: .783582091, b: .783582091, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 0 + m_ImagePosition: 0 + m_ContentOffset: {x: 4, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Text Area Box (Editor) + m_Normal: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: .783582091, g: .783582091, b: .783582091, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 0 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 2, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Text Area Box (Window) + m_Normal: + m_Background: {fileID: 2800000, guid: bac851ff4dce74a4db5d26d327d5b08f, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: bac851ff4dce74a4db5d26d327d5b08f, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: .783582091, g: .783582091, b: .783582091, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 2, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 0 + m_StretchHeight: 0 + - m_Name: Square Area Box (85 Grey) + m_Normal: + m_Background: {fileID: 2800000, guid: 13464f658db7c594ea176875157bc3e7, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: 13464f658db7c594ea176875157bc3e7, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: .783582091, g: .783582091, b: .783582091, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Group Label + m_Normal: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: 8b7a4989baf39dc4f9b5e1253ae6db6c, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: .783582091, g: .783582091, b: .783582091, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Group Label - Left Half + m_Normal: + m_Background: {fileID: 2800000, guid: f4e0554a576a5f54c89e170019341d9d, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: f4e0554a576a5f54c89e170019341d9d, type: 3} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: .783582091, g: .783582091, b: .783582091, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + - m_Name: Section Label + m_Normal: + m_Background: {fileID: 2800000, guid: bac851ff4dce74a4db5d26d327d5b08f, type: 3} + m_TextColor: {r: .0784313753, g: .0784313753, b: .0784313753, a: 1} + m_Hover: + m_Background: {fileID: 2800000, guid: bac851ff4dce74a4db5d26d327d5b08f, type: 3} + m_TextColor: {r: .0784313753, g: .0784313753, b: .0784313753, a: 1} + m_Active: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Focused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnNormal: + m_Background: {fileID: 2800000, guid: f7f255b9380b94c1781bf3d10d2df5b3, type: 3} + m_TextColor: {r: .783582091, g: .783582091, b: .783582091, a: 1} + m_OnHover: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnActive: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_OnFocused: + m_Background: {fileID: 0} + m_TextColor: {r: 0, g: 0, b: 0, a: 1} + m_Border: + m_Left: 6 + m_Right: 6 + m_Top: 6 + m_Bottom: 6 + m_Margin: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Padding: + m_Left: 4 + m_Right: 4 + m_Top: 4 + m_Bottom: 4 + m_Overflow: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_Alignment: 0 + m_WordWrap: 1 + m_RichText: 1 + m_TextClipping: 1 + m_ImagePosition: 0 + m_ContentOffset: {x: 10, y: 0} + m_FixedWidth: 0 + m_FixedHeight: 0 + m_StretchWidth: 1 + m_StretchHeight: 0 + m_Settings: + m_DoubleClickSelectsWord: 1 + m_TripleClickSelectsLine: 1 + m_CursorColor: {r: 1, g: 1, b: 1, a: 1} + m_CursorFlashSpeed: -1 + m_SelectionColor: {r: 1, g: .384039074, b: 0, a: .699999988} diff --git a/Assets/TextMesh Pro/Editor Resources/TMPro_LightSkin.guiskin.meta b/Assets/TextMesh Pro/Editor Resources/TMPro_LightSkin.guiskin.meta new file mode 100644 index 0000000..601668b --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/TMPro_LightSkin.guiskin.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 6c695beab55cb6448ad18f8bf064c2e1 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures.meta b/Assets/TextMesh Pro/Editor Resources/Textures.meta new file mode 100644 index 0000000..3594db1 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ad24c9f4386b55e4d84d0daa2a200058 +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area 85 Dark.psd b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area 85 Dark.psd new file mode 100644 index 0000000..c4ceb1e Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area 85 Dark.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area 85 Dark.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area 85 Dark.psd.meta new file mode 100644 index 0000000..fae2221 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area 85 Dark.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: b0d8d060130619d4094328fa33fccdee +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark (LEFT).psd b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark (LEFT).psd new file mode 100644 index 0000000..6eca409 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark (LEFT).psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark (LEFT).psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark (LEFT).psd.meta new file mode 100644 index 0000000..eb2c4ca --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark (LEFT).psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 9d98c183d7ac6cd428fd132cb4d58634 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark.psd b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark.psd new file mode 100644 index 0000000..823f521 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark.psd.meta new file mode 100644 index 0000000..eedf76e --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Dark.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: bc6736bb43aae2f48a0f45fd83e9a970 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light (LEFT).psd b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light (LEFT).psd new file mode 100644 index 0000000..d51806a Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light (LEFT).psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light (LEFT).psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light (LEFT).psd.meta new file mode 100644 index 0000000..dfebcd1 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light (LEFT).psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: f4e0554a576a5f54c89e170019341d9d +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light.psd new file mode 100644 index 0000000..166d6fd Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light.psd.meta new file mode 100644 index 0000000..75cb0d7 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 8b7a4989baf39dc4f9b5e1253ae6db6c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium (LEFT).psd b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium (LEFT).psd new file mode 100644 index 0000000..ea04bbc Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium (LEFT).psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium (LEFT).psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium (LEFT).psd.meta new file mode 100644 index 0000000..866b1f1 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium (LEFT).psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: b61c7ad3a5b3af342beb85f136ec22fc +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium.psd b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium.psd new file mode 100644 index 0000000..d898027 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium.psd.meta new file mode 100644 index 0000000..a4b8665 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Box Area Medium.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: bac851ff4dce74a4db5d26d327d5b08f +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (40 Grey).psd b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (40 Grey).psd new file mode 100644 index 0000000..8092f73 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (40 Grey).psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (40 Grey).psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (40 Grey).psd.meta new file mode 100644 index 0000000..7ab90a8 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (40 Grey).psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 13464f658db7c594ea176875157bc3e7 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (85 Grey).psd b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (85 Grey).psd new file mode 100644 index 0000000..32034f0 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (85 Grey).psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (85 Grey).psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (85 Grey).psd.meta new file mode 100644 index 0000000..9a86655 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/Square Box Area (85 Grey).psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: c9d259bea4bc21140b426beca59bbfc2 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine.psd new file mode 100644 index 0000000..3da358a Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine.psd.meta new file mode 100644 index 0000000..82bbb7f --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 19bc332ef6249e54b80e461f96ae8e01 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine_Light.psd new file mode 100644 index 0000000..cf49b6c Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine_Light.psd.meta new file mode 100644 index 0000000..501721f --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBaseLine_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: cc28a6f137f87dc4d802e5a400158f8f +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom.psd new file mode 100644 index 0000000..1f35779 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom.psd.meta new file mode 100644 index 0000000..2060668 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 3b46890fc6cb63b45833aa19597bc452 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom_Light.psd new file mode 100644 index 0000000..d8af55b Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom_Light.psd.meta new file mode 100644 index 0000000..a05aacc --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignBottom_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 2fe9d0d84ac5655408d862f04584e37d +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine.psd new file mode 100644 index 0000000..7eefe6b Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine.psd.meta new file mode 100644 index 0000000..30cede0 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 990d10cd1264cdd4f91b7525972a60ab +timeCreated: 1467964791 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine_Light.psd new file mode 100644 index 0000000..f08bb6c Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine_Light.psd.meta new file mode 100644 index 0000000..dd40acf --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCapLine_Light.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 6de078d4371e9554e92a6e108662dc18 +timeCreated: 1467964413 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter.psd new file mode 100644 index 0000000..939bc6d Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter.psd.meta new file mode 100644 index 0000000..dbc841a --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 2bcd52f0cbb57c345aedeff851d08af2 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo.psd new file mode 100644 index 0000000..f9ce9a8 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo.psd.meta new file mode 100644 index 0000000..789f19d --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo.psd.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 2b5d364d79c7c864096edce0a212b969 +timeCreated: 1484171296 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd new file mode 100644 index 0000000..e37b2e2 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd.meta new file mode 100644 index 0000000..4b6ff48 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 7cff6f0a345713149915d633676ed728 +timeCreated: 1484171296 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter_Light.psd new file mode 100644 index 0000000..7274887 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter_Light.psd.meta new file mode 100644 index 0000000..85bc770 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignCenter_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 04829b908a2fb3341b435307c6a6df62 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush.psd new file mode 100644 index 0000000..eeeea67 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush.psd.meta new file mode 100644 index 0000000..5a6f4d5 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 0887b76417db6144eb32094cfecb988c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush_Light.psd new file mode 100644 index 0000000..b69f6a2 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush_Light.psd.meta new file mode 100644 index 0000000..9435edb --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignFlush_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 7b16e1706b970de41b91a5892bb105a1 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified.psd new file mode 100644 index 0000000..3ce55c4 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified.psd.meta new file mode 100644 index 0000000..df9a7bf --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 6fe54b1d79761194ea59cc1e63a1ae98 +timeCreated: 1472535271 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified_Light.psd new file mode 100644 index 0000000..d7fd5c8 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified_Light.psd.meta new file mode 100644 index 0000000..bd8f9c6 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignJustified_Light.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 15a015e45a814714e8784e944e698c20 +timeCreated: 1472535778 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft.psd new file mode 100644 index 0000000..fc7e10b Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft.psd.meta new file mode 100644 index 0000000..2dbd678 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 024077b7260a2f445b6372bcd1685add +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft_Light.psd new file mode 100644 index 0000000..5522c37 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft_Light.psd.meta new file mode 100644 index 0000000..9a20c31 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignLeft_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 12e05a571d6717d4784970ba5e61cbd4 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidLine.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidLine.psd new file mode 100644 index 0000000..14d28a2 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidLine.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidLine.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidLine.psd.meta new file mode 100644 index 0000000..04dc7da --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidLine.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 413b9be2291f7ad4fb6fa806b7898524 +timeCreated: 1426240649 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle.psd new file mode 100644 index 0000000..c4483db Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle.psd.meta new file mode 100644 index 0000000..efc0cd5 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: f8acac05771fd0146ba377e42d0d8813 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle_Light.psd new file mode 100644 index 0000000..4263bf9 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle_Light.psd.meta new file mode 100644 index 0000000..7378d5b --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMiddle_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: ae836952f2b1a6b45b8252012cae3bec +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidline_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidline_Light.psd new file mode 100644 index 0000000..a5bed37 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidline_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidline_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidline_Light.psd.meta new file mode 100644 index 0000000..eeb3e49 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignMidline_Light.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: ebd48e965fafc8b468f2de2c36eea7d2 +timeCreated: 1426240650 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight.psd new file mode 100644 index 0000000..4ef1998 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight.psd.meta new file mode 100644 index 0000000..187eb51 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 632aa73d461cdb44ca55a530301eb5ba +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight_Light.psd new file mode 100644 index 0000000..bdeff41 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight_Light.psd.meta new file mode 100644 index 0000000..4581d31 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignRight_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: ac4da9bcc22856a4db7e7b755406debe +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop.psd new file mode 100644 index 0000000..b00d458 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop.psd.meta new file mode 100644 index 0000000..91d2c74 --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 6799783ddcbe7c34eb8746fb8d92ba5b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop_Light.psd b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop_Light.psd new file mode 100644 index 0000000..84f0e61 Binary files /dev/null and b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop_Light.psd differ diff --git a/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop_Light.psd.meta b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop_Light.psd.meta new file mode 100644 index 0000000..11fd81c --- /dev/null +++ b/Assets/TextMesh Pro/Editor Resources/Textures/btn_AlignTop_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 58c8f05c7cf52014fbc616d618900e44 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins.meta b/Assets/TextMesh Pro/Plugins.meta new file mode 100644 index 0000000..90d0977 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 56bfd03eee2bcf3428986060bd15295e +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/32 Bit Plugins.meta b/Assets/TextMesh Pro/Plugins/32 Bit Plugins.meta new file mode 100644 index 0000000..2099704 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/32 Bit Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 79b0c46b09ce9d045820687a19b7133f +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.bundle b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.bundle new file mode 100644 index 0000000..8c54f79 Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.bundle differ diff --git a/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.bundle.meta b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.bundle.meta new file mode 100644 index 0000000..67048f8 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.bundle.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 04a372cad4401694fa76f513fb3e5c84 +folderAsset: yes +timeCreated: 1451123182 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: OSX + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.dll b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.dll new file mode 100644 index 0000000..ace68e2 Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.dll differ diff --git a/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.dll.meta b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.dll.meta new file mode 100644 index 0000000..eaff213 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/32 Bit Plugins/TMPro_Plugin.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 9ddf8fc9040e92c48bfda9aef65aacf8 +timeCreated: 1450988627 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/64 Bit Plugins.meta b/Assets/TextMesh Pro/Plugins/64 Bit Plugins.meta new file mode 100644 index 0000000..3b9a68f --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/64 Bit Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 04641eb90bc613a4dabea216d1386357 +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.bundle b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.bundle new file mode 100644 index 0000000..811f1b4 Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.bundle differ diff --git a/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.bundle.meta b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.bundle.meta new file mode 100644 index 0000000..d9f7d25 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.bundle.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 7e4ff4257229ffb468c2fd38cca376d9 +folderAsset: yes +timeCreated: 1451123209 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: OSX + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.dll b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.dll new file mode 100644 index 0000000..8113f59 Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.dll differ diff --git a/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.dll.meta b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.dll.meta new file mode 100644 index 0000000..663d687 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/64 Bit Plugins/TMPro_Plugin.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 343b74f75ac5f264b88992d380d434e2 +timeCreated: 1450987494 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/Editor DLL.meta b/Assets/TextMesh Pro/Plugins/Editor DLL.meta new file mode 100644 index 0000000..3b81c84 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/Editor DLL.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 48ea3e97552c6fd468f32e2cfac8493d +folderAsset: yes +timeCreated: 1511779465 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Editor.dll b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Editor.dll new file mode 100644 index 0000000..c5454d2 Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Editor.dll differ diff --git a/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Editor.dll.meta b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Editor.dll.meta new file mode 100644 index 0000000..efd11ee --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Editor.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: c9131c575d2b6464b8d6e7dbd1a25e2a +timeCreated: 1488610081 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Runtime.dll b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Runtime.dll new file mode 100644 index 0000000..5f5bab4 Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Runtime.dll differ diff --git a/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Runtime.dll.meta b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Runtime.dll.meta new file mode 100644 index 0000000..d6388f9 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/Editor DLL/TextMeshPro-2017.3-Runtime.dll.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 89f0137620f6af44b9ba852b4190e64e +timeCreated: 1488610019 +licenseType: Store +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/Runtime DLL.meta b/Assets/TextMesh Pro/Plugins/Runtime DLL.meta new file mode 100644 index 0000000..cc65ebf --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/Runtime DLL.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 35206e20e9be3a04c8cbff0347f8a8e3 +folderAsset: yes +timeCreated: 1511779465 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/Runtime DLL/TextMeshPro-2017.3-Runtime.dll b/Assets/TextMesh Pro/Plugins/Runtime DLL/TextMeshPro-2017.3-Runtime.dll new file mode 100644 index 0000000..67f158b Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/Runtime DLL/TextMeshPro-2017.3-Runtime.dll differ diff --git a/Assets/TextMesh Pro/Plugins/Runtime DLL/TextMeshPro-2017.3-Runtime.dll.meta b/Assets/TextMesh Pro/Plugins/Runtime DLL/TextMeshPro-2017.3-Runtime.dll.meta new file mode 100644 index 0000000..078ebff --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/Runtime DLL/TextMeshPro-2017.3-Runtime.dll.meta @@ -0,0 +1,141 @@ +fileFormatVersion: 2 +guid: b5bd0d848a86e48409fe56688d66ecb5 +timeCreated: 1488610109 +licenseType: Store +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude WindowsStoreApps: 0 + - first: + '': OSXIntel + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 1 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude WindowsStoreApps: 0 + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: WebGL + second: + enabled: 1 + settings: {} + - first: + Facebook: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 1 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Plugins/vcomp120.dll b/Assets/TextMesh Pro/Plugins/vcomp120.dll new file mode 100644 index 0000000..727a120 Binary files /dev/null and b/Assets/TextMesh Pro/Plugins/vcomp120.dll differ diff --git a/Assets/TextMesh Pro/Plugins/vcomp120.dll.meta b/Assets/TextMesh Pro/Plugins/vcomp120.dll.meta new file mode 100644 index 0000000..117b636 --- /dev/null +++ b/Assets/TextMesh Pro/Plugins/vcomp120.dll.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 7433f8891c5fe3945b3eaf0af1ef340f +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + WP8: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources.meta b/Assets/TextMesh Pro/Resources.meta new file mode 100644 index 0000000..603126f --- /dev/null +++ b/Assets/TextMesh Pro/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2cf3fc68430ed2b49a44fd10bc8f6be7 +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials.meta new file mode 100644 index 0000000..ec664b0 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fc4753da6dfd3684895f921f5e8e4502 +folderAsset: yes +timeCreated: 1442040525 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset new file mode 100644 index 0000000..83a61d1 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset @@ -0,0 +1,3836 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2180264 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: LiberationSans SDF Material + m_Shader: {fileID: 4800000, guid: cafd18099dfc0114896e0a8b277b81b6, type: 3} + m_ShaderKeywords: UNITY_UI_CLIP_RECT + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2846298} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 10 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.9 + - _ScaleRatioB: 0.73125 + - _ScaleRatioC: 0.73125 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} +--- !u!28 &2846298 +Texture2D: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: LiberationSans SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 2 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + image data: 1048576 + _typelessdata: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204050607080909090908080706050402010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020202020202020201000000000000000000000000000000000000000000000000020406070808070706040100000000000000000000000000000000010305070708080706050300000000000000000000000000000000000000000000000004070808080808080808080807050200000000000000000000000000000000000000000000000001050708080808080808080808080808080808080808080808080808080808080808080808080808080808080808070501000000000000000000000000000000000000000000000000000000000000020608080808080808080808080807040000000000000000000000000000000000000000020507080808080808080808080807040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000102020202020202020000000000000000000000000000000000000000000000000000000000000001040607080808080705030100000000000000000000000000000000000000000000000000000000000000000000000004060808080808080808070502000000000000000000000000000000000003060707070707070707070707070707070707070707070707070707070503000000000000000000000000000000000000000000000000000004060808080808080808070502000000000000000000000000000000000000000000000000000000000000020507070707070707070502000000000000000000000000000000000000000000000000000000000005090c0e0f0f0f0f0f0f0f0e0c080300000000000000000000000000000000000000000000000000000002070a0d0d0d0d0d0d0d0d0c090500000000000000000000000000000002070b0e101010101010101010100e0c07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407090b0c0e0f1010111110100f0e0d0c0a0806030000000000000000000000000000000000000000000000000000000000000000000005090c0e0e0e0e0e0e0e0e0e0e0d0a07020000000000000000000000000000000000000000000000000000000000000001060a0c0e0e0e0e0e0e0e0e0e0e0c090500000000000000000000000000000000000000000000000000000000000000030507080808080808080808060300000000000000000000000000000000000000000000000000000000000000000000000000000205080a0d0f1012131415151515151515141312100f0d0b09070402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0d0e0f0f0f0f0f0f0f0e0c080300000000000000000000000000000000000005090c0f1113141415141312100e0b07030000000000000000000003070a0d1012131415141413110f0d090601000000000000000000000000000000000000060c10131515151515151515151514110e0902000000000000000000000000000000000000000002080d11141515151515151515151515151515151515151515151515151515151515151515151515151515151515151514110d08020000000000000000000000000000000000000000000000000000040a0e1214151515151515151515151513100c060000000000000000000000000000000003090e1214151515151515151515151513110c070000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0e0f0f0f0f0f0f0f0e0d0a060100000000000000000000000000000000000000000000000002070a0e101214151515141312100d0a060200000000000000000000000000000000000000000000000000000000000000060b1013151515151515151514110e080200000000000000000000000000060c1012141414141414141414141414141414141414141414141414141414120f0b0500000000000000000000000000000000000000000000060b1013151515151515151514110e08020000000000000000000000000000000000000000000000000000040a0e111314141414141413110e090400000000000000000000000000000000000000000000000000030a1015191b1b1b1b1b1b1b1b1a18140f0801000000000000000000000000000000000000000000000000070e1317191a1a1a1a1a1a1a1815110b04000000000000000000000000060d13181b1d1d1d1d1d1d1d1d1d1d1b18130d060000000000000001040607090a0a0b0b0b0b0b0a090807050301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0e11131517191a1c1c1d1d1d1d1d1c1b1a181714120f0c09050100000000000000000000000000000000000000000000000000000000040b1115191a1a1a1a1a1a1a1a1a1a1917130d070000000000000000000000000000000000000000000000000000000000060c1216191a1a1a1a1a1a1a1a1a1a1916110b05000000000000000000000000000000000000000000000000000105090d101213141515151515151515130f0b0500000000000000000000000000000000000000000000000000000000000000000004080b0f121417191b1d1e20212122222222222121201e1d1c1a181613110e0b080501000000000000000000000000000000000000000000000000000000000000000000000000000000050c12161a1b1b1b1b1b1b1b1b1a18140f08010000000000000000000000000001070c1115181b1e1f21212121201f1d1a17140f0b05000000000000040a0f13171a1c1f2021212121201e1c1916120d08020000000000000000000000000000020a11181c2021222222222222222222211e19140d05000000000000000000000000000000000000050d13191e2022222222222222222222222222222222222222222222222222222222222222222222222222222222222222201e19130d05000000000000000000000000000000000000000000000000070e151a1e212222222222222222222221201c18110a0200000000000000000000000000060e151a1e212222222222222222222222201d18120b0300000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b1b1b1b1b1b1b1b1a17120c0600000000000000000000000000000000000000000004090e13171a1d1f2021222221201e1c1916120d0803000000000000000000000000000000000000000000000000000000010911171c1f2122222222222222201e19140d0500000000000000000000030a11171c1f2020202020202020202020202020202020202020202020202020201f1b17110a02000000000000000000000000000000000000010911171c1f2122222222222222201e19140d05000000000000000000000000000000000000000000000000080f151a1e20202020202020201e1a150e070000000000000000000000000000000000000000000000050d151c212527282828282828282724201a130b02000000000000000000000000000000000000000000010a12191f23262727272727272725211c160f06000000000000000000000810181e2427292a2a2a2a2a2a2a2a2927241f18110800000205080b0e10121415161718181818181716151312100d0b0804010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f13171a1d202224262728292a2a2a2a2a2928272523211f1c1915120d090500000000000000000000000000000000000000000000000000060e161c21252727272727272727272726231e1811090000000000000000000000000000000000000000000000000000000810171d22262727272727272727272725221d160f070000000000000000000000000000000000000000000001070d1115191c1e202122222222222222211f1b161009000000000000000000000000000000000000000000000000000000000002070c1014171b1e212326282a2b2c2d2e2f2f2f2f2e2e2d2c2b2a28262422201d1b1814110e0a060200000000000000000000000000000000000000000000000000000000000000000000000710171d222628282828282828282724201a130b020000000000000000000000060d13181d2125282a2c2d2e2e2e2d2b292724201b16110a040000030910151a1f2326292b2d2e2e2e2d2c2b2825221e19130e07000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2d2a251f170f0600000000000000000000000000000000050e171e252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2a251e170e050000000000000000000000000000000000000000000007101920262b2e2e2e2e2e2e2e2e2e2e2e2e2c28231c140b02000000000000000000000007101820262a2d2e2e2e2e2e2e2e2e2e2e2e2c29231d150c0300000000000000000000000000000000000000000000000000000000000000000000020b131a202427282828282828282826231e17100700000000000000000000000000000000000002090f151a1f2326292b2d2e2e2e2e2d2b2926221e19140e0801000000000000000000000000000000000000000000000000010a131b22282c2e2e2e2e2e2e2e2e2d2a251f170f050000000000000000030c151c23282b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27221b140b0200000000000000000000000000000000010a131b22282c2e2e2e2e2e2e2e2e2d2a251f170f050000000000000000000000000000000000000000000009111920262a2d2d2d2d2d2d2d2d2a2620191108000000000000000000000000000000000000000000030d171f272d31343535353535353534302b251d140b0100000000000000000000000000000000000000000a131c242a2f3234343434343433312d2820180f06000000000000000007111a222a2f343636363636363636363634302a221a11070a0e1215181a1d1f202223242425252524242322201e1c1a1714110d090500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13171c1f2326292c2f3132343536363737373636353332302e2b2825211e1a15100b0600000000000000000000000000000000000000000000050f1820272d3134343434343434343434332f2a231b12090000000000000000000000000000000000000000000000000007111a22292e3234343434343434343434322e28211910060000000000000000000000000000000000000000060c13181d2225282b2d2e2e2e2e2e2e2e2e2e2b27211a1209000000000000000000000000000000000000000000000000000004090e13181c2024272a2d3032343638393a3b3b3c3c3c3b3b3a3938363533312f2c2a2724211d1a16120e0a05010000000000000000000000000000000000000000000000000000000000000006101921292e32353535353535353534302b251d140b010000000000000000020a11181e24292d313437393a3b3b3a3a383633302c27221c150e07060d141b21262b2f333538393a3b3b3a393735322e29241f19120b03000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3a36302921180e030000000000000000000000000000030d1720293036393b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3936302920170d030000000000000000000000000000000000000000051019222b31373a3b3b3b3b3b3b3b3b3b3b3b38342e261d140a00000000000000000000050f19222a31363a3b3b3b3b3b3b3b3b3b3b3b39352e271e150b000000000000000000000000000000000000000000000000000000000000000000000a141d242b30343535353535353535332f292219100700000000000000000000000000000000050d141a20262b2f3336383a3b3b3b3b393835322e2a251f19120b04000000000000000000000000000000000000000000000009131c252d33383b3b3b3b3b3b3b3b3a36302921170d03000000000000000b151e262e34383a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a37332d251d13090000000000000000000000000000000009131c252d33383b3b3b3b3b3b3b3b3a36302921170d03000000000000000000000000000000000000000007111b232b3237393a3a3a3a3a3a3936312b231a100600000000000000000000000000000000000000000b151f2931383e4142424242424242403c362f261d12080000000000000000000000000000000000000007121c252e353b3f404040404040403e39322a21170d02000000000000030e18232c343b4043434343434343434343403b342c231912161a1e212427292b2d2f30313132323231302f2e2d2b292623201d1915110c07020000000000000000000000000000000000000000000000000000000000000000000000000000000002090e14191f23282c2f3336393b3d3f40424343444443434241403e3c3a3734312e2a26211c17110c0600000000000000000000000000000000000000020d17212a32393e404141414141414141413f3b352d241b11060000000000000000000000000000000000000000000000040f19232c343a3e414141414141414141403e39332b22180d020000000000000000000000000000000000010910171e24292e323537393b3b3b3b3b3b3b3b3b38332c241b1208000000000000000000000000000000000000000000000003090f151a1f23282c3033373a3c3f4143444647484848484848484746454341403e3b393633302d2a26221e1a16110c080200000000000000000000000000000000000000000000000000000000030e18222b333a3f4142424242424242403c362f261d120800000000000000030c141b23292f34393d41434547474847464542403c38332d2720191110181f262c32373b3f424446474847474644413e3a35302a241d150d05000000000000000006111c262f383f454848484848484848484846423b332a1f150a000000000000000000000000000009141f29323b41464848484848484848484848484848484848484848484848484848484848484848484848484848484848484846413b32291f140900000000000000000000000000000000000000010c17222b343c43474848484848484848484848453f382f261c11060000000000000000000b16212b343c4246484848484848484848484845403930271d1207000000000000000000000000000000000000000000000000000000000000000007121c262f363c4042424242424242413f3a332b22190e040000000000000000000000000000070f171e252c31373b3f424546484848474644423e3a36302a241d160e05000000000000000000000000000000000000000000040f1a252e373f44474848484848484846413b33291f150a00000000000007121d2730383f44474747474747474747474747474747474747474747474747474746443e372f251b10050000000000000000000000000000040f1a252e373f44474848484848484846413b33291f150a00000000000000000000000000000000000000020e19232d353d434647474747474746423c352c22180d0200000000000000000000000000000000000005111c27313b43494d4e4e4e4e4e4e4e4d4841382f24190f040000000000000000000000000000000000020d18232e3740474b4d4d4d4d4d4d4d4a443c33291f140800000000000009141f2a343e464c4f50505050505050504f4c463e352b211e22262a2e313336383a3b3c3d3e3e3e3e3e3d3c3b39373533302d2925211d18130d070200000000000000000000000000000000000000000000000000000000000000000000000000070d141a20252a2f34383c3f4245484a4c4d4e4f50505050504f4e4d4b494744413e3a36312d28221d17110a03000000000000000000000000000000000008131e29333c444a4d4d4d4d4d4d4d4d4d4d4b463f362d22170c00000000000000000000000000000000000000000000000a15202b353e454b4d4d4d4d4d4d4d4d4d4d4a443d342a1f140800000000000000000000000000000000020a131b22292f353a3e414446474848484848484847443e362d24190e03000000000000000000000000000000000000000001080e141a20252b2f34383c404346494b4e5051535454555555555554535251504e4c4a484543403d3936322e2a26221d18130e0903000000000000000000000000000000000000000000000000000009141f2a343d454b4e4e4e4e4e4e4e4e4d4841382e24190f040000000000030d151e262d343a4045494d50525354545453514f4c48433e38322b231b1a222931373d43474b4e51535454545352504d4a46413b352e271f170e05000000000000000b17222d38424a5154555555555555555555524d453c31261b1004000000000000000000000000030e1a26313b444c5255555555555555555555555555555555555555555555555555555555555555555555555555555555555555524c443b31261a0e0300000000000000000000000000000000000006121d28333d464e535555555555555555555554514a42382d22170b000000000000000005111c28333d464e535555555555555555555554514b42392e23180c00000000000000000000000000000000000000000000000000000000000000020d19242e3841484c4e4e4e4e4e4e4e4e4b453d342b20150b00000000000000000000000000071019212930373d42474b4f51535455555453514e4a46413c352f2720170f0600000000000000000000000000000000000000000915212c364049505455555555555555524c453b31261b110600000000000c18232e39424a50535353535353535353535353535353535353535353535353535353504941372d22160b00000000000000000000000000000915212c364049505455555555555555524c453b31261b110600000000000000000000000000000000000008141f2a353f474e52535353535353524e473e34291e13070000000000000000000000000000000000000a16222d39434d555a5b5b5b5b5b5b5b59534a40362b20150b000000000000000000000000000000000006121e2a35404952585a5a5a5a5a5a59554e453b3025190d0100000000000d1925313c4650575c5d5d5d5d5d5d5d5d5c5850473d332a2a2e33363a3d4042454648494a4b4b4b4b4b4a49484644423f3c3935312d28241e19130d0600000000000000000000000000000000000000000000000000000000000000000000030b12181f252b31363b4044484b4f525456585a5b5c5d5d5d5d5c5c5b59575553504d4a46423d39332e28221c150e07000000000000000000000000000000000c1824303b454e555a5a5a5a5a5a5a5a5a5a5751493f34281d1105000000000000000000000000000000000000000000030f1b26323d4750565a5a5a5a5a5a5a5a5a5a564f463b3025190d010000000000000000000000000000010b141c252c343a40454a4e51535455555555555555544f483f352b20140800000000000000000000000000000000000000050c131920262b31363b4044484c4f5355585a5c5e5f6061626262626161605f5e5c5b595754524f4c4946423e3a36322e29241f1a140f09030000000000000000000000000000000000000000000000010d1925313c464f565b5b5b5b5b5b5b5b59534a40362b20160b00000000020c151f2730383f454c5155595c5f60616161605e5b58544f4a433c352d24232c343b42494e53575b5d5f616161605f5d5a56524c474039312920170e040000000000000f1b27333f4a545c616161616161616161615e574d43372c20150a00000000000000000000000006131f2b37424d565e616161616161616161616161616161616161616161616161616161616161616161616161616161616161615e564d42372b1f13060000000000000000000000000000000000000a16222e3a454f585f61616161616161616161615c544a3f33271b0f03000000000000000915212d39444f585f61616161616161616161615c544b4034281c100400000000000000000000000000000000000000000000000000000000000006121e2a35404a52595b5b5b5b5b5b5b5b574f463c32271c12070000000000000000000000071019222b333a42484e53575b5e60616161615f5d5a57524d474039312921180f05000000000000000000000000000000000000000d1a26323d48525b60616161616161615e574d43382d22170d0200000004101d2934404a545c6060606060606060606060606060606060606060606060606060605b53493e33271b0f03000000000000000000000000000d1a26323d48525b60616161616161615e574d43382d22170d0200000000000000000101010101010101010c1824303c4751595f6060606060605f5950463b2f23170b0000000000000000000000000000000000000d1a26323e4a555f6668686868686868645c52473d32271c1106000000000001050707070707070707070916222e3b46515b636767676767676660574d4135291d10040000000000101d2935414d58626869696969696969696862594f453b32363a3f4346494c4f5153555657575858585757565453514e4c4845413d39342f2a241e18110a0300000000000000000000000000000000000000000000000000000000000000060e151c232a30363c42474b5054585b5e616365676869696a6a6a696867666462605d5956524e49443f39332d272019110a020000000000000000000000000000101c2935414c576066676767676767676767635b5045392d21160a00000000000000000000000000000000000000000008141f2b37434e59616767676767676767676661574d4135291d110400000000000000000000000000000a131d262e373e454c51565a5d5f6161616161616161605a51473c3025180c0000000000000000000000000000000000010810171e242b31373d42474c5054585c5f626467696a6c6d6e6e6f6f6f6e6e6d6c6b69676563615e5c5955524e4b47423e3935302b25201a140e080200000000000000000000000000000000000000000004111d2936424d58616768686868686868645c52473d32271d12070000000a141e273139424950575d6166696b6d6d6e6d6c6a6864605b554e473f372e2c353d454d545a5f64676a6c6d6e6e6d6b6966625d58524b433b322920160c020000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e695f54493d32261b0f0400000000000000000000000915222f3b47535e686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685e53473b2f2215090000000000000000000000000000000000010d1a26323e4a56616a6e6e6e6e6e6e6e6e6e6e6d665b5044372b1f1306000000000000000c1925313d4a55616a6e6e6e6e6e6e6e6e6e6e6d665c5145382c2014070000000000000000000000000000000000000000000000000000000000000916222e3b46525c64686868686868686761584e43392e23190e03000000000000000000050f18222b343d454c53595f63676a6c6e6e6e6d6c6a67635e58524b433b332a21170d03000000000000000000000000000000000000101d2936424e5a646c6e6e6e6e6e6e6e695f54493f34291e13080000000713202c3945515c666c6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c655b4f43372b1e120500000000000000000000000000101d2936424e5a646c6e6e6e6e6e6e6e695f54493f34291e1308000000000004090c0d0e0e0e0e0e0e0e0e0f1b2834404c58636b6d6d6d6d6d6d6a62574c4033271a0e0100000000000000000000000000000000000f1c2935424e5b6671757575757575756e64594e43382e23180d02000003090d11131414141414141414141825313e4a57636d73737373737372695e5145392c1f13060000000000121f2c3845515e6a747676767676767676746b61574d443c42464b4f5256595b5e6061636364656565646362615f5d5b5855514d4945403b352f29231c150e0600000000000000000000000000000000000000000000000000000000000810181f272e353b42474d52575c6064676a6d70727375757677777676757473716f6c6966625e5a55504a453f38312a231c140c0400000000000000000000000000121f2b3844515d69727474747474747474746c61564a3e32261a0e0300000000000000000000000000000000000000000c1824303c48545f6b73747474747474747472695e5245392c1f13060000000000000000000000000007111c252f38404850575d6266696c6d6e6e6e6e6e6e6e6c63594d4134281b0f00000000000000000000000000000000030b131a21282f363c42484e53585c6064686b6e71737577797a7b7b7b7b7b7b7a7a7977767472706d6b6865625e5b57534e4a45403b36312b251f19130c05000000000000000000000000000000000000000006131f2c3945525e6a73757575757575756e64594e44392e24190e040007121c263039434b545b62686d727578797a7b7a797774706c66605951494036353e474f575f656b707476797a7b7a7a7876726e69635c554d443b32281e1409000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7065594e42372c20150900000000000000000000000a1724303d4a56636f7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a6f63564a3d3024170a000000000000000000000000000000000005111d2936424e5a67737b7b7b7b7b7b7b7b7b7b786c6053473b2e22160a00000000000003101c2834414d5966727b7b7b7b7b7b7b7b7b7b786d6154483c3023170b0000000000000000000000000000000000000000000000000000000000000b1825313e4a57636e74757575757575736a60554a40352a20150a0000000000000000010c16212a343d464f575e656a6f7377797a7b7b7a7976736e69635d554d453c33291f150b000000000000000000000000000000000000111e2b3744515e6a767b7b7b7b7b7b7a71665b50453a30251a0f0400000815212e3b4854616d787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776c5f5346392d20130600000000000000000000000000111e2b3744515e6a767b7b7b7b7b7b7a71665b50453a30251a0f040000030a1015181a1a1a1a1a1a1a1a1a1a1d293643505c69747a7a7a7a7a7a74685b4f4235291c0f070000000000000000000000000000000000101c2936434f5c697681828282828280756b60554a3f342a1f140900060d14191d202121212121212121212126323f4c5965727f8181818181796d6053463a2d20150f0700000000121f2c3945525f6b7882838383838383837d73695f564c484d52575b5f6265686a6c6e6f707171717171706f6e6c6a6764615e5a55514c46413b342e272018110900000000000000000000000000000000000000000000000000000009111a222a313840464d53595e63686c7074777a7c7e808182838484838382817f7d7b7875726e6a66615b56504a433c352d261e160d05000000000000000000000000131f2c3946525f6c7981818181818181817e72665a4e42372b1f13070000000000000000000000000000000000000005111d2935404c5864707c8181818181818181796d6053463a2d201307000000000000000000000000030e19232d37414a525a62686e7276787a7b7b7b7b7b7b7b75695c5043362a1d10000000000000000000000000000000040c151d242c333a41474e53595e63686c7174787b7d80828485868788888888888786858482817e7c7a7774716e6a67635f5a56514c47423c37312b241e170f07000000000000000000000000000000000000000713202d3a4653606d7982828282828280756b60554b40352b20150b030e19232e38424b555d656d73797e8284868788878684817c77716a635b52483f3d475059616970767b8083858787878685827e7a746e675f564d443a30251b100500000000131f2c3945525e6b76828888888888888882766b5f54483d31261a0f03000000000000000000000a1724303d4a5763707d88888888888888888888888888888888888888888888888888888888888888888888888888888888887d7063574a3d3024170a00000000000000000000000000000000000815212d3946525e6a76838888888888888888887c6f63574a3e3226190d01000000000007131f2c3844505d6975828888888888888888887d7064584c3f33271b0f0200000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8282828282827c71675c51473c31271c11070000000000000008131e28323c464f58616870767b8083868788888785837f7a756e675f574e453b31271c12070000000000000000000000000000000000111e2a3744505d69747f888888888882776c62574c41362c21160b00000915222f3c4855626f7b87878787878787878787878787878787878787878787878786796d6053463a2d20130700000000000000000000000000111e2a3744505d69747f888888888882776c62574c41362c21160b00050d151b212527272727272727272727272a3643505d697683878787878275695c4f4236291f19120a010000000000000000000000000000000f1b2835414d5965707a858e8e8e8e877c71665c51463b30261b10060f181f252a2d2e2e2e2e2e2e2e2e2e2e2e323f4c5965727f8c8d8d8d86796d6053463a2d2620191108000000111e2a37434f5b66707a848d909090908f857b71675e5454595e63676b6e727477797b7c7d7e7e7e7e7d7d7c7a787674716d6a66615c57524c463f38312a221b120a0200000000000000000000000000000000000000000000000009121b232c343b434a51585e646a6f74787c808386898b8d8e8f90909090908f8d8c8a8885827e7a76716c67615b554e473f3830281f170e050000000000000000000000121e2b3844505d6874808c8e8e8e8e8e8e83776b5f53473b2f24180c000000000000000000000000000000000000000a16212d3945515d6975818c8e8e8e8e8e8d8175695d5145382c1f13060000000000000000000000000a15202b353f49535c646c73797e8285878888888888888376695d5043362a1d100000000000000000000000000000050e161e272e363e454c52595f656a6f74787d8184878a8d8f909293949595959595949392918f8d8b898684817e7a77736f6b66625d58534d48423c362f292119100600000000000000000000000000000000000006121f2c3845515d68737d888e8e8e8e877c72675c52473c32271c1209141f2a35404a545d676f777e858a8e919394949492908d88837c756d645a5147454f59626b737b82878c909294949493918e8b86807871685f564c42372c21160b00000000111d2a36424e5965707c87939595959593877b7065594e42372b201409000000000000000000000a1724303d4a5763707d8a9595959595959595959595959595959595959595959595959595959595959595959595959595958a7d7063574a3d3024170a00000000000000000000000000000000000c1824313d4955626e7a8693959595959595958b7f73665a4e4235291d100400000000000a16232f3b4754606c798591959595959595958d8174685c4f43372b1e120600000000000000000000000000000000000000000000000000000000000b1724313d4a56616c77828c8e8e8e8e83786e63584e43382e23180e030000000000030f1a252f3a444e58616a737a81878c909294959594928f8b868079716960574d43382e23180d02000000000000000000000000000000000f1c2835414d58636e78838e959594897e73685e53483d32281d1207000916222f3c4855626f7b88949494949494949494949494949494949494949494949386796d6053463a2d201307000000000000000000000000000f1c2835414d58636e78838e959594897e73685e53483d32281d12070d171f262d313334343434343434343434343643505d6976839094948f8275695c4f42362f2a241c130a0000000000000000000000000000000c1925313d48535e69747e89949b998e83786d62584d42372c21170e1821293036393a3a3a3a3a3a3a3a3a3a3a3a3f4c5965727f8c999a9386796d6053463a37322b231a110600000f1b27333f4a545e68727b858f999d9d978d837970665c5f656a6f73777b7e81848687898a8a8b8b8b8a8a88878583807d7a76726d68635d57514a433c342c241c140b020000000000000000000000000000000000000000000008121b242d353d464d555c63696f757b8084898c90939597999b9c9c9d9d9d9c9b9a989794918e8b87827d78726c665f58514a423a312920170d0400000000000000000000101c2834404c58646f7b87939a9a9a9a93877b6f64584c4034281c11050000000000000000000000000000000000020e1a26323e4a56616d7985919a9a9a9a94887c7064584d4135291d1004000000000000000000000004101b26313c47515b656e767e858a8e92949595959595908376695d5043362a1d1000000000000000000000000000050e172028303940484f565d646a70767b8085898d909496999b9d9fa0a1a2a2a2a2a1a1a09f9d9c9a989593908d8a87837f7b77726e69645e59534d47413a332b22180d02000000000000000000000000000000000004101c2935404c56616c76818c969b998e83796e63594e43392e23190e1a25313c47515c666f79818990969a9d9d9b9b9b9e9c99948e877e766c63594e4c56616b747d858d93989c9f9c9b9b9c9e9b96918a837a71685e53493e33281c11050000000e1a26323d48545f6b76828d99a2a2a2988d81766a5f53483c31251a0e030000000000000000000a1724303d4a5763707d8a97a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978a7d7063574a3d3024170a0000000000000000000000000000000003101c2834414d5965717e8a96a2a2a2a2a2a29b8f82766a5d5145392c20140700000000010d1a26323f4b5763707c8895a1a2a2a2a2a29c9084786b5f53473a2e22160a00000000000000000000000000000000000000000000000000000000000915212d3945505a65707a85909b9b958a80756a5f554a3f352a1f150a00000000000914202b36414c56606a737c858c92989c9d9a99999a9d9b97918b837b72695f554a40352a1f1308000000000000000000000000000000000c1824303b46515c67727c87929d9b90857a6f645a4f44392e23190e030916222f3c4955626f7c8996a0a0a09e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9386796d6053463a2d201307000000000000000000000000000c1824303b46515c67727c87929d9b90857a6f645a4f44392e23190e151f2931383d4041414141414141414141414143505d697683909d9c8f8275695c4f423f3b352e251b110700000000000000000000000000000915202c37424c57626d78838d989f948a7f74695e53493e33281d16202a333b4246474747474747474747474747474c5965727f8c99a09386796d60534746433d352c23180d02000b17222d38424c566069737d87919ba49f958b82786e646a70757a7f83878a8d90929495969798989897969594928f8d8986827e79746e68625c554e463e362e261d140b02000000000000000000000000000000000000000007111a242d363f474f575f666e747b81868b9095989c9fa2a4a6a7a8a9a9a8a9a9a8a7a5a3a19e9a97938e89847e77716a635b544b433b32291f160d030000000000000000000c18242f3b47535f6b76828e9aa6a7a4988c8074685c5145392d211509000000000000000000000000000000000007131f2b37424e5a66727e8a96a2a7a79b8f83776b5f54483c3024180d0000000000000000000000000915212c38434e59636d77808890969b9ea0a1a2a2a29d908376695d5043362a1d10000000000000000000000000040e172029323a424a525a61686f757b81878c9195999da0a29f9c9a99979696959595969697989a9c9da0a29f9d9a96938f8b87837e79746f6a645e58524c453d34291f13080000000000000000000000000000000000000c18242f3a454f5a656f7a858f9aa0958b80756a60554a40352a20151f2b36424d58636d78828b939ba19a94918f8e8f91969c9f9891887e756a6055535d68737d868f979e9d97928f8e8e9093989f9c958c837a70655a4f44392d22160a0000000915202c37434e5a65717c88939faaa99e92877b7064594d42362b1f14080000000000000000000a1724303d4a5763707d8a97a4aeaeaea8a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4978a7d7063574a3d3024170a0000000000000000000000000000000007131f2c3844505d6975818e9aa6aeaeacaeab9e9286796d6155483c3023170b0000000004111d2936424e5b6773808c98a4aeacacaeaca094887b6f63574a3e3226190d010000000000000000000000000000000000000000000000000000000005111d28333e49535e69747e89949e9c91867c71665c51463c31261c1106000000030e1a26313c48535d68727c868e969e9b95918d8c8c8e91969c9c958d847a71665c51463b3024190d0200000000000000000000000000000008141f2a35404a55606b76818b96a1968c81766b60554b40352a1f150a091623303c4956636f7c8996a2a89d938e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e86796d6053463a2d2013070000000000000000000000000008141f2a35404a55606b76818b96a1968c81766b60554b40352a1f151c27313b43494d4d4d4d4d4d4d4d4d4d4d4d4d4d505d697683909d9c8f8275695c4f4d4c4740372d23180d0100000000000000000000000000040f1a25303b46505b66717c87919c9b90867b70655a4f453a2f241c27323c454d5254545454545454545454545454545965727f8c99a09386796d605454534e473e342a1e13070006111c26303a444e58616b757f89929ca69d948a80766f757b81868b8f93979a9c9fa1a2a3a4a4a5a4a4a3a2a09e9c9996928e8a85807a746d665f58504840382f261d140a00000000000000000000000000000000000000050f19232c363f485159616971787f868c92979ca1a5a8a9a6a3a19f9d9c9c9c9c9c9e9fa1a3a6a9a7a39e9a958f89837c756d655d554d443b31281e150b01000000000000000007131f2b37424e5a66727d8995a1ada89c9185796d6155493d32261a0e02000000000000000000000000000000000c18232f3b47535f6b77838e9aa6aea2968a7e72675b4f43372b2014080000000000000000000000020e1a26313d49545f6a757f89929aa1a7a8a29d99979696908376695d5043362a1d100000000000000000000000030d162029323b444c545c646c737a80878d92979ca1a09c989592908e8c8a8a89888888898a8a8c8d8f919395989b9ea19f9b97938f8a85807b75706a645d574f463b3024190c00000000000000000000000000000000000007131e28333e48535e68737e89939e9c91877c71675c51473c31271c24303c47535e6974808a949d9f978f8984828182858a9199a29a91877c71665b59646f7a858f98a19b938c8683818283878d959e9e958c81776c61554a3e33271b0f030000040f1b26323d4954606b76828e99a4afa3988c81756a5e53473c3025190e0200000000000000000a1724303d4a5763707d8a97a4b0afa59d9898989898989898989898989898989898989898989898989898989898989898978a7d7063574a3d3024170a000000000000000000000000000000000b17232f3b4854606c7985919daaa8a19fa2a8a295897d7164584c3f33271b0e020000000814202d3945525e6a76838f9ba8a5a09fa3aba4978b7f73665a4e4235291d110500000000000000000000000000000000000000000000000000000000000c17222c37424c57626c77828d97a2988d83786d63584d43382d23180d03000007131f2b37424e59646f7a848e98a099918a84817f7f81858b929b9f968d83786e63584c41352a1e1206000000000000000000000000000000020e18232e39444e59646f7a858f9a9d92887d72675c51473c31261b10091623303c4956626f7b87929da5988c82828282828282828282828282828282828282796d6053463a2d20130700000000000000000000000000020e18232e39444e59646f7a858f9a9d92887d72675c51473c31261b222e39434d54595a5a5a5a5a5a5a5a5a5a5a5a5a5a5d697683909d9c8f8275695c5a5a5852493f34291d1206000000000000000000000000000009141e29343f4a555f6a75808b95a0978c82766c61564b40362b212d38444e575e61616161616161616161616161616165727f8c99a09386796d6161615f5950463b2f24170b00000a141e28323c464f59636d77818a949ea69c92887e7a81878d92979ba0a3a6a9a8a6a4a2a2a1a1a1a2a3a4a6a8a8a5a29e9a95908b857e78716a625a524a41382f261c12080000000000000000000000000000000000020d17212b353e48515a636b737b838a91979da3a8aba6a19d9996949291908f8f8f90919294979a9da1a6aaa5a09a948d867f776f675f564d433a30271d13080000000000000000020e1a26323d4955616d7884909ca8ada195897d72665a4e42362a1f130700000000000000000000000000000004101c2834404c58636f7b87939faba99d9185796e62564a3e32271b0f03000000000000000000000006121e2a36424e5a65717c87919ba4aca59d96918d8b8a89898376695d5043362a1d1000000000000000000000010b151e28323b444d565e666e767d858b92989ea39e9994908c898683817f7e7d7c7b7b7b7c7d7e7f81828487898c8f9295999da19f9b96918c86817b756f6861574c4135291c10030000000000000000000000000000000000010c17212c37414c57616c77828c97a1988e83786e63584e43382e232834404c58646f7b86919ca1978d857d78757475797f87909aa2988e83776c605e6a75818b96a19c9289817a767575777c838c959f9e93887d72665b4f43372b1f13070000000a15212c38434f5a66717c88949faaa99d92867b6f64584d41362a1f130800000000000000000a1724303d4a5763707d8a97a4b0aa9e938c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a7d7063574a3d3024170a000000000000000000000000000000020e1a27333f4b5864707c8995a1aa9f9692969fa5998d8174685b4f43362a1e12050000000b1724303c4955616d7a86929fa69b949399a3a79b8f83766a5e5145392d211408000000000000000000000000000000000000000000000000000000000006101b25303b46505b65707b86909b9f948a7f746a5f544a3f342a1f140a00000c1824303c47535f6a75818b96a09a90877f7974727275798089929c9f958a7f74695d52463b2f23170b0000000000000000000000000000000007121c27323d48525d68737e89939e998e84796e63584d42382d22170c15222e3b47535f6a75818c97a19a8f84787575757575757575757575757575757575736a5e5245392c1f1306000000000000000000000000000007121c27323d48525d68737e89939e998e84796e63584d42382d2227333f4a555f65676767676767676767676767676767697683909d9c8f827569676767635b51463a2e2215090000000000000000000000000000020d18232d38434e59636e79848f9a9e93887d73685d52473c3227313d495560696d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d727f8c99a09386796d6d6d6d6b62574c4033271a0e0000030c16202a343d47515b656e78828c96a0a49a9086858c92989ea3a7aba6a29f9c99979695949494959697999c9ea2a6aaa6a19c96908a837b746c645c534a41382e241a1006000000000000000000000000000000000a141f29333d47505a636c757d858d959ca2a8aba59f9a95918d8a87858483828282838486888a8d91959a9fa5aba59f989189817971685f564c42392f241a100500000000000000000915212d3944505c6874808b97a3afa69a8e82766a5f53473b2f23170b0000000000000000000000000000000915212d3944505c6874808c98a4afa4988c8175695d51453a2e22160a0000000000000000000000000915222e3a46525e6a76828d98a3ada59c938b85817e7d7c7c7c76695c5043362a1d100000000000000000000008131d27303a444d565f68707880888f969da39e98928d8884807c7977747371706f6f6f6f6f7071727476787a7c7f8285898d9195999ea29d97928c86807a73695d5144382b1e120500000000000000000000000000000000000005101a25303a45505a65707a85909b9f958a80756a5f554a3f352a2c3845515d6975818c97a29b90857b736c6967696e757e89939f9f94897d7165636f7a86929da1958b80776f6a68686b7179838e99a49a8f83776b5f53473b2f23160a00000004101b27323d4954606b77828e99a5aea3978c8075695e52473b3024190d02000000000000000a1724303d4a5763707d8a97a4b0a99c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7063574a3d3024170a00000000000000000000000000000006121e2a36434f5b6774808c98a5a6998d868e9aa69c9084776b5f52463a2e2115090000020e1b2733404c5865717d8a96a2a1958987929eab9f92867a6e6155493d3024180c00000000000000000000000000000000000000000000000000000000000009141f29343f49545f69747e89949f9b91867b71665b51463b31261b110604101c2834404c5864707b87929d9f93897e756d686666686e76808a95a09c91857a6e63574b3f33271b0f03000000000000000000000000000000000b16202b36414c57616c77828d97a0958a80746a5f54493e34291e13121f2b37424e59646f7a858f9aa0958a80766c6868686868686868686868686868686761584d4236291d11040000000000000000000000000000000b16202b36414c57616c77828d97a0958a80746a5f54493e34292936424f5b6771747474747474747474747474747474747683909d9c8f8275747474746d62564a3d3124170b00000000000000000000000000000006111c27313c47525d67727d88939e9a8f84796e64594e43382d333f4c5965717a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7f8c99a093867a7a7a7a7a74685b4f4235291c0f000000040e18222c353f49535d66707a848e97a1a2989190979da3a9aaa49f9a96938f8d8b898888878888898b8d8f92969a9ea3a9a7a19b948d867e766e655c534a40362c22180e03000000000000000000000000000006101b26303b454f59626c757e878f979fa6ada7a09a948e8985817d7b7977767575757677797b7e8185898e949aa0a7aaa39b938b837a71685e544b41362c21170c010000000000000005101c2834404b57636f7b87929eaaaa9f93877b6f63574b4034281c100400000000000000000000000000020e1a25313d4955616d7985919ca8ab9f94887c7064584c4135291d11050000000000000000000000000c1825313e4a56636f7b87939eaaa99e948a817a7571706f6f6f6d64594d4135281c0f00000000000000000005101a242f39424c565f68717a828a929aa1a099928c87817c7874706d6a68666463626262626363646667696b6d707376797c8184898d92979ca19d97918b83786b5f5245382c1f12050000000000000000000000000000000000000009131e29333e49535e69737e89949e9c91867c71665c51463c31303c4855616d7985919da1968a7e7369615c5b5d636c77828e99a59a8e82766967737f8b97a39c9084796e655e5b5b5f67717c88939f9f94887c7064574b3f32261a0d010000000a16212d38434f5a66717d88949faba89d91867a6f63584c41352a1e1307040404040404040a1724303d4a5763707d8a97a4b0a99c8f82757171717171717171717171717171717171717171717171717171717171717171716b6054483c2f2316090000000000000000000000000000000915222e3a46535f6b7784909ca8a3968a7e8b97a4a093877b6e62564a3d3125180c000006121e2a37434f5c6874818d99a69f9286828f9ba7a2968a7d7165594c4034281c0f030000000000000000000000000000000000000000000000000000000000020d18222d38424d58626d78828d98a2988d82786d62584d42382d22180d0713202c3844505c6874818c98a3998d82776c635c59595d646e78838f9aa2978b8073685c4f43372b1f130600000000000000000000000000000000040f1a252f3a45505b65707b86919c9c91867b70665b50453a30251a0f1a26313d48535e69737d88929b9c92887e756c645c5b5b5b5b5b5b5b5b5b5b5b5b5b564f463c3125190d01000000000000000000000000000000040f1a252f3a45505b65707b86919c9c91867b70665b50453a302a3744505d6a77818181818181818181818181818181818184909d9c8f83818181817e7165584b3e3225180b000000000000000000000000000000000a15202b35404b56616b76818c97a1968b80756a60554a3f3433404c5966738087878787878787878787878787878787878e9aa1958a878787878275695c4f4236291c0f0000000006101a232d37414b545e68727c868f99a3a29d9ca1a8aca59f99948e8a8683817e7c7b7b7a7b7b7c7e8083868a8e93989ea4aba69f98908880776e655c52483e342a20150a00000000000000000000000000010c17222d38424c57616b747e879099a1a9ada59d968f88837d7975716e6c6a69696969696b6c6f7175797d83898f969da5ada59d958c837a70665c52483e33281e130800000000000000000c17232f3b47525e6a76828e99a5afa3978c8074685c5044382d21150a0a0a0a0a0a0a0a0a0a0a0a0a0a0a121e2a36424e5a65717d8995a1ada69b8f83776b5f54483c3024180d010000000000000000000000000e1b2734404d5966727e8b97a3afa3988d82786f696563636363615b52483d3125190c0000000000000000010c17212c36404a545e68717a838c949ca49c958e87817b76716c6864615e5b59585756555555565758595b5c5f616366696d7074787d81868b90959ba095897e72675b4f43372a1e110400000000000000000000000000000000000000020c17222c37424c57626c77828d97a2988d83786d63584d4338333f4b5864717d8995a29d9185796d6257504e515b65717d8995a19e9286796d6a77838f9ba4978b7f73685d534e4f55606b77838f9ba4988c8073675b4e4235291c100300000004101b27323e4955606c77838e9aa5aea2978b8074695d52463b2f24181111111111111111111724303d4a5763707d8a97a4b0a99c8f827569656565656565656565656565656565656565656565656565656565656565656461594f44382c2014070000000000000000000000000000000d1925313e4a56626f7b8793a0aca094877b8894a1a3978a7e7266594d4134281c0f03000915212e3a46535f6b7884909da89c8f837f8c98a4a69a8d8175695c5044382b1f130700000000000000000000000000000000000000000000000000000000000006111b26313b46515b66717b86919b9f94897e74695f54493f34291f140a16232f3c4854606d7985919da194887c71655b514c4d525c67727e8a96a29c9084786c6053473b2f22160a000000000000000000000000000000000008131e29333e49545f69747f8a95a0988d82776c61574c41362b211615202b36414c57616c768089939c9a90877e766e665e564e4e4e4e4e4e4e4e4e4e4e4b453d342a1f1409000000000000000000000000000000000008131e29333e49545f69747f8a95a0988d82776c61574c41362b3744505d6a77848e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e95a09f958e8e8e8e8b7e7165584b3e3225180b00000000000000000000000000000000030e19242f39444f5a65707a85909b9c92877c71665b51463b33404c596673808c9494949494949494949494949494949498a0a69c959494948f8275695c4f4236291c0f000000000008111b252f39424c56606a737d87919ca9a9a9adaaa29b948e88837e7a777471706f6e6e6e6f70717476797d82878d9399a0a8aaa29a928980776d645a50463c31271c110600000000000000000000000007121e29343e49545e69737d879099a2abaca39b938b847d77726d6865625f5e5d5c5c5c5d5e606265696d72777d848b939ba3aca79e958c82786e645a4f453a2f24190e030000000000000007131e2a36424e5965717d8995a0aca89c9084786d6155493d31251917171717171717171717171717171717232f3b47525e6a76828e9aa6ada2968a7e72665b4f43372b1f140800000000000000000000000000101d2936434f5c6875828e9aa7ab9e93877b70665d585656565655504940362b201409000000000000000008131e28333e48525c66707a838c959ea29a928b837c76706a65605c5854514f4d4b4a49484849494a4b4c4e505254575a5d6064686c71757a7f848a8f958f84786d61564a3f33271b0f02000000000000000000000000000000000000000005101b25303b45505b65707b86909b9f948a7f746a5f544a3f35424e5b6774808c99a59a8e8275695d5145414955616d7985929ea295897c706d7a86939fa194887b6f63574b42434f5a66737f8b98a49c8f83766a5d5144382b1f1205000000000a16212d38444f5b66727d8994a0aba89c91857a6e63574c4035291e1e1e1e1e1e1e1e1e1e1e24303d4a5763707d8a97a4b0a99c8f8275695c58585858585858585858585858585858585858585858585858585858585858554f473d32271b1004000000000000000000000000000004101d2935414d5a66727e8b97a3aa9d91857985929ea69a8e8275695d5044382b1f1307000c1925313d4a56626f7b8794a0a5998c807c8995a1a99d9185786c6054473b2f23170a000000000000000000000000000000000000000000000000000000000000000a141f2a343f4a545f6a747f8a949f9b90867b70665b50463b30261b101926323f4b5764707c8995a19d9184786c60544940404a56616d7985929ea094887c6f63574a3e3225190c0000000000000000000000000000000000010c17222d37424d58636e78838e999e94897e73685d53483d32271d121a25303b45505a646e77818a939b99918880776f686058504842424242424242413f3a332b22180e030000000000000000000000000000000000010c17222d37424d58636e78838e999e94897e73685d53483d323744505d6a7784909a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9fa7a79f9b9a9a988b7e7165584b3e3225180b000000000000000000000000000000000007121d28333e48535e69747e89949f988e83786d62574d4237404c596673808c99a1a09c9b9b9b9b9b9b9b9b9b9b9b9b9ea5aaa19c9b9b9b8f8275695c4f4236291c0f00000000000009131d27313b45505a646e78828e9aa7b4b6ada2989089827c77726e6a67656362616161626365676a6d71767b81888f969ea6aca49b928980766c62584d43382e23180d0200000000000000000000020d18242f3a45505b65707a858f98a2abaca39a91898179726c66615c59555351504f4f4f50515356595d61666c72798189919aa3aca79e948a80766c61564c41362b1f140900000000000000020e1a25313d4955606c7884909ca7ada195897d7165594e42362a232323232323232323232323232323232328333f4b57636f7b87929eaaa99d9185796d62564a3e32271b0f0300000000000000000000000000111e2b3744515e6a7784909da9a79b8e82766a5f544c4a49494948453f372e241a0f0400000000000000030e19242f3a454f5a646e78828c959ea29990888079726b655e5954504b484542403e3d3c3c3c3c3c3d3e40414345484b4d5154585c6065696e73797e848a897e72675b5045392e22170b0000000000000000000000000000000000000000000009141f29343e49545f69747e89949f9b91867b71665b51463b43505d6976838f9ca4988b7e7266594d413844515d6976828f9ca5988c7f72707c8995a29e9285786c5f53473b3e4a5763707c8995a29e9285796c5f53463a2d2014070000000005101c27333e4a55616c77838f9aa5ada2968b8074685d51463a2f2a2a2a2a2a2a2a2a2a2a2a2a303d4a5763707d8a97a4b0a99c8f8275695c4f4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b49443d352b21160b0000000000000000000000000000000814202c3945515d6a76828e9ba7a79b8e8276828f9ba89e9185796c6054473b2f23160a03101c2834414d5966727e8b97a3a3968a7d7986929faba195887c7064574b3f33261a0e02000000000000000000000000000000000000000000000000000000000000030d18232d38434d58636d78838d98a2978d82776d62574d42372d22171c2835414e5a6773808c98a59a8d8175685c5044383945515d6975828e9ba4988c7f73665a4d4134281b0f02000000000000000000000000000000000005101b26313c46515c67727c87929d9a90857a6f64594f44392e2318131e29333e48525c656f788189929a9a928a8179726a625a534b443c3535353535322e29211910060000000000000000000000000000000000000005101b26313c46515c67727c87929d9a90857a6f64594f44393744505d6a7784909da199959595959595959595959595959aa4a39a959595958b7e7165584b3e3225180b0000000000000000000000000000000000010c16212c37424c57626d78838d989f948a7e74695e53483e404c596673808c99a1968f8e8e8e8e8e8e8e8e8e8e8e8e939da398908e8e8e8e8275695c4f4236291c0f0000000000000a16212c37424c57626c76818a949eaab6b6a99d91867e77716b66625e5b5856555454545556585b5e61656a70767d848c949da6ada49b92887e746a5f554a3f34291e13070000000000000000000007131e2a35404b57616c77828c96a1aaaea49a91887f776f67615b55504c49464443424243434547494d51555b61676f777f88919aa4aea69c92887d73685d52473c31251a0e03000000000000000915212c3844505c67737f8b97a3aea59a8e82766a5e52463b303030303030303030303030303030303030303844505c6873808b97a3afa4988c8175695d5145392e22160a0000000000000000000000000000121f2c3845525f6b7885929eaba4988b7f72665a4e423d3c3c3c3c39342d251c130800000000000000000914202b36414c56616c76808a949ea29990877e766e676059534e48443f4042444545454543413f3c3834333537393b3e4144484c5054595e63686d73787e84786d61564a3f34281d110600000000000000000000000000000000000000000000020d17222d38424d58626d77828d98a2988d82786d62584d4245525e6b7884919ea396897d7063574a3e35414e5b6774818d9aa69a8e8174717e8b97a49c9083766a5d5144373b4854616d7a8793a0a194877b6e6155483b2f22150800000000000b16222d39444f5b66727d8994a0aba79c9085796e62574b4037373737373737373737373737373d4a5763707d8a97a4b0a99c8f8275695c4f423e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d39332b23190f040000000000000000000000000000000b1824303c4855616d7986929eaaa4988b7f73808c98a5a195887c7063574b3f32261a0d07131f2c3844505d6975828e9aa7a093877a76838f9ca8a4988c8073675b4f42362a1e12050000000000000000000000000000000000000000000000000000000000000006111c26313c46515c66717c86919c9e94897e74695e54493e34291e1e2a3744505d6976828f9ba4978b7e7265594c403435414d5a66737f8c98a59b8e8275695c5043372a1e11040000000000000000000000000000000000000a141f2a35404a55606b76818b96a1968b81766b60554b40352a1f1417222c36404a535d666f77808890989b938b847c746c655d554e463e362d282826221d1710070000000000000000000000000000000000000000000a141f2a35404a55606b76818b96a1968b81766b60554b403744505d6a7784909c9b8f88888888888888888888888889929e9d9189888888887e7165584b3e3225180b00000000000000000000000000000000000005101a25303b46505b66717c87919c9b90857a70655a4f44404c596673808b959e91858282828282828282828282828c99a09387828282828275695c4f4236291c0f000000000004101b27323d48535e69737e88929ca6b0b3b2aa9d91877d7369605a56524e4c4a48484748484a4c4e51555a5f656b727a828b949da6ada49a90867b71665c51463b2f24190d020000000000000000010c18242f3b46515d68737e89949ea8b0a69c92887f766d655d564f4944403d3a383636363637383a3d40454a4f565d656d767f88929ca6aea49a8f857a6f64584d42362b1f14080000000000000004101c28333f4b57636e7a86929ea9aa9e92867a6f63574b3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4954606c7884909ca8ab9f93887c7064584c4035291d11050000000000000000000000000000131f2c3946525f6c7986929faca296897c7063574a3e323030302f2d28231b130a0100000000000000030f1a26313c47525d68737d88929ca39a90877e756c645d554e484242464a4d4f5152525251504e4b4844403b36302c2f3235383c41464a4d52575c61676d737873675c5045392e241d160e060000000000000000000000000000000000000000000006101b26313b46505b66717b86919b9f94897f74695f54494653606c7986939fa195887b6f6255493c33404c5966727f8c98a59c8f827573808c99a69b8e8275685c4f42363946525f6c7985929fa295897c6f6256493c3023160a000000000005111c28333e4a55616c78838f9aa6ada1968a7f73685c51454444444444444444444444444444444a5763707d8a97a4b0a99c8f8275695c4f423632323232323232323232323232323232323232323232323232323232302d2821191007000000000000000000000000000000030f1b2734404c5865717d8996a2aea195887c707d8995a2a4988c8073675a4e4236291d110a16232f3b4754606c7985919ea99d90847773808c99a5a89c9083776b5e52463a2e21150900000000000000000000000000000000000000000000000000000000000000000a151f2a353f4a555f6a75808a959f9b90857b70655b50453b30251f2c3945525f6b7885919ea295897c6f63564a3d31323e4b5764707d8996a39d9184786b5e5245392c1f1306000000000000000000000000000000000000030e18232e39444e59646f7a858f9a9d92877c72675c51463c31261b101a242e38414b545d656e767e878e969d958e867e766f67605850483f372e241b16120c0500000000000000000000000000000000000000000000030e18232e39444e59646f7a858f9a9d92877c72675c51463c43505d6975808a959a8d827b7b7b7b7b7b7b7b7b7b7b83909d9c8f827b7b7b7b7b7164584b3e3125180b0000000000000000000000000000000000000009141e29343f4a545f6a75808b95a0978c81766c61564b404b57636e79838e9894897f757575757575757575757f8c99a09386797575757571665a4e4135281b0f00000000000a15212c38434e5a65707a85909aa4aeada7a5a7a2988f857b71675e544a423f3d3c3b3b3b3c3d3f4245494e535a61687078828b949ea8aca2988d83786d62574c41352a1e1307000000000000000005111d2934404c57636e79848f9aa5b0a99e948a80766d645b534b443e3934302d2b2a2929292a2c2e3134393e444b535b646d76808a949faaaba1968b80756a5e53473c3025190d01000000000000000b17232f3a46525e6a75818d99a5afa3978b7f73675c504a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4d5965717d8995a0aca69a8f83776b5f53483c3024180c010000000000000000000000000000131f2c3946525f6c7986929faca194887b6e6255483c2f23232322201d1711090100000000000000000914202b37424d59646f7a858f9aa49c92887e756b635a524b4442484e5256595c5d5e5f5f5e5d5a5854504c47413b352e303840474d52565a5c5e5f5f5e62686c6961564b433d362f2720180f07000000000000000000000000000000000000000000000a141f2a343f4a545f6a747f8a949f9b90867b70665b504754616d7a8794a0a194877a6e6154473b323e4b5865717e8b98a49d90837673818d9aa79a8e8174675b4e41343845515e6b7784919ea3968a7d7063574a3d3024170a0000000000000b16222d3944505b67727e8995a0aca79b9085796d625651515151515151515151515151515151515763707d8a97a4b0a99c8f8275695c4f42362925252525252525252525252525252525252525252525252525252524211c160f070000000000000000000000000000000006131f2b3743505c6874818d99a5ab9e9286796d7a86939fa89b8f83766a5e5245392d20140d1a26323f4b5763707c8895a1a69a8d8174717d8996a2ac9f93877a6e62564a3d3125190c00000000000000000000000000000000000000000000000000000000000306090b0e18232e38434e58636e78838e98a2978c82776c62574c42372c222e3a4754606d7a8693a0a194877a6e6154483b2f2f3c4855626e7b8894a19f9386796d6054473a2e2114080000000000000000000000000000000000000007121c27323d48525d68737e89939e998e83786e63584d42382d2217121c262f38424b535c646c757c848c949b9890888179716a625a514940372d241a100600000000000000000000000000000000000000000000000007121c27323d48525d68737e89939e998e83786e63584d42414d59636e78838d98948a7f746e6e6e6e6e6e6e6e7683909d9c8f82756e6e6e6e696054483c3023170a000000000000000000000000000000010407090a0d18222d38434e59636e79848f999e93887d72685d524747525c67717c87919b90867b7168686868686868727f8c99a09386796d686868665f554a3e3226190d00000000030f1b26323d4954606b76818c97a1acada39b989ba3a1978d83796f665c52483e352f2e2e2e2f303335393d42484f565e666f79828c96a1aba99f948a7e73685d52463b2f24180c00000000000000000a16222e3945515d68747f8b96a1acada2978d82786e645b5249413a332d2824211f1d1c1c1c1d1f2124282d33394149525b646e78838d98a3aea89d92867b6f64584d41352a1e12060000000000000006121e2a36414d5965717c8894a0aca79c9084786c6056565656565656565656565656565656565656565656565e6a75828d99a5ada2968a7e72665a4f43372b1f1408000000000000000000000000000000131f2c3946525f6c7986929faca194877a6d6154473a2e2116161614100c06000000000000000000020e1a25313c48535f6a75808b96a19e948a80766c6259514840474e54595e6266686a6b6b6b6b696764615c58524d46403839424a52585e6366696b6b6b6b6a6865625e59544e474139322a21191007000000000000000000000000000000000000000000030d18232d38434d58636d78838d98a2978d82776d62574d54616d7a8794a1a094877a6d6053473a313e4b5764717d8a97a49d90847774818e9aa79a8d8173675a4d41343744515d6a7784919ea4978a7d7164574a3e3124170b00000000000005111c28333f4a56616d78848f9ba6aca1968a7e73675d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d63707d8a97a4b0a99c8f8275695c4f4236291c18181818181818181818181818181818181818181818181818181714100b0500000000000000000000000000000000000a16222f3b47535f6c7884919da9a89b8f83766a7783909ca89f92867a6d6155493c302417111d2936424e5b6773808c98a4a3978a7e716e7a87939faca3978a7e7266594d4135291c10040000000000000000000000000000000000000000000000000001060b0f121518191b1c27313c47515c67717c87919c9e93897e73695e53493e33292f3b4855626e7b8894a19f9386796c6053463a2d2e3a4754606d7a8693a0a194887b6e6255483b2f22150900000000000004080b0c0d0d0d0d0d0d0d0d0d0d0d16202b36414c57616c77828d97a0958a7f746a5f54493e33291e13141d262f38414a525a636b727a828991989a938b837c746b635b52493f362c22180e030000000000000000000004080b0c0d0d0d0d0d0d0d0d0d0d0d16202b36414c57616c77828d97a0958a7f746a5f54493e47525c67717c86919b91867c71676161616161697683909d9c8f8275696161615e574e43382c20140800000000000000000000000001060a0e1113151718191c27313c47525d67727d88939e9a8f84796e63594e434b55606a757f8a94988d83786e635b5b5b5b65727f8c99a09386796d605b5b5a544d43382d21160a0000000008141f2b37434e5a65717c88939ea8b1a69b918c919ba59f958b82786e645a50473d33292122222426292d31373d444c555d67707a858f9aa5b0a69b90857a6e63574c4034291d1105000000000000020e1a26323e4a56626d7985909ca7b2a79c91867b70665c524940372f28221c181412100f0f10111215181c22282f374049525c66717b87929da8aea3978c8175695e52463a2e22160a00000000000000020d1925313d4854606c78848f9ba7aca094897d71656363636363636363636363636363636363636363636363636e7a86929eaaa99d9185796d62564a3e32261b0f03000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d201409090704000000000000000000000007131e2a36424d5964707b87929da2988d82786e645a5047414951585f656a6e727577787878777673706d68635e58514a43424b545c63696e7275777878787775726e6a655f59524b443c332b2219100600000000000000000000000000000000000000000006111c26313c46515c66717c86919c9e94897e74695e5454616e7b8894a1a094877a6d6053473a313e4a5764717d8a97a49d90847774818e9aa79a8d8173675a4d40343744515d6a7784919ea4978a7d7164574a3e3124170b000000000000000b17222e3945505c67727e8a95a1aca69b9084786d6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a707d8a97a4b0a99c8f8275695c4f4236291c0f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a0804000000000000000000000000000000000000010e1a26323e4b57636f7c8894a0ada5988c80736774808d99a5a2968a7d7165584c4033271b14202d3945525e6a76838f9ba8a094877b6e6b7784909ca9a69a8e8275695d5145382c201407000000000000000000000000000000000000000000000000070d12171b1f2224262728282a35404a55606a75808b95a09a90857a70655a50453a30303c4956636f7c8996a29e9285786b5f5245392c2c3946535f6c7986929fa296897c6f6356493c3023160a00000000030a101417191919191919191919191919191a242f3a45505b65707b86919c9c91867b70655b50453a2f251a0f141d262f3840495159616870777f868e959d958d867d756d645b51483e342a1f150a0000000000000000030a101417191919191919191919191919191a242f3a45505b65707b86919c9c91867b70655b5045404a555f6a747f8994988e83796e645955555d697683909d9c8f8275695c5555524d453c32271b10040000000000000000000002080d12161a1d202224252626262b35404b56616b76818c97a0968b80756a5f554a434e58636d78828d97958a80756b60564e5965727f8c99a09386796d60534e4d49433a31271c1105000000000c1824303c48535f6b76828d99a4afaa9f948a7f89939ca69d948a80766c62594f453b31281e16171a1d21262c333a434b555e69737d88939ea9aca1968b8074685d5145392d21160a00000000000006121e2a36424e5a66727e8a96a1adaca1968a7f74695f544a40372e251d16110c0805030000000406080c11161d252e37404a555f6a75808c97a3aea99d91867a6e62564a3e32261a0e02000000000000000814202c38444f5b67737e8a96a2aea5998d817570707070707070707070707070707070707070707070707070737f8b97a2aea4988c8175695d5145392d22160a00000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000000b17232f3b47525e6a75818c98a39c91867b70665c5248414a535b636a70767a7e81838585858482807d79746f69635c554d4a545d666e757a7e828485858583817e7a76706a645d554e453d342b22180f050000000000000000000000000000000000000000000a151f2a353f4a555f6a75808a959f9b90857b70655b54616d7a8794a1a094877a6d6154473a313e4b5764717e8b97a49d90847774818e9aa79a8e8174675a4d41343844515e6b7784919ea4978a7d7063574a3d3024170a0000000000000006111d28343f4a56616d78848f9ba6aca1958a7e777777777777777777777777777777777777777777777d8a97a4b0a99c8f8275695c4f4236291c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36424e5a67737f8b98a4aea295897c7064717d8a96a2a6998d8174685c4f43372b1e1724303c4955616d7a86929fa99d9184786b6874818d99a6aa9e9285796d6154483c3024170b00000000000000000000000000000000000000000000040b12181e23272b2e3133343535343439434e59636e79848e99a1978c81766c61574c4137303d4a5663707d8a96a39e9184776b5e5145382b2c3845525f6b7885929ea3968a7d7063574a3d3024170a000000050e151b202426262626262626262626262626262629333e49545f69747f8a95a0988d82776c61574c41362b20160b141d262e373f474f565e666d747c838b939b9890877e766d635a50463c31261c1106000000000000050e151b202426262626262626262626262626262629333e49545f69747f8a95a0988d82776c61574c41434e58636d77828d97958a80756b6056505d697683909d9c8f8275695c4f4846423b332a20150a00000000000000000000070d13191e2226292c2f3032333333333239444f5a65707a85909b9c91877c71665b504647515c66717b86909b91877c72675d525965727f8c99a09386796d605346413d3831281f150a0000000004101c2834404c5864707c87939faab0a4998e8378818a949ea59c92887e746b61574d433a30261c120d10151a21283139434d57616c76828d98a4afa79c9085796d62564a3e32261a0e0200000000000916222e3a47535f6b77838f9ba6b2a79c9085796e63584d42382e251c130c050000000000000000000000050c131b252e38434e59646f7a86929da9aea2968b7f73675b4f43362a1e120600000000000000040f1b27333f4a56626e7a86919da9aa9e92867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d848f9ba7ab9f93877b7064584c4035291d110500000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000030f1b28343f4b57636f7b86929ea1968b80746a5f544a404a535c656d757b82878b8e90919292918f8c8985807a746e665f57515c666f7880868b8e91929291908e8a86817c756f675f574f463d342a20170c020000000000000000000000000000000000000000030e18232e38434e58636e78838e98a2978c82776c6257606d7a8693a0a194887b6e6155483b323f4b5865717e8b98a59c90837673808d99a69b8e8174685b4e42353845525e6b7885919ea396897c7063564a3d3023170a00000000000000000c17232e3945505c67737e8a95a1aca69b8f8584848484848484848484848484848484848484848484848b97a4b1a99c8f8275695c4f4236291c0f060606060606060606060606060606060606060606050200000000000000000000000000000000000000000000000815212d3946525e6a77838f9ba8ab9e9286796d616e7a87939fa99d9084786b5f53463a2e221b2733404c5865717d8a96a2a69a8d81756865717d8a96a3aea295897d7164584c4033271b0f020000000000000000000000000000000000000000070e161d23292f33373b3d3f41414241403f3c47525c67727c87929d9e93887d73685e53483e333d4a5763707d8a97a49e9184776b5e5144382b2b3845515e6b7784919ea4978a7d7164574a3e3124170b0000050e1720272c30333333333333333333333333333333333337424d58636d78838e999e93897e73685d52483d32271c1212141c252d353d454c545b626a71798189929a9991887f756c62584d43382d22170b0000000000050e1720272c30333333333333333333333333333333333337424d58636d78838e999e93897e73685d52483d46515b66707b85909a92877d72685d535d697683909d9c8f8275695c4f423a36312921180e040000000000000000020a11181f242a2e3236393b3d3e3f4040403f3e3d48535e69747e89949f988d83786d62574c424a545f69747e8993998e84796f645a5965727f8c99a09386796d6053463a312d261f160d03000000000714202c3844515d6975818c98a4b0ab9f94887d7178828c96a0a49a90867c73695f554b42382e241a1107090f161f27313b454f5a65707b87939eaaada1968a7e72665a4e42362a1e120500000000000d1925323e4a56636f7b87939fabaea2978b7f73685c51463b31261c130a01000000000000000000000000000109131c27313c47525e6975818d99a5b1a79b8f83776b5f53463a2e22150900000000000000000b16222e3a46525d6975818d98a4aea2978d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b94a0aca69a8f83776b5f53473c3024180c0000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000007131f2c3844505c6874808b97a39c9085796e63584d4348525c656e777f868d92979a9d9e9f9f9d9c9995918c867f7871696058626d78818a91979b9d9e9f9e9d9a97928d878079716961584f463c32281e140900000000000000000000000000000000000000000007111c27313c47515c67717c87919c9e93897e73695e5f6c7985929fa295897c6f6256493c33404d596673808c99a59b8e8275727f8c98a59c8f8275695c4f43363a46535f6c7986929fa195887b6f6255493c2f231609000000000000000006111d28343f4b56626d7984909ba7aca097919191919191919191919191919191919191919191919191949da8b3a99c8f8275695c4f4236291c13131313131313131313131313131313131313131313110f0a050000000000000000000000000000000000000000000c1825313d4955626e7a86939faba89b8f83766a5e6b7783909ca8a094877b6f62564a3e31251e2a37434f5c6874818d99a5a3978a7e7265616e7a87939faba5998d8174685c4f43372b1e12060000000000000000000000000000000000000008101820272e353a3f43474a4c4d4e4e4e4d4b49464b55606b75808b96a09a8f857a6f645a4f453a3d4a5763707d8a97a49e9184776a5d5144372a2b3844515e6b7784919ea4978a7d7164574a3e3124170b00010c17202931383d3f40404040404040404040404040404040404046515c67727c87929d9a8f857a6f64594e44392e231b1e202122232b333a4249515860676f778088919a9a91877e746a5f544a3f33281d1105000000010c17202931383d3f40404040404040404040404040404040404046515c67727c87929d9a8f857a6f64594e443f4a545f69737e8993998e84796f645a5d697683909d9c8f8275695c4f42362a251f170f060000000000000000040c141c232a30353a3e4245484a4b4c4c4d4c4c4a49464c57626d78838d989f94897e74695e5348434d58626d77828c97958b81766b615965727f8c99a09386796d6053463a2d211c150d0400000000000b1724303c4854616d7985919da9b1a69a8e82776b707a848e98a1a2988f857b71675d544a40362c23190f05050d151f29333e49545f6a76828e99a5b1a69a8e83766a5e52463a2e2115090000000003101c2935414e5a66737f8b97a3afaa9e92867a6e63574b40352a1f140a01000000000000000000000000000000010b15202b36414d5964707c8894a1adab9f93877b6f62564a3e3125180c000000000000000006121d2935414d5864707c88949faba89f98969696969696969696969696969696969696969696969696969696979da6ada1968a7e72665a4f43372b1f13080000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d201407000000000000000000000000000b17232f3c4854606c7884909ca3978b8074685d5247444f5a646e77818991989ea3a5a09d9b9a9a9b9c9f9c97918a837b736a6168737f8a949ca3a29c97959596999d9e98928b837b736a61584e443a30261b10060000000000000000000000000000000000000000000a15202a35404a55606a75808a95a09a90857a70655e6a7784909da3978a7d7164584b3f35424e5b6874818d9aa6998d8073717d8a97a39d9084776a5e5145383c4855616e7a8794a0a093867a6d6154473b2e2115080000000000000000000c17232e3a45515c68737e8a96a1aca9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa6aeb5a99c8f8275695c4f42362920202020202020202020202020202020202020202020201e1b1610090100000000000000000000000000000000000003101c2834414d5965727e8a96a3afa4988c8073675b6774808c99a5a3978b7e72665a4d413528212e3a46535f6b7884909da9a093877b6e625e6b7783909ca8a99c9084786b5f53473b2e22160a00000000000000000000000000000000000008111a222a323940464b4f5356595a5b5b5b5a5855524e4e59646e79848f99a1968c81766c61564c413d4a5763707d8a97a49e9184776a5e5144372b2b3844515e6b7784919ea4978a7d7164574a3e3124170b0007131e29323b43494c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c55606b76818b96a1968b81766b60554a3f352a272b2d2e2f30303132383f464e555d656d767f88929b9990867b71665b5044392d22160a00000007131e29323b43494c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c55606b76818b96a1968b81766b60554a3f424d57626c77818c96968b81766c615d697683909d9c8f8275695c4f4236291c140d060000000000000000040d161e262e353b41464a4e52545658595959595857555350505b66717c87919c9b90857a70655a4f4446505b65707a858f9a92887d73685e65727f8c99a09386796d6053463a2d20130a030000000000010e1a27333f4c5864717d8995a1adada195897d726668727c869099a3a1978d83796f665c52483e352b21170d04030d17212c37424e5a65717d8995a1adab9f93877a6e62564a3d3125180c0000000006131f2b3844515d6a76828f9ba7b3a69a8e82766a5e52463a2f23180d030000000000000000000000000000000000030e1925303c4854606c7884919da9afa3978b7e7266594d4134281b0f0200000000000000010d1924303c48545f6b77838f9ba6b1a9a4a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a8afa99d9185796d61564a3e32261a0f030000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d201407000000000000000000000000010e1a27333f4b5864707c8895a19e92867a6f63574c404b56616b76808a939ba3a69f9994918e8d8d8e9093969b9c948d857c736a6c7884909ba6a198908b89888a8c91969d9d958d857c736a60564c42372d22170c010000000000000000000000000000000000000000030e19232e39434e59636e79838e99a1978c81776c616875828e9ba5998c8073675a4e423b45515e6a7683909ca3978b7e716f7b8894a19f9286796d6154483c3f4b5764707d8996a29d9184786b5f5245392c20130600000000000000000006121d2934404b57626d7985909ca7b2adaaaaa7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6abb3b5a99c8f8275695c4f42362c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27211b130b0100000000000000000000000000000000000713202c3844505d6975818e9aa6aea195897c70635864717d8996a2a79a8e8275695d5144382c25313d4a56626f7b8794a0a99d9084786b5f5b6774808c98a5aca094887b6f63574a3e3226190d010000000000000000000000000000000006101a232c343c444b51575b5f6365676868676664625e5a54525d67727d88929d9d93887d73685d53483d4a5763707d8a96a39e9184776b5e5144382b2b3845515e6b7885929ea3968a7d7063574a3d3024170a000c18242f3a444d545859595959595959595959595959595959595959595959646f7a858f9a9d92877c72675c51463b3132373a3b3c3c3d3e3e3e3b3c434b535b646d768089949e988d83776c61564a3e32261a0e0200000c18242f3a444d545859595959595959595959595959595959595959595959646f7a858f9a9d92877c72675c51463b46505a656f7a858f9993887d73695e697683909d9c8f8275695c4f4236291c0f030000000000000000020c161f2830383f464c52575b5e616364656666666564625f5c58545f6a75808b95a0978c81766b61564b4049545e69737d8893998f857a6f6565727f8c99a09386796d6053463a2d20130700000000000004111d2a36434f5b6874818d99a5b1a99d9185796d61606a747d87919ba59f958b81776e645a50463d33291f150c0205101b26323d4955616c7885919da9afa3978a7e7266594d4134281b0f020000000915222e3b4754606d7985929eabafa3978a7e7266594d41352a1e1207000000000000000000000000000000000000000814202c3844505c6874818d99a6b2a79a8e8275695c5043372a1e110500000000000000000814202b37434f5b66727e8a96a2adb4b1a9a29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa1a7afb3b0a4988c8074695d5145392d22160a000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000004111d2a36424f5b6774808c98a59a8e82766a5e524645515c67727d88929ca5a59c948e88848281818183868a8f959b978e857c726f7b8894a1a59a8f867f7c7b7d81858b929a9f978e857c72685e54493e34291e130700000000000000000000000000000000000005090d11131c27323c47525c67727c87929d9e93887e736866737f8b98a49b8f83766a5e5349484a55616d7986929fa094887b6f6c7985919ea295897c7064594d4848505b6773808c98a59a8e8275695c5043372a1e1105000000000000000000010c18232f3a45515c68737f8a96a1adb8aea49c9898989898989898989898989898989898989898989aa1abb5a99c8f8275695c4f423939393939393939393939393939393939393939393939393937332d251d130900000000000000000000000000000000000b17232f3c4854606c7985919daaaa9e9285796d6055616d7a86929faa9e9285796d6054483b2f2834414d5966727e8b97a3a6998d8174685c5864707c8995a1aea4978b7f73665a4e4236291d1105000000000000000000000000000000040e18222c353e464e555c62676c6f727374757473716e6a65605a56616b76818b96a19a8f84796f645a4f444956636f7c8996a29e9285786b5f5245382c2c3945525f6c7885929fa396897c6f6356493d3023160a00101c2935404c565f65666666666666666666666666666666666666666666666668737e89939e998e83786d63584d42373d43464848494a4b4b4a4640394149525b646d77828d989f94897d72665a4e42362a1e12050000101c2935404c565f65666666666666666666666666666666666666666666666668737e89939e998e83786d63584d423e49535e68737d88929a8f857a7065697683909d9c8f8275695c4f4236291c0f0300000000000000000a141e28313a424a51585d62676a6d6f717273737372706e6c68645f59636e79848f999e93887d72675d5247424c57616c76818b96968c81776c65727f8c99a09386796d6053463a2d2013070000000000000713202c3945525e6b7784909ca9b2a6998d8175685c58626b757f89939da79d938a80766c62584f453b31271e140a000a15212c3844505c6875818d9aa6b2a69a8e8275695c5043372b1e12050000000b1724303d4a56636f7c8895a1aeaca093877b6e6256493d3125190d0100000000000000000000000000000000000000030f1b2734404c5865717d8a97a3afaa9d9185786b5f5246392d2014070000000000000000030f1b27323e4a56626d7985919da9b4aba0979292929292929292929292929292929292929292929292959ea8b4ab9f93877b7064584c4035291d1105000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000714202d3945525e6b7783909ca2968a7e7165594d414a56626d79848f9aa4a79c938a837c7875737375777a7e848a9097978e847a707d8a96a3a094897d746f6f71747a80889099a0978e847a70655b50453a2f24190d02000000000000000000000000000000050b1015191d2022242b35404b55606b75808b96a09a8f857a6f656f7c8894a09f93877b6f645b5654565c67727e8a96a29c9084786c6975828e9aa5998d81756a5f58555558616c7884909ca2968a7e7266594d4134281b0f020000000000000000000007121e2935404b57626e7985909ca7b3a99d928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f9aa5b2a99c8f8275695c4f4646464646464646464646464646464646464646464646464646433e372f251b1005000000000000000000000000000000020e1a27333f4b5864707c8995a1ada79a8e8275695d515e6a76838f9ba7a195897c7064574b3f322c3844505d6975828e9aa7a2968a7d71655954616d7986929eaaa79b8f83766a5e5245392d2114080000000000000000000000000000000b16202a343e47505860676e73787b7e81818281807d7a76716b645d5a646f79848f9aa1968b81766b61564b4855626f7b8895a29f9286796c5f5346392d2d3a4653606c7986939fa295887b6f6255493c2f22160900121f2b3844515d68717373737373737373737373737373737373737373737373726c77828d97a0958a7f74695f54493f484f5354555657575857524a41384049525c66707b87929e9a8f83776b5f52463a2d2114080000121f2b3844515d68717373737373737373737373737373737373737373737373726c77828d97a0958a7f74695f54493e414c56616b76818b95978c82776d697683909d9c8f8275695c4f4236291c0f030000000000000007111c26303a434c545c63696e73777a7c7e7f8080807e7d7b7874706a645d67727d88939e998f84796e63584e43454f5a646f79848e9993897e7469727f8c99a09386796d6053463a2d2013070000000000000916222f3b4854616d7a86939facafa2968a7d716558505a636d77818b959ea59b92887e746a61574d433930261c120804101c2834404c5965717e8a96a3afaa9d9185786c5f53463a2d2014070000000d1926323f4c5865717e8b97a4b0aa9d9184786b5f52463a2d2115090000000000000000000000000000000000000000000b1824303d4955626e7b8794a1adada093877a6e6155483b2f2216090000000000000000000a16222e3945515d6974808c98a4afa79b8f86868686868686868686868686868686868686868686868c98a4b1a69a8e83776b5f53473c3024180c00000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000916222f3c4855616d7a86939f9f93867a6e615549434f5b67737e8a95a0aa9f958b8178716c686767686a6e73787e868d95968c82777d8a97a49d9184786c636264696f767e879099a0968c82776c62574c40352a1e130700000000000000000000000000020a10161c2125292c2f31323339444e59646e79848e99a1968c81766c6b78848f9ba3978c81766d66626162676e78838f9aa3978c80746865717d8995a19d92867b7169646161646a737e8994a09d92867a6e62564a3d3125180c0000000000000000000000010c18232f3a46515d68747f8b96a2ada89b8e827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e8a97a4b0a99c8f8275695c5353535353535353535353535353535353535353535353535353524f4941372d22160b00000000000000000000000000000006121e2a37434f5b6774808c98a5afa3978b7e7266594e5a67737f8c98a4a5988c8073675b4e42362f3b4754606c7985919eaa9f93867a6e6155515d6976828e9ba7ab9f92867a6e6155493d3024180c000000000000000000000000000007121d27323c465059626a72797f84888b8d8e8e8e8c8a86827c766f675e5d68737d88939d9d92887d72675d524854616d7a8794a0a093877a6d6154473b2e2e3b4854616e7a8794a0a094877a6d6154473b2e2115080013202c3946535f6c7980808080808080808080808080808080808080808080807e71707b86919b9b91867b70655a5047515a5f616262636465635c53483d37404a545f6a76828e9a9f93877b6e6255493c3023170a000013202c3946535f6c7980808080808080808080808080808080808080808080807e71707b86919b9b91867b70655a50453a454f5a646f79848e9993897e74697683909d9c8f8275695c4f4236291c0f03000000000000020d18232e38424c555e666d747a7f8386898b8c8c8c8c8b8a8784817b766f67616b76818c97a0958b80756a5f544a3f48535d68727d87929a90857b70727f8c99a09386796d6053463a2d2013070000000000000b1824313d4a5763707c8995a2aeaca093877a6e615549515b656f79838c96a0a49a90867c73695f554b42382e241a11070c1824303d4955626e7b8794a0adada094877b6e6155483c2f2316090000000e1b2834414e5a6773808d99a6b2a89b8e8275695c5043372a1e11050000000000000000000000000000000000000000000814212d3a46535f6c7985929eabafa296897c7063574a3d3124170b00000000000000000005111d2935404c5864707b87939faba79b8f83797979797979797979797979797979797979797979808c98a4ada1968a7e72665a4e43372b1f130700000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000b1825313e4a5763707d8996a29c9083776a5e524547535f6b77838f9ba6a5998e83786f66605c5a5a5b5e62676d747b838c9494897e7d8a96a39c8f8276695c55585d646c747e87919b9e93897e73685d52463b2f24180d010000000000000000000000050d141b22282d3135393b3d3f40404047525d67727d88929d9d93887d7368737e8a95a09d92887f77726f6e6f7278818a95a09d92877b6f63616d78848f9aa3988d837b74706e6e70757c858f9aa2978c8175695e52463a2d21150900000000000000000000000007121e2935404c57636e7a85919ca8aa9e92877b7171717171717171717171717171717171717d8a97a4b0a99c8f8275695f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a53493e33271b0f0300000000000000000000000000000915222e3a46535f6b7784909ca8aca093877b6e62564b57636f7c8895a1a89c8f83776a5e524539323f4b5763707c8895a1a89b8f83776a5e524d5a66727e8b97a4aea2968a7d7165594d4034281c0f03000000000000000000000000010d18232e39434e58626b747c848a9094979a9b9b9a9996938e88817970675e616c76818c96a1998f84796f64594e535f6c7985929fa195887b6f6256493c30303d4956626f7c8895a29f9285796c5f5346392d2013070013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b7e7169747f8a959f978d82776c61564d59636b6e6e6f7071716e655a4e413538424d5965727e8b97a3978a7d7164584b3e3225180c000013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b7e7169747f8a959f978d82776c61564c413d48525d67727c87919b90867b707683909d9c8f8275695c4f4236291c0f0300000000000008131e2a353f4a545e6770787f858b8f93959798999999989694918c8781797169656f7a85909b9c91877c71665b5045414b56606b75808a95978c8277727f8c99a09386796d6053463a2d2013070000000000000d1926333f4c5865727e8b98a4b1aa9d9184776b5e524649535d67717a848e98a2a2988e857b71675d534a40362c22190f0814212d3a46535f6c7885919eabafa396897d7064574a3e3124180b000000101c2936424f5c6875828e9ba8b2a6998c8073675a4d4134281b0f0200000000000000000000000000000000000000000005121f2b3844515d6a7784909da9b1a4978b7e7165584b3f3225190c000000000000000000010c1824303c47535f6b77838e9aa6ab9f93877b706c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7884909ca8a89d9185796d61564a3e32261a0f0300000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000d1a2733404c5966727f8b98a59a8d8174675b4f424a56636f7b8794a0aba094887c71675d55504d4d4f52565c6269717a828b9590857c8996a39c8f8275695c4f4c525a626b75808a949f9b9085796e63574c4035291d110600000000000000000000060f171f262d33383d4245484a4c4c4c4c4b4b56606b76818b96a19a8f847a6f6d78838e98a29a9189837e7b7b7b7e838a939c9f958b80756a5e5c68737e89939d9f958d86807c7b7b7d81868e97a19a90867b7064594d4135291d1105000000000000000000000000010d18242f3b46525d6974808b97a2ada3988c817569656565656565656565656565656565707d8a97a4b0a99c8f82756c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b655b4f44372b1f120500000000000000000000000000010d1925323e4a56626f7b8793a0aca89c9084776b5f524754606c7885919daa9f93867a6e6155493d36424e5a6773808c98a4a4988c8073675b4e4a56636f7b8894a0ada69a8d8175695c5044382b1f130700000000000000000000000007131e2935404b55606a747d868e959b9f9a96949495979b9e99928b837970665c656f7a858f9aa0968b80756b6055515e6a7783909ca3978a7d7164584b3f32333f4b5864717d8a97a39c9083776a5d5144382b1e12050013202c3946535f6c79869399999999999999999999999999999999999999988b7e71646d78838e999e93897e73685d525d69757a7b7c7d7d7e76695d504437333d4a5663707d8a96a3988c7f7265594c3f3326190c000013202c3946535f6c79869399999999999999999999999999999999999999988b7e71646d78838e999e93897e73685d52483d414b56606b75808a95978c82777683909d9c8f8275695c4f4236291c0f030000000000010d1824303b46515c667079828a91969b9c97949291919193959a9d98928b837b716769747e89949f988d82776d62574c41444f59646e79838e9893897e737f8c99a09386796d6053463a2d2013070000000000000e1b2734414d5a6773808d99a6b3a89b8e8275695c4f43414b555f68727c86909aa3a0978d83796f655c52483e342b21170d121e2b3744515d6a7683909ca9b1a5988b7e7265594c3f3326190d000000111d2a3744505d6a7683909da9b1a4988b7e7165584b3f3226190c0000000000000000000000000000000000000000000003101d2936434f5c6975828f9ba8b2a6998c807366594d4033271a0d0000000000000000000008131f2b37434e5a66727e8995a1ada4988c8074685f5f5f5f5f5f5f5f5f5f5f5f5f5f5f65717d8995a1ada4988c8074685d5145392d21160a0000000000000000000000000000000000000003131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000f1c2835424e5b6774818d9aa4978b7e7265584c404d5965727e8b97a3a89b8f83776b60554b43414142464b51585f687079838c968c818996a29c908376695c504348505a636d78838d98a1968b8074685d51453a2e22160a000000000000000000060f18212930383e44494e5154575859595958575459646f79848f9aa1968b81766b727c8690989f9b948e8a8888888b8f959c9e968d83796f645956616c77818b949c9f97918c898888898c9198a09a92887e74695e53483c3125190d010000000000000000000000000007131e2a35414c57636e7a85919ca8a99d92867a6f635858585858585858585858585863707d8a97a4b0a99c8f827979797979797979797979797979797979797979797979797979797979776c6053463a2d2014070000000000000000000000000004101d2935414e5a66727e8b97a3b0a5998c8074685b4f44505c6975818e9aa6a2968a7d7165594c403945525e6a76838f9ba8a195887c7063574b47535f6c7884919da9a99d9185786c6054483b2f23170a0000000000000000000000000c18232f3a46515c67717c868f98a09a938e8a8887888b90969d9d958b82786d635e68737e88939e9d92877c72675d525b6874818d9aa5998c8073675b4e423636424e5b6773808d99a69a8d8174685b4f4236291c10030013202c3946535f6c79869292929292929292949ca69e9592929292929292928b7e716467717c87929d9a8f84796f64595d69768388898a8a85786c6054494240414a5764707d8a96a3998c7f7266594c403326190d000013202c3946535f6c79869292929292929292949ca69e9592929292929292928b7e716467717c87929d9a8f84796f64594e4339444e59636e78838d9893897e7683909d9c8f8275695c4f4236291c0f03000000000005111d2935414c57636d78828b949b9d96908b888584848586898e949b9d958d83796f646d78828d989f94897e73695e53483d47525c67717c86919a8f857a7f8c99a09386796d6053463a2d2013070000000000000f1c2935424f5b6875828e9ba8b3a6998d8073675a4d4139434d57606a747e88919ba59f958b81776e645a50463d33291f15101c2935424f5b6875818e9ba7b3a69a8d8173675a4d4134271b0e010000121e2b3845515e6b7784919eaab0a3968a7d7063574a3d3124170b00000000000000000000000000000000000000000000000e1b2835414e5b6774818e9aa7b4a79a8d8174675a4e4134281b0e00000000000000000000030f1a26323e4a55616d7985919ca8a89d9185796d61555252525252525252525252525e6a76828e99a5ab9f93877b7064584c4034291d11050000000000000000000000000000000000000005131f2c3946525f6c7986929faca094877a6d6053473a2d201407000000000000000000000000101d2a3643505c6976828f9ca296897c7063564a424f5b6874818e9aa7a4988c7f73675b4f44393434363a3f464d565e67717a848e938e919aa59d9084776a5e51443e48515c66717c87929e9c9185796e62564a3e32261a0e0200000000000000040e18212a333b42494f555a5e6163656666666563615d5d68737d88939d9d92887d726a747d868e949a9e9a97959495979b9d99938c847b71675d52505b656f79828a91979c9c9896949496999d9b96908880766c62584d42372b2014080000000000000000000000000000020d1924303b46525d6974808b97a2aea3978c8074695d524b4b4b4b4b4b4b4b4b4b5763707d8a97a4b0a99d918786868686868686868686868686868686868686868686868686868686867a6d6053473a2d201407000000000000000000000000000814202d3945515d6a76828e9ba7aea195897d7064584c414d5965727e8a97a3a6998d8174685c50433c4955616d7a86929faa9e9185796c60544743505c6875818d99a6ada195887c7064574b3f33261a0e020000000000000000000005111d2834404c57626d78838e98a1999089827d7b7a7b7f848b949d9d948a7f74695e616c77818c97a1998e84796e63595965727e8a97a39c8f83776a5e52473c3c47525e6a77838f9ca3968a7e7165594c4033271a0e010013202c3946535f6c798686868686868686868a96a2988c8686868686868686867e7164606b75818b96a1968b80756b605b6773808c969694887c70655b534e4c4d515b67737f8c98a4988b7e7265584c3f3225190c000013202c3946535f6c798686868686868686868a96a2988c8686868686868686867e7164606b75818b96a1968b80756b60554a3f3d47525c66717b86909a8f847983909c9c8f8275695c4f4236291c0f0300000000000915222e3a46515d69747f8a949d9d948b857f7b797777787a7d8289929b9f958b80756966717c87919c9b90857a6f645a4f44404b55606a747f8a94968b807e8c98a09386796d6053463a2d201307000000000000101d2a3643505d697683909ca9b1a5988b7e7265594c3f323b454e58626c768089939da79d938980766c62584f453b31271e141a2734414d5a6773808d99a6b3a89b8e8275685b4f4235281c0f020000121f2c3945525f6b7885929eabafa296897c6f6256493c3023160900000000000000000000000000000000000000000000000d1a2734404d5a6673808d9aa6b3a89b8e8275685b4e4235281c0f00000000000000000000000a16212d3945515c6874808c97a3ada195897d72665a4e4646464646464646464b57636e7a86929eaaa69a8e83776b5f53473b3024180c00000000000000000000000000000000000000010613202c3946535f6c7986929faca094877a6d6053473a2d201407000000000000000000000000111e2b3744515d6a7784909da194877b6e61554844515d6a7683909ca9a295897c7063574b3e3327272a2e343c444c555f68727c87919b9ca3ab9e9285786c5f5246393f4a555f6b76818d98a1968a7e73675b4f43372b1e1206000000000000020c16202a333c454d545b60666a6d707273737371706d6965616c76818c96a1998f84796f6b747c83898e9295969898989694918d88817a72695f554b49535d67707880868c9093969798989796938f8b857e766d645a50463b30251a0f0300000000000000000000000000000007131e2a35414c58636f7a86919da8a89c91857a6e63574c403e3e3e3e3e3e3e4a5763707d8a97a4b0ada2989393939393939393939393939393939393939393939393939393939393877a6d6053473a2d201407000000000000000000000000000b1824303c4955616d7986929eaaaa9e9286796d6154483d4956626e7b8793a0a99d9184786c5f5347404c5865717d8a96a2a69a8e8275695d5044404c5965717d8a96a2afa4988c8073675b4f42362a1e1205000000000000000000000915212d3945515c68737f8a959f9c91877e77716e6d6f7379828b95a09b91867a6f635a65707a85909aa0958b80756a6056626e7b87939f9f93877b6f63584e49484e58636f7b87939f9f93877a6e6256493d3024180b0000131f2c3946525f6b7679797979797979797b8895a2978a7d7979797979797979786f6359646f7a858f9a9d92877c71675c64707c8894a0998d82776d645e5a595a5d636d77838f9ba295897c7063574a3e3124180b0000131f2c3946525f6b7679797979797979797b8895a2978a7d7979797979797979786f6359646f7a858f9a9d92877c71675c51463b404a555f6a747f8994968b80828f9c9c8f8275695c4f4236291c0f0300000000000c1925313e4a56626e7a85919b9f958b8179736f6c6b6a6b6d71778089949f9d92867a6e626a75808b95a0978c81766b60564b40434e58636d78828d9792877e8b98a09386796d6053463a2d201307000000000000111e2a3744515d6a7784909daab0a4978a7d7164574b3e31333c46505a646d77818b959fa59b92887e746a60574d43392f261c1926333f4c5966727f8c99a5b2a99c8f8275695c4f4336291c10030000131f2c3946525f6c7986929facaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000d192633404c596673808c99a6b3a89c8f8275685c4f4235291c0f000000000000000000000005111d2834404c58636f7b87939eaaa69a8e82766a5e53473b393939393939444f5b67737f8b97a3ada1958a7e72665a4e43372b1f13070000000000000000000000000000000002070b0e1014202d3a4653606d798693a0aca094877a6d6053473a2d201407000000000000000000000000121f2c3845525e6b7885919ea09386796d60534745525f6b7885919eaba093877a6d6154483b2f221a1d232a323a434d56606a75808a95a0abada093877a6d6154483b38434e5965707c88939f9b8f83776b5f53473b2e22160a00000000000009131e28323c454e575e666c71767a7c7e8080807e7c7976716b656f7a858f9aa0968b80766b6a71787d8285888a8b8b8b8a8885817c76706860574d44414b555e666e757b808487898a8b8b8a8987837f7a736c645b52493f342a1f140900000000000000000000000000000000020d1924303b47525e6975808c97a3ada2968b7f74685c51453a32323232323d4a5763707d8a97a4b0b4aaa3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094877a6d6053473a2d201407000000000000000000000000030f1b2734404c5865717d8996a2aea79b8e8276695d51453a46525f6b7784909ca8a094887b6f63564a434f5c6874818d99a5a3978a7e7265594d413d4955616e7a86939faba89c9083776b5f52463a2e211509000000000000000000000d1925313d4955616d7985909ba0958a7f756c65626163687079848f9aa2978c8074685d5e69737e89939e9c92877c71675c5f6b77838f9ba3978c80756a6059555558606974808b97a39a8e82766a5e52463a2d2115080000111e2a36434f5a646b6c6c6c6c6c6c6c6e7b8895a2978a7d716c6c6c6c6c6c6c6c675e535d68737e89939e998e83786d62606c78838e999e93897f766f6a676667696d757e8994a09d9286796d6154483b2f2216090000111e2a36434f5a646b6c6c6c6c6c6c6c6e7b8895a2978a7d716c6c6c6c6c6c6c6c675e535d68737e89939e998e83786d62584d4239434d58626d77828c979186828f9c9c8f8275695c4f4236291c0f0300000000000f1c2835414d5a66727e8a96a2998e83786f6863605e5d5e61666d77828d99a3978b7e7266636e79848f999d93887d72675c52473c47515c66717b8690988d828b98a09386796d6053463a2d201307000000000000111e2b3844515e6b7784919eaab0a3968a7d7063574a3d302a343e48525c656f79838d96a0a49a90867c72695f554b41382e241a25323f4b5865727e8b98a5b2a99d908376695d5043362a1d1003000013202c3946535f6c798693a0acaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f0000000000000000000000000c18232f3b47535f6a76828e9aa5aa9e93877b6f63574b3f332c2c2c303c4854606c7884909ba7a89c9185796d61554a3e32261a0e03000000000000000000000000000000060d13171b1c1e232f3c4855616e7b8794a1ada094877a6d6053473a2d201407000000000000000000000000131f2c3946525f6c7985929f9f9286796c5f534646535f6c7986929fac9f9286796c5f5346392d201312182028313b444e59636e79848f9aa6aea295897c6f63564a3d323d48545f6b77838f9b9f93877b6f63574b3e32261a0d0100000000040f1a25303a444e57606970777d8286898b8c8c8c8b8986827c766f68737e88939e9d92877d7267666c7276797b7d7e7e7e7d7b7975716b655e564e453b39434c545c63696f74777a7c7d7e7e7d7c7a77736e68625a524940372d22180d02000000000000000000000000000000000008131f2a36414d58646f7a86929da8a79c9085796d62564b3f34282525303d4a5763707d8a97a4b0b8afa9a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a094877a6d6053473a2d20140700000000000000000000000006131f2b3744505c6874818d99a5b0a3978b7e72665a4d4136434f5b6774808c99a5a3978b7e72665a4d46535f6b7884909da9a093877b6e6256493d3946525e6a77838f9ca8ac9f93877b6e62564a3d3125190d00000000000000000004101c2935414d5a66727e8a95a19b9084786d635a5554565e67727d8994a09c9185796d6157626c77828c97a2998e83786e635b66727e8a95a19c91867c726a656262646a727b86919ca095897d72665a4e42362a1e110500000e1a26323d48525a5e5f5f5f5f5f5f616e7b8895a2978a7d71645f5f5f5f5f5f5f5c554c56616c77828d979f958a7f74695e66727d88929c9b9188817b7674737375797f87909ba1978c8175695d5145392c20130700000e1a26323d48525a5e5f5f5f5f5f5f616e7b8895a2978a7d71645f5f5f5f5f5f5f5c554c56616c77828d979f958a7f74695e54493e3c46515b66707b8590988d88919d9c8f8275695c4f4236291c0f030000000000111e2b3744505d6975828e969795897d71675d5753515152555b66717d8995a29a8e8175685d67727d88939e998e84796e63584d433f4a545f69747e8993948f929ca09386796d6053463a2d201307000000000000121e2b3845515e6b7884919eabb0a396897c6f6356493d30232c36404a535d67717b858e98a2a2988e857a71675d534a40362c2225323e4b5864717e8b98a4b1aa9d9084776a5d5044372a1d1104000013202c3946535f6c7986939facaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926333f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f00000000000000000000000007131f2a36424e5a65717d8995a1aca3978b8074685c5044382c202935414d5965717c8894a0aca4988c8074685d5145392d21160a0000000000000000000000000000000810181e2327292a2d343f4b5764707d8996a2aca09386796d6053473a2d20140700000000000000000000000013202c3946535f6c7986929f9f9285786b5f52454653606d798693a0ab9e9285786b5e5245382c1f12060e161f29323c47515c67727e8995a0aca4978b7e7265584c3f3337434f5b66727e8b97a3988b7f73675a4e4235291d1004000000000a15202c36414c566069727a82898e9296989999999895928d888179716c77818c97a1998e84796e646166696d6f70717171706f6c6965605a534c443c33313a424a52585e63686b6e7071717171706e6b67625d57504840372e251b1106000000000000000000000000000000000000020e1925303c47535e6975818c97a3ada1968a7e73675c5045392e2224303d4a5763707d8a97a4b0b0a69d9999999999999999999999999999999999999999999999999999999994877a6d6053473a2d2014070000000000000000000000000a16222f3b4753606c7884919da9aca094877b6f62564a3e333f4c5864707d8995a2a79b8e8276695d514a56626f7b8794a0a89c9084776b5f52463a36424e5b6773808c98a4afa3978b7e72665a4d4135291c100400000000000000000713202c3845515d6a76828e9aa3978b7f73675c5149474c56616c7884909ca195897d7165595b65707b85909b9f958a80756a60626d79848f9aa3988e857c75716f6f70757b848d98a29a8f84786d61554a3e32261a0e0100000a16212c3640484e52525252525255616e7b8895a2978a7d716457525252525252504b45505b65707b86919b9b90867b7065616b76808a939b9a938c878381808082858a9199a1998f857b6f64594d4135291d100400000a16212c3640484e52525252525255616e7b8895a2978a7d716457525252525252504b45505b65707b86919b9b90867b70655a4f453a3f49545e69737e889397959aa39c8f8275695c4f4236291c0f030000000000131f2c3946525f6b788588898a8c85786c60554c474544454955616d7a8693a09c9083766a5d616b76818c97a0958a80756a5f54493f434d58626c77828c969b9da4a09386796d6053463a2d201307000000000000121e2b3845515e6b7885929eabb0a396897c6f6356493c3023242e38414b555f69737c86909aa4a0968d83796f655c52483e342a24313e4b5764717e8b98a4b1aa9d9084776a5d5044372a1d11040000131f2c3946525f6c7986929facafa295887b6f6255483c2f22160900000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275685b4f4235291c0f000000000000000000000000020e1a26313d4955616c7884909ca8a89c9084786c6054493d31252e3a46515d6975818d99a5ab9f93877b6f64584c4034281d1105000000000000000000000000000007111a22292f333637393d45505b6773808c98a5aa9e9184786b5f5245392c1f130600000000000000000000000013202c3946535f6c798693a09f9285786b5f52454653606d798693a0ab9e9285786b5e5145382b1e1205040d17202b35404b56616d78848f9ba7a69a8d8174675b4e4235323e4a56626e7a87939f9b8f83766a5e5145382c201307000000040f1b26323d48535e68727b848c949a9e9c98969696989c9e99938b837a71707a85909aa0958b80756b60595d6062646565656462605d59544f49423a322a28303840474d53575b5f61636465656463615e5b57524c453e362e251c1309000000000000000000000000000000000000000008141f2b36414d58646f7b86929da9a79b9084786d61564a3f332824303d4a5763707d8a97a4b0ab9f948c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877a6d6053473a2d2014070000000000000000000000010e1a26323f4b57636f7c8894a0ada99c9084786b5f53463a303c4854616d7986929eaa9e9285796d60544d5966727e8b97a3a5998c8074675b4f4336323f4b5764707c8995a1ada79a8e8276695d5145382c20140800000000000000000916222f3b4854616d7986929ea094877b6f63574b403b44505c6874808c99a5998d8174685c545e69747e89949e9c91877c71665c68737e88939ca0978e87817d7b7b7d81868d969f9c92887d72675c5045392d21150900000004101a242e363d4245464646464855616e7b8895a2978a7d7164574a4646464645443f3e49545f69747f8a959f978c82776c61646e78818a91989d97938f8d8c8d8e91969b9d978f877d73695e53483c3025190c00000004101a242e363d4245464646464855616e7b8895a2978a7d7164574a4646464645443f3e49545f69747f8a959f978c82776c61564b4138424d57626c77818c96a1a5a59c8f8275695c4f4236291c0f030000000000131f2c3946525f6b767a7b7c7d7e8076695d50443a38373945525f6b7885929f9d9184776a5d5a656f7a85909b9c91867b71665b50453b46505b65707a858f9a9f9f9f9386796d6053463a2d201307000000000000121e2b3844515e6b7784919eabb0a396897d7063564a3d30231c262f39434d57616a747e88929ca59f958b81776d645a50463c3329323e4b5865717e8b98a5b1aa9d9083766a5d5044372a1d11040000121f2c3845525f6b7885929eabafa296897c6f6356493d3023160a00000000000000000000000000000000000000000000000e1a2734414d5a6773818d9aa6b3a89b8e8275685b4e4235281b0f000000000000000000000000000915212d3844505c6873808b97a3aca095897d7165594d41352a323e4a56626e7a86929da9a69a8e82766b5f53473b3024180c0000000000000000000000000000030e19232c343b40424345494f57616d7884909ca8a69a8e8275695c5043372a1e110400000000000000000000000013202c3946525f6c7986929f9f9285786b5f52454653606c798693a0ab9e9285786b5f5245382c1f120500050f19242e3945505b67737e8a96a2a89c8f83766a5d5144382e3a46525e6b7783909c9f9286796d6154483b2f2216090000000814202c37434e59646f7a848d969e9d96908c8a898a8c91979e9d958c83796e737e89939e9c92877c72675c52545657585858575553504d48433d373028201e262e353c42474b4f525556575858575654524f4b46413a342c241c130a010000000000000000000000000000000000000000030e1925303c47535e6a75818c98a3aca095897e72675b5044382d24303d4a5763707d8a97a4b0a99c8f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6d6053473a2d201407000000000000000000000005111d2a36424e5b6773808c98a4b0a5998d8174685c4f43372c3845515d6a76828e9ba7a195897c706457505d6975828e9aa7a195897d7064584b3f332f3b4854606c7985919eaaaa9e9286796d6155483c3024170b00000000000000000c1825313e4a5763707c8995a29d9184786b5f53463a333f4b5864707d8996a29d9084776b5f5257626d77828d98a2988e83786d63616c76818a939ba098928d8a8888898c91989f9b938a80766b61564a3f34281c11050000000008121c242c3236383939393b4855616e7b8895a2978a7d7164574a3e39393939373437424d58636d78838e999e93887d73685d666f7780878d92979a9c9a99999b9c9a96918c857d746b61574d42372b2014080000000008121c242c3236383939393b4855616e7b8895a2978a7d7164574a3e39393939373437424d58636d78838e999e93887d73685d52473d3b45505a656f7a848f989898988f8275695c4f4236291c0f030000000000111e2a37434f5a646b6d6e7071727370665a4e413c3c3d3f45525f6b7885929f9d9084776a5d535e69747e89949f988d82776c62574c413f49535e68737d88929292929286796d6053463a2d201307000000000000111e2b3744515e6a7784919eaab0a3978a7d7063574a3d3124171e27313b454f58626c76808a939da79d938980766c62584e453b31323f4c5965727e8c98a5b2a99c908376695d5043362a1d10030000121e2b3844515e6b7784919eaab0a3978a7d7064574a3e3124180b00000000000000000000000000000000000000000000010f1c2835424e5b6874818e9ba7b3a79a8d8174675a4e4134271b0e0000000000000000000000000004101c28343f4b57636f7a86929eaaa5998d82756a5e52463a2e37434f5b67727e8a96a2ada1958a7e72665a4e42372b1f130700000000000000000000000000000914202a353e464c4f5052555a6169737e8995a0aca1968a7e7266594d4134281b0f02000000000000000000000000121f2c3945525f6c7885929f9f9286796c5f534646525f6c7985929fac9f9286796c5f5346392d201306000007121d28343f4b56626e7a86929eaa9f9286796d6054473b2e36424f5b6774808d99a295897c7063574a3e3125180b0000000c1925313c48545f6b76818b969f9d948b85807d7c7d80858c959e9e958b80756c77828c97a2998e83796e63594e494a4b4b4b4a494744413d38322c251e16141c242a30363b3f4346484a4b4b4b4b4a4846423f3a352f29221a120a010000000000000000000000000000000000000000000008141f2b36424d5964707b87929ea9a69a8f83786c6155493e3227303d4a5763707d8a97a4b0a99c8f82757272727272727272727272727272727272727272727272727272727271695d5145392c20130600000000000000000000000915212d3946525e6a77838f9ba8aea295897d7164584c40332935414e5a66727e8b97a4a5988c8073675b54606c7985919eaa9e9286796d6154483c2f2c3844505d6975828e9aa7aea295897d7164584c4033271b0f03000000000000000d1a2733404d5966727e8b98a49b8e8275695c5043372f3c4855616e7a8793a0a093877a6d6154505b66707b86919b9f958a7f746a5f656f78818991979c9d9996959596999d9c97918981786e645a4f44392e23170c0000000000000a121a21262a2c2c2c2e3b4855616e7b8895a2978a7d7164574a3e312c2c2c2b28313b46515c67717c87929d9a8f84796f645d656e757c82878b8e9091929291908d8a86817a736b625950453b30251a0f0300000000000a121a21262a2c2c2c2e3b4855616e7b8895a2978a7d7164574a3e312c2c2c2b28313b46515c67717c87929d9a8f84796f64594e43383e49535e68737d888c8c8c8c8c8275695c4f4236291c0f0300000000000e1a26323e48525a5f616263646567655e5449484848494b4f56626e7a8793a09b8f8275695c4f57626d78828d989f94897e73685e53483d424c57616c7681858585858585796d6053463a2d201307000000000000111d2a3744505d6a7683909da9b1a4978b7e7164584b3e322518151f29333d46505a646e78818b959fa59b91887e746a60574d433933404d596673808c99a6b2a89c8f8275695c4f4236291c10030000111d2a3743505d697683909ca9b1a4988b7e7265584c3f3326190d0000000000000000000000000000000000000000000004111d2a3743505d6976838f9ca9b2a5998c807366594d4033261a0d00000000000000000000000000000b17232f3b46525e6a76828d99a5aa9e92867a6e62564b3f333c48535f6b77838f9ba7a89c9185796d61554a3e32261a0e0200000000000000000000000000000d1925313c4650575c5d5e61656b737b85909aa6a59a9085796d6156493d3125190c00000000000000000000000000121f2b3845515e6b7885919ea09386796d60534745515e6b7784919eaaa093877a6d6154473b2e2115080000000c17232e3a46525e6a76828e9ba7a195887c6f63564a3e31333f4c5864717d8a96a3988b7e7266594c4033271a0d010004101d2935414d5965707c87929da0958b827a74706f70747a838c96a19c92877b6f707b85909ba0958a80756a60554a403e3e3e3e3c3a3834302c27211b140c0a12191f252a2f3336393b3d3e3e3e3e3d3b3936332e29241e171008000000000000000000000000000000000000000000000000030e1a25313c48535f6a75818d98a3aba094897d71665a4f43382c303d4a5763707d8a97a4b0a99c8f827569656565656565656565656565656565656565656565656565656565655f574c4135291d110400000000000000000000000c1825313d4956626e7a87939fabab9e9286796d6155483c3025323e4a56636f7b8894a0a89c8f83776a5e5763707c8895a1a79b8e8276695d5145382c2835414d5966727e8b97a3afa5998d8174685c4f43372b1f1206000000000000000f1c2835424e5b6874818d9aa6998c8073665a4d41342d3946525f6b7885919ea295897c6f63564a545f69747f8a949f9c91867b71665d666f777f868c909497989999989794918c867f776f665c52483d33281d110600000000000000080f151a1d1f1f222e3b4855616e7b8895a2978a7d7164574a3e31241f1f1e1f2a353f4a55606b75818b96a1968b80756a605c636a70767b7e81838585858483817e7a756f68615950473e34291f140900000000000000080f151a1d1f1f222e3b4855616e7b8895a2978a7d7164574a3e31241f1f1e1f2a353f4a55606b75818b96a1968b80756a60554a3f37414c56616b767e7e7e7e7e7e7e75695c4f4236291c0f0300000000000a16212c3740484f5354555657595a5953535555555556585b6068737e8a96a2978b7f73665a4d505b66717c87919c9b90857a6f645a4f443a454f5a646f78787878787878766b5f5246392c201306000000000000101d2936434f5c6975828f9ca8b2a5988c7f7266594c4033261a0d17212b353e48525c666f79838d97a1a39a90867c72695f554b4137424e5b6774818e9aa7b4a79a8e8174685b4e4135281b0f0200000f1c2935424f5b6875828e9ba7b3a6998d8073675a4e4135281c0f030000000000000000000000000000000000000000000713202c3945525e6b7884919daab0a4978b7e7164584b3e3225180c000000000000000000000000000007121e2a36424d5965717d8994a0aca2978b7f73675b4f4337404c5864707c88949faba3988c8074685c5145392d21150a000000000000000000000000000000111d2936424d5862686a6b6e71767d858e97a1a59c93897e73685c5145392d21150900000000000000000000000000111e2b3744515d6a7784909da194877b6e61554843505d6976838f9ca9a195887b6f6256493d3023170b00000006121d2935414e5a66727e8b97a4a4988b7e7266594d4034303c4955626e7b8894a19a8d8174685b4e4235281c0f02000714202c3945515d6975818d98a49a8f8479706864636469707a85909ba3988c807469747e89949e9c91877c71675c51473c323231302e2b2824201b1610090200070e141a1f23272a2d2f3031323231302f2d2a26221e19130c0600000000000000000000000000000000000000000000000000000914202b37424e5965707b87929ea9a59a8e83776b6054493d32303d4a5763707d8a97a4b0a99c8f8275695c595959595959595959595959595959595959595959595959595958544e453b3025190d010000000000000000000004101c2834414d5965727e8a96a3afa79b8f82766a5d5145392c222e3a47535f6c7884909da99f93867a6e615a6773808c98a4a3978b7e72665a4d41352925313d4a56626f7b8793a0aca99d9084786c5f53473b2e22160a00000000000000101d2a3643505d6976838f9ca4988b7e7165584b3f322a3744505d6a7683909ca4978a7e7164584b4d58626d78838d98a2988d83786d625d666d747b8084888a8c8c8c8c8a8884807b746d655d544a40362c21160b000000000000000000040a0e111215222e3b4855616e7b8895a2978a7d7164574a3e312417131218232e39444e59646f7a858f9a9d92877c71665c595f656a6e727577787878787674716e69645e574f473e352c22180d020000000000000000040a0e111215222e3b4855616e7b8895a2978a7d7164574a3e312417131218232e39444e59646f7a858f9a9d92877c71665c51463b3a454f5a646e727272727272726e65594d4134281b0f02000000000005101a252e373e434647484a4b4c4d4e575f626262626364676b727a858f9b9c91867b6f63574a4a545f6a75808b95a0968c81766b60554b403e48535d666b6b6b6b6b6b6b6a645a4f43372a1e11050000000000000f1b2835424e5b6874818e9aa7b3a79a8d8174675b4e4235281c0f0f19232c36404a545d67717b858f98a2a2988e847a71675d53494043505d6976828f9ca8b2a6998c8073665a4d4034271a0e0100000e1b2734414d5a6673808c99a6b2a89b8f8276695d5044372b1e12060000000000000000000000000000000000000000000a16232f3b4854616d7a8693a0acaea295897c6f63564a3d3024170a0000000000000000000000000000020e1925313d4954606c78848f9ba7a79b8f83776c6054483c45515d6974818c98a4ab9f93877b6f63584c4034281d1105000000000000000000000000000000121f2c3945525e6a7476787a7d82888f97a0a29b938a81776c62574b4034291d110500000000000000000000000000101d293643505c6976828f9ca295897c6f635649424e5b6874818e9aa7a3978a7d7164584c3f33261a0e010000010d1925313e4a56636f7b8894a1a79a8e8275695c5043372d3a4753606c7986929f9c8f8376695d5043372a1d1104000a17232f3c4855616d7986929ea195897d72675e5756585e68737e8a96a29d9185786c6d77828d97a2988e83786e63584e43382e2423211f1c1814100a050000000003090e13171b1e202224242525252422201d1a16120d0701000000000000000000000000000000000000000000000000000000030f1a26313c48535f6a76818d98a4ab9f94887c71655a4e4337303d4a5763707d8a97a4b0a99c8f8275695c4f4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c49433c33291e130800000000000000000000000713202c3844515d6975828e9aa6b0a4978b7f72665a4e4135291e2b3743505c6874818d99a6a2968a7d71655e6a76838f9ba8a094877b6f63564a3e3125212e3a46535f6b7784909ca9aca094887b6f63574a3e32261a0d01000000000000111e2b3844515e6a7784919da3978a7d7064574a3d312936424f5c6875828f9ba5988c7f7266594c46515b66717b86919c9f948a7f74695f5c63696f74787b7d7e80807f7d7b78746f69635b534b42382e241a1005000000000000000000000000000815222e3b4855616e7b8895a2978a7d7164574a3e3124170b07121c27323d48525d68737e89939e998e83786d625754595e6266686a6b6b6b6b6a6865625d58534c453d352c231a1006000000000000000000000000000815222e3b4855616e7b8895a2978a7d7164574a3e3124170b07121c27323d48525d68737e89939e998e83786d62574d42373d48525c6365656565656565635c53483d3125190c0000000000000009131c252c3237393a3c3d3e3f485460696f6f6f6f6f7173777d848d969c948a80756a5e5247434e58636e79848f999d92887d72675c51473c414b545b5f5f5f5f5f5f5f5e5a52483e32271b0e020000000000000d1a2733404d596673808c99a5b2a89c8f8276695d5044372b1e1207111a242e38424c555f69737d87909aa4a0968c83796f655b524846525f6b7884919eaab1a4978b7e7165584c3f3226190c0000000c1926323f4b5865717e8a97a3b0aa9e9185786c5f53473a2e22160a0000000000000000000000000000000000000000020e1a26323f4b5764707c8995a2aeaca093877a6d6154483b2e2215090000000000000000000000000000000915202c3844505b67737f8b96a2aca094887c7064584d414a55616d7985919da9a69a8e82766b5f53473b2f24180c0000000000000000000000000000000013202c3946535f6c798384878a8e93999f9b96908981786f655b50453a2f23180c00000000000000000000000000000f1c2835424e5b6874818e9aa3978a7d7164584b404c5966727e8b98a4a6998d8074675b4e42362a1d11050000000915222e3a4753606c7885919eaa9d9184786b5f53463a2d3845515e6b7784919d9e9184776b5e5145382b1f1205000d1926323f4b5864707d8995a29d9185796d61564c494c57626e7a86929fa195887c7066707b86909b9f958a80746a5f554a3f352a1f15120f0c0804000000000000000002070b0e1114161718181818171514110e0a06010000000000000000000000000000000000000000000000000000000000000914202b37424e5965707c87939eaaa4998d82766b5f54483c313d4a5763707d8a97a4b0a99c8f8275695c4f423f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d38322a21170d0200000000000000000000000b17232f3c4854606d7985919eaaaca094887b6f63564a3e32251b2734404c5865717d8a96a2a6998d817468616d7a86929fa99d9084786b5f53473a2e221e2a37434f5b6874818d99a5b0a4988b7f73675a4e4236291d1105000000000000121f2c3845525f6b7885929ea296897c6f6356493d302835414e5b6774818e9ba69a8d8073675a4d404a545f6a747f8a959f9b90867b70665b585e63686c6f7172737372716f6c68635e58514941392f261d130800000000000000000000000000010815222e3b4855616e7b8895a2978a7d7164574a3e3124170b000b16202b36414c56616c77828d979f948a7f74695e534e5256595c5d5e5f5f5e5d5b5955514d47413a332b231a110800000000000000000000000000010815222e3b4855616e7b8895a2978a7d7164574a3e3124170b000b16202b36414c56616c77828d979f948a7f74695e53493e36404a51575858585858585857524a41372c20150900000000000000010a131b21272b2d2e2f30313e4b5864717b7b7b7b7c7d8083888e9698928a82786e63594d423c47525d67727d88939d998e84796e63584d4239424a4f52525252525252514e4840362c21160a000000000000000c1825323e4b5864717d8a97a3b0aa9e9185786c5f53473a2e22150909121c26303a434d57616b747e88929ca69e958b81776d645a504955616e7a8793a0acaea295897c7063564a3d3124170b0000000a1724303d4956626f7b8894a1adada094887b6f63564a3e32261a0e030000000000000000000000000000000000000007121e2a36424e5b6773808c98a5b1a99d9084776b5e5245392c20130700000000000000000000000000000004101c27333f4b57626e7a86929da9a4998d8175695d51454e5a66727e8a96a1ada195897d72665a4e42372b1f13070000000000000000000000000000000013202c3946535f6c79869193969a9f9a938f8b857f776f665d53493e34291e120700000000000000000000000000000d1a2733404d5966727f8c98a5998c8073665a4d414a57636f7c8895a1a89c9083776a5e52463a2e22160a00000006121f2b3744505d6976828f9ca8a094877b6e6255493d303743505d697683909c9f9285796c5f5246392c201306000f1b2834414e5a6773808c99a59b8e8275695d50443c46525e6a76838f9ca4988b7f726669747f8a949f9c91867b71665c51463c31261c11060000000000000000000000000000020507090a0b0b0b0b0a09070501000000000000000000000000000000000000000000000000000000000000000000030f1a26313d48545f6b76828d99a4aa9e93877b7065594d42363d4a5763707d8a97a4b0a99c8f8275695c4f4236323232323232323232323232323232323232323232323232302c2720180f050000000000000000000000020e1b27333f4b5864707c8995a1ada99d9084786c5f53473a2e221824303c4955616d7a86929fa99c9084776b64717d8996a2a5998d8174685c4f43372b1e1b27333f4c5864717d8996a2aea79b8f83766a5e5245392d211508000000000000131f2c3946525f6c7986929fa295887c6f6255493c2f2734414d5a6774818d9aa79a8e8174675a4d41434d58636e78838e98a2988d82776d625753585c5f62646566666564625f5c58534d463f372f261d140b010000000000000000000000050a0d0f15222e3b4855616e7b8895a2978a7d7164574a3e3124170b00040f1a242f3a45505b65707b86919b9b90867b70655a4f464a4d4f5152525251504f4c4945413c36302921191108000000000000000000000000050a0d0f15222e3b4855616e7b8895a2978a7d7164574a3e3124170b00040f1a242f3a45505b65707b86919b9b90867b70655a4f453a3840464a4c4c4c4c4c4c4c4b4740382f251a0f040000000000000000010910161b1e20212225323e4b5865717e888888898a8c8f9493908c8780786f665c52473c35404b56616b76818c97a0958a80746a5f54493e383f434545454545454545423d362e241a1005000000000000000a1723303c4955626f7b8894a1adada094887b6f62564a3e3125190d020a141e28313b454f59626c76808a949da79d938980756c62584e5865717d8a96a2afac9f93867a6d6154483b2f2215090000000815212e3a4753606c7885919eaab0a3978b7e73665a4e42372b1f1409000000000000000000000000000000000000020d18232f3b47525e6b77838f9ba8b2a69a8d8175685c4f43362a1d1104000000000000000000000000000000000b17232e3a46525e6975818d99a4a99d9185796e62564a535f6b76828e9aa6a89c9185796d6155493e32261a0e020000000000000000000000000000000013202c3946535f6c798693a0a2a69f9388837f7a746d655d544b41372d22170c0100000000000000000000000000000c1825323e4b5764707d8a96a39b8e8275695c50434754606d7985929eaa9f93877a6e62564a3e32271b10040000030f1c2835414e5a6774818d99a6a3968a7d7165584c3f3335424f5c6875828f9ba09386796d6053473a2d20140700101d2936434f5c6975828f9ba5988c7f73665a4d4135424e5b6774808d99a69a8e817468626d78838d98a3988d83786d62584d43382d23180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c37434e5a65707c88939eaaa4988d81756a5e53473c3d4a5763707d8a97a4b0a99c8f8275695c4f423629262626262626262626262626262626262626262626262524201b150e0600000000000000000000000006121e2a37434f5b6874808c99a5b1a5998d8174685c5043372b1e14202d3945525e6a76838f9ba8a093877b6e6774808c99a5a296897d7165584c4033271b1723303c4855616d7986929eabab9f93867a6e6255493d3124180c00000000000013202c3946535f6c798693a0a295887b6f6255483c2f2734404d5a6773818d9aa79b8e8174675b4e413c47515c67717c87919c9e94897e74695e544c5053565759595959585653504c47423b352d261d140b0200000000000000000000030a11161a1c1c222e3b4855616e7b8895a2978a7d7164574a3e3124170b000008131e29333e49545f69747f8a959f978c81766c61564b40404244454545454442403d3935302b251e170f070000000000000000000000030a11161a1c1c222e3b4855616e7b8895a2978a7d7164574a3e3124170b000008131e29333e49545f69747f8a959f978c81766c61564b4036353a3e3f3f3f3f3f3f3f3e3b362f261d13090000000000000000000000050a0f1213141825323e4b5865717e8b959596979990898784817b756e665d544a40362f39444f5a656f7a85909b9c91867b70665b50453a3337383838383838383836322c241c120800000000000000000814212e3a4753606c7885919eaab0a3978b7e72665a4e42362a1e1307020c161f29333d47515a646e78828c959fa59b91887e746a60565c6874818d99a5b2a99c9084776b5e5245392c20130700000006121f2b3844505d6975828e9aa6b3a79b8f83776b5f53473c30251a0f05000000000000000000000000000000000009131e2934404b57636f7b87939fabafa3968a7e7265594c4034271b0e020000000000000000000000000000000006121e2935414d5965707c8894a0aba2968a7e72665a4f57636f7b87939faba3988c8074685c5045392d21150a000000000000000000000000000000000013202c3946535f6c7986939da0a49f938884807a746d655d544b41372d22170c0100000000000000000000000000000a1623303c4955626e7b8794a09d9184786b5f524644515d6975828e9aa6a3978a7e72665a4f43372c21160b0100000d1926333f4c5965727e8b98a5a6998d8174685b4f423635414e5b6774818e9ba094877a6d6154473a2e21140700111e2b3744515e6a7784909da4978a7d7164574b3e333f4c5865727e8b98a49c908376695d66717b86919c9f948a7f746a5f544a3f342a1f140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26323d4954606b76828d99a4a99e92877b6f64584d413d4a5763707d8a97a4b0a99c8f8275695c4f4236291c191919191919191919191919191919191919191919191714100a04000000000000000000000000000916222e3a46535f6b7784909ca8aea2968a7d7165584c4033271b111d2936424e5a67737f8c98a4a3978a7e716a7783909ca89f92867a6d6155493c30241714202c3945515d6a76828f9ba7afa2968a7d7165594d4034281c0f03000000000013202c3946535f6c798693a0a295887b6f6255483c2f2734404d5a6773818d9aa79b8e8174675b4e4135404a55606a75808a95a09b90867b70655b504547494b4c4c4c4c4b494744403b36302a231c140b0200000000000000000000040d151c22262829282e3b4855616e7b8895a2978a7d7164574a3e3124170b0000010c17222d37424d58636d78838e999e93887d72685d52473c363738383838373533312d29251f1a130d050000000000000000000000040d151c22262829282e3b4855616e7b8895a2978a7d7164574a3e3124170b0000010c17222d37424d58636d78838e999e93887d72685d52473c322e3132323232323232312f2a241d140b010000000000000000000000060c1216191b1c25323e4b5865717e8b9898999a9a8d827f7b76706a645c544b42382e28333d48535e69737e89949f988d82776c61574c41362b2c2c2c2c2c2c2c2b2a26211a120a00000000000000000006121f2b3744505d6975828e9ba7b3a79a8e82766a5e52463b2f24180e03040e17212b353f48525c667079838d97a1a39990867c72685f606c7884919da9b2a5998d8174685b4f43362a1d1104000000030f1c2834414d5966727e8a96a3afab9f93877b6f64584d42372c21170d0400000000000000000000000000000008111b25303b46515c6874808b97a3afab9f93867a6e6256493d3124180b0000000000000000000000000000000000010d1925313c4854606b77838f9ba7a69b8f83776b5f535c6874808c98a3aa9f93877b6f63584c4034281c1105000000000000000000000000000000000013202c3946535f6c79868f9194989c9a93908b857f776f665d53493e34291e120700000000000000000000000000000814212d3a46535f6c7885919ea093877a6e625549414d5965727e8a96a2a79b8f83776b5f54493d32271d130a02000b1824313e4b5764717d8a97a4a99c9083776a5e52453934414e5a6774818e9aa194877b6e6154483b2e21150800121f2c3845525f6b7885929ea296897c6f6356493d313e4a5764707d8a97a39e9184776b5e5f6a747f8a959f9b91867b71665b50463b31261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c37434e5a65717c88939faaa3978c8175695e52473d4a5763707d8a97a4b0a99c8f8275695c4f4236291c0f0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b08040000000000000000000000000000010d1925323e4a56636f7b8794a0acab9f92867a6d6155493c3024180d1a26323e4b57636f7c8894a1a69a8d81746d7986929fa79b8f83766a5e5145392d2014101d2935424e5a66737f8b98a4b0a69a8d8175695c5044382c1f1307000000000013202c3946535f6c7986929fa295887b6f6255483c2f2734404d5a6773818d9aa79a8e8174675b4e413439434e59636e79838e99a2978c82776c62574c423c3e3f40403f3e3d3a37342f2b251f18110a0200000000000000000000030d161f272d32353635313b4855616e7b8895a2978a7d7164574a3e3124170b00000005101b26313b46515c67717c87929d9a8f84796e64594e43382d2c2c2c2b2a292724211d19140e08020000000000000000000000030d161f272d32353635313b4855616e7b8895a2978a7d7164574a3e3124170b00000005101b26313b46515c67717c87929d9a8f84796e64594e43382d252525252525252525221e19120b0200000000000000000000000810171e222627292a323e4b5865717e8b8b8b8c8e91948f8b87827b746b62594e44392e232c37414c57626d77828d989e94897e73685d53483d32271f1f1f1f1f1f1f1d1a150f0800000000000000000000030f1c2835414d5a66727e8b97a3afaa9e92867a6e63574c40352a1f150b02050f19232d36404a545e68717b858f99a3a2988e847a716765717d8995a1adaea296897d7165584c4033271a0e02000000000c1925313d4a56626e7a86929eaaafa3988c8075695e53483d33291f160e070100000000000000000000000309111a232d37414c57626d7985909ca8b2a69a8e82766a5e5246392d2115080000000000000000000000000000000000000814202c37434f5b67737e8a96a2ab9f93877b6f6458616d7884909ca8a69a8e82766a5f53473b2f23180c00000000000000000000000000000000000013202c3946535f6c79818284878c91979f9c97908981786f655b50453a2f23180c000000000000000000000000000005121e2b3744505d6975828e9ba3968a7e7165594d404955616d7985919da89f93887c70655a4f44392f251c140e0c0d1824313e4a5764717d8a97a4ab9f93867a6d6154483c34414d5a6774818e9aa194887b6e6154483b2e2115080013202c3946535f6c7986929fa295887b6f6255493c303d495663707c8996a39e9285786b5e58636d78838e98a2988d82776d62584d42382d22180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26323d4954606b77828e99a5a89d91867a6e63574c404a5763707d8a97a4b0a99c8f8275695c4f4236291c0f0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0c0a0703000000000000000000000004111d2935414e5a66727e8b97a3b0a79b8f83766a5e5145392d20140a16222f3b4753606c7885919da99c908477707c8995a2a4988b7f73675a4e4235291d110d1926323e4a57636f7b8894a0adaa9d9185796c6054483b2f23170a0000000000131f2c3946525f6c7885929fa296897c6f6255493c2f2734414d5a6774818e9aa79a8d8174675a4d4134323c47525c67727c87929c9e93897e73695e53493e333233333232302e2b28241f1a140e070000000000000000000000000a151f2831383e4243413d3b4855616e7b8895a2978a7d7164574a3e3124170b0000000009141f2a353f4a55606b75818b96a0968b80756a60554a3f34291f1f1f1e1c1a1815110d0803000000000000000000000000000a151f2831383e4243413d3b4855616e7b8895a2978a7d7164574a3e3124170b0000000009141f2a353f4a55606b75818b96a0968b80756a60554a3f34291f1919191919191816130e0801000000000000000000000007111a22292e32343536383e4b5865717e7e7e7e7f81858a9097938d867d746a60554a3f342825303b46505b66717c87919c9a90857a6f64594f44392e23181212121212110e09040000000000000000000000000c1925313e4a56626e7b87939fabafa3978b8074685d51463c31271d140b0307111b252e38424c565f69737d87919aa4a0968c83796f6b76828d99a5b1a99d9285796d6155493c3024170b00000000000915212d3a46525e6a76828e99a5b1a89d91867a6f645a4f453b31282019120d08050201000000010306090e141b232c353f49535e68737e8a96a1adada1968a7e72665a4e42362a1d1105000000000000000000000000000000000000030f1b27333f4a56626e7985919da9a4988c8074685c65717d8995a1ada195897d72665a4e42362b1f1307000000000000000000000000000000000000121f2c3845515d69727475787b80868d959ea29b938a81776c61574b4034291d110500000000000000000000000000030f1c2834414d5a66727e8b97a49a8d8175695c504445515d6974808c97a3a4998d82766b60554b41372e251e1a18191e2733404c5865727e8b98a4aea295897d7064574b3e34414e5b6774818e9aa194877a6e6154473b2e2114080013202c3946535f6c798693a0a295887b6f6255483c303c4956636f7c8996a29f9285786b5f525c66717c87919c9f94897e74695f54493f34291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c38434f5a66717d88949faba2978b8074685d51464a5763707d8a97a4b0a99c8f8275695c4f4236291c1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1917130e08010000000000000000000814202d3945515d6a76828e9ba7b0a4988b7f73665a4e4235291d1106131f2b3844505c6975818d9aa69f93877a737f8c98a5a194887c6f63574b3e3226190d0a16222e3b4753606c7885919da9ada195887c7064574b3f33271a0e0200000000121f2b3845525e6b7885919ea396897c7063564a3d302835424e5b6874818e9ba6998c807366594d40332b35404b55606b75808b95a09b90857a70655a50453a302626262523211f1b17130e090300000000000000000000000004101b26313a434a4e4f4e49424855616e7b8895a2978a7d7164574a3e3124170b00000000030d18232e39444e59646f7a848f9a9c92877c71665b51463b30251a1211100e0b080501000000000000000000000000000004101b26313a434a4e4f4e49424855616e7b8895a2978a7d7164574a3e3124170b00000000030d18232e39444e59646f7a848f9a9c92877c71665b51463b30251a100c0c0c0c0b0a0602000000000000000000000000040f19232c343a3f41424344454955616b717171717375797e858e979890867c72675c5045392d2129343f4a545f6a75808b95a0968b81766b60554a40352a1f140a000000000000000000000000000000000000000915222e3a46525e6a76838e9aa6b2a79c9085796e63584d43392f261d150e0809131c26303a444d57616b757e89929ca69e958b8177707c87939eaab0a5998d8175695d5145392d201408000000000005111d2936424e5965717d8994a0abaea3978c81766b61574d433a322a231d1814110f0d0d0c0d0e0f12151a1f262d353e47515b656f7a85909ba7b2a79c9085796d61564a3e3226190d01000000000000000000000000000000000000000a16222e3a45515d6975818c98a4a89c9084786c606a76828e9aa6a89c9085796d6155493d32261a0e02000000000000000000000000000000000000101d2935414c57606667696b6f747b838c96a0a59c93897e73685c5145392d21150900000000000000000000000000000c1925313e4a56636f7b8894a09d9185796d615549404c58646f7b87929da89e93887c72675d53494037302a26252629303944505c6874818d9aa6b1a5988c8073675a4e4135424f5b6875828e9ba094877a6d6054473a2e2114070013202c3946535f6c798693a0a295887b6f6255483c303c4956636f7c8996a39f9285786b5f5255606a75808a95a09b90867b70655b50463b30261b100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27323e4955606b77838e9aa5a89c9185796e62574b4a5763707d8a97a4b0a99c8f8275695c4f4236292626262626262626262626262626262626262626262626262626231f19130b0200000000000000000b1824303c4955616d7a86929eabada094887b6f63574a3e3226190d030f1c2834404d5965717e8a96a3a296897d75828f9ba79d9185786c6053473b2f22160a06121f2b3744505c6875818d9aa6b1a5988c8074675b4f43362a1e120500000000111e2b3744515d6a7784909da4978a7d7164574b3e312936434f5c6975828f9ca5988c7e7265594c3f32262e39444e59646e79848e99a1978c81776c61574c41372c2119181715120f0b070200000000000000000000000000000915212d38434c555a5c5a534c4855616e7b8895a2978a7d7164574a3e3124170b000000000007111c27323d48525d68737e89939e988e83786d62574c42372c21160c01000000000000000000000000000000000000000915212d38434c555a5c5a534c4855616e7b8895a2978a7d7164574a3e3124170b000000000007111c27323d48525d68737e89939e988e83786d62574c42372c21160c010000000000000000000000000000000000000a16212b353e454b4e4f505152535459616565656566696d747c85909b988e84786d6155493d3125222d38434e58636e79848f999d92877c72675c51463c31261b100600000000000000000000000000000000000006121e2a36424e5a66727e8a95a1acada1968a8074695f554b41382f27201914100c141e28323c454f59636d76808a949ea69d93897f77828d98a4afab9f94887c7165594d4135291c10040000000000010d1925313d4955606c78838f9aa5b0a89d92887d73695f564d443c352f2924211e1c1a1919191a1c1e22262b31373f475059636c77818c96a1acaca1968b8074685c5145392d211509000000000000000000000000000000000000000006111d2935414c5864707c88939faba195897d71656e7a86929eaaa3978c8074685c5045392d211509000000000000000000000000000000000000000d1924303b454e565a5b5c5f6369717a848e99a5a59a9084796d6156493d3125190c00000000000000000000000000000916222e3a47535f6b7784909ca195897d7165594d4247535e6a75818c97a2a4998e83796e655b5249423b36333233353a424b55606c7884909ca9b4a89b8f8276695d50443843505d6976838f9c9f9386796c6053463a2d20130700131f2c3946525f6c7986929fa295887c6f6255493c303d4a5663707d8996a39e9185786b5e514e59636e79838e99a2978d82776c62574c42372d22170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38444f5b66717d89949faba2968a7f73685c514a5763707d8a97a4b0a99c8f8275695c4f42363333333333333333333333333333333333333333333333333333322f2b241d140b01000000000000030f1b2834404c5965717d8996a2aea99d9184786c5f53473b2e22160a000c1824313d4955626e7a87939fa5998c807885919ea69a8d8175695c5044372b1f1306030f1b2834404c5965717d8a96a2afa89c9083776b5f52463a2e22150900000000101d2936434f5c6975828f9ba5988b7e7265594c3f332b3744515d6a7783909da3978a7d7164574b3e312527323d47525d67727d87929d9e93897e73685e53483e33281e130a08060300000000000000000000000000000000000c1825313d49545f6669655e575055616e7b8895a2978a7d7164574a3e3124170b0000000000000b16202b36414c56616c77828d979f94897e74695e53483e33281d1208000000000000000000000000000000000000000c1825313d49545f6669655e575055616e7b8895a2978a7d7164574a3e3124170b0000000000000b16202b36414c56616c77828d979f94897e74695e53483e33281d12080000000000000000000000000000000000030f1b27323d4750575a5b5d5e5f60615e5758585858595c626a737e8a96a095897d7265594d4034281c26313c47525d67727d88939d998e83786e63584d42382d22170c010000000000000000000000000000000000020e1a26323e4a56616d7984909ba6b2a79c91867b71665d534a4139312b25201c191716202a333d47515b646e78828c969fa59b91877e89939ea9b0a59a8e83776c6054483c3025180c000000000000000915212c3844505b66727d89949fa9afa4998f857b71685f564e47403a35302d2a282726262627292b2e32363c42495159626b757e89939da8b1a69b90857a6e63574c4034291d11050000000000000000000000000000000000000000010d1824303c48535f6b77838f9aa6a5998d817569727e8a97a3aa9f93877b6f63574c4034281c10050000000000000000000000000000000000000008131f29333c444a4d4e5053585f68727d88949faba1968a7e7266594d4134281b0f020000000000000000000000000006121e2b37434f5b6773808c98a4998d82766a5e5247424d59646f7a85909ba5a0958b81766d645b534c46423f3e3f41454c545d67727d8994a0a4a8aa9e9285796c6053473a45525e6b7784919d9e9185786b5f5245392c1f120600121f2c3845525e6b7885919ea396897c7063564a3d313e4a5764717d8a97a49d9084776a5e5147525c67727c87929c9e94897e74695e53493e34291e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e4955606c77838e9aa5a79b9084796d62564a5763707d8a97a4b0a99c8f8275695c4f424040404040404040404040404040404040404040404040404040403f3b362f261d130800000000000006131f2b3744505c6875818d99a6b2a6998d8175685c5044372b1f1206000815212d3946525e6b77838f9ca89b8f837b8794a0a3968a7e7165594d4034281b0f03000c1824303d4955626e7a87939fabaca093877b6e62564a3e3125190d000000000f1b2835414e5a6774818d9aa6998d8174675a4e41352d3946525f6c7885919ea195887b6f6256493c3023202b36404b56606b76818b96a09a8f857a6f655a4f453a2f251a0f05000000000000000000000000000000000000000e1a2734404d596571767069615a55616e7b8895a2978a7d7164574a3e3124170b000000000000040f1a242f3a45505a65707b86919b9b90857a70655a4f443a2f24190e030000000000000000000000000000000000000e1a2734404d596571767069615a55616e7b8895a2978a7d7164574a3e3124170b000000000000040f1a242f3a45505a65707b86919b9b90857a70655a4f443a2f24190e030000000000000000000000000000000006131f2b37434e59626768696a6b6d6d6960554b4b4b4d5158626d7986929f9a8e8275695c5043362a1d202a35404b56616b76818c97a0958a7f746a5f54493e33291e13080000000000000000000000000000000000000a16212d3945515c68737e8a95a0abada2988d83786e655c534b433c36302c2825232221212b353f49535c66707a848d97a1a399908a909aa5b0aa9f94897d72665b4f43382c2014080000000000000004101c27333f4a55616c77828d98a2acaba1978d837a71686058514b45413d393735343332333435373a3e42474d545b636b747d87909aa5afa99f948a7e73685d52463b2f24180c0000000000000000000000000000000000000000000008141f2b37434f5a66727e8a96a1a99d9185796d76838f9ba7a69a8e82766a5f53473b2f23180c0000000000000000000000000000000000000000020d17212a32393e404143474d56606b77838f9ba7a69a8e8275695c5043372a1e110500000000000000000000000000020f1b27333f4b57636f7b87939f9e92867a6f63584c4148535e69747e89949ea79c92897f766d655e57524e4c4b4c4e51575d666f79838e9a97989ea8a194887b6f63564a3d4754606d7986939f9d9083776a5d5144372b1e110500111e2b3744515d6a7783909da4978a7e7164584b3f333f4c5865727e8b98a59c8f8276695c50434b55606b75808b95a09b90857a70655b50453a30251b10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d38444f5b66727d8994a0aba1958a7e73675b505763707d8a97a4b0a99c8f8275695c4f4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b4741382f241a0e0300000000000a16232f3b4753606c7885919da9afa2968a7d7165594c4034281b0f030005111d2a36424f5b6773808c98a59e92857e8a97a39f93877a6e6255493d3124180c00000814212d3946525e6a77838f9ca8afa3978b7e72665a4d4135291c10040000000d1a26333f4c5865727e8b97a49b8f8276695d504438303c4855616e7a8793a09f9286796d6054473b2e2119242f39444f59646f79848f99a1968c81766c61564c41362c21160c010000000000000000000000000000000000000e1b2834414e5b6774817a736c655e616e7b8895a2978a7d7164574a3e3124170b0000000000000008131e28333e49545f69747f8a959f978c81766c61564b40352b20150a0000000000000000000000000000000000000e1b2834414e5b6774817a736c655e616e7b8895a2978a7d7164574a3e3124170b0000000000000008131e28333e49545f69747f8a959f978c81766c61564b40352b20150a000000000000000000000000000000000815212e3b4753606b7375767778797a7165594c3f3f4046515e6a7784909d9d9184776b5e5145382b1f19242f39444f5a656f7a85909b9c91867b70655b50453a2f251a0f04000000000000000000000000000000000005111d2834404b57626d79848f9aa4afa99f948a81776e655d554e47413c383432302e2e2d2e2f37414a545e68727b858f99a3a29a969aa2acada3988d82776c61554a3e33271b0f0400000000000000000b17222d39444f5b66717b86909ba5afa89f958c837a726a635c56514d4946434140403f40404244464a4e53585e656d757d868f99a2acaca2978d83786d62574c41352a1e130700000000000000000000000000000000000000000000030f1b26323e4a56616d7985919ca8a295897d717a87939faba195897d71665a4e42362a1f1307000000000000000000000000000000000000000000060f1821282d323435373b444f5b67737f8b98a4aa9e9185786b5f5245392c1f130600000000000000000000000000000b17232f3b47535f6b77828e9aa3978b8074695d5247414d57626d77828c96a0a49b918880777069635e5b5958595a5d62686f78818b95928a8c96a2a4978b7e7265594d404a56636f7c8895a19b8e8175685b4f4236291c100300101d2936424f5c6875828e9ba5998c8073665a4d4135424e5b6774818d99a69a8d8174675b4e42444e59646e79848e99a2978c82776c61574c42372c22170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e4a55616c78838f9aa6a69b8f84786c61555763707d8a97a4b0a99c8f8275695c595959595959595959595959595959595959595959595959595959595958524a41362b1f140800000000010e1a26323f4b57636f7c8894a1adab9f93867a6e6155493d3024180b0000010e1a26333f4b5764707c8995a1a19588818d99a69c8f83776a5e5246392d211508000005111d2a36424e5b6773808c98a4b1a79a8e8276695d5145392c2014080000000b1824313d4a56636f7b8894a19e9185786c6054473c34404c5864707d8996a29c9083776a5e5145382c1f131d28323d48525d68727d88929d9d93887d73685d53483d33281d13080000000000000000000000000000000000000e1b2834414e5b677481857e766f68616e7b8895a2978a7d7164574a3e3124170b00000000000000010c17222d37424d58636d78838e999e93887d72675d52473c31271c110600000000000000000000000000000000000e1b2834414e5b677481857e766f68616e7b8895a2978a7d7164574a3e3124170b00000000000000010c17222d37424d58636d78838e999e93887d72675d52473c31271c11060000000000000000000000000000000915222f3c4855626f7b82838485868074675b4f443f3f44515d6a7784909d9f9285786b5f5245382c1f121d28333d48535e69737e89949f988d82776c61574c41362b20160b0000000000000000000000000000000000000c18232f3a45515c67727d88929da7b0a69c938980776f675f58524d4844413e3c3b3a3a3a3b3d3f424c566069737d87919ba5a5a3a5abafa59b91867b71665b4f44392d22160a00000000000000000006111c28333e49545f6a747e89939da6afa79e958c847c746e68625d595552504e4d4c4c4c4d4e5053565a5e646970777e878f98a1abada39a90867b71665b51463a2f24190d0200000000000000000000000000000000000000000000000a16222d3945515d6874808c98a3a69a8d81757e8b97a3a89c9084786d6155493d32261a0e0200000000000000000000000000000000000000000000060f161d222527282b323e4a5763707c8995a2aca09386796d6053473a2d201407000000000000000000000000000007131f2b37424e5a66727d8995a09c91857a6e63584d4246515b66707a848e97a0a39a9189817a746f6a67656565676a6e737a818a93978c8186929fa79a8e8175685c50434d5a66727e8b97a4988c7f7366594d4034271b0e01000e1b2734414d5a6673808c98a59b8f8276695d51454045515e6a76838f9ca4978b7e7265594c403d47525d67727d87929d9e93897e73685e53493e33281e13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d3944505b66727d8995a0aba095897d7266616163707d8a97a4b0a99c8f827569666666666666666666666666666666666666666666666666666666666666645c52473c3024170b0000000005111e2a36424e5b6773808c98a4b0a89b8f83766a5e5245392d2114080000000a17232f3b4854606c7985919ea4978c86909ca5988c8073675b4f42362a1d11050000010e1a26323f4b5764707c8995a1adaa9e9286796d6155483c3024170b0000000915222e3b4753606c7885919da194887c7064584d424045505c6874808c99a5998c8074675b4f4236291d1016212b36414b56616b76818b96a19a8f847a6f645a4f443a2f241a0f0400000000000000000000000000000000000e1b2834414e5b6774818e88817a736b6e7b8895a2978a7d7164574a3e3124170b000000000000000005101b26313b46515c67717c87929d9a8f84796e63594e43382d22180d02000000000000000000000000000000000e1b2834414e5b6774818e88817a736b6e7b8895a2978a7d7164574a3e3124170b000000000000000005101b26313b46515c67717c87929d9a8f84796e63594e43382d22180d0200000000000000000000000000000815212e3b4754606d79868f91928f83776b60564f4c4c4e55606c7885919e9e9285786b5f5245382c1f1216212c37414c57626d77828d989e93897e73685d52483d32271c1207000000000000000000000000000000000007121e2934404b56616b76818b959fa9aea49b92898178716a635e5954504d4b494847474748494b4e51555a616b757f89939fabb0b2b1a79d94897f746a5f54493e33281c1105000000000000000000000b17222d38434d58626d77818b949da6afa79e968e868079736e6965615f5c5b5a5959595a5b5d5f62666a6f757b82899199a1aaaca49b91887e74695f554a3f34291e130700000000000000000000000000000000000000000000000005111d2934404c58646f7b87939faa9d918579828e9ba7a3978c8074685c5044392d211509000000000000000000000000000000000000000000000000040b1116191a1b222f3b4854616e7a8794a0ada094877a6d6053473a2d2014070000000000000000000000000000020e1a26323e4a55616d78848f9ba2968b8074695e53483f49545e68727b858e979fa39b938c85807a777472717273767a7e858b939b91867b838f9ca89d9184786b5f5246515d6976828e9ba295897c7064574b3e3225180c00000c1925323e4b5764707c8995a19e9285796d62574f4d4e57626e7a86929ea094887b6f63564a3d36404b56606b76818b96a09a90857a6f655a4f453a30251a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c28333f4a56616c78848f9aa6a59a8e83776e6e6e6e707d8a97a4b0a99c8f8275737373737373737373737373737373737373737373737373737373737373736e64584c4033261a0d000000000915212d3a46525e6a77838f9ba8b0a4988c8073675a4e4236291d110500000007131f2c3844505d6975828e9aa69d959398a1a195897c7064574b3f33261a0e010000000a16232f3b4854606c7985919eaaaea295897d7164584c4034271b0f03000006121f2b3844505c6975818d99a4988c8075695e544e4d4f57616d7884909ca094897c7064584c3f33271a0e0f1a242f3a444f5a646f7a858f9aa1968b81766b61564b41362b21160b01000000000000000000000000000000000e1b2834414e5b6774818e938b847d766f7b8895a2978a7d7164574a3e3124170b00000000000000000009141f2a353f4a55606b75818b96a0968b80756a5f554a3f34291e1409000000000000000000000000000000000e1b2834414e5b6774818e938b847d766f7b8895a2978a7d7164574a3e3124170b00000000000000000009141f2a353f4a55606b75818b96a0968b80756a5f554a3f34291e1409000000000000000000000000000006131f2c3845515e6a76838f9b9e93887c7168605b59595a5e67717c8894a19d9084776a5e5144382b1e120f1a25303b46505b66717c87919c9a8f857a6f64594e44392e23180d0300000000000000000000000000000000010c18232e39444f5a646f79838d97a0a9ada49b938a837b756f6964605d5a5756555453545556585a5e61666b70777d85919daab7b7ab9f958c82776d63584e43382d22160b000000000000000000000005101b26313c46515b656f78828b949da5ada8a098918a847e7975716e6b69676666656667686a6c6f72767b80868c939ba3ababa39a92897f766c62584d43382d23180d02000000000000000000000000000000000000000000000000000c1824303b47535f6b76828e9aa6a195897d86929faa9e93877b6f63574c4034281c1005000000000000000000000000000000000000000000000000000005090c0e13202d3a4653606c798693a0aca094877a6d6053473a2d2014070000000000000000000000000000000a16212d3944505c67737e8a95a09c91867b70655a4f45424c566069737c858d959da49e97918b8783817f7e7e8082868a90969d948a7f74808c99a5a093877a6e62554a56616d7986929e9f92867a6d6154483b2f23160a00000a16232f3b4854606d7985919da2968a7e7368605b595a5f68737e8a96a29c9084786c5f53473a2f39444f59646f79848f99a1978c81766c61564c41372c21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3944505b67727e8995a0ab9f93887c7b7b7b7b7b7d8a97a4b0a99c8f83808080808080808080808080808080808080808080808080808080808080808074675a4d4134271a0e010000000c1825313d4956626e7a87939fabada194887c6f63574b3e32261a0d0100000003101c2834414d5966727e8a97a3a7a1a0a3aa9e9185796d6054483b2f23170a0000000007131f2c3844505d6975828e9aa6b2a5998d8174685c5043372b1f12060000030f1c2834404d5965717d8994a09d91867a70665f5b595b6069737e8995a19b9084786c6054483c3023170b08131d28333d48535d68737d88939e9d92887d72685d52483d32281d1208000000000000000000000000000000000e1b2834414e5b6774818e97968f8881797b8895a2978a7d7164574a3e3124170b000000000000000000030d18232e39444e59646f7a848f9a9c91877c71665b50463b30251a10050000000000000000000000000000000e1b2834414e5b6774818e97968f8881797b8895a2978a7d7164574a3e3124170b000000000000000000030d18232e39444e59646f7a848f9a9c91877c71665b50463b30251a10050000000000000000000000000004101d2936424e5a67737e8a96a1998e837a726b676565676a7078838e99a4998d8174685c4f4336291d1009141e29343f4a545f6a75808b95a0968b81766b60554a3f352a1f1409000000000000000000000000000000000007121d28333d48535d67717b858e97a0a8ada59c958d86807a75706c6966646261616061616364676a6d72767c82888f97a1adb8b4a79b8e837970665b51473c31261c12080000000000000000000000000a151f2a343f49535d667079828b939ba3abaaa39c958f8a85817d7a78767473737273737476787b7e82878c91979ea5ada8a199918980766d645a50463c31271c1106000000000000000000000000000000000000000000000000000007131f2b37424e5a66727d8995a1a5998d818a96a3a59a8e82766a5e53473b2f23170c0000000000000000000000000000000000000000000000000000000000000613202c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000000005111c28343f4b56616d78848f9aa2978c81766c61574c42444e57616a737b838b9299a0a29c97938f8d8c8b8c8d8f92969b9c948b8278707d8996a2a3968a7d7164584f5b66727e8a96a29b8f83766a5e5145392c201307000007131f2c3844505c6874808c97a39b8f857a726b6766676b717a85909ba2978b8073685b4f43372b323d48525d68727d88929d9e93887d73685e53483d33281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333f4a56616d78848f9ba6a4998d888888888888888d98a5b1ab9f948d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675a4d4134271a0e01000004101c2835414d5965727e8a96a3afa99d9185786c6054473b2f22160a00000000000c1825313d4a56626e7b8793a0acadacafa79a8e8275695d5044382c1f13070000000003101c2834414d5966727e8a97a3afa99d9084786c5f53473b2e22160a0000000c1824303c4854606c78838f9aa2978c8278706a6766676b727b858f9aa0958a7f73675c5044382c201307010c16212c36414c56616c76818c97a1998f84796f64594f44392f24190f040000000000000000000000000000000e1b2834414e5b67747e858c9399928b847c8895a2978a7d7164574a3e3124170b0000000000000000000007111c27323d48525d68737e89939e988d83786d62574c42372c21160b0100000000000000000000000000000e1b2834414e5b67747e858c9399928b847c8895a2978a7d7164574a3e3124170b0000000000000000000007111c27323d48525d68737e89939e988d83786d62574c42372c21160b01000000000000000000000000010d1a26323e4a56626e79848f9a9f958c847c7774727273767b828b959f9e93887c7064584c4033271b0e020d18222d38434e58636e79848f999d92877c72675c51463b31261b100500000000000000000000000000000000000b16212c36414b555f69737c858e979fa7aea69f98918b86817c797573716f6e6d6d6d6e6f7173767a7d82878d939aa1a9aeababa89c90867c72685e554b41372d241a10060000000000000000000000030e18232d37414b555e677079818a9199a0a7ada7a19b96918d8a87848281807f7f8080818385888b8e93979da3a9aba49e968f877f766d645b52483e342a1f150a000000000000000000000000000000000000000000000000000000020e1a26323e4955616d7884909ca89d928c909ba6a195897d71655a4e42362a1f130700000000000000000000000000000000000000000000000000000000000005131f2c3946525f6c7986929faca094877a6d6053473a2d201407000000000000000000000000000000000b17232e3a45505c67727d88939e9e93887d73685e544a41454f586169717981888e949a9fa39f9c9a989898999b9e9e99928a82796f6d7a86929fa0998d8074675b54606b77838e9aa3978b7e72665a4e4235291d1004000004101c2834404c58646f7b86919ca1968c847c77747374767c838c96a19b90857a6e63574b3f33272b36414b56616b76818b96a19a8f857a6f645a4f443a2f241a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3945505c67737e8a95a1aa9f9795959595959595979fa9b5b0a69e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675a4d4134271a0e0100000713202c3844515d6975828e9aa6b2a69a8d8175695c5044382b1f130600000000000915212e3a46525f6b7784909ca8b5b9afa3978b7e7266594d4135281c100300000000000c1825313d4a56626e7b8793a0acaca094887b6f63574b3e32261a0d0100000814202c3844505b67727d88939d9e948b827b77747374777d848d97a1998f84796e62574b3f33271b0f030005101a252f3a454f5a65707a85909aa0968b81766b60564b40362b20160b0000000000000000000000000000000d1a26333f4b57636c737a81888f96968e878a96a2978a7d7164574a3e3124170b00000000000000000000000b16202b36414c56616c77828c979f94897e74695e53483d33281d120700000000000000000000000000000d1a26333f4b57636c737a81888f96968e878a96a2978a7d7164574a3e3124170b00000000000000000000000b16202b36414c56616c77828c979f94897e74695e53483d33281d1207000000000000000000000000000a16222e3a46515d68737d88919a9e958e8883817f7e8082878c949d9e958c82766b6054483c3024180b0006111c26313c47525d67727d88939d998e83786d63584d42372d22170b000000000000000000000000000000000005101a252f39434d57616a737c858d959ca4aaaaa39d97928d898582807d7c7b7a7a7a7b7c7e8083868a8e93989ea5aba9a39e9fa4a2988e847a70675d53493f362c22180e05000000000000000000000006111b252f39434c555e676f7880878e959ba1a7aca7a29d999693918f8e8d8c8c8c8d8e8f9194979b9fa3a8aaa59f99938c857d756d645b524940362c22180e03000000000000000000000000000000000000000000000000000000000915212d3944505c6874808b97a3a49c999ba2a89c9084786d6155493d31261a0e0200000000000000000000000000000000000000000000000000000000000003131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000000000006121d28343f4a56616c77828d97a29a8f857a70665c524940464e575f676f767d83898e93979a9c9e9e9e9e9c9a97928d87807870676a7783909393939083776a5e5b66717c88949f9e92867a6e62564a3e3226190d010000000c1824303c47535e6a75808a949d9e968e888381808183878d959e9d93897e74695d52463b2f23242f3a444f5a646f7a858f9aa1968c81766b61564c41362b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4b56626d7884909ba6a9a3a2a2a2a2a2a2a2a3a9acacacaca9a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8e8174675a4d4134271a0e0100000b1723303c4854606d7985919eaaaca3968a7e7165594d4034281b0f03000000000005121e2a36434f5b6774808c99a5acacaca093877b6e62564a3d3125190c0000000000000915212e3a46525f6b7784909ca9aca4988b7f73675a4e4236291d1105000004101c27333f4a56616c76818b959d9d948d878381808183888e969f9a91877d72675c51463a2f23170b00000009131e28333e49535e68737e89939e9d92877d72675d52473d32271d110600000000000000000000000000000b17232f3b46515a61686f767d848b929993959ca4978a7d7164574a3e3124170b0000000000000000000000040f1a242f3a45505a65707b86919b9b90857a6f655a4f44392f24180d01000000000000000000000000000b17232f3b46515a61686f767d848b929993959ca4978a7d7164574a3e3124170b0000000000000000000000040f1a242f3a45505a65707b86919b9b90857a6f655a4f44392f24180d0100000000000000000000000006121d2935404b56616c767f8890979e9994908d8c8c8d8f92989e9b948c837a70655a4f43382c20140800000a15202a35404b56616b76818c97a0958a7f74695f54493e33281c1004000000000000000000000000000000000008131d27313b454e58616a727b838b92999fa6aba8a29d9995918e8c8a898887878788898a8c8f92969a9fa4a9aaa59e9892939ba4a0968c83786f655b51483e342a20170d03000000000000000000000009131d27313a434c555d666e757c848a90969ba0a5a9a9a6a2a09d9c9a999999999a9b9c9ea0a3a7aba7a39e99948e88817a736b635b524940372e241a1006000000000000000000000000000000000000000000000000000000000005101c2834404b57636f7b87929ea7a7a6a7a7a3978b8074685c5044392d2115090000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000000000010c17232e39444f5a65707b86909ba1968c82786e645b524940454d555d646b72787d82878a8d8f91929291908d8a87827c756e665e677480868686868686796d61616c77828e99a4998d82766a5e52463a2e22160a0000000008131f2b36424d58636e78828b939aa09993908d8d8d8f93989f9a938a81776d62574c41352a1e1d28333d48535d68737d88939e9d93887d72685d52483d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a45515c67737e8a96a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09a8e8174675a4d4134271a0e0100000e1b27333f4c5864707c8995a0a0a09f93877a6e6255493d3124180c000000000000020e1a27333f4b5864707c8995a0a0a0a09c9084776b5f53463a2e21150900000000000005121e2a36434f5b6874808c99a0a0a09b8f83766a5e5246392d2115080000000b17222e39444f5a656f79838b949b9e98938f8d8d8d9094999f9891887f756b61564b4035291e1206000000020c17222c37424c57616c77828c97a2998e84796e64594e44392e22170b000000000000000000000000000007131e2a353f4850575e656c737a81888f969da0a0978a7d7164574a3e3124170b00000000000000000000000008131e28333e49545e69747f8a959f978c81766b61564b4035291d11050000000000000000000000000007131e2a353f4850575e656c737a81888f969da0a0978a7d7164574a3e3124170b00000000000000000000000008131e28333e49545e69747f8a959f978c81766b61564b4035291d1105000000000000000000000000010d18242f3a454f5a646d767e868c92979a9c9a9898999b9c9995908a827a71685e53493e32271b0f040000030e19242f39444f5a656f7a8590999991867b70655a5044392d2014080000000000000000000000000000000000010b162029333d464f586069717980878e949aa0a5a9a9a5a19e9b99979594949494949597999b9ea2a6aaa9a49f99938d8689929ca69e948b81776d635a50463c32281f150b0100000000000000000000010b151f28313a434b545c636b72797f858a9094999ca0a3a5a8a9a8a7a6a6a6a6a6a7a9a9a7a5a29f9b97938e89837d7670686159514940372e251c1208000000000000000000000000000000000000000000000000000000000000000c17232f3b47525e6a76828e999a9a9a9a9a9a92877b6f63574b4034281c10040000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d201407000000000000000000000000000000000006121d28333e49545f69747e89939e9e948a80766d645b524941434b535a60676c72767a7e81838485858483817e7a76716b645c58647079797979797979776d6068737e89949f9f94887c7165594e42362a1e120600000000030e1a25313c47515c66707981898f95999c9c9a9a9a9c9c99958f8981786f655b51463b30241916212c36414c56616c76818c9799998f84796f64594f44382c1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d29343f4b56626d7984909393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675a4d4134271a0e010000111e2a37434f5b6874808c93939393938f83776a5e5246392d211508000000000000000b17232f3c4854606d79859293939393938d8074685b4f43372a1e1205000000000000020e1a27333f4c5864707d89939393939393867a6e6255493d3124180b00000006111d28333e49535d67717982898f95999c9c9a9a9a9c9b98938d877f766d63594f443a2f23180d010000000005101b25303b45505b65707b85909999958b80756b60554a3f33271b0e0200000000000000000000000000020d18232d363e454c535a61686f767d848b929393938a7d7164574a3e3124170b000000000000000000000000010c17222c37424d58636d78838e939393887d72675d5145392d20140700000000000000000000000000020d18232d363e454c535a61686f767d848b929393938a7d7164574a3e3124170b000000000000000000000000010c17222c37424d58636d78838e939393887d72675d5145392d2014070000000000000000000000000007121e29333e48525b646c747b81868a8e9092939392918f8d89847e7870685f564c42372c21160a0000000007121d28333d48535e69737e898c8c8c8c82776c6155493c2f23160a000000000000000000000000000000000000040e17212b343d464e575f676e757c83898f94999da1a5a8aaa7a5a3a2a1a0a0a0a1a2a4a5a8aaa7a4a19c98938e88827b818a949ea69d93897f756b62584e443a31271d13090000000000000000000000030c161f283139424a525960676e74797f84888c909496999b9d9e9fa0a0a0a0a09f9e9c9a9895928f8b87827d77726b655e574f473f372e251c130a000000000000000000000000000000000000000000000000000000000000000007131e2a36424e5965717d898d8d8d8d8d8d8d8d82766a5e52473b2f23170c000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000000000000000b17222d37424d58626d77818c96a09c92897f766d645b534b4341484f555b61666a6e717476777878777674726e6a655f5952545f686c6c6c6c6c6c6c6c6566707a858f9aa4998e82776b6054493d3125190d01000000000009141f2a35404a545e676f777e84898d8f9192939392908d89847e776f665d53493f34291e130f1a252f3a454f5a656f7a858c8c8c8c8b81766b6054483b2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e3a45515c68737f86868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675a4d4134271a0e010000131f2c3946525f6b7784868686868686868073675b4e42362a1d1105000000000000000713202c3844515d697682868686868686867d7064584c3f33271b0e02000000000000000b1723303c4854616d7986868686868686867e7165594c3f3326190c000000000b16212c37414b555f6770777e84898d9091929392918f8c88827c756d645b51473d33281d120700000000000009141e29343e49545e69747e898c8c8c8c877c72675b4f43362a1d1004000000000000000000000000000007111b242c343a41484f565d646b72798086868686867d7164574a3e3124170b0000000000000000000000000005101b26313b46515c67717c868686868684796e6155483b2f221508000000000000000000000000000007111b242c343a41484f565d646b72798086868686867d7164574a3e3124170b0000000000000000000000000005101b26313b46515c67717c868686868684796e6155483b2f22150800000000000000000000000000010c17222c364049525a626970757a7e8184858686868583817d78736d665e564d443a30251b100500000000010b16212c37414c57626d778080808080807d7063574a3d3024170a00000000000000000000000000000000000000050f19222b343c454d555d646b71787d83888d9195989b9ea0a2a3a4a5a6a6a6a5a4a3a2a09e9b9894918c87827d777078828c96a0a59b91877d746a60564c43392f251b10050000000000000000000000040d161f27303840474e555c62686e73787c8184878a8c8e90919293949494939291908e8c8986837f7b76716c66605a534c453d352d251c130a010000000000000000000000000000000000000000000000000000000000000000020e1a25313d4955606c788181818181818181817d71655a4e42362a20170c020000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000000000000005101b26313b46515b65707a848e97a19b91887f766d655d554e4740444a50555a5e626567696b6b6b6b6a6865625e5a544e484d565d5f5f5f5f5f5f5f5f646e78828c96a19d93887c71665a4f43382c201509000000000000030e19242e38424c555d656c73787d8083858686868583817d78736c655d544b41382d23180d08131e28333e48535e68737e8080808080807c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d2934404b57626e7879797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797972665a4d4034271a0e010000131f2c3946525f6b767979797979797979797064574b3f32261a0e010000000000000004101c2935414d5a66727979797979797979776d6155483c3023170b00000000000000000714202c3845515d6a757979797979797979797165584c3f3326190c0000000005101b252f39434c555e656d73787d8183858686868583807c77716a635b52493f362b21160c01000000000000020d17222d37424d57626d7780808080808080776a5d5144372a1e110400000000000000000000000000000009121a222930373e454c535a61686f757979797979796f63574a3d3124170a000000000000000000000000000009141f2a353f4a55606b75797979797979786d6155483b2f22150800000000000000000000000000000009121a222930373e454c535a61686f757979797979796f63574a3d3124170a000000000000000000000000000009141f2a353f4a55606b75797979797979786d6155483b2f221508000000000000000000000000000005101a242e37404850585e656a6e72757778797979787674716d68625c544d443b32281e1409000000000000050f1a25303b45505b6670737373737373726b6155483c2f2316090000000000000000000000000000000000000000071019222a333b434b525960666c72777c8185898c8f9193959698989999999898969593918e8c8884807b77716b66707a848e97a1a3998f867c72685e554b41372d22160b000000000000000000000000040d151e262e353d444b51575d62676c7074787b7d80828485868687878786868483817f7c7a76736f6a65605b554f48423a332b231b130a01000000000000000000000000000000000000000000000000000000000000000000000915212c3844505c6771737373737373737373736c615549423b32291e13080000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d2014070000000000000000000000000000000000000009141f2a343f49535e68727c858f98a29a918880776f675f58514b443f44494e5256595b5d5e5e5e5e5d5b5956524e49433d444b515353535353545c646d76808a949ea1968c81766b6055493e32271b10040000000000000007121c26303a434b535b61676c70747678797979787674716d67615b534b42392f261b1106010c17222c37414c57616c72737373737373726b6054483b2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3a46515c666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6960564a3e3225190c000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c675e53473b2f23160a0000000000000000000c1925313d4a5560696c6c6c6c6c6c6c6c6c665c5145382c201407000000000000000004101c2935414d59636b6c6c6c6c6c6c6c6c6c685f54493d3024170b000000000009131e27313a434c545b62676c71747678797979787673706b665f59514940372d241a0f05000000000000000006101b26303b46505b666f7373737373737370675b4f4336291d1004000000000000000000000000000000000910171e252c333a41484f565d646b6c6c6c6c6c6c675e53473b2e2216090000000000000000000000000000030d18232e39434e59636b6c6c6c6c6c6c6c665c5145392d201407000000000000000000000000000000000910171e252c333a41484f565d646b6c6c6c6c6c6c675e53473b2e2216090000000000000000000000000000030d18232e39434e59636b6c6c6c6c6c6c6c665c5145392d20140700000000000000000000000000000008121c252e363f464d53595e6266686a6c6c6c6c6b6a6764615c57514a433b322920160c020000000000000009131e29343f4a545e646666666666666662594f44382c2014070000000000000000000000000000000000000000000710182129313940484e555b61676c7075797c80828587888a8b8c8c8c8c8c8b8a888784827f7c7874706b66605e68727c868f99a0a0988e847a70665d53493e33271b0f02000000000000000000000000030c141c242b323940464c51575c6064686b6e717375777879797a7a7a797978767472706d6a66635e5a554f4a443d3730292119110901000000000000000000000000000000000000000000000000000000000000000000000004101c28333f4b555f6567676767676767676766625a57534d443a3025190d0100000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000000000000000030d18232d37424c56606a737d869099a19a92898179716a635c564f4a443f4246494c4e5051515151504f4c4a46423d38323a404446464950575e666e768089929ca3998f857a6f645a4e43382d21160a0000000000000000000a141e283139414950565c6064676a6b6c6c6c6b6a6864615c565049413930271e140a000005101b25303a45505a62666666666666666661594f43382c1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e2935404a545b5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d574e44392d2216090000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5c554c42372b1f13070000000000000000000915212d39444e575d5f5f5f5f5f5f5f5f5f5b544a3f34281c10040000000000000000000d1925313c4751595e5f5f5f5f5f5f5f5f5f5d564d43382c2014080000000000010c161f28313a424950565c6064676a6b6c6c6c6b6967635f5a544e473f372e251b12080000000000000000000009141f29343f49545d6466666666666666645e554a3f33271a0e020000000000000000000000000000000000060d131a21282f363d444b52595e5f5f5f5f5f5f5c554c41362b1f120600000000000000000000000000000007111c27323d4751595e5f5f5f5f5f5f5f5b544a4034291d11040000000000000000000000000000000000060d131a21282f363d444b52595e5f5f5f5f5f5f5c554c41362b1f120600000000000000000000000000000007111c27323d4751595e5f5f5f5f5f5f5f5b544a4034291d1104000000000000000000000000000000000a131c252d343b42484d5256595c5e5f5f5f5f5e5d5b5855504b453f38312920170e040000000000000000020d18222d38424c5358595959595959595650473e33281c100400000000000000000000000000000000000000000000060f171f272f363d444a50565b6064696c707376787a7c7d7e7e7f807f7e7e7d7c7a7875736f6c68645f5a5556606a737d8791939393938c82786f655b4f43372b1e120500000000000000000000000000020a121921282e353b40464b53595c5c5f626467686a6b6c6d6d6d6d6d6c6b6a686663615e5c5b575049443e38322c251e170f0800000000000000000000000000000000000000000000000000000000000000000000000000000b17232e39434d54595a5a5a5a5a5c626464646464635f564c4135291d110500000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d201407000000000000000000000000000000000000000006111b26303a444e58616b747d878f98a09b938b837c746e67615b55504b47433f404243444545454442403d3a3635373a3d41454a4f555b616870788089929ba49b91877d73685e53483d32271c1005000000000000000000020c161f2730373e454b5054585b5d5f5f5f5f5f5d5b5855504b453e372f271e150c0200000009141e29343e4850565959595959595959564f473d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18232e38424a5052535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353514c453c32281d11050000000a16212c3740484f52535353535353535353504b433a30251a0e0300000000000000000005111c27323c454c515353535353535353524f4a42382e23180c000000000000000000000914202b353f474e52535353535353535353514c443b31271b1004000000000000040d161f2830383f454b5054585b5d5f5f5f5f5e5d5a57534f49433c352d251c13090000000000000000000000020d18222d38424b53585959595959595958544c43392e22160a00000000000000000000000000000000000000020910171e252c333a41484e52535353535353504b433a30251a0e02000000000000000000000000000000000b16202b363f484e5253535353535352504a42382e23180c00000000000000000000000000000000000000020910171e252c333a41484e52535353535353504b433a30251a0e02000000000000000000000000000000000b16202b363f484e5253535353535352504a42382e23180c0000000000000000000000000000000000010a131b222a31373c42464a4d4f515253535352504e4c4844403a342e261f170e050000000000000000000006111c26303a42484b4c4c4c4c4c4c4c4a453e352c21160b000000000000000000000000000000000000000000000000050d151d242b32393f444a4f54585c606467696b6d6f7071727273727271706f6d6b696663605c58534e494e58626b757f8686868686868681776c5f5346392d201306000000000000000000000000000000080f161d23292f3a46525c656969696969696969655f60606160606067696969696969696862584d42362d27211a140c0500000000000000000000000000000000000000000000000000000000000000000000000000000006121d27323b43494c4d4d50575f666d717171717170685e5246392d20130700000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000000000000000000009141e28323c464f59626b747d868e979f9d958d867f78726c66615c57534f4c48464341403f3e3d3d3d3e3f40424446494d51565b60666c737a828a929ba49c92897f756b61574c41372c21160a0000000000000000000000040d151e252d343a3f44484c4e505253535352514f4c48443f3a332d251d150c0300000000020d17222c363e454a4c4c4c4c4c4c4c4c4a453e352b21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2630383f434646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645413b332a21160b0000000005101a252e373e434646464646464646464644403931281e140900000000000000000000000b16202a333b4145464646464646464646433f382f261c110600000000000000000000030e19232d363d424546464646464646464644403a322920150a0000000000000000040d161e262d343a3f44484c4e515253535352504e4b47433e38322b231b130a0100000000000000000000000006111b26303941484b4c4c4c4c4c4c4c4c48423a31271c1106000000000000000000000000000000000000000000050c131a21282f363d424546464646464644403931281e13080000000000000000000000000000000000040f19242d363d424546464646464646433f3830261c1207000000000000000000000000000000000000000000050c131a21282f363d424546464646464644403931281e13080000000000000000000000000000000000040f19242d363d424546464646464646433f3830261c1207000000000000000000000000000000000000010911181f262b31363a3d404344454646464544423f3c38342f29231c150d050000000000000000000000000a141e2830373c3f4040404040403f3e3a342c231a100500000000000000000000000000000000000000000000000000030b121a20272d33393e43484c5054575a5d5f616264656565666565656462615f5c5a5754504c47433e465059636d767979797979797979766b5f5346392d20130600000000000000000000000000000000040b121824313e4a57636e75757575757575756f64585354535c687275757575757575736a5e5245382c1f16100902000000000000000000000000000000000000000000000000000000000000000000000000000000030a1119202931383d454c535a626970787d7d7d7d7d7a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d201407000000000000000000000000000000000000000000020c16202a343d475059626b747c858d959c9f98918a847d77726d68635f5b585552504e4c4b4a4a4a4a4a4b4c4e505356595d61666b71777e858c949ca49b938a80776d63594f453a30251a0f04000000000000000000000000030c141b22282e33383c3f4244454646464544423f3c38342e28221b130b0300000000000006101a242c343a3e404040404040403f3e39332c23190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e262d3337393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835302921180f04000000000009131c252c32373939393939393939393938342f281f160c020000000000000000000000040e18212930353839393939393939393937332d261d140a00000000000000000000000007111b242b32363939393939393939393938352f2920170e03000000000000000000040c141b22292e34383c3f4244454646464544413f3b37322d27201911090100000000000000000000000000000a141e2730363c3f404040404040403f3c3730281f150b000000000000000000000000000000000000000000000001080f161d242b32363939393939393938342e271f160c0200000000000000000000000000000000000008121b242b3236393939393939393937332d261e140b000000000000000000000000000000000000000000000001080f161d242b32363939393939393938342e271f160c0200000000000000000000000000000000000008121b242b3236393939393939393937332d261e140b000000000000000000000000000000000000000000060d141a20252a2e313436383939393938373533302c28231e18110a0300000000000000000000000000030c161e252b303233333333333333312e29221a110800000000000000000000000000000000000000000000000000000001080f161c22282e33383c4044484b4e50525456575859595959585857565452504d4a4744403c37343e47515b646b6c6c6c6c6c6c6c6c6b645a4f43372b1e12050000000000000000000000000000000000000b1825323e4b5865717e828282828282807366594d47515d6a7782828282828282796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000060d141c232a323940484f565e656c747b828a8a8a8a857b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d20140700000000000000000000000000000000000000000000040e18222b353e475059626a737b838b9299a09c958f89837d78746f6b6764615f5c5b5958575756575758595b5d5f6265696d72777c82898f969ea29a928981776e655b51473d33291e13090000000000000000000000000000020910171d23282c303335373839393939373633302c28231d17100901000000000000000008121a22292e313333333333333333312e28211a11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141c22272b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c29241f170f06000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b28231d160d0400000000000000000000000000060f171e24292c2c2c2c2c2c2c2c2c2c2b27221c140b020000000000000000000000000009121a20262a2c2c2c2c2c2c2c2c2c2c2b29241e170e050000000000000000000000020a11171d23282c3033353739393939383735322f2b26211b150e0700000000000000000000000000000000020c151e252b30323333333333333332302c261e160d0300000000000000000000000000000000000000000000000000050c131a20262a2c2c2c2c2c2c2c2b28231d150d04000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2b27221c140c0200000000000000000000000000000000000000000000000000050c131a20262a2c2c2c2c2c2c2c2b28231d150d04000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2b27221c140c020000000000000000000000000000000000000000000003090f14191e212527292b2c2c2c2c2c2a292623201c17120d0600000000000000000000000000000000040c141a1f23262626262626262625221d171008000000000000000000000000000000000000000000000000000000000000040b11171d22272c3034383b3e41444648494a4b4c4c4c4c4c4b4a49474643413e3b38342f2b2c353f49525a5f5f5f5f5f5f5f5f5f5f5a52493e33271b0f020000000000000000000000000000000000000b1825323e4b5865717e8b8f8f8f8f8d807366594d44515d6a77848f8f8f8f8f86796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000910181f262e353c434b525961686f777e858d94978f867c736a5f52463a2d20140700000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca094877a6d6053473a2d21140b0b09060200000000000000000000000000000000000000061019232c353e4750586169717880888f959ca09a948e8984807b7774716e6b696766656463636364656667696c6e7275797e83888e949aa19f97908880776e655c53493f362b21170c0200000000000000000000000000000000060c12171c202326292a2c2c2c2c2c2b292724201c17120c0600000000000000000000000810171d2225262626262626262625221d17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1e202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d19130d060000000000000000010910161a1e1f2020202020202020201f1c18120b04000000000000000000000000000000050d13191c1f2020202020202020201e1b17110a02000000000000000000000000000000080f151a1d1f2020202020202020201f1c18130c050000000000000000000000000000060c12171c202326292b2c2c2c2c2c2a2826231f1b16100a04000000000000000000000000000000000000030c131a1f2326262626262626262624201b140c0400000000000000000000000000000000000000000000000000000001080f151a1d1f2020202020201f1c17120b0400000000000000000000000000000000000000000000080f151a1e1f202020202020201e1b17110a0200000000000000000000000000000000000000000000000000000001080f151a1d1f2020202020201f1c17120b0400000000000000000000000000000000000000000000080f151a1e1f202020202020201e1b17110a020000000000000000000000000000000000000000000000000004090d1215181b1d1e1f2020201f1e1c1a1714100c070100000000000000000000000000000000000002090f141719191919191919191816110c06000000000000000000000000000000000000000000000000000000000000000000060b11161b2024282c2f323537393b3c3d3e3f3f403f3f3e3d3c3b393734322f2b28241f242d3740494f525353535353535353524f4940372c21160a000000000000000000000000000000000000000b1825323e4b5865717e8b989c9c9a8d807366594d44515d6a7784919c9c9c9386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000009121b222931383f474e555d646b727a81899097998f867d736a61584d42362a1e120500000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca194877a6d6154473b2e2118181816120e080100000000000000000000000000000000000007111a232c353e464f575f676e767d848b91979d9f9a95908c8784807d7a7876747371717070707171737476787b7e82858a8e94999fa19b948d867e766e655c534a41372e241a0f0500000000000000000000000000000000000001060b1014171a1c1e1f2020201f1e1c1a1714100b060100000000000000000000000000060c12161819191919191919191815110c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d08020000000000000000000000050a0e111313131313131313131312100c0701000000000000000000000000000000000002080d1012131313131313131313120f0b0600000000000000000000000000000000000004090e111313131313131313131312100c07010000000000000000000000000000000001060b1014171a1c1e1f2020201f1e1c1916130f0a0500000000000000000000000000000000000000000002090f131719191919191919191917140f090200000000000000000000000000000000000000000000000000000000000004090e1113131313131313120f0c0700000000000000000000000000000000000000000000000000040a0e111313131313131313120f0b060000000000000000000000000000000000000000000000000000000000000004090e1113131313131313120f0c0700000000000000000000000000000000000000000000000000040a0e111313131313131313120f0b0600000000000000000000000000000000000000000000000000000000000105090c0e10121313131312110f0d0b0804000000000000000000000000000000000000000000000003070a0c0d0d0d0d0d0d0d0c090601000000000000000000000000000000000000000000000000000000000000000000000000050b0f14181c1f2326282b2c2e30313232323332323231302e2c2a2825221f1b17131b252e373e4346464646464646464646433e372e251b1005000000000000000000000000000000000000000b1825323e4b5865717e8b98a5a69a8d807366594d44515d6a7784919ea9a09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000007121b242c343b424a515860676e767d848c939a9990877d746b61584f463c31261a0e0200000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca195887b6e6255483c2f25252524221e19130b0300000000000000000000000000000000000008111a232c343d454d555c646b727980868c92979da19c9894908c8a878482817f7e7d7d7d7d7d7e7f818385878a8e92969a9fa19c969089827b746c645c534a41382f251c12080000000000000000000000000000000000000000000004070b0d0f11121313131211100e0b080400000000000000000000000000000000000106090c0d0d0d0d0d0d0d0d0b0905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070b0d10111213131312110f0d0a07030000000000000000000000000000000000000000000000000003070a0c0d0d0d0d0d0d0d0c0b08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c101316191c1e2022232425262626262625242321201e1b1916130f0b09131c252c32373939393939393939393937322c251c130900000000000000000000000000000000000000000b1825323e4b5865717e8b98a5a69a8d807366594d44515d6a7784919eaaa09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000020e19232d363e464d545c636a717980878f969d9990877d746b62594f463d342a1f14090000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca396897d7064574b3e32323232312f2a241d150c0200000000000000000000000000000000000008111a222b333b434b525961676e747b81868c91969a9fa09c999693918f8d8c8b8a8a8a8a8a8b8c8d8f9194979a9ea29f9a95908a857e777169625a524a41382f261d130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040608090a0b0b0c0c0c0b0a09080604020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080b0d0f101112131313131212100f0d0b0907040000000000000000000000000000000000000000000000000000000000000000000000000000000104070808080808080808080806040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0e101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100e0b0702000000000000000000000000000000000000000000000005080b0c0c0c0c0c0c0c0c0c0c0b090501000000000000000000000005080b0c0c0c0c0c0c0c0c0c0c0b09050100000000000000000000000000000000000000000000000000040708080808080808080808070400000000000000000000000000000000000000000000000000030608080808080808080808080807050100000000000000000000000000000000000000000000000000000000000000000003070a0d0f11131516171819191919191817161513110f0c0a060300010a131b21272a2c2c2c2c2c2c2c2c2c2c2a27211b130a0100000000000000000000000000000000000000000b1825323e4b5865717e8b98a0a09a8d807366594d44515d6a7784919ea0a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000007131f2a353f4850575f666d747c838b9299a09a90877e756b625950473d342b22180e030000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eaba5988c7f73665a4e433f3e3e3e3e3b362f271e1409000000000000000000000000000000000000000810192129313940484f565d63696f757b80858a8e93969a9da0a09e9c9a9998979796969798999a9c9ea0a19e9a97938e8a857f79736d665f58504840382f261d140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040608090a0b0b0c0c0c0b0a0908060402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105080b0e101214161718181919181817161513110f0c090602000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0f1215171a1b1d1e1f1f20201f1f1e1d1c1a181613100d09050100000000000000000000000000000000000000000000000000000000000000000001070c11131515151515151515151513100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080a0c0d0e0f0f0f0f0f0e0d0c0a080502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13171b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b17130d060000000000000000000000000000000000000000050b111517181919191919191919191815110c060000000000000000050c111517181919191919191919181815110c0600000000000000000000000000000000000000000000060c10131515151515151515151513100c06000000000000000000000000000000000000000000040a0f1214151515151515151515151514110d08020000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0c0c0c0d0c0c0b0b0a08060502000000000000010910161b1e1f20202020202020201f1e1b161009010000000000000000000000000000000000000000000b1825323e4b5865717e8b939393938d807366594d44515d6a7784919393939386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000b1824303c47515a626970787f868e959ca39a91887e756c625950473e352b22191006000000000000000000000000000000000000000000000000000000000000000000111e2b3744515d6a7783909da9a79b8f83776b5f554e4c4b4b4b4a47413930261b100400000000000000000000000000000000000000070f171f272e363d444b52585e646a6f74797e82868a8e919496989a9c9d9e9fa0a0a09f9e9d9c9b999794918e8b87827e79736e68625b544d463e362e261d140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105080b0e101214161718181919181817161513110f0c0906020000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1114181a1d1f212224242525252525242321201d1b1815120e0a0601000000000000000000000000000000000000000000000000000000000000000000000001060b1014181b1f212426282a2b2c2c2c2c2c2c2b2a282725221f1c1915110d0803000000000000000000000000000000000000000000000000000000000000030b12181d20222222222222222222211f1c17110a010000000000000000000000000000000000000000000000000000000000000000000000000000000206090d10121517191a1b1c1c1c1c1c1b1a181614120f0c080501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181e23272929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292927231e181008000000000000000000000000000000000000070f161c21242525252525252525252524221d1811090000000000000810171d21242525252525252525252524211d17100900000000000000000000000000000000000000020a11181c2021222222222222222221201c18110a02000000000000000000000000000000000000070f151b1f212222222222222222222222201e19130d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131313110e0a0500000000000000000000000000000000000000000000000b1825323e4b5865717e868686868686807366594d44515d6a7784868686868686796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000e1a2733404c58636c747b828a91989fa09a91887e756c635a50473e352c2319100700000000000000000000000000000000000000000000000000000000000000000000101d2936424f5c6875818e9aa7ab9f93877c71675f5a5858585857524b42372c2115090000000000000000000000000000000000000000050d151d242b333940474d53595e64696d72767a7e8184878a8c8e8f909292939393929291908e8c8a8885827e7a76726d68625d57504a433b342c241c140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1114181a1d1f212224242525252525242321201d1b1815120e0a06010000000000000000000000000000000000000000000000000000000000000000000000060b1015191d212427292c2e2f30313232323231312f2e2c2a2825221e1a16120d08020000000000000000000000000000000000000000000000000000000000000001070c12171c2024282b2e313335363738393939393838363533312f2c2925211d18140e0903000000000000000000000000000000000000000000000000000000030d151d24292d2e2e2e2e2e2e2e2e2e2e2c28221b130b0100000000000000000000000000000000000000000000000000000000000000000000000005090e1216191c1f2123252728292929292828262523211e1b1815110d08040000000000000000000000000000000000000000000000000000000000000000000000000000000007111a22292f3336363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636332f29221a11070000000000000000000000000000000007101921282d3032323232323232323232312e29221b12090000000008111a22282d3132323232323232323232312e29221b12090000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140b020000000000000000000000000000000008111920262b2e2e2e2e2e2e2e2e2e2e2e2e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b57647079797979797979797165594c44505d697579797979797979766b5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b68747e858d939393939392887f766c635a51483e352c231a100700000000000000000000000000000000000000000000000000000000000000000000000e1b2734404d5966727e8b97a3afa4998d8379706a6765656565635d53493d3226190d000000000000000000000000000000000000000000030b121a21282f353c42484d53585d62666a6e7275787b7d7f81828485868686868685848381807d7b7875726e6a66615c57514b453f38312a221a120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1015191d212427292c2e2f30313232323231312f2e2c2a2825221e1a16120d080200000000000000000000000000000000000000000000000000000000000000050c11171c2125292d303336383a3c3d3e3e3f3f3e3e3d3c3b393734312e2a27221e19130e080200000000000000000000000000000000000000000000000000000000050c12181d23272c3034373a3d3f414344454646464645444342403e3b3835312d29241f1a140e0801000000000000000000000000000000000000000000000000010b151f272f35393b3b3b3b3b3b3b3b3b3b38332d251d130900000000000000000000000000000000000000000000000000000000000000000001060c11151a1e2225282b2e3032333535363636353433312f2d2b2824211d19140f0a0500000000000000000000000000000000000000000000000000000000000000000000000000030e19232c343b4042434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434342403b342c23190e030000000000000000000000000000040f19232b33393d3f3f3f3f3f3f3f3f3f3f3d3a342d241b1106000005101a232c33393d3f3f3f3f3f3f3f3f3f3f3d3a342c241b1006000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b38342e261d140a00000000000000000000000000000007101a232b32373a3b3b3b3b3b3b3b3b3b3b3b3936302920170d03000000000000000004070808080808080808080807050200000000000000000000000000000000000000000000000000000000000000000001040708080808080808080808070400000000000000000000000000000000000000000000000000000000000a16232f3c48535e686c6c6c6c6c6c6c6c68605549414d58636a6c6c6c6c6c6c6c6b645a4f43372a1e11050000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b687582868686868686868680766d645b51483f362c231a11080000000000000000000000000000000000000000000000000000000000000000000000000c1825313d4a56626e7b87939eaaaa9f958b827b7673727171716f655a4e4235281c0f0000000000000000000000000000000000000000000001080f161d242a30363c42474c51565a5e6265696b6e70727476777879797979797877767573716f6c6966625e5a56514b46403a342d261f18100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11171c2125292d303336383a3c3d3e3e3f3f3e3e3d3c3b393734312e2a27221e19130e0802000000000000000000000000000000000000000000000000000000030a11171d22282d3135393d40424547484a4b4b4c4c4b4b4a49474543413e3a37332e29241f19130c0600000000000000000000000000000000000000000000000000020910171d23292e33383c404447494c4e505152525353525251504e4c4a4845413d3935302b251f19130c05000000000000000000000000000000000000000000000007121d273139404548484848484848484847443f372f251b100400000000000000000000000000000000000000000000000000000000000000060c12171c21262a2e3235383a3d3f4041424242424241403e3c3a3734312d2925201b16100b0500000000000000000000000000000000000000000000000000000000000000000000000914202a353e464c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4c463e352a20140900000000000000000000000000000a16212b353d44494b4c4c4c4c4c4c4c4c4c4a453f362d23180c01000b16212c353e45494b4c4c4c4c4c4c4c4c4b4a453e362c22170c01000000000000000000000000000006111c262f383f4548484848484848484848453f382f261c110600000000000000000000000000050f19222c353d4347484848484848484848484846413b32291f1409000000000000060c10131515151515151515151514110e0802000000000000000000000000000000000000000000000000000000000001070d11141515151515151515151513100c0700000000000000000000000000000000000000000000000000000007131f2b37424d565c5f5f5f5f5f5f5f5f5d574e433c4751595e5f5f5f5f5f5f5f5f5a52483e32261a0e020000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6773797979797979797979766d645b52493f362d241a1108000000000000000000000000000000000000000000000000000000000000000000000000000915222e3a46525e6a76828d98a3ada79d948d8783807e7e7e7e76695d5043362a1d10000000000000000000000000000000000000000000000000050b12191f252b31363c40454a4e5256595c5f62646668696a6b6c6c6c6c6c6b6b6968666462605d5956524e4a45403a352f29221c150d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d22282d3135393d40424547484a4b4b4c4c4b4b4a49474543413e3a37332e29241f19130c0600000000000000000000000000000000000000000000000000060d151b22282e33383d4145494c4f5153555657585858585757555452504d4a47433f3a35302a241e1710090200000000000000000000000000000000000000000000040c131b22282e343a3f44484c505356585a5c5e5f5f5f5f5f5f5e5d5b595754514d4a45413c36312b241d160f07000000000000000000000000000000000000000000000c18232f39434b5154555555555555555554504941372c21150a0000000000000000000000000000000000000000000000000000000000040b11171d23282d32363a3e414447494b4d4e4f4f4f4f4f4e4c4b494643403d3935302c27211c161009030000000000000000000000000000000000000000000000000000000000000000000d1925313c4650575c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5750463c3125190d0000000000000000000000000004101b27323d474f55585858585858585858585650483f34291d120604101c28333d474f56585858585858585858585650483e34291d110500000000000000000000000000000b17222d38424a5154555555555555555554514a42382d22170b000000000000000000000000030d17212b343e474e535555555555555555555555524c443b31261a0e03000000020a11171c2021222222222222222222201e19140d05000000000000000000000000000000000000000000000000000000030b12181d2022222222222222222221201c18120a0200000000000000000000000000000000000000000000000000030f1a26303b444b505353535353535353514c453c353f474e5253535353535353524f4840372c21160a000000000000000000000000000000000000000000000000000000000000000000000000000d1a26333f4b5761696c6c6c6c6c6c6c6c6c6b645b524940362d241b1208000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a36424e5a65707c87919ba4aba69e98938f8d8b8b8b8376695d5043362a1d100000000000000000000000000000000000000000000000000001070e141a20252b3035393e4246494d50535557595b5c5e5e5f5f5f5f5f5f5e5d5b5a585653504d4a46423e39342f29241e17110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151b22282e33383d4145494c4f5153555657585858585757555452504d4a47433f3a35302a241e17100902000000000000000000000000000000000000000000000810181f262d33393f44494d5255595b5e6062636465656565646362605e5c5956534f4b46413b362f29221b140c040000000000000000000000000000000000000000060e161e252c333a40454b5054585c5f626567696a6b6c6c6c6c6b6a69686663605d5a56514c47423c362f2821191109010000000000000000000000000000000000000004101d2934404b555d616161616161616161605b53493d32261a0e01000000000000000000000000000000000000000000000000000001080f161c23282e34393e42464a4e51535658595b5b5c5c5c5b5a59575553504d4945413c37322d27211b140e070000000000000000000000000000000000000000000000000000000000000000111d2936424d58626869696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696862584d4236291d11000000000000000000000000000713202c38434e596165656565656565656565625a50453a2e2216090814212d39444f596165656565656565656565625a50453a2e21150900000000000000000000000000000f1b27333f4a545c616161616161616161615c544a3f33271b0f0300000000000000000000020b151f29333c4650595f61616161616161616161615e564d42372b1f13060000020b141c23282c2e2e2e2e2e2e2e2e2e2e2d2a251f170f0500000000000000000000000000000000000000000000000000030d151d24292d2e2e2e2e2e2e2e2e2e2e2c28231c140c020000000000000000000000000000000000000000000000000009141f29323a4044464646464646464645413a332d353d42454646464646464646433e372e251a1005000000000000000000000000000000000000000000000000000000000000000000000000000a17232f3a454f585e5f5f5f5f5f5f5f5f5f5f5a524940372e241b1209000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d49545f6a757f89929aa0a5a9a39f9b999898908376695d5043362a1d1000000000000000000000000000000000000000000000000000000003090f141a1f24292d32363a3d404346494b4d4e50515252535353525251504f4d4b494744413e3a36322d28231e18120c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181f262d33393f44494d5255595b5e6062636465656565646362605e5c5956534f4b46413b362f29221b140c0400000000000000000000000000000000000000010a121a222a31383e454a5055595e6265686a6d6e70717172727171706f6d6b6966635f5b56524c47413a342d251e160e05000000000000000000000000000000000000060f18202830373e454b51565c6064686c6f7274757778797979797877767472706d6a66625d58534d47413a332b231b130a010000000000000000000000000000000000000713202c3945515c676d6e6e6e6e6e6e6e6e6d655a4e4236291d100400000000000000000000000000000000000000000000000000040c131a21272e343a3f44494e52565a5d60626466676869696968676664625f5c5955514d48433e38322c261f18110a03000000000000000000000000000000000000000000000000000000000000121f2c3945525e6a747676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676746a5e5245392c1f12000000000000000000000000000b17232f3c4854606b717272727272727272726c62564a3e3125190c0b1724303c4955616b727272727272727272726c62564a3e3125190c0000000000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b4f43372b1e1205000000000000000000000a141d27313b454e58626b6e6e6e6e6e6e6e6e6e6e6e685e53473b2f221509000009141d262e34383b3b3b3b3b3b3b3b3b3b3a36302921170d030000000000000000000000000000000000000000000000010b151f272f35393b3b3b3b3b3b3b3b3b3b39342e261e140a00000000000000000000000000000000000000000000000000020d1720282f3438393939393939393938353029232b313639393939393939393937322c251c1309000000000000000000000000000000000000000000000000000000000000000000000000000006121e29333d464d51535353535353535353524f4940372e251c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37434e58636d7680888f95999c9e9fa0a0a09d908376695d5043362a1d10000000000000000000000000000000000000000000000000000000000003090e13181d21262a2d3134373a3c3e4042434445464646464645444342403f3c3a3734312e2a26211d18120d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121a222a31383e454a5055595e6265686a6d6e70717172727171706f6d6b6966635f5b56524c47413a342d251e160e050000000000000000000000000000000000010a131c242c343b434950565b61656a6e717477797b7c7d7e7e7e7e7e7d7b7a7875726f6b67625d58524c453e37302820170e0500000000000000000000000000000000060f18212a323a41494f565c62676c7175787b7e8182848586868686858483817e7c7976726e69645e58524b443d352d251c130a0100000000000000000000000000000000000814212e3b4754616d797b7b7b7b7b7b7b7b766a5e5145382b1e1205000000000000000000000000000000000000000000000000070e161d252c32393f454b50555a5e6266696c6f71737475757575757472706e6c6965615d59544f49443e37312a231c140d05000000000000000000000000000000000000000000000000000000000013202c3946535f6c798383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383796c5f5346392c2013000000000000000000000000020e1a27333f4b5864707c7e7e7e7e7e7e7e7e7e72665a4d4135281c100e1a2733404c5865717d7e7e7e7e7e7e7e7e7e72665a4d4135291c10040000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b776c5f5246392c20130600000000000000000008121c252f39434d57606a747b7b7b7b7b7b7b7b7b7b7a6f63564a3d3024170a0005101b262f383f454748484848484848484846413b33291f1409000000000000000000000000000000000000000000000007121d27313940454848484848484848484845403830261c110600000000000000000000000000000000000000000000000000050e161d23282b2c2c2c2c2c2c2c2c2b29241e1920262a2c2c2c2c2c2c2c2c2c2a26211a130a010000000000000000000000000000000000000000000000000000000000000000000000000000010c17212b343c414546464646464646464646433e372e251c130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26313c47515b646d767d84898d90929393939393908376695d5043362a1d100000000000000000000000000000000000000000000000000000000000000003080c1115191d2124282a2d2f3233353637383939393939383837353432302e2b2825211e1a15110c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242c343b434950565b61656a6e717477797b7c7d7e7e7e7e7e7d7b7a7875726f6b67625d58524c453e37302820170e05000000000000000000000000000000000a131c252e363e464d545b61676c71767a7d81848688898a8b8c8c8b8a8a888684827e7b77736e69635d575049413a322920170e050000000000000000000000000000050f18212a333c444c535a61676d73787c8185888b8d8f90929293939292918f8d8b8986827e7a756f6a635d564f473f372e251c130a00000000000000000000000000000000000815212e3b4854616e7b8888888888888885786b5e5145382b1e1205000000000000000000000000000000000000000000000008111820282f363d444a50565c61666a6e7276797b7e80818282828282817f7d7b7875716d6965605a554f49423c352e261f170f060000000000000000000000000000000000000000000000000000000013202c3946535f6c798690909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909086796c5f5346392c201300000000000000000000000005111e2a36434f5b6774808c8c8c8c8c8c8c8c8276695d5044382b1f13111d2a36434f5b6874818c8c8c8c8c8c8c8c8276695d5145382c2014070000000000000000000000000013202c3946535f6c798688888888888886796c5f5346392c201306000000000000000006101a242e37414b555f69727c86888888888888888882786e6256493d3023170a000a16222d37414a5054555555555555555555524c453b31261b0f03000000000000000000000000000000000000000000010d18242f39434b5154555555555555555554514a42382d22170b0000000000000000000000000000000000000000000000000000040c12181c1f20202020202020201f1c18130f151a1d1f202020202020201f1e1a1610090100000000000000000000000000000000000000000000000000000000000000000000000000000000051019222a3035383939393939393939393937322c251c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a353f49525b646c72787d8183858686868686868376695d5043362a1d100000000000000000000000000000000000000000000000000000000000000000000105090d1115181b1e21232527282a2b2c2c2c2c2c2c2c2b2a29272523211f1c1915120e0905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c252e363e464d545b61676c71767a7d81848688898a8b8c8c8b8a8a888684827e7b77736e69635d575049413a322920170e05000000000000000000000000000008121c252e37404850585f666c72787d82868a8d90929496979898989897969593918e8b87837f7a746f68625b534c433b322920170d04000000000000000000000000030d17212a333c454e565d656c72797e84898d919497999b9d9e9fa0a09f9e9d9c9a9895928e8a85817b756e686159514940372e251c1208000000000000000000000000000000000815212e3b4854616e7b8894959595959285786b5e5145382b1e12050000000000000000000000000000000000000000000109121a222a323a41484f555c61676d72767b7e8285888a8c8e8f8f8f8f8e8d8c8a8785817d7975706b66605a544d463f3830292118100700000000000000000000000000000000000000000000000000000013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9386796c5f5346392c20130000000000000000000000000915212d3a46525f6b7784909898989898989285796c6054473b2f221614212d3946525e6b7784909898989898989285796d6154483c3023170b0000000000000000000000000013202c3946535f6c798693959595959386796c5f5346392c20130600000000000000050e18222c364049535d67717a848e9595959595958d847a70665d52463a2e211508000e1b27333e49535c616161616161616161615e574d42372b1f140800000000000000000000000000000000000000000006111d2935404b555d616161616161616161615c544a3f33281b0f03000000000000000000000000000000000000000000000000000001070c1012131313131313131312100c0804090e11131313131313131313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710181f25292c2c2c2c2c2c2c2c2c2c2c2a27211b130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232d374049525a61676c717477787979797979797974685c4f4336291d100000000000000000000000000000000000000000000000000000000000000000000000000105080c0f121416181a1c1d1e1f1f2020201f1f1e1d1c1b191715120f0c090502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c252e37404850585f666c72787d82868a8d90929496979898989897969593918e8b87837f7a746f68625b534c433b322920170d0400000000000000000000000006101a242e374049525a626971777d84898e92969a9c9fa1a3a4a5a5a5a5a4a3a1a09d9a97948f8b85807a736c655d554d443b32291f160c0100000000000000000000000a151f29333c454e575f676f767d848a8f94999da1a3a6a8a9a7a6a6a6a6a7a9a9a7a4a19e9a96918c868079726b635b524940372e241a10060000000000000000000000000000000815212e3b4854616e7b8894a1a2a29e9285786b5e5145382b1e12050000000000000000000000000000000000000000010a131b242c343c444b535a60676d73787d82878b8e9295979997969696969698989694918d8a86817c77716b655f58514a423b332a22191108000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09386796c5f5346392c20130000000000000000000000000c1825313d4956626e7a87939fa5a5a5a5a195887c6f63574a3e3225191724303c4955616e7a87939fa5a5a5a5a195897d7064584c3f33271b0e0200000000000000000000000013202c3946535f6c798693a0a2a2a09386796c5f5346392c201306000000000000030d17202a343e48515b656f79838c96a0a2a2a2988f857b72685e544b40352a1e120500111e2a37434f5b656d6e6e6e6e6e6e6e6e6e695f54483c3024180c0000000000000000000000000000000000000000000a16222e3a46515d676e6e6e6e6e6e6e6e6e6d665b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e14191d1f2020202020202020201f1e1b161009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e3740484f565c6165686a6b6c6c6c6c6c6c6c6a62584c4034271b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000205080a0c0e0f10111213131313131211110f0e0c0a080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a242e374049525a626971777d84898e92969a9c9fa1a3a4a5a5a5a5a4a3a1a09d9a97948f8b85807a736c655d554d443b32291f160c0100000000000000000000030e18222c364049525b646c747b82898f949a9ea2a6a9a7a5a3a2a1a0a0a1a2a3a5a7aaa7a3a09b96918b857e776f675f564d443b31271d13090000000000000000000007121c27313b454e576069717981888f959ba0a5a9a7a4a09e9c9b9a99999a9a9c9ea0a3a7aaa6a29d97918b847d756d645b524940362c22170d0200000000000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000000000000000000a131c252d363e464e565d646b72787e84898e93979793908e8c8a898989898a8b8c8f91949896928d88827d76706a635c544c453c342c231a11070000000000000000000000000000000000000000000000000013202c3946535f6c798693939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939386796c5f5346392c20130000000000000000000000030f1c2834414d5965727e8a97a3a39f9fa4a4988c7f73665a4e4135291c1a27333f4c5865717d8a96a3a49e9ea2a5998c8074685b4f43372a1e120600000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000010b151f29323c46505a636d77818b959ea8ada49a90877d736960564c42392f24190d0100121f2c3945525f6b777b7b7b7b7b7b7b7b7a7064584c4035291d110500000000000000000000000000000000000000030f1b27323e4a56626e797b7b7b7b7b7b7b7b786c5f5346392d20130600000000000000040708080808080808080807040100000000000000000000000004060808080808080808060300000000000000000000000003060808080808080808080806020000000000000000000000000000000000000000000000000000000000000000000003080d101213131313131313131313110e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e363e444a5055585b5d5f5f5f5f5f5f5f5f5e5950463b3024180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222c364049525b646c747b82898f949a9ea2a6a9a7a5a3a2a1a0a0a1a2a3a5a7aaa7a3a09b96918b857e776f675f564d443b31271d1309000000000000000000000a151f2a343e48525b646d767e868d949aa0a5aaa6a29e9b999795949494949596989b9ea1a5aaa7a29c969089817971685f564d43392f251b10050000000000000000030e19232e38434d576069727b838b939aa0a6aba5a09b9794918f8e8d8d8d8d8e8f9194979a9fa4a9a8a39c968f877f766d645b52483e34291f140900000000000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000000000000000000000009121c252e374048505860686f767d83898f9597938e8a8784817f7e7d7c7c7c7d7e808285888b8f9499938e88827b746d665e564e463e352c2319100600000000000000000000000000000000000000000000000013202c3946535f6c798686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5346392c2013000000000000000000000007131f2c3844505d6975828e9aa39992939aa49b8f82766a5d5145382c1f1d2a36424f5b6874818d99a59a929198a29c9084776b5f53463a2e22150900000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000009131d27313a444e58626c758089939da7afa59b92887e746b61574e443a31271d12070000121f2c3845525e6a7682888888888888888175695d5145392d22160a0000000000000000000000000000000000000008141f2b37434f5b67737e8888888888888883776b5f5246392c2013060000000000060c101315151515151515151513110c07010000000000000000060c10131515151515151514120f0a040000000000000000040a0f1214151515151515151514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c242c33393f44484c4f515253535353535353524e473e342a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040608090a0a0a0a09080705030100000000000000000000000000000000000000000000000000000002040607080808080806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2a343e48525b646d767e868d949aa0a5aaa6a29e9b999795949494949596989b9ea1a5aaa7a29c969089817971685f564d43392f251b1005000000000000000006111c26313c46505a646d76808890979fa5aba6a09b96928f8c8a8888878787888a8c8e91959a9fa4aaa8a19a938b837a71685f554b41372c22170c010000000000000009141f2a35404a555f68727b858d959da5aba6a099948f8b8885838181808081818385878a8e93989ea4aba7a099918980766d645a50453b30261b1005000000000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000000000000007111b242e374049525a626a727981888e9597918c87827e7a77757371706f6f6f70717375787b7f83888d9298938d867f787068605850473e352b22180f050000000000000000000000000000000000000000000000131f2c3946525f6b767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979766b5f5246392c1f1300000000000000000000000a16232f3b4754606c7985919e9f93878894a09e9285796d6054483b2f23202d3946525e6b7784909ca1958986919ea093877b6f62564a3e3125190d00000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000008111b252f39434c56606a747e87919ba5afa69d938980766c62594f453c32281f150b010000111d2a36424e5a66717d8995959595959185796d62564a3e32261a0e030000000000000000000000000000000000000c1824303c48545f6b77838f95959595958a7e72665a4f43372a1e1105000000020a11181c20212222222222222222201d18120b030000000000020a11171c2021222222222222211f1b160f08000000000000080f161b1f212222222222222222211e1a150e0700000000000000000000000000000000020608080808080808080808080808080808080808080808080808080706050402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121a21282e34383c404244454646464646464645423c352c22180d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0e111315161717171716151312100d0b080400000000000000000000000000000000000000000004080c0f111214141515151413110f0c09050000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26313c46505a646d76808890979fa5aba6a09b96928f8c8a8888878787888a8c8e91959a9fa4aaa8a19a938b837a71685f554b41372c22170c01000000000000000c17222d38434d58626c768089919aa2a9a9a29b958f8a8682807d7c7b7a7a7b7b7d7f8285898e93999fa7aca59d958d847a71675d53493e33281d1207000000000000040f1a26313c47515c66707a848e979fa7aca39c958e89837f7b787674737373737476787b7e82878d939aa1a9aba39b928980766c61574d42372c21160b000000000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000000000000000000050f19232d364049525b646c747c848b9298918b85807b76726e6b68666463626263636567696c6f73777c81878d9398918a827a726a625950473e342a21170d0200000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e1100000000000000000000010e1a26323f4b5764707c8895a19d908484919da195897c7064574b3e322623303c4955616e7a87939f9e9285828f9ba3978b7e72665a4d4135291c1004000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000006101a232d37414b555e68727c869099a3ada89e948b81776e645a50473d332a20160d030000000e1a26323d4955616d7884909ca2a2a2968a7e72665a4e43372b1f1307000000000000000000000000000000000005111d2935404c5864707c8894a0a2a29d9185796d61564a3e32261a0e020000020b141c23282c2e2e2e2e2e2e2e2e2e2d29241d150d03000000010b141c22282c2e2e2e2e2e2e2e2e2b27211a12090000000009121a21272b2e2e2e2e2e2e2e2e2e2d2b26201810070000000000000000000000000003090e121415151515151515151515151515151515151515151515151515141312100e0c0a0704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171d23282c3033363839393939393939393936312b231a1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f13171a1d202123232424232322201e1c1a1714100b05000000000000000000000000000000000001080f14181b1d1f202122222221201e1c1915110c0701000000000000000000000000000000000000000000000000000000000000000000000000000c17222d38434d58626c768089919aa2a9a9a29b958f8a8682807d7c7b7a7a7b7b7d7f8285898e93999fa7aca59d958d847a71675d53493e33281d120700000000000006111d28343f4a545f6a747e88919ba3aca89f979089837e7a7673716f6e6d6d6e6f707375797d82888e959ca4ada79f968d83796f655a50453a2f24180d0200000000000915202b37424d58636e78828c96a0a9aba29a928a837d77736f6c69686766666768696b6e72767b81888f979fa8ada49b91887e73695e53493d32271c10050000000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000000000020d17212b353f48525b646d757e868e96948d87807a746f6a66625f5c59585656555657585a5c5f63676b70767b82888f96948c847c736b625950463c33291e140a000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e0000000000000000000005111d2a36424e5b6773808c98a49a8d81818e9aa5988c8073675a4e42352927333f4c5864717d8a96a29b8f82808c98a59a8e8276695d5145382c201407000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000040e18222c353f49535d67707a848e98a2aba9a0968c83796f655c52483e352b21180e04000000000915212d3944505c6874808b97a3aea69a8f83776b5f53473b3024180c00000000000000000000000000000000000a16212d3945515d6975818c98a4aea4988c8174695d5145392d22160a0000000a141d262e34383b3b3b3b3b3b3b3b3b39352f271f150b01000009131d262d34383b3b3b3b3b3b3b3a37322c241b1107000007111b242c32373a3b3b3b3b3b3b3b3b3a37312a22190f050000000000000000000000070e151a1e212222222222222222222222222222222222222222222222222121201e1d1b191614110d09050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11171c202427292b2c2c2c2c2c2c2c2c2c2a25201911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10161b1f23272a2c2e2f303030302f2e2d2b292624211c160f07000000000000000000000000000000020b131a2025282a2c2d2e2e2e2e2e2c2b2825211d18130d06000000000000000000000000000000000000000000000000000000000000000000000006111d28343f4a545f6a747e88919ba3aca89f979089837e7a7673716f6e6d6d6e6f707375797d82888e959ca4ada79f968d83796f655a50453a2f24180d0200000000000b17232e3945505b66717b86909aa3ada89e968d867e78726e6a66646261616161626466696d71767c838b929ba4ada89f958b81766c61564b40352a1e130700000000020e1a26313d48535f6a75808a949ea8ada39990888078726c67635f5d5b5a59595a5b5d5f62666b70767d858d959ea8ada39a8f857b70655a4f44382d21150a0000000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000000000000000a141f29333d47515a646d767f889098918a837b756f69635e5a56524f4d4b4a4a4a4a4a4b4d5053575b60656a70767d848b93968e867d746b61584e443b30261c11070000000000000000000000000000000000000000000a16212c3740484f525353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524f4840372c21160a000000000000000000000814212d3946525e6a77838f9ca4978b7e7e8b97a49b8f83766a5e5145382c2a36424f5b6774818d99a5988c807c8995a29e9286796d6154483c3023170b000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600030c16202a343e47515b656f78828c96a0aaaba1978e847a70675d534a40362d23190f06000000000005101c2834404b57636f7b87929eaaab9f93877b7064584c4034281c1105000000000000000000000000000000020e1a26323e4a56616d7985919da9ab9f93877b7064584c4035291d1105000006111c262f383f4548484848484848484845403931271d12070005101b252f383f444748484848484847433d362d23180d02020d18232d363d4347484848484848484847423c342b21170c0000000000000000000007101820262b2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2c2b2a282523201d1915110d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1014171a1c1e1f202020202020201f1d1a140e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f161c22272b2f3336393b3c3d3d3d3d3c3b39383533302d282119100700000000000000000000000000000a141d252b313437383a3b3b3b3b3b393734312d29241e18110a030000000000000000000000000000000000000000000000000000000000000000000b17232e3945505b66717b86909aa3ada89e968d867e78726e6a66646261616161626466696d71767c838b929ba4ada89f958b81766c61564b40352a1e13070000000004101c28333f4a56616c77828d98a2aca99f968c847b746d67625d5a57565454545455575a5d61656b71788089929ba4aea79d93887e73685d51463a2f23180c0000000007131f2b36424e5965707b86919ca6b0a59b91877e766e67605b5753504e4d4d4d4d4e5053565a5f656b737b838c96a0aaaba1978c82766b6055493e32261a0e0300000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000000006111b26303b454f59636c767f8891988f878078716a635d58534e4a4d50535556575757575554514e4b4f54595f656b7279818991988f867d736a60564c42382e23180e03000000000000000000000000000000000000000005101a252e373e4346464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372e251a1005000000000000000000000c1824303d4955626e7a86939fa195887c7b8894a19e9286796d6154483c2f2d3945525e6a7783909ca295897c7a86939fa295897d7064584c3f33271b0e020000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306010b151e28323c464f59636d77818a949ea8aca2998f857c72685e554b41382e241b1107000000000000000c17232f3b47525e6a76828d99a5b0a4988c8074685c5145392d21150900000000000000000000000000000007131f2b37424e5a66727e8a96a2ada69a8e83776b5f53473c3024180c0000000b17222d38424a51545555555555555554514b43392f23180c000a16212c37414a5054555555555555534f483f352a1f130707131e2a353f484f535555555555555555534e463d33281d11050000000000000000050f19222a31373a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a39383634322f2c2926221d19140f09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0e1011121313131313131313110d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a21272d32373c3f434547494a4a4a4a49484644423f3d39332b23190f0400000000000000000000000007121c262f363d4143454647484848474644413d39342f29231c150d050000000000000000000000000000000000000000000000000000000000000004101c28333f4a56616c77828d98a2aca99f968c847b746d67625d5a57565454545455575a5d61656b71788089929ba4aea79d93887e73685d51463a2f23180c000000000915212d3844505c67727e89949fa9ada2978d847a7169625b56514e4b4948474748494b4d51555a60676e768089929ca7afa59a8f84796e63574b4034281c10040000000b17232f3b47535e6a76818d98a3ada99e93897f756c645c554f4a474442414040404244464a4e545a6169717a848e98a3ada99e93887c71665a4e43372b1f130700000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000000000000010c17222d38424d57616b757e8891978e867d756e665f58524c4d52565a5d5f61636364646362605e5b57524d4e545a61686f777f8790988f867c72685e544a3f352a1f140900000000000000000000000000000000000000000009131c252c32373939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937322c251c130900000000000000000000030f1b2834404c5965717d8a96a29e9286797885919da295897d7064574b3f32303c4855616e7a86939f9f9286797784909ca5998c8074685b4f43372a1e12060000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130609131d26303a444e58616b757f89939ca6aea49a90877d736a60564c43392f261c1209000000000000000007131e2a36424e5965717d8994a0aca89d9185796d6155493e32261a0e0200000000000000000000000000000c18232f3b47535f6b77838e9aa6ada1968a7e72665a4f43372b1f13080000000f1b27333f4a545c6161616161616161615d554b4034291d10040f1b27323e49535b61616161616161605951463b3024180c0b17232f3b4651596061616161616161615f584f44392d22150900000000000000000c17212b343c42474848484848484848484848484848484848484848484848484847464443413e3c3935322e2925201a150f0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151d242c32383e43484c4f52545556575756555453514e4c49443d352b21160b0000000000000000000000020d19242e3841484d505253545555555452504d4945403a342d261f170f060000000000000000000000000000000000000000000000000000000000000915212d3844505c67727e89949fa9ada2978d847a7169625b56514e4b4948474748494b4d51555a60676e768089929ca7afa59a8f84796e63574b4034281c10040000000d1925313d4955616c78848f9aa5b0a69b90867b71685f57504a45413e3c3b3a3a3b3c3e4144494f555c656d76808b95a0abaca1968a7f73685c5045392d2115090000020f1b27333f4b57636f7b87929ea9aea3978c82776d635a524a443f3a37353433333435373a3e42484f575f68727c86919ca7afa4998e82766b5f53473b2f23170b00000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000000000008131e29343f49545e69737d8791988e857c746b635c544e4c53585e6266696c6e6f707171706f6d6a67635e59534c4f565d656d757e8790988e847a70665b51463c31261b10040000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a010000000000000000000006121f2b3744505c6875818d9aa69c8f837675818e9aa5988c8073675b4e4236333f4b5864717d8a96a29c8f837674818d99a69c9084776b5f53463a2e2215090000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201307111b252f38424c56606a737d87919ba5aea59c92887e756b61584e443b31271d140a000000000000000000020e1a25313d4955606c7884909ba7ada195897d72665a4e42362a1f13070404040404040404040404040404101c2834404c58636f7b87939faba89d9185796d61564a3e32261a0f03000000121e2b37434f5b666d6e6e6e6e6e6e6e6d675c5145392c201307131f2b37434f5a656d6e6e6e6e6e6e6b63584c4034281c100e1a2733404c57626b6e6e6e6e6e6e6e6e6a61564a3e3125180c0000000000000005111d28333d464e53555555555555555555555555555555555555555555555555545353514f4d4b4845423e3a35302b26201a140d06000000000000000000000000000000000000000000000000000000000205090b0e0f101010100f0d0b0905020000000105080a0c0d0d0d0c0a08050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f272f363d44494f54585b5e60626363636362615f5d5b58554f473d32271b10040000000000000000000006121e2a35404a53595c5e6061616161615f5d5956514c463f38312921180f0600000000000000000000000000000000000000000000000000000000000d1925313d4955616c78848f9aa5b0a69b90867b71685f57504a45413e3c3b3a3a3b3c3e4144494f555c656d76808b95a0abaca1968a7f73685c5045392d211509000004101d2935414d5965717d8995a0acaca0958a7e746960564d463f393532302e2e2e2e2f3234383d444b535b656e79838e99a4b0a79c9085796d6155493d3125190c000006121e2b37434f5c6874808c97a3afa99d92867b70655b51484039332e2b2927262627282a2e32373d454d56606a74808b96a1adaa9f93877b6f64574b3f33271b0e02000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000020e19242f3a45505b66707a858f998f867c736a6259524a50575e64696e7276787b7c7d7d7d7d7b7976736f6a645e57504b535b636c757e8791968c82786d63584d42372c21160a000000000000000000000000000000000000000000010910161a1e1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1e1a1610090100000000000000000000000a16222e3b4753606c7885919da5998d8074727e8a97a39c8f83766a5e51453936424f5b6774808c99a5998c8073717d8a96a3a094877b6f62564a3e3125190d0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130f19232d37414a545e68727c858f99a3ada79d938a80766c63594f463c32291f150b02000000000000000000000915212c3844505c67737f8b97a2aea69a8e82766a5f53473b2f231711111111111111111111111111111115212d3944505c6874808c98a4afa4988c8074695d5145392d21160a0000000013202c3946525f6c777b7b7b7b7b7b7b796d6154473b2e21140c1824303c48535f6b777b7b7b7b7b7b74685c5145392d21150f1c2835424e5b68747b7b7b7b7b7b7b7b7266594c4033261a0d000000000000000915222d39444f585f61616161616161616161616161616161616161616161616161605f5e5c5a5755514e4a46413c37312b251f18110a0200000000000000000000000000000000000000000000000004090e1215181a1c1d1d1d1c1b1a1815120e0a05080d111417191a1a1a181714120e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f28313941484f555b6064686b6d6f707070706f6e6c6a676561594f44382c201407000000000000000000000916222e3a46525c64696b6c6d6e6e6e6d6c6966615c57514a423b332a21180f0500000000000000000000000000000000000000000000000000000004101d2935414d5965717d8995a0acaca0958a7e746960564d463f393532302e2e2e2e2f3234383d444b535b656e79838e99a4b0a79c9085796d6155493d3125190c00000713202c3845515d6976828e9aa5b1a79b8f84786d62584e443c342e292523222121212325282d32394149535c67727d88939fabada195897d7165594d4135281c1003000915222e3a47535f6c7884909ca8b0a4988c8175695e54493f362e27221e1c1a1a1a1a1c1e21262c333b444e58636e7985909ca8b0a4988c8074685b4f43372a1e1105000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000000000008131f2a35414c57626d77828c9791877d736a6158504a525a62696f757a7e828587898a8a8a8a8886837f7b756f69615a5149515a626b757e8993948a7f74695f54493d32271c100500000000000000000000000000000000000000000000050a0e1113131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110e0a05000000000000000000000000010d1926323e4a57636f7b8894a0a2968a7d716e7b8794a09f92867a6d6155483c3945525e6a7783909ca296897d706e7a87939fa3978b7e72665a4d4135291c100400000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201318212b353f49535c66707a848e97a1aba89e958b81776e645a51473d342a20170d03000000000000000000000004101c27333f4b57636e7a86929ea9ab9f93877b6f63574c4034281e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e25313d4955616d7985919ca8ab9f93877b7064584c4034291d11050000000013202c3946535f6c79868888888888887b6e6154483b2e2115111c2834404c5864707c888888888885796d6155493d3125190f1c2835424f5b687582888888888888807366594d4033261a0d000000000000000c1825313e4a56616a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6c6a696664615e5a56524d48423d373029231b140c0400000000000000000000000000000000000000000002090f151a1e21242728292a2a29282624211e1a151014191d2123252626262523211e1b1610090100000000000000000000000000000000000000000000000000000000000000000000000000010b151f28313a434b525a60666b7074777a7b7d7d7d7d7b7a787674716b6054483c2f231609000000000000000000000b1824313e4a56636e7577797a7b7b7b7a7875726d68625b544d453c332a21170e0400000000000000000000000000000000000000000000000000000713202c3845515d6976828e9aa5b1a79b8f84786d62584e443c342e292523222121212325282d32394149535c67727d88939fabada195897d7165594d4135281c1003000a16232f3c4854616d7986929eaaaea2968a7e73675c51463c322a221d19161514141516191c21272f37414b55606b77828e9aa6b2a69a8e8275695d5144382c1f1306000b1824313d4a56626f7b8894a0acaca094887c7064584d42372d241c16120f0e0d0d0e0f12151b2129323c47525d6874808b97a4b0a89c9084776b5f52463a2d211408000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000000020d1925303b47525d68737e899494897f756b62584f4a535c646c747a81868b8e9294969797979695928f8b86817a736c635b5248505a636d76818b9591867b70655a4f43382d21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935424e5a66737f8b98a49f93877a6e6b7884909da296897d7064584b3f3c4855616d7a86939f9f92867a6d6b7784909ca79b8e8276695d5145382c20140700000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2016202a333d47515b646e78828c969fa9aaa0968c83796f665c52483f352b22180e05000000000000000000000000000b17232f3a46525e6975818d99a5afa3978c8074685c5044382d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a36424e5a66717d8995a1ada69a8e83776b5f53473c3024180c000000000013202c3946535f6c79869395959594887b6e6154483b2e211515212d3945515d6874818c95959595897d71665a4e42362a1e121c2835424f5b6875828f959595958d807366594d4033261a0d000000000000000d1a2633404c5966727b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a79777573706d6a66625d59534e48423b342d261e160e0600000000000000000000000000000000000000060d141a20252a2e313335363636363533312e2a26211c1f25292d303233333332302d2a27211b130a0100000000000000000000000000000000000000000000000000000000000000000000000009131d27313a434c555d646b71777c80848688898a8a8988878583817d7063574a3d3024170a000000000000000000000b1825323e4b5865717e8486878888888785827e79736d665e574e453c332920160c01000000000000000000000000000000000000000000000000000a16232f3c4854616d7986929eaaaea2968a7e73675c51463c322a221d19161514141516191c21272f37414b55606b77828e9aa6b2a69a8e8275695d5144382c1f1306000c1925323e4b5764707d8995a2aeab9f92867a6e62564b3f342a2018110d0a080707080a0c10161d252f39444f5a66727d8a96a2aeaa9e9285796d6054473b2e221509000d1a2733404c5965727e8b97a3b0a99d9084786c5f54483c31261b120b06030000000002050a1017202a35404c57636f7b8794a0acaca093877b6e6255493c3023170a000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000007131e2a35414c58636e7a8590978c82776d63595048525c656e767e858c92979b9b98959493939496999b97928c857d756d645a5148515b656f79848e988d82766b6055493e32271b0f0300000000000000000000000000000000000001060a0c0d0d0d0d0d0d0d0c0a06010000000000000002070a0c0d0d0d0d0d0d0d0b0804000004080b0d0d0d0d0d0d0c0a0703000004080b0d0d0d0d0d0d0d0c0a060200000000000000000000000004070809090909090807050100000000000000000000000000000000000000000814202d3945515e6a76838f9ba79c9084776b6874818d99a5998c8074675b4f423f4b5864707d8996a29c8f83766a6874818d99a59e9286796d6154483c3023170b00000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201e28323c454f59636d76808a949ea8aba1988e847a71675d544a40362d23191006000000000000000000000000000006121e2a35414d5965717c8894a0aca89c9084786d6155493d373737373737373737373737373737373737373b47525e6a76828e9aa6ada1968a7e72665a4e43372b1f1307000000000013202c3946535f6c798693a0a2a194887b6e6154483b2e21151a26323d4955616d7985919da2a29a8e82766a5e52463a2e23171c2835424f5b6875828f9ca2a29a8d807366594d4033261a0d000000000000000d1a2633404d5966738088888888888888888888888888888888888888888888888786858482807d7a76726e69645f59534d463f38302820180f0600000000000000000000000000000000000710171f252c31363a3d40424343434341403d3a36322d272a3035393c3e4040403e3c3a37322c251c1309000000000000000000000000000000000000000000000000000000000000000000000006101b252f39434c565e676e767d83888c90939596979796959492908a7d7063574a3d3024170a000000000000000000000b1825323e4b5865717e8b939494959493918e8a857e78706860574e453b32281d1309000000000000000000000000000000000000000000000000000c1925323e4b5764707d8995a2aeab9f92867a6e62564b3f342a2018110d0a080707080a0c10161d252f39444f5a66727d8a96a2aeaa9e9285796d6054473b2e221509000e1b2734414d5a6673808c98a5b1a89b8f83766a5e52463a2e23180e060100000000000000040b131d27323e4955616d7986929eabada195887c6f63564a3d3124180b000f1c2835424e5b6774818d9aa6b3a69a8d8174685c4f43372b20140900000000000000000000050e19242f3b47535f6b7784909da9afa3968a7d7164584b3f3225190c000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000000000b17232f3b46525e6974808b9691867b70665b5147505a646e77808890979d99938f8b89878686888a8d91979d978f877f766c63594e49535d67727c879293887c71665a4f43372c2014080000000000000000000000000000000000060c1216191a1a1a1a1a1a1a1916120c060000000000070d1316191a1a1a1a1a1a191814100a0a101518191a1a1a1a1a1917130e080a101418191a1a1a1a1a1a1916120d07000000000000000000070c10141515151515151514110d08010000000000000000000000000000000000000b1724303c4855616d7a86929ea6998d81746865717d8a96a29c9083776a5e5245424e5b6774808c99a5988c80736764717d8a96a2a295897d7064584c3f33271b0e02000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2026303a444d57616b757e89929ca6aca3998f867c72685f554b42382e251b1107000000000000000000000000000000010d1925313c4854606c77838f9ba7ada195897d71655a4e4444444444444444444444444444444444444444444b57636f7b87929eaaa89d9185796d61564a3e32261a0e03000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21151e2a36424e5a66727d8995a1adaa9e92877a6f63574b3f33271b1c2835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d95959595959595959595959595959595959595959595949392908e8c8986827e7a75706a645e575049423a322a21180f06000000000000000000000000000000081119222930373d42464a4c4e4f50504f4e4c4a46423e3832353c4145494b4c4d4c4b4946433e372e251b1005000000000000000000000000000000000000000000000000000000000000000000010c17222c37414b555e68707981888e94989c9fa1a3a4a3a3a2a09e978a7d7063574a3d3024170a000000000000000000000b1825323e4b5865717e8b98a0a1a2a1a09e9a96908a827a726960574d44392f251a10050000000000000000000000000000000000000000000000000e1b2734414d5a6673808c98a5b1a89b8f83766a5e52463a2e23180e060100000000000000040b131d27323e4955616d7986929eabada195887c6f63564a3d3124180b00101c2936424f5c6875828e9ba7b2a5998c8073675a4e4235291d120600000000000000000000010b16212d3945515d6a76828f9ba8b0a4978b7e7265594c3f33261a0d00111d2a3743505d6976838f9ca8b1a4978b7e7265594c4033271b0f03000000000000000000000007131e2a37434f5c6874818d9aa7b2a5998c8073665a4d4034271a0e000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000004101c2834404b57636e7a8691968a7f74695e54494d57626c768089929a9c958e88837e7c7a79797b7d81868c929a9991887e746a60564b4b55606b76818c978e82776b5f54483c3024180c000000000000000000000000000000000810181e22252626262626262625221e1810080000010a12191e23252626262626262624201b15151b212426262626262626231f1a13151b20242626262626262625221e181109000000000000020a12181d2022222222222222211d19130c0400000000000000000000000000000000020f1b2733404c5864717d8996a2a2968a7d7164616e7a87939f9f93867a6e61554845515e6a77838f9ca295897d7064616e7a86939fa5998d8174685b4f43372a1e1206000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c252e38424c565f69737d87919aa4aea49a91877d746a60564d433930261c130900000000000000000000000000000000000814202c38434f5b67737e8a96a2aea59a8e82766a5e52515151515151515151515151515151515151515151515c6873808b97a3afa4988c8074685d5145392d21160a00000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2117232f3b47525e6a76828e9aa6b2afa3978b7f73675b4f43372c201c2835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a1a09f9d9b9896928e8a86817b756f69625b544c443c332a21180f050000000000000000000000000007101a232b333b42484e5256595b5c5d5d5c5b5956524e49443d40474d5155585959595855534f4940372c21160a00000000000000000000000000000000000000000000000000000000000000000008131e29343e49535d67707a828b92999fa4a9aaa6a29f9d9c9c9c9d978a7d7063574a3d3024170a000000000000000000000b1825323e4b5865717e8b989c9c9d9fa2a6a6a19b948c847b72695f554b41372c22170c010000000000000000000000000000000000000000000000101c2936424f5c6875828e9ba7b2a5998c8073675a4e4235291d120600000000000000000000010b16212d3945515d6a76828f9ba8b0a4978b7e7265594c3f33261a0d00111e2b3744515d6a7783909da9b0a3978a7d7164584b3f3226190d01000000000000000000000005111d2935414e5a6773808c99a6b2a69a8d8174675a4e4134281b0e00121e2b3845515e6b7784919daaafa296897c7063564a3d3124180b000000000000000000000000020e1b2733404c5965727e8b98a5b1a79b8e8175685b4f4235281c0f000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000814202c3844505c6874808b979084796e63584d48535e69747e88929b9c938b837c77726f6d6d6d6e71757a818890999a90877c72675d52474e5964707b869293887c7064594d4135291d1004000000000000000000000000000008121a22292e3233333333333333322e29221a1208000a131c232a2f3233333333333333302c261f1f272c31333333333333322f2b241d1f262c3033333333333333322f2a231b120900000000020b141c23292c2f2f2f2f2f2f2f2d2a241e160d0400000000000000000000000000000006121e2b37434f5c6874818d99a59f93877a6e615e6b7783909ca2968a7d7164584c4855616d7a86929f9f9286796d615e6a7783909ca89c9084776b5f53463a2e221509000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2d36404a545e68717b858f99a3aca69c92897f756b62584e443b31271e140a010000000000000000000000000000000000040f1b27333f4a56626e7a86919da9aa9e92877b6f635d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d606c7884909ca8ab9f93877b6f64584c4034291d110500000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211c27333f4b57636f7b87939faaa8a8a79b9084786c6054483c30241c2835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6aeaeaba5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a4a6a8aaa8a5a29e9b96928c87817a746d655e564e453c332a21170e040000000000000000000000040e18222c353d454d53595e626568696969696765625e5a554f484a52585d616466666664625f5a52493e33271b0f0200000000000000000000000000000000000000000000000000000000000000030e19242f3a45505a656f79838c949ca4aaaba49e9a9692908f8f8f90918a7d7063574a3d3024170a000000000000000000000b1825323e4b5865717e8b908f8f9092969ba0a7a69e968e857b71675d53483e33281d12070000000000000000000000000000000000000000000000111e2b3744515d6a7783909da9b0a3978a7d7164584b3f3226190d01000000000000000000000005111d2935414e5a6773808c99a6b2a69a8d8174675a4e4134281b0e00121f2c3845525e6b7885919eabaea295887b6f6256493c3023170a000000000000000000000000000d1926323f4b5865717e8b97a4b0a89b8f8275685c4f4236291c1000121f2c3945525f6b7885929fabaea194887b6e6155483b2f221509000000000000000000000000000b1824313e4a5764707d8a96a3b0a99c8f8376695c5043362a1d10000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000c1824303c4855616c788490968a7e73685c51464e5964707b86909a9d938a8178716b66636160606265696f767e87909a988e84796e63584d48535e6975818c988d8175695d5145392d2114080000000000000000000000000005101a242c343a3e404040404040403e3a342c241a1007111c252e353b3f4040404040403f3d3831292931383d4040404040403f3c362f262931383d3f4040404040403e3a352d241b11060000000a141d262e34393b3c3c3c3c3c3b39352f281f160c0100000000000000000000000000000915222e3a46535f6b7884909da99c9084776b5e5b6774808c99a5998d8174675b4f4b5864707d8996a29b8f83766a5e5b6774808c99a5a094877b6f63564a3e3125190d000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392f353f48525c667079838d97a1aba79d948a80766d635950463c32291f150c02000000000000000000000000000000000000000b16222e3a46515d6975818c98a4afa3978b80736a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a717d8995a0aca69a8e83776b5f53473b3024180c0000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21202c3844505c6873808b97a3a09b9ba1a094887c7064584c4035291d2835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b3aca29a9696969696969696969696969696969798999b9ea1a4a8aba7a29d98928c857e77706860574e453c332920160c02000000000000000000000b16202a343e474f575e656a6e72747676767574726f6b66605a52545c63696e71737373716e6b645a4f43372b1e12050000000000000000000000000000000000000000000000000000000000000008141f2a36414c57626c77818b959ea6aea8a099938e8986848282828385877d7063574a3d3024170a000000000000000000000b1825323e4b5865717e8483828284868a8f959ca4a8a0978d83796f655a4f453a2f24180d0200000000000000000000000000000000000000000000121f2c3845525e6b7885919eabaea295887b6f6256493c3023170a000000000000000000000000000d1926323f4b5865717e8b97a4b0a89b8f8275685c4f4236291c1000131f2c3946525f6c7986929facada194877a6e6154483b2e211508000000000000000000000000000a1724303d4a5663707c8996a2afa99c908376695d5043372a1d100013202c3946535f6c7986929facada094877a6d6054473a2e211407000000000000000000000000000916232f3c4956626f7c8895a2afaa9d9084776a5d5044372a1d11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000030f1b2834404c5965717d89959185796e62574b47535e6a76818c97a0968b81786f67605a5654535355595e646c757e88929d968b80756a5f53484d5864707b87939185796d6155493d3024180b000000000000000000000000000b17222c363e454a4d4d4d4d4d4d4d4a453e362c22170d18232e3740464b4d4d4d4d4d4d4c49433b32323b43494c4d4d4d4d4d4b4741382f323b43494c4d4d4d4d4d4d4b463f372d23180c010005111b262f383f454848484848484846413a31281e130800000000000000000000000000000d1925313e4a56636f7b8794a0a6998d8174685b5864707d8995a29c9083776b5e524e5b6773808c99a5988c8073675a5864707d8995a2a3978b7e72665a4d4135291c10040000000000000013202c3946535f6c798693a0acaca09386796c5f534841393d47515a646e78828c959fa9a89f958b82786e645b51473e342a21170d03000000000000000000000000000000000000000006121d2935414d5864707c88949faba89c9084787777777777777777777777777777777777777777777777777777828d99a5ada1958a7e72665a4e42372b1f13070000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2125313d4854606c7884909ca1968f8f98a3998d8175695d5145392d212835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b3a79b908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b8d8f9194989ca0a5aba9a39d979089827a726960574e453b32281e130900000000000000000006111c27323c465059616970767a7e8182838382817e7b76716b645d5d666e757a7d8080807d7b766b5f5346392d201306000000000000000000000000000000000000000000000000000000000002050e1925303c47525d68737e89939da7b0a89e968f88827d797776757576787a7b7063564a3d3024170a000000000000000000000b1825313e4b5764707877767575777a7e848a929aa2a89f958b81766c61564b40352a1e130800000000000000000000000000000000000000000000131f2c3946525f6c7986929facada194877a6e6154483b2e211508000000000000000000000000000a1724303d4a5663707c8996a2afa99c908376695d5043372a1d100013202c3946535f6c7986939facada093877a6d6053473a2d201407000000000000000000000000000916222f3c4855626f7b8895a2aeaa9d9084776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201407000000000000000000000000000815222f3b4855616e7b8895a2aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000006121f2b3744505c6975818d998d8175695d51464b57636f7b87929e9a8f84796f665d554f4a474647494d535a636c76818b95928e867b7064574b48535f6b77838f968a7d7165594c4034271b0f02000000000000000000000004101c28333e485056595959595959595650483e33281c121e2a353f49515759595959595959544d44393a444d5459595959595958524b413639444d54595959595959595751493f34291d1105000b16222d38414a5154555555555555524c433a2f251a0e0300000000000000000000000004101c2935414d5a66727e8b97a3a3968a7d71645855616d7986929f9f93877a6e6155515e6a76838f9ca295897c70645754616d7986929fa79b8e82766a5d5145382c2014070000000000000013202c3946535f6c798693a0acaca09386796c625a524b43454f59626c76808a949da7aaa0968d83796f665c52493f352c22180f05000000000000000000000000000000000000000000010d1924303c48545f6b77838f9aa6aca0958984848484848484848484848484848484848484848484848484848487929eaaa89c9185796d61554a3e32261a0e030000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e212935414d5965717d8994a09e92858793a09d9185796d61564a3e32262835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e808285888b90949a9fa5aca8a29b938c847b726a60574d443a2f251b100600000000000000000c17232e39444e58626b737b81878b8d8f90908f8d8b87827c766e66656f7880868a8c8d8c8a86796d6053463a2d201307000000000000000000000000000000000000000000000000000004080b0f11141f2a36414d58636f7a85909aa5afa89f958c847d76716d6a6968696a6b6e6f695f53473b2f221609000000000000000000000a16232f3b48535e676c6b6969696a6e727980889099a3a79d93887d73685d51463b3024190d0200000000000000000000000000000000000000000013202c3946535f6c7986939facada093877a6d6053473a2d201407000000000000000000000000000916222f3c4855626f7b8895a2aeaa9d9084776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815222e3b4855616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000915222e3a4753606c78859195897c7064584c434f5b6874808c98a094897d72685d544b433e3b3a3a3c4148515a646f7a858986827e7a7164584b424e5a66727e8b978d8175685c5043372a1e110500000000000000000000000714202c38444f5a6266666666666666625a4f44382c2016222e3a46515b63666666666666655f564b40404b565f656666666666645d53483c404b565f65666666666666635b50453a2e211509000f1b27333e49545c616262626262625d564c41362b2014090000000000000000000000000713202c3845515d6976828e9ba79f93877a6e6155515e6a76838f9ba2968a7d71655854616d7986929f9e9286796d6154515e6a76838f9ba89e9286796d6155483c3023170b0000000000000013202c3946535f6c798693a0acaca093867b746c645d554d4d57616b747e88929ca6aba2988e857b71675e544a40372d231a100600000000000000000000000000000000000000000000000814202b37434f5b66727e8a96a2ada59b939191919191919191919191919191919191919191919191919191919299a3aea4988c8074685c5145392d21160a000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e222e3a46525d6975818d99a59b8f8284909da2968a7e72665a4e42362a2835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f727070707070707070707070707071727375787b8084898e949aa1a8ada59e968d857c72695f554b41372c22170c0100000000000004101c28343f4a55606a747d858c92979a9c9d9d9c9a97938e8881786f6c77818a9196999a999386796d6053463a2d201307000000000000000000000000000000000000000000000003080c1014181b1e20242f3b47525e6975808b96a1acaba1978d837a726b65615e5c5b5c5d5f61625e574d42372b1f13070000000000000000000007131f2b37424c555c5f5e5d5c5c5e62676e767e87919ba5a49a8f84796e63574c41352a1e130700000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815222e3b4855616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000b1824313d4a56636f7b88949185796c60544846535f6b7884909c9b9084786c61564b4239322e2d2d30363f48535d68737f7d7976726e695f54483e4a56626e7b87939184786b5f5246392d20140700000000000000000000000916232f3c4855616c737373737373736c6155483c2f231825313e4a57636d73737373737371675c504345515c687173737373736f64594d4143505c67717373737373736d62564a3d3124170b00111e2a37434f5b666d6f6f6f6f6f6e685d52473c31251a0f0300000000000000000000000b17232f3c4854616d7985929ea99c9084776b5e524e5a6773808c98a4998d8174685b5764707d8995a29b8f83766a5d514e5a6773808c98a5a295897d7164584c4033271b0f0200000000000013202c3946535f6c798693a0acaea2978d867e766e675f57555f69737c87909aa4ada39990867c72695f554c42382e251b1108000000000000000000000000000000000000000000000000030f1b27323e4a56626d7985919da8ada49f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea3abab9f93877b6f64584c4034281d1105000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e27323e4a56626e7a86929ea4988c7f818d99a69a8e82766a5f53473b2f2835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265636363636363636363636363646567696c6f73787d838990979ea6aea89f978e857b71675d53493e34291e13080000000000000815212d3944505c67727c868f979ea29c9793929192939699928a8278727d89939ca29d97949386796d6053463a2d201307000000000000000000000000000000000000000000040a0f14181d2124272a2d2f34404c58636f7a86919da8afa49a8f857b7168615a55514f4f4f50525555534d453b31261a0f0300000000000000000000030f1a25303a434b505251504f4f51565c646c757f89939da8a1968a8074695d52463b2f24180d01000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000d1a2633404c5965727e8b978e8275695d50444956626e7b8794a0988b7f73675b50443a3027222021252d36414c57626d73716d6966625e574d433a46525f6b77849094877a6e6155483c2f23160900000000000000000000000a1724303d4a5763707d80808080807d7063574a3d30241926323f4c5965727f8080808080786b5e51454955616d79808080808075695d524645515e6b7880808080807e7165584b3e3225180b00121f2c3945525f6b777b7b7b7b7b7a6f64594d42372b1f140800000000000000000000020e1a27333f4b5864707c8995a1a6998d8174685b4f4b5763707c8995a19c9084776b5e5a6773808c98a4988c8073675a4e4b5764707c8995a1a5998d8174685c4f43372b1e120600000000000013202c3946535f6c798693a0acb3a89f98908881797169615d67717b858f98a2aca49b91877d746a60574d433a30261d130900000000000000000000000000000000000000000000000000000a16222e3945515d6974808c98a4afafabaaa7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6aaabaeb2a69a8e82766b5f53473b2f24180c00000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2b37434f5b67737e8a96a2a195887c7d8a96a29f93877b6f63574b3f332835424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f726559565656565656565656565657585a5c5f63676c72777e858c949ca5aea9a0978d83796f655a50453a2f24190e0300000000000c1825313d4955616d78838e98a1a198918b87858485878a8e93948a8176838f9aa59c938c878786796d6053463a2d20130700000000000000000000000000000000000000040a10151b2024292d303437393c3e45515c6874808b97a2aea99e93887d73695f564f49454342434446484947423b33291f150900000000000000000000000009141e28313940444645434343454b525a636d77818c96a1a79c91857a6e63574c4035291d1206000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000f1c2835424e5b6774818d988c7f73665a4d414b5865717d8a97a194887c6f63574b3f33281e1613141b252f3a46515b636765615d5956524d453c36434f5c6875818e96897d7064574a3e3125180b00000000000000000000000a1724303d4a5763707d8a8d8d8d8a7d7063574a3d30241926323f4c5965727f8c8d8d8d85786b5e51454e5a66727d898d8d8d867a6e62564b45515e6b78858d8d8d8b7e7165584b3e3225180b00121f2c3845525e6a75808888888881756a5e53483c3024180d0100000000000000000005111e2a36434f5b6774808c99a5a3968a7d7165584c4754606d7985929e9f93877a6e625e6a76838f9ca195897c7063574b4854606d7986929ea99c9084786b5f53473a2e22160900000000000013202c3946535f6c798693a0acb9b1a9a29a928b837b736c666f79838d97a1aaa69c92897f756b62584e453b31281e140b01000000000000000000000000000000000000000000000000000005111d2935404c5864707b87939fabb6aea49c98989898989898989898989898989898989898989898989aa1abb6ada195897d72665a4e42372b1f130700000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e303c47535f6b77838f9ba79e9185797a86929ea3978b8073685c5044382c35424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c4a4a4a4a4a4a4a4a4a4a4a4c4e5053575b61666c737a828a939ca5aea89f958b81776c61574c41362b1f140900000000000f1b2834404d5965717d8995a0a4998f86807a7877787a7d82888f92887d86929fa2968b817b7a7c796c6053463a2d201307000000000000000000000000000000000001080f151b21262c3035393d404346484a4c55616d7985919ca8afa4988d82766c61574d443d3936353637393b3c3a36312921170e03000000000000000000000000020d161f272e34373938373636394048515b656f7a85909ba6a2968b8074685d51463a2e23170b000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000111d2a3743505d6976838f968a7d7064574b414d5a6673808c999e9285796c6053473b2f23170c0709131e29343f4951575a5855514d4a46413b3334404d5966727f8c988b7e7265594c3f3326190d00000000000000000000000a1724303d4a5763707d8a979a978a7d7063574a3d30241926323f4c5965727f8c999a9285786b5e5147535f6b76828e9a9a968b7e73675b4f45515e6b7885929a988b7e7165584b3e3225180b00111d2936424e59636e79848f9592877b7064584d4135291d11050000000000000000000915212d3a46525f6b7784909ca89f93877a6e61554944515d6976828e9ba3968a7d7165616d7986929f9e9285796d60544845515d6a76828f9ba7a094877b6f63564a3e3225190d00000000000013202c3946535f6c798693a0acb9b0a9a5a49c958d857d766e77818b959fa9a79d948a81776d635a50463c33291f160c02000000000000000000000000000000000000000000000000000000000c1824303c47535f6b76828e9aa6b2a89c928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f9aa5b2a89c9185796d6155493e32261a0e0200000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e34404c5864707c88949fa69a8e827576828e9ba79c9084786c6054483c3035424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3d3d3d3d3d3d3d3d3d3e3f4144474b50555b61697078818a939ca6b0a79d93897e73685d52473c30251a0e0200000000111d2a3643505c6975818e9aa69e93887d746e6b6b6b6e71767d848d8e838794a19e9285796f6d7070685d5145382c1f120600000000000000000000000000000000050c131a20262c32373c4145494c50525557595a66727d8a95a1adaa9e93877b70655a4f46423e39342f292a2d2f2f2e2a251f170f060000000000000000000000000000040d161d23282b2c2b2a29292e363f49535e68737e8a95a0a89c9185796e62564b3f33271c10040000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000121e2b3845515e6b77849194887b6e625549424f5b6875828e9b9d9083776a5d5144382b1f130600010d18232d373f464b4d4c4845413d3a363029323e4b5764717d8a978d8173675a4d4134271b0e00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e514c57636f7b87939fa69b8f84786c605448515e6b7885929e988b7e7165584b3e3225180b000d1a25313c47525d68737e8994988c8175695d5145392d2115080000000000000000000c1825313d4956626e7a87939fa99c9084776b5e5246414d5a66727e8b97a4998d81746864707c8995a29b8f82766a5d5144414e5a66737f8c98a4a3978b7e72665a4e4135291d1004000000000013202c3946535f6c798693a0acb2a89e98989e9f978f888078808a939da7a99f958c82786e655b51483e342a21170d04000000000000000000000000000000000000000000000000000000000007131f2b37424e5a66727d8995a1ada79a8d817e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e8a97a4afa3988c8074685c5145392d21150a0000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e3945515d6874808c98a4a3968a7e72727e8b97a3a094897c7165594d413535424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f323030303030303030313234373b3f444a50575e666f77818a949ea8afa59a90857a6f64584d42362b1f130800000000121f2b3845525e6b7784919da79a8e82766b635f5e5f61666b727a838d8e9099a49c8f8276696064645e564b4034281c1004000000000000000000000000000000070f161e252b32383d43484d5155595c5f616465676a76828e9aa6b2a69a8e82766b5f5956524e49453f3a342e272222211e1a140d0500000000000000000000000000000000040b12171c1e1f1f1d1c1d242d37414c57626d78848f9ba6a1968a7e73675b5044382c2015090000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000121f2c3945525f6c78859293877a6d60544743505c6976838f9c9b8f8275695c4f4236291d1003000006111b252d353b3f403f3c3935312d2a2523303d4956636f7c89968e8175685b4e4235281b0f00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e51505c6874808c98a3a8a094887c7165594d515e6b7885929e988b7e7165584b3e3225180b000915202b36404b56616c78848f9b9185796d6155493d3124180c0000000000000000030f1c2834414d5965727e8a97a3a6998d8174685b4f433e4a56636f7b8894a19c9084776b6773808c98a4988c7f73665a4e413e4a57636f7c8895a1a79b8e82766a5d5145392c201408000000000013202c3946535f6c798693a0acaea2968d8c959ea19a928a8288929ba5aaa0978d837970665c53493f362c22180f05000000000000000000000000000000000000000000000000000000000000030e1a26323e4955616d7985909ca8a99d9185797171717171717171717171717171717171717176828e9aa6ab9f93877b6f63584c4034281c11050000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b313d4955616d7985919da99f93877a6e6e7a87939fa5998d8175695d51453a35424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3226232323232323232426282b2f33383f454c545d656f78828c97a1acaca1968b8075695e53473b3024180c0000000013202c3946535f6c7986929fa4988b7e72665a525152555a6169717b85909ba2a79a8e8174675b5757534c443a2f24180c00000000000000000000000000000109111921282f363d43494e54595d6165686b6e707273757a86929eaaada195897d716b6865625e5a55504b453f39322b241d150e090300000000000000000000000000000000000001070c0f1213121010121b25303a45505c67737e8a96a1a79b8f84786c6055493d3125190d0200000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000013202c3946535f6c7986939386796c5f534644505d6a7783909d9b8e8174675b4e4135281b0e0200000009131b232a2f323433302c2925211e19222f3c4855626f7b88958f8275685b4f4235291c0f00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e5155616d7985909c9e9b9e998d81756a5e52515e6b7885929e988b7e7165584b3e3225180b00040f19242f3a45505b67727e8a96968a7e7165594d4034281b0f020000000000000007131f2c3844505d6975828e9aa6a3968a7d7165584c3f3b4753606c7885919da093877a6e6a76838f9ba195887c7063574a3e3b4754606c7985919eaa9e9286796d6155483c3024170b000000000013202c3946535f6c798693a0acaca09386838c959ea49c948e919aa4aba2988e857b71685e544a41372d241a100700000000000000000000000000000000000000000000000000000000000000000a15212d3945505c6874808c97a3aea2968a7e7266656565656565656565656565656565656f7b87939faba69a8e82766b5f53473b2f24180c000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b36424e5a66727d8995a1a79b8f83776a6a77838f9ba79d92867a6e62564a3e35424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f32261917171717171718191c1f23282d343b424b535d66707a858f9aa5b0a89d91867b6f63584c4035291d110500000013202c3946535f6c798693a0a4978a7d7063574a4446494f575f69737e8995a1a79a8e8174675a4d4a47423b32281d120700000000000000000000000000010a131b232b333a41484e545a5f64696d7175787a7d7e8182828a96a2aeab9e92857c7a7875726e6a66615c56514a443d362e271f160e0500000000000000000000000000000000000000000000000000000109131e29343f4a56626d7985919ca8a094897d7165594d42362a1e120600000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000013202c3946535f6c7986939286796c5f524644505d6a7784909d9a8e8174675a4d4134271b0e01000000010911191e2326272624201c19151115222e3b4855616e7b88958f8275695c4f4236291c0f00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e515a65717d89959d938e939d92867a6e6357515e6b7885929e988b7e7165584b3e3225180b000008121d28333f4a56626e7986929a8e8175695c5043372a1e1105000000000000000a16232f3b4754606c7985919eaaa093877a6e6255493c3744505c6975818e9aa3968a7d716d7986929e9e9285796c6054473b3844505d6975828e9ba7a295897d7164584c4033271b0f020000000013202c3946535f6c798693a0acaca093867a838c969fa69f9b9ca3aca39990867c73695f564c42382f251b120800000000000000000000000000000000000000000000000000000000000000000005111c2834404c57636f7b87939eaaa69a8f83776b5f585858585858585858585858585c6874808c97a3ada195897d72665a4e42362b1f1307000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b3b47525e6a76828e9aa6a3978b7f736666727e8a96a2a2968a7e72665a4e4337424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3226190c0a0a0a0a0a0b0d0f12171c22293039414b545e69737e89949faaaea3978c8074695d5145392d21150900000013202c3946525f6c7985929fa4978a7d7064574a43403f454d57626d7884909da79a8e8174675a4d413b37302920160c01000000000000000000000000010a131c252d353d444c52595f656b7075797d818487898b8d8e8f929ba6b2aca0948b898784817e7a76726d68625c554f484039312820170f050000000000000000000000000000000000000000000000000000020c17232e3a45515d6874808c98a4a5998d82766a5e52463a2e23170b00000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000013202c3946535f6c7986939386796c5f534644505d6a7784909d9a8e8174675b4e4134281b0e01000000070f171d2226282826231f1c18151115222f3c4855626e7b88958f8275685c4f4236291c0f00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e525e6a76828e9a988c818c98978b7f73675c515e6b7885929e988b7e7165584b3e3225180b00030e19242d363e45515d6975828e9a9184786b5f5246392c201307000000000000010e1a26323f4b5764707c8895a1a99c9084776b5e52463934404d5965727e8a97a3998d8174707c8995a19b8e8276695d51443835414d5a66727e8b97a4a5998d8174685c4f43372b1e12060000000013202c3946535f6c798693a0acaca09386797a848d969fa8a7a8ada59b91887e746a61574d443a30261d130900000000000000000000000000000000000000000000000000000000000000000000000c18232f3b47535e6a76828e9aa5ab9f93877b6f64584c4b4b4b4b4b4b4b4b4b4b55616c7884909ca8a89c9085796d6155493e32261a0e02000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b3f4b57636f7b87939eaa9e92867a6f63626e7a86929ea79b8f83776b5f53473b424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3226190c0000000000000003060b11171f272f39424c57616c77828e99a5b0a89d9185796d6155493d3125190d010000121f2b3845515e6a7784909da5988c7f73675b534f4d4b4a4a505c6874818d9aa69a8e8174675a4d41342b251f170e04000000000000000000000000000a131c252e363f474f565d646b71767c81858a8d919396989a9b9c9ea4adb4b1a69d979593918e8a87827d78736d676059524a433a322921170e05000000000000000000000000000000000000000000000000000006121d2934404c58646f7b8793a0aa9e92867a6e63574b3f33271b0f03000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000131f2c3946525f6c79859293867a6d60534743505d697683909c9b8e8275685b4f4235281c0f02000006101921282e323535322f2b2824211d1823303c4956626f7c89958e8275685b4f4235281c0f00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e57636f7b87939e94887c87939c9084786c60555e6b7885929e988b7e7165584b3e3225180b0008141f2b353f484f545966727e8b9893877a6d6154483b2e22150800000000000005111d2a36424e5b6773808c98a4a6998d8174685b4f4336313d4956626e7b8794a09c908477737f8c98a4988b7f73665a4d4135313e4a56636f7b8894a1a99c9084786b5f53473a2e2216090000000013202c3946535f6c798693a0acaca0938679717a848d96a0a9b2ab9e93897f756c62584f453b32281e150b01000000000000000000000000000000000000000000000000000000000000000000000007131f2a36424e5a65717d8995a1aca4988c8074685c50453e3e3e3e3e3e3e424d5965717d8995a1ada3988c8074685c5045392d21150900000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b44505c6773808b97a3a69a8e82766a5e5d6975818d99a59f93877b6f63584c40424f5b6875828f9ca8a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3226190c06060606060606060604060d151d27303b45505b66717c88949fabada2968a7e72665a4d4135291d10040000101d2a36434f5c6875818d99a59b8f83786d645f5c59585756565965727f8c98a59a8e8174675a4d4134271a140d050000000000000000000000000008121c252e374048515960686f767c82888d91969a9da0a2a5a6a8a9a8a8a7a8a8a9a8a4a2a09d9a97938e89847e78726b645c554c443b332920170d030000000000000000000000000000000000000000000000000006121e2935414d5965707c8894a0ada3978b7f73675b4f43382c201408000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000121f2b3845515e6b78849194887b6e615548424f5c6975828f9b9c8f8376695d5043372a1d110400020d18222b333a3f41413f3b3834312d292324313e4a5764707d8a968d8174675a4e4134281b0e00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e5c6874808b979b8f8377838f9a95897d7165595e6b7885929e988b7e7165584b3e3225180b000c1824303c47515a6062636f7c899595887c6f6256493c3023160a0000000000000814212d3946525e6a77838f9ca8a3968a7d7165584c40332e3a46535f6b7884909d9f93877a75828e9ba195887c6f63574a3e322e3b4753606c7885919daaa094877b6f63564a3e3225190d0100000013202c3946535f6c798693a0acaca09386796c727b848e97a0a9aa9d90847a71685f564d443b32291f160d040000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4955616c7884909ca7a89c9185796d6155493d32323232323a46525e6a76828e99a5aa9f93877b6f63584c4034281c110500000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483d4854606c7884909ca8a195897d71655a5965717d8995a1a4988c8074685c5044424f5b6875828f9ca8a69a8d807366594d4033261a0d0000000000050a0e1a2633404d596673808d9aa6b2a6998c7f7265594c3f32261913131313131313131312100c080b151f29333e4955606b77838f9ba7b2a69a8e82766a5d5145392c20140700000e1b2734404c5965717d89949fa094897f76706b6866656363636265727e8c98a59a8e8174675a4d4134271a0e020000000000000000000000000006101a242e374049525a636b727981878d93989da2a6a9a8a5a29f9d9c9b9b9a9b9b9c9ea0a2a5a8a6a39f9a95908a837d766e665e564d453b32291f150b010000000000000000000000000000000000000000000000000b16222e3a46525d6975818d99a5b1a79b9084786c6054483c3024180d010000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000111e2a3744505d6a76839096897c7063574a414e5b6774818d9a9d9184786b5e5245392d2014080508141f2a343d454b4e4e4b4744403d39342e2733404c5965727e8b988c7f7266594c4033261a0d00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e616c7884909c968b7e737e8a96998e82766a5e5e6b7885929e988b7e7165584b3e3225180b000e1b2834404d58636c6f6f6f7a8794968a7d7064574a3d3124170b0000000000000c1824303d4955626e7a86939faba093877a6e6255493c302a37434f5c6874818d99a296897d7884919d9e9185796c6053473b2e2b3744505c6975828e9aa7a3978b7e72665a4e4135291d100400000013202c3946535f6c798693a0acaca09386796c69727b858e97a0a9a0968d847a71685f564d443b31281f160d0400000000000000000000000000000000000000000000000000000000000000000000000915212d3844505c68737f8b97a3ada195897d71665a4e42362a2527333f4b57636e7a86929eaaa69a8e82766a5f53473b2f23180c0000000000000000000000000013202c3946535f6c798693a0aca194887b6e615448414d5965717d8994a0a89c9185796d615554606c7884909ca89c9084786c615549424f5b6875828f9ca8a69a8d807366594d4033261a0d000000010910161a1e2633404d596673808d9aa6b2a6998c7f7265594c3f3226202020202020202020201f1c18130d0d17222d38434f5b66727e8a96a2aeaa9e9286796d6154483c2f23170a00000b1824303c4854606c77838d97a19b9188817b7875737170706f6f6f727e8c98a59a8e8174675a4d4134271a0e01000000000000000000000000030e18222c364049525b646c757c848b92999fa4a9aaa4a09c989593918f8e8e8e8e8f90919396999ca0a5aaa6a19b958e87807870685f574d443b31271d13090000000000000000000000000000000000000000000000030f1b27333f4b56626e7a86929ea9b5aca094887c7064594d4135291d11050000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000f1c2935424f5b6874818e988b7e7265594d404c5966727e8b989f93867a6d6155483c3025191312131a25303b464f565a5b5754504d49453f382f36424f5b6874818d978a7d7164584b3e3225180c00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e65717d89959e92867a6e7985919d92877b6f635e6b7885929e988b7e7165584b3e3225180b00101c2936434f5c69757b7b7b7b8793988b7e7164584b3e3225180b0000000000030f1b2834404c5965717d8a96a2a99c9084776b5e5246392d2733404c5865717d8a96a2988c807a8794a09b8e8275695d5044382b2834414d5966727e8b97a3a79b8e82766a5d5145392c20140800000013202c3946535f6c798693a0acaca09386796c6069727c858e97a0a89f968d837a71685f564d433a31281f160d040000000000000000000000000000000000000000000000000000000000000000000004101c28343f4b57636f7a86929eaaa69a8e82766a5e52473b2f232c38444f5b67737f8b97a3ada195897d71665a4e42362b1f13070000000000000000000000000013202c3946535f6c798693a0aca194887b6e61544846525d6975818d99a5a4988c8074685c50505c6874808c98a4a195897d7165594d424f5b6875828f9ca8a69a8d807366594d4033261a0d0000010a131a21262a2c33404d596673808d9aa6b2a6998c7f7265594c3f322c2c2c2c2c2c2c2c2c2c2c2b29241e170f101c27333e4a56626e7a86929fabaea295897d7064584b3f3226190d00000814202c38444f5b66717b858f979e9a938c888481807e7d7d7c7c7b7b7e8c98a59a8e8174675a4d4134271a0e010000000000000000000000000b15202a343e48525b646d767e878e969da4aaaaa49e9994908c898684838281818182838587898c9094999ea4aaa6a099928a827a71695f564d43392f251b1006000000000000000000000000000000000000000000000814202c38434f5b67737e8b96a2aeb8b0a5998d8175695d5145392d22160a0000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000e1a2734404d5966727f8b988e8175685c50434a5763707c8995a296897d7165594d41362b23201e1f242c36414d5861676764605c5955514941363945525e6a77839094887b6f6256493c3023170a00000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b5e6a76828e99998d81756975818d99978b8074685e6b7885929e988b7e7165584b3e3225180b00101c2936434f5c6976838888888b95988b7e7265584c3f3225190c000000000006121f2b3744505c6875818d9aa6a6998d8174685b4f43362a24303c4955616e7a87939f9b8f827d8a96a3978b7e72665a4d41342825313d4a56626f7b8794a0aa9e9286796d6155483c3024170b00000013202c3946535f6c798693a0acaca09386796c5f606a737c858e98a1a89f958c837a71685f564d433a31281f160d04000000000000000000000000000000000000000000000000000000000000000000000b17232f3b46525e6a76828d99a5aa9e93877b6f63574b3f3328303c4854606c7884909ba7a89c9085796d6155493d32261a0e020000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154484a56626e7a86929ea99f93877b7064584c4b57636f7b87939fa5998d82766a5e52464f5b6875828f9ca8a69a8d807366594d4033261a0d000009131c252c32373939404d596673808d9aa6b2a6998c7f7265594c3f3939393939393939393939393835302921180e16222e3a46525e6a76838f9ba8b1a5998c8073675a4e4135281c0f020004101c27333e4a555f6a737c858c93989d9894908e8c8b8a8a89898888888e9aa69a8e8174675a4d4134271a0e01000000000000000000000007121c27313c46505a646d7680889099a0a8aea69f99938d8884807c7a7776757474747576787a7d8084888d93999fa6aba49c948c847b71685f554b41372d22170d020000000000000000000000000000000000000000010d1925303c4854606c77838f9ba7aeacada99d9185796e62564a3e32261a0e0200000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000c1825313e4a5763707c89959184786c5f53474854616d7986929e998d8175695e52473d352f2c2b2c2f353e48535e697373706c6965625b52483d3d4955616e7a86939185796c6053473a2e21150800000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b636e7a86929e94887c7165707c88949c9084786d616b7885929e988b7e7165584b3e3225180b00101c2936434f5c697683909595969d988c7e7265584c3f3225190c00000000000a16222e3b4753606c7885919da9a3968a7d7165584c403327212d3946525e6b7783909c9e9185808c99a194887b6f63564a3e3125212e3a47535f6c7884919da9a296897d7164584c4033271b0f02000013202c3946535f6c798693a0acaca09386796c5f57616a737c868f98a1a89e958c837a71685f554c433a31281f160d0400000000000000000000000000000000000000000000000000000000000000000006121e2a36424d5965717d8894a0aca3978b8073685c5044382c35414d5965707c8894a0aca3978c8074685c5044392d211509000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154484f5b67727e8a96a2a79b8f83776b5f534747535f6b77838f9ba79e92867a6e62564a4f5b6875828f9ca8a69a8d807366594d4033261a0d0005101a252e373e434646464d596673808d9aa6b2a6998c7f7265594c4646464646464646464646464645413a332a2015111d2935424e5a6773808c98a5b1a89b8f8276695d5043372a1e110400000b16222d38434d58616a737b82888c919496989999989796969695959498a0a79a8e8174675a4d4134271a0e0100000000000000000000020d18232e39434e58626c767f89929aa2aaaca49c958e87827c7773706d6b6968676767686a6b6e7074787c82878e959ca4aca69e968d847a71675d53493e34291e1309000000000000000000000000000000000000000006121d2935414d5965707c8894a0aaa39fa0a6a2968a7e72665a4e43372b1f130700000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000916222f3b4854606d79869294887b6f63574b45515d6976828e9a9d91867a6f64594f47403b3938393b4047505a646f7a807c7875716d64594d41414d5965717d8a968e8276695d5044382b1f120600000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b67737f8b979b8f84786c606c78848f9b95897d71666b7885929e988b7e7165584b3e3225180b00101c2936434f5c697683909ca2a3a5988c7e7265584c3f3225190c00000000010d1926323e4a57636f7b8894a0aca093877a6e6255493d30241d2a36424f5b6774808c99a19488838f9b9e9185786c6053473b2e221e2b3743505c6875818d9aa6a5998d8174685c4f43372b1e1206000013202c3946535f6c798693a0acaca09386796c5f5358616a737d868f98a2a79e958c837a71675e554c433a31281f160c030000000000000000000000000000000000000000000000000000000000000000020e1925313d4854606c78848f9ba7a89c9084786c6054493d313a46515d6975818d99a5aa9e93877b6f63574c4034281c1005000000000000000000000000000013202c3946535f6c798693a0aca194887b6e615448535f6b77838f9ba7a2968a7e72665a4f43424e5a66727e8a96a2a2968b7e73675b4f4f5b6875828f9ca8a69a8d807366594d4033261a0d000a16212c3740484f52535353596673808d9aa6b2a6998c7f7265595353535353535353535353535353514c453c32271c101926323e4b5764707d8996a2afaa9e9185786b5f5245392c201306000005111c27313c464f58616970767c8184878a8b8c8d8d8e8e8e8e8f8f8f949da79a8e8174675a4d4134271a0e010000000000000000000008131f2a353f4a555f6a747e88919ba4acaba29a928a837c76706c6764615e5d5b5b5b5b5c5d5f6164686c71767c838a929aa2aba89f968c83796f655a50453b30251a0f04000000000000000000000000000000000000000a16222e3a46525d6975818d99a5a19892949da69a8f83776b5f53473b2f23180c00000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000007131f2c3845515d6976828e988c8074685c50454d5966717d8995a0978b80756b6159514b48454545474c5159626b76818c8885817e76695d504346525e6a76828e978b7e72665a4d4135281c0f0300000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b6c7884909c978b7f73675b67737f8b979a8e82766b6b7885929e988b7e7165584b3e3225180b00101c2936434f5c697683909ca9afa5988c7e7265584c3f3225190c0000000004101d2935424e5a66737f8b98a4a99d9084776b5f5246392d211a26333f4b5864707d8995a2978d8a939e9a8e8275695c5044372b1f1b2734404c5965727e8a97a3a99d9084786b5f53473a2e221609000013202c3946535f6c798693a0acaca09386796c5f534f58616b747d879099a2a79e958c837970675e554c433a31281e150c0300000000000000000000000000000000000000000000000000000000000000000914202c3844505b67737f8b96a2aca095897d7165594d41353e4a56626e7a86929da9a69a8e82766a5f53473b2f23180c00000000000000000000000000000013202c3946535f6c798693a0aca194887b6e61544c5864707c88949fa99d92867a6e62564a3e3e4a56626e7a86929ea79b8f83776b5f534f5b6875828f9ca8a69a8d807366594d4033261a0d000e1a26323e48525a5f5f5f5f5f6673808d9aa6b2a6998c7f72655f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d574e43382d211516232f3c4855616e7a8794a0adaca093867a6d6054473a2e2114080000030e1a242f3840474f575e656b7074787b7d7e808181818182828282838c99a59a8e8174675a4d4134271a0e01000000000000000000030e1925303b46515c67717b86909aa3adaba29990888078716b65605b575452504f4e4e4e4f505255585b60656b717880889099a2aba89e958b81776c62574c41362b201509000000000000000000000000000000000000030f1b27333f4a56626e7a86929da99c90868b96a29f93877b6f63584c4034281c1004000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000004101c2935414d5a66727e8a969084786d61564a4955616d78848f9a9d92877d736b635c575452515254575c636b747d889295918a7e73685c4f424c57636e7a869293877a6e62564a3e3125190c0000000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b717d89949e92867a6e6257636e7a86929e93877b6f6b7885929e988b7e7165584b3e3225180b00101c2936434f5c697683909ca9b2a5988c7e7265584c3f3225190c000000000814202d3945515e6a76838f9ba7a6998d8174685c4f43362a1e1723303c4855616d7986929f9f98969ba4978b7e7266594d4134281c1824313d4956626e7b8793a0aca094887b6f63564a3e3225190d010013202c3946535f6c798693a0acaca09386796c5f53464f59626b747d879099a2a79e958c837970675e554c433a30271e150c030000000000000000000000000000000000000000000000000000000000000004101c27333f4b56626e7a86929da9a5998d81756a5e52463a434f5b67727e8a96a2ada195897d71665a4e42362a1f130700000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154515c6874808c98a4a5998d8175695d51453a3a45515d6975818d99a5a094887c7064584f5b6875828f9ca8a69a8d807366594d4033261a0d00111e2a37434f5a646b6c6c6c6c6c73808d9aa6b2a6998c7f726c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c686055493d31241814202d3946535f6c7885929eabaea195887b6f6255483c2f221609000008141f2b36404a5257595a5b5f64686b6e70727373747474757575757e8c98a59a8e8174675a4d4134271a0e0100000000000000000008141f2a36414c58636d78838d98a2acada39990877e766e666059544f4b48454342414141424446484b4f545a60666e767e879099a3ada79d93897e73695e53483d31261b0f0400000000000000000000000000000000000814202c37434f5b67737e8a96a2a5998d8186929ea4988c8074685c5044382d211509000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000d1925313d4956626e79859195897d72665b5045505c67737e89949e998f867c746e6863605f5e5f6064686e757d868f99998e84786d62574b47525d6874808b978e82766a5e52463a2e2215090000000000000000000000000a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786b75818d99998d81756a5e525e6a75818d99988c80746b7885929e988b7e7165584b3e3225180b00101c2936434f5c697683909ca9aca5988c7e7265584c3f3225190c000000000b1724303c4855616d7a86929eaba3968a7d7165584c4033271b14202c3945515e6a76838f9ba8a4a3a6a094887b6f63564a3e31251815212d3a46525f6b7784909da9a4978b7e73665a4e4135291d10040013202c3946535f6c798693a0acaca09386796c5f5346475059626b757e879099a3a79e958c827970675e554c423930271e150c03000000000000000000000000000000000000000000000000000000000000000b17222e3a46525d6975818d99a4aa9e92867a6e62564b3f48535f6b77838f9ba7a89c9084786d6155493d31261a0e0200000000000000000000000000000013202c3946535f6c798693a0aca194887b6e615455616d7985919da9a094887c7165594d413535414d5965717d8995a0a4988c8074685c515b6875828f9ca8a69a8d807366594d4033261a0d00131f2c3946525f6b76797979797979808d9aa6b2a6998c7f79797979797979797979797979797979797165594c40332619121e2b3844515e6a7784909daaafa396897c706356493d3023170a00000b1824303c47525c6366676868696a6b6864656667676767686868727e8c98a59a8e8174675a4d4134271a0e010000000000000000010d1924303c47525e69747f8a959faaafa59b91877e756c645c554e48433f3b3937353434353537393c3f44494e555c646c757e87919ba5afa59a90857a6f64594e42372c20150900000000000000000000000000000000010d1924303c4854606c77838f9ba7a195897c828e9aa69c9085786d6155493d3125190d020000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000915212d3945515d6975818c988f83786c61564b4b56616c77828c969f988f877f7974706d6b6b6b6d70747980878f989b91877c72675c51454d58636e7a859195897d72665a4e42362a1e12060000000000000000000002020a1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e9285786e7a86929e94897d7165594d5965717c88949c9185796d7885929e988b7e7165584b3e3225180b00101c2936434f5c697683909ca0a0a0988c7e7265584c3f3225190c000000000f1b2733404c5864717d8996a0a0a093877a6e6255493d302417101d2935424e5a6773808c98a0a0a0a09d9185786c5f53473a2e2215121e2a37434f5c6874818d99a0a09b8f82766a5d5145392c2014080013202c3946535f6c798693a0acaca09386796c5f53463e475059626c757e87919aa3a79e948b827970675e544b423930271e150c0300000000000000000000000000000000000000000000000000000000000006121e2935414d5964707c8894a0aba2978b7f73675b4f434c5864707c88949faba3978b8074685c5044392d2115090000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e61545a66727d8995a1a79c9084786c6054483c30313c4854606c7884909ca89d9185796d61555b6875828f9ca8a69a8d807366594d4033261a0d0013202c3946535f6c79868686868686868e9aa7b3a69a8e8686868686868686868686868686868686807366594d4033261a101d2a3643505d697683909ca9b0a4978a7d7164574a3e3124170b00000d1a2733404c58646e7373747576777872675a595a5a5a5b5b5b65727e8c98a59a8d8174675a4d4134271a0e01000000000000000006121e2935414c58636f7a85919ba6b1a89e93897f756c635a524a433d38332f2c2a29282828292a2d2f33383d434a525a636c758089949ea9aca1978c81766a5f54483d31251a0e0200000000000000000000000000000006121d2935414d5964707c8894a0a99d9185787d8a96a2a195897d7165594e42362a1e12060000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000005111d2935414d5864707b879294897e73685d5248505b65707a848d969e98918a84807c7a7878787a7c80858a91999a92897f756b60564b4a545f6a75808b968f84786d6155493d32261a0e0200000000000001060a0d0e0f0f1724303d4a5763707d8a97a4978a7d7063574a3d30241926323f4c5965727f8c999e928578727e8a969c9084786c60544854606c78848f9b958a7e727885929e988b7e7165584b3e3225180b00101c2936434f5c6976839093939393938c7e7265584c3f3225190c00000000111e2a37434f5c6874818d939393939084776b5f5246392d21140d1926323e4b5763707c899393939393938e8275695c5044372b1f120e1b2733404c5865717d8a939393939286796d6155483c3023170a0013202c3946535f6c798693a0acaca09386796c5f5346393e47505a636c757e88919aa3a69d948b827970665d544b423930271e150b020000000000000000000000000000000000000000000000000000000000010d1925303c4854606b77838f9ba7a79b8f83776c605448515d6974818c98a4aa9e93877b6f63574c4034281c10040000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e61545e6a76828e9aa6a3978b7f73675b5044382c2c3844505c6874808c97a3a195897d71655a5b6875828f9ca8a69a8d807366594d4033261a0d0013202c3946535f6c798693939393939397a0abb6aa9f97939393939393939393939393939393938d807366594d4033261a0f1c2936424f5c6875828f9ca8b1a4988b7e7164574b3e3124180b00000e1b2834414e5b67748081818283848275695c504d4d4e4e4e5966737f8c99a59a8d8073675a4d4034271a0d0100000000000000000b17222e3a46525d6975808c97a2adaca1978c82776d635a51484039322c2723201d1c1b1b1b1c1e2023272c32384048515a636d77828d97a2ada89d92877b7065594d42362a1e12070000000000000000000000000000000a16222e3a46515d6975818d99a4a5998c81747985919da59a8e82766a5e52463a2e22170b0000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000000010d1824303c48535f6a76818c988f84796f645a5049545e68727b848c949b9c95908c898685858586898c90969c98918980766d63594f47515c66717b8691958a7e73675c5044392d211509000000000000050c1216191b1b1b1b24303d4a5763707d8a97a4978a7d7063574a3d30241b26323f4c5965727f8c999e92857877838f9b978b7f73675c50444f5b67737e8a969a8e83777885929e988b7e7165584b3e3225180b00101c2936434f5c697683868686868686867e7265584c3f3225190c0000000013202c3946525f6b78848686868686868174685c4f43362a1e110a16232f3b4754606d7985868686868686867e7265594d4034281b0f0b1724303d4955626e7a868686868686867d7164584b3e3225180c0013202c3946535f6c798693a0acaca09386796c5f534639353e48515a636c767f88919ba4a69d948b82786f665d544b423930271d140b0200000000000000000000000000000000000000000000000000000000000814202c37434f5b67727e8a96a2aca094887c7064584c55616d7985919da9a59a8e82766a5e53473b2f23170c000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6157636f7b87939eaa9e92877b6f63574b3f332728333f4b57636f7b87939fa69a8e82766a5e5b6875828f9ca8a69a8d807366594d4033261a0d0013202c3946535f6c798693a0a0a0a0a0a2a9b2bcb1a8a2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09a8d807366594d4033261a0f1c2835424f5b6875828e9ba8b1a4988b7e7165584b3e3225180b00000d1a2733404d5966727e8b8e8f909084786c60544c4a494a505c6875818e9aa5988c7f7266594c403326190d0000000000000000030f1b27333f4b57626e7a86919da8b2a69b90857a70655b51483f362e27201b1713110f0e0e0e0f1114171b21272e363f48515b66707b86919ca8afa3988d81766a5e52473b2f23170b0000000000000000000000000000030f1b27333f4a56626e7a86919da9a194887c7075818d99a59e92867a6e63574b3f33271b0f0300000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000008141f2b37424e5965707b8691968b81766c61584e4c566069727a828990959a9c9895939292929395989c99938d867e766e645b51475059636d78828d988e83786d61564b3f34281c10050000000000070f171d22262828282828303d4a5763707d8a97a4978a7d7063574a3d30282828323f4c5965727f8c999e9285787b87939e92867a6e63574b3f4a56626e7a86919d93877b7885929e988b7e7165584b3e3225180b00101c2936424f5c68747979797979797979797064584b3e3225180c00000000131f2c3946525f6b7679797979797979797165594c4033271b0e07131f2c3844515d69757979797979797979786e62564a3d3125180c0814212d3946525e6b7679797979797979797064584b3e3225180c0013202c3946535f6c798693a0acaca09386796c5f5346392c363f48515a646d768089929ba4a69d948b82786f665d544b42392f261d140b0200000000000000000000000000000000000000000000000000000000030f1b27333e4a56626e7985919da9a4988d8175695d515a66727e8a96a1ada195897d71655a4e42362a1e1307000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e615c6773808b97a3a69a8e82766a5e52463b2f23232f3b47535f6b77838e9aa69e92867a6e635b6875828f9ca8a69a8d807366594d4033261a0d0013202c3946535f6c798693a0a6a6a6a6a8aeb6bfb5ada8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8d807366594d4033261a0f1c2835424f5b6875828e9ba8b1a5988b7e7165584b3e3225180b00000c1825313e4a56636f7b87939b9c94887c71665d585656575a626d7884909da296897d7064574b3e3125180b000000000000000006131f2b37434f5b67737f8b96a2aeaca1958a7e73695e53493f362d241c150f0b0704010000000205070b10151c242d36404a545f6974808b96a2aea99e92877b6f63574b3f33271b0f03000000000000000000000000000814202b37434f5b67737e8a96a2a89c9084786c717d8995a1a3978b7f73675b4f43382c20140800000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000000030f1a26313d48535f6a75808b9592887d736960564d4e57606870787e848a8e92959798999999989694918d88827b746d645c52494f58626b75808a9492887d72675c50453a2e23170b000000000006101921282e323535353535353d4a5763707d8a97a4978a7d7063574a3d35353535353f4c5965727f8c999e928578808c98998d82766a5e52463a46525d6975818d98988c817885929e988b7e7165584b3e3225180b000e1b2733404c57626a6c6c6c6c6c6c6c6c6c685f54483c3023170a00000000111e2a37434f5a646b6c6c6c6c6c6c6c6c685f54493d3024180b03101c2835414d58636a6c6c6c6c6c6c6c6c6c675d52463a2e21150905111d2a36424e5a646b6c6c6c6c6c6c6c6c685f54483c3023170a0013202c3946535f6c798693a0acaca09386796c5f5346392c2d363f48525b646d768089929ba4a69d948b81786f665d544b42392f261d140b02000000000000000000000000000000000000000000000000000000000a16222e3a45515d6975818c98a4a99d9185796d62565f6b76828e9aa6a89c9084786d6155493d31261a0e02000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e61606c7884909ca8a195897d71665a4e42362a1e1f2a36424e5a66727e8a96a2a3978b7f73675b6875828f9ca8a69a8d807366594d4033261a0d0013202c3946535f6c79869399999999999ca4aeb8ada39c999999999999999999999999999999998d807366594d4033261a0f1c2936424f5c6875828f9ca8b1a4988b7e7164574b3e3124180b00000915222e3b47535f6b77838e99a4998d82786f6965636364666b747e8995a19d9286796d6155483c2f23160a00000000000000000a16222f3b47535f6b77848f9ba7b3a79b8f84786d62574c42372d241b120b040000000000000000000000040b121b242e38424d58636e7a85919da9afa3978b8073675b4f43372b1f1206000000000000000000000000010d1924303c4854606b77838f9ba7a4988c8074686c7885919da79b9084786c6054483c3024180d01000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000000000915202b37424d58636e79848e988f857b72685f564e4e565e666d73797e8285888a8b8c8c8c8b8a8785817c77716a635b524a5058616a747d8791968b81766b60554a3f34281d120600000000020d18222b333a3f414242424242424a5763707d8a97a4978a7d7063574a424242424242414c5965727f8c999e92857884909c95897d7165594d4236414d5964707c88949d91857985929e988b7e7165584b3e3225180b000b17232f3b4650585e5f5f5f5f5f5f5f5f5f5d564d42372c201407000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d564d43382c201408000c1925303c4751595e5f5f5f5f5f5f5f5f5f5c554b41352a1e1206020e1a26323d48525a5f5f5f5f5f5f5f5f5f5d564d42372c2014070013202c3946535f6c798693a0acaca09386796c5f5346392c242d364049525b646d768089929ca5a69d948a81786f665d544b41382f261d140b0200000000000000000000000000000000000000000000000000000006111d2935414c5864707c87939faba2968a7e72665a636f7b87939faba3978b8074685c5044392d21150900000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6165717c8994a0a89d9185796d6155493d31251a1a26323e4a56626e7986919da79b9084786c606875828f9ca8a69a8d807366594d4033261a0d0013202c3946535f6c79868c8c8c8c8c8c929ca8b4a89c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c807366594d4033261a101d2a3643505c6976838f9ca9b0a4978a7d7164574a3e3124170b000006121e2b37434f5b66727d88939c9f948a817a7571706f7072777d86909aa2978c8175695d5145392c20140700000000000000010d1a26323f4b57636f7b8894a0acaea2968a7e73675c51463b30261b120900000000000000000000000000000009121c26313b47525d6975818c98a4b0a89c9084786b5f53473b2e22160900000000000000000000000006111d2935414d5864707c8894a0aba094887c70646874808c98a4a094887c7064584d4135291d1105000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000040f1a26313c47525c67727c8791978e847a71686058504d545b62686d7276797b7d7e8080807e7d7b7875706b655f58514a5159626a737c868f988e84796f645a4f44392e23170c010000000008141f2a343d454b4e4e4e4e4e4e4e4e5763707d8a97a4978a7d7063574e4e4e4e4e4e4e4e4c5965727f8c999e92857d89959c9084786c6055493d313c48545f6b77838f9b968a7e85929e988b7e7165584b3e3225180b0007131e29343e464d52535353535353535353514b443b31261b0f03000000000a16212c3740484f525353535353535353514c443b31261b10040008141f2a353f474e52535353535353535353504a43392f24190d02000a15212c3640484f525353535353535353514b443b31261b0f030013202c3946535f6c798693a0acaca09386796c5f5346392c20242e374049525b656e77808a939ca5a69d948a81786f665d534a41382f261d140b020000000000000000000000000000000000000000000000000000010d1824303c48535f6b77838e9aa6a69a8e82766a5e6874808c98a3aa9e92877b6f63574b4034281c100400000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e616975818d99a5a4988c8074685c5145392d211516212d3945515d6975818d99a5a094887c70646875828f9ca8a69a8d807366594d4033261a0d0013202c3946535f6c797f7f7f7f7f7f808d9aa6b2a6998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7366594d4033261a121e2b3844515e6a7784909daaafa396897c7063564a3d3023170a0000020e1a26323e4a55606b76818a949c9c938b85817e7c7c7d7f83888f98a19990867b7064594d4135291d10040000000000000004101d2935424e5a6773808c98a4b0aa9e92867a6e62564b3f34291e140a00000000000000000000000000000000000a141f2a35414c5864707c8894a0acaca094887b6f63574a3e3225190d0000000000000000000000000a16222e3a46515d6975818d98a4a89c9084786c6064707c8894a0a5998d8175695d5145392d22160a000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000000000009141f2a35404b55606a757f8993968d837a726a615a524c50575c6166696c6f717273737372706e6c6864605a544e4d545c636b747c858e9890867c72685d53483d32271c110600000000000d1925303b464f565a5b5b5b5b5b5b5b5b63707d8a97a4978a7d70635b5b5b5b5b5b5b5b5b585965727f8c999f9285818d99978b8073685c5044382c37434f5b67727e8a969a8e8285929e988b7e7165584b3e3225180b00020d18222c353c424546464646464646464644403a32291f140a000000000005101a252e373e4346464646464646464644403a32291f150a0000030e19232d353d4245464646464646464646443f3931271d13080000040f1a242e363d4346464646464646464644403a32291f140a000013202c3946535f6c798693a0acaca09386796c5f5346392c201b252e374049535c656e77818a939ca6a59c938a81786f655c534a41382f261d140a01000000000000000000000000000000000000000000000000000008141f2b37434f5a66727e8a95a1ab9f93877b6f636c7884909ca8a59a8e82766a5e52473b2f23170b0000000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e626e7a86929ea99f93887b7064584c4034281c10111d2935414d5965717c8894a0a4998d8175696875828f9ca8a69a8d807366594d4033261a0d00121f2b3844515d6871727272727273808d9aa6b2a6998c7f72727272727272727272727272727272726d63574b3f32251914202d3946535f6c7885929eabaea195887b6f6255493c2f2216090000000a16222d39444f5a646f78828a92999d96918d8b89898a8b8e93999d9790877e74695e53483c3025190d000000000000000006131f2c3845515e6a76838f9ba8b2a69a8e8275695d51463a2e23180d020000000000000000000000000000000000030e1924303c48535f6c7884909ca9b0a4988b7f73665a4d4135281c0f0300000000000000000000030f1b27333e4a56626e7a86919da9a4988c8074685b606c7884909ca89d9185796e62564a3e32261a0e020000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e12050000000000000000000000000000030e19242f39444e59636d77818a94958d847b736c645d56504b5155595d606264656666666564625f5c58544f4c52585f666d757d868e9791887e746a60564c41362c21160b000000000000101d2935414d586167686868686868686868707d8a97a4978a7d7068686868686868686868635a65727f8c999f938686929e92877b6f63574b3f3328333e4a56626e7985919d938785929e988b7e7165584b3e3225180b000006101a232a31363939393939393939393938342f2820170d0300000000000009131c252c323739393939393939393938342f2820170d0300000007111b232b31363939393939393939393937342e271f150c0100000008121c242c323639393939393939393938342f2820170d03000013202c3946535f6c798693a0acaca09386796c5f5346392c20131c252e37414a535c656f78818a949da6a59c938a81776e655c534a41382f261c130a0100000000000000000000000000000000000000000000000000030f1b26323e4a56616d7985919ca8a3978b7f7367717c8995a1aca195897d71655a4e42362a1e13070000000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e67727e8a96a2a79b8f83776b5f53473b3024180c0d1924303c4854606c7884909ca89d9185796d6875828f9ca8a69a8d807366594d4033261a0d00101c2834404c565f65656565656673808d9aa6b2a6998c7f7265656565656565656565656565656565635b51463b2f231616232f3c4855616e7a8794a0adaca093867a6d6054473a2e21140800000005111c27333e48535d666f7880878e93979b9997969696989b9a96928c857e756c62584d42372b20140800000000000000000915222e3b4754606d7986929fabafa3968a7e7165594d4135291d12060000000000000000000000000000000000000008131f2b37434f5c6874818d99a6b2a79b8f8276695d5044372b1e1205000000000000000000000814202b37434f5b67737e8a96a2aca094887b6f63575c6874808c98a4a2968a7e72665a4e43372b1f13070000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000000007121d27323c47515b656e78818a94968e857d766f68615b56504c4d515356575959595958575553504c4d52575d6369707880878f9891887f756c62584e443a2f251a0f05000000000000121f2c3845515e6973757575757575757575757d8a97a4978a7d75757575757575757575746c6165727f8c99a3978f8f979a8e82766a5e52463b2f232e3945515d6975818c98988f8f96a1988b7e7165584b3e3225180b0000000811192025292c2c2c2c2c2c2c2c2c2c2b28241d160e0500000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2b28241e160e05000000000009111920262a2c2c2c2c2c2c2c2c2c2c2b28231c150d0300000000000a121a21262a2c2c2c2c2c2c2c2c2c2b28241d160e0500000013202c3946535f6c798693a0acaca09386796c5f5346392c2013131c252f38414a535d666f78818b949da6a59c938a81776e655c534a41382e251c130a01000000000000000000000000000000000000000000000000000a16212d3945515d6874808c98a3a79b8f83776b75818d99a5a89c9084786c6155493d31251a0e020000000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6b77838f9ba7a2968a7e72675b4f43372b1f13070814202c3844505c6773808b97a3a2968a7e726875828f9ca8a69a8d807366594d4033261a0d000c18242f3a444d5458595959596673808d9aa6b2a6998c7f726559595959595959595959595959595957514940352a1e131a26323f4b5764707d8996a2afaa9e9185786b5f5246392c201306000000000b16212c37414b545d666e767c82878b8e909293939291908d8a86817a736c635a50463b30251a0f0300000000000000000b1824313d4a56636f7c8995a1aeaca093877a6e6255493d3125190d0100000000000000000000000000000000000000030f1b27333f4c5864717d8a96a3afaa9e9185786c5f53463a2d211407000000000000000000010d1824303c48545f6b77838f9ba7a79b8f83776b5f5357636f7c8894a0a69a8f83776b5f53473b2f23170c0000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205000000000000000000000000000000010b16202b353f49535c666f78818a92978f888179736d67615c5853504d4a4b4c4c4c4c4c4a4b4d5154595d62686e747b828a919890887f766d635a50463c32281e13080000000000000013202c3946535f6c7982828282828282828282828a97a4978a82828282828282828282827d706365727f8c99a6a19b9ba095897d71655a4e42362a1e2935404c5864707b87939f9b9ba0a5988b7e7165584b3e3225180b00000000070e14191d1f2020202020202020201f1c18120c04000000000000000000010910161a1e1f20202020202020201f1c18130c0500000000000000070f151a1d1f2020202020202020201e1c17120b03000000000000000810161a1e1f20202020202020201f1c18120c040000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130a131d262f38414b545d666f78828b949da7a59c938a80776e655c534a40372e251c130a0000000000000000000000000000000000000000000000000005111d2834404c58636f7b87939faaa094887b6f7985919da9a3978b8074685c5044382d211509000000000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e707c88939fa99e92867a6e62564a3e32261b0f0304101b27333f4b57636f7b87939fa69a8e82766a75828f9ca8a69a8d807366594d4033261a0d0007131e28323b43484b4c4c4d596673808d9aa6b2a6998c7f7265594c4c4c4c4c4c4c4c4c4c4c4c4c4c4a463f372e2319121e2a36424e5b6773808c98a5b1a89b8f8276695d5044372a1e11050000000005101a252f39424b545c646b71767b7f8284858686868583817e7a756f69625a51483e342a1f14090000000000000000000d1926333f4c5865727e8b97a4b1aa9d9084776b5f5246392d2115080000000000000000000000000000000000000000000b1724303c4955626e7b8794a0adada094877b6e6255483c2f23160900000000000000000005111d2935414d5864707c8894a0aba3978b7f73675b4f535f6b7784909ca89f93877b6f63584c4034281c100400000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e120500000000000000000000000000000000040e19232d37414a545d666f7881899198928b847e78726d6864605c595755545353535456575a5d6165696e737980868d94968f877e766d645b51483e342b20160c010000000000000013202c3946535f6c79868e8e8e8e8e8e8e8e8e8e929ba79b928e8e8e8e8e8e8e8e8e8e8a7d706365727f8c99a6aca8a89c9084786d6155493d31251a24303c48535f6b77838e9aa6a8aba5988b7e7165584b3e3225180b000000000003090d111213131313131313131312100c0701000000000000000000000000050a0e1113131313131313131312100c070100000000000000000004090e1113131313131313131313120f0b0600000000000000000000040a0e1113131313131313131312100c0701000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060b141d262f39424b545d666f79828b959ea7a59c928980776e655c524940372e251c1208000000000000000000000000000000000000000000000000000c18242f3b47535f6b76828e9aa6a4988c80737d8995a1aa9e92877b6f63574b3f34281c1004000000000000000000000000000000000000000013202c3946535f6c798693a0aca194877a6e74808c98a4a5998d8175695d51463a2e22160a00000b17232f3b47535f6a76828e9aa69f93877b6f75828f9ca8a69a8d807366594d4033261a0d00010c16202931383c3f3f404d596673808d9aa6b2a6998c7f7265594c3f3f3f3f3f3f3f3f3f3f3f3f3f3e3a352e251c1218232f3a46525e6a77838f9ba8b1a5988c8073675a4e4135281c0f03000000000009131d273039424b525960666b6f72757778797979787674716e69645e5750483f362c22180d030000000000000000000e1b2834414e5a6774818d9aa6b3a79b8e8275685c4f43362a1e11050000000000000000000000000000000000000000000814212d3a46535f6c7885929eabafa396897d7063574a3d3124180b0000000000000000000a16222e3a45515d6975818d98a4aa9e92867a6e62564b4f5b6773808b98a4a4988c8074685c5044382d21150900000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000103050815212e3b4854616e7b8894a1aeab9e9285786b5e5145382b1e1205050300000000000000000000000000000007111b252f38424b545d666e777f878e95968f89837e78746f6c6866636261605f6061626466696d71757a7f858b9198938c847c746c645b52493f362c23190f04000000000000000013202c3946535f6c7986939b9b9b9b9b9b9b9b9b9da0a0a09d9b9b9b9b9b9b9b9b9b968a7d706365727f8c99a0a0a0a0978b8074685c5044382d21151f2b37434e5a66727e8a95a0a0a0a0988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306020b141d263039424b545d677079838c959ea7a49b928980776e645b524940372e241a0f0400000000000000000000000000000000000000000000000007131f2b36424e5a66717d8995a1a89c908477818d99a5a5998e82766a5e52473b2f23170b00000000000000000000000000000000000000000013202c3946535f6c798693a0aca194877a6d7884909ca8a094897c7165594d4135291d1106000007121e2a36424e5a66727e8a96a2a3978b807375828f9ca8a69a8d807366594d4033261a0d0000050e171f262c303233404d596673808d9aa6b2a6998c7f7265594c3f323232323232323232323232312e2a231c13141e2934404b57636f7b87939fabaea295897d7064574b3f3226190d000000000000010b151e27303940484e555a5f6366696a6c6c6c6c6b6a6865625d59534d463e362d241a100600000000000000000000101c2936434f5c6975828f9ba8b2a6998c8073665a4d4134271b0e0200000000000000000000000000000000000000000005121e2b3744515d6a7783909da9b1a4988b7e7265584c3f3226190c0000000000000000030f1b27323e4a56626e7a85919da9a59a8e82766a5e52464b57636f7b8793a0a89c9085786d6155493d3125190d02000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acada09386796d6053463a2d20130b0b0b0b0b0a09060200000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0acaca09386796d6053463a2d20130d0803000000000000000000040a0e15212e3b4854616e7b8894a1acaa9e9184776a5d5144372a1e11000000000004090d10121215212e3b4854616e7b8894a1acab9e9285786b5e5145382b1e121211100c08020000000000000000000000000009131d263039424b545c656d747c838a9197948f8984807c787572706e6d6d6c6d6d6f717376797d81868b9096968f89817a726b625a524940372d241a110700000000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393938a7d706365727f8c939393939393877b6f63574b4034281c101a26323e4a56616d79859193939393938b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407090b0d0e1011111212121111100f0e0d0b09070402000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600020b141e273039424b555e677079838c959ea8a49b928980766d645b524940362c211509000000000000000000000000000000000000000000000000020e1a26323d4955616d7884909ca8a094877b85919da9a195897d7165594e42362a1e120700000000000000000000000000000000000000000013202c3946535f6c798693a0aca094877a707c8894a0a89c9084786c6054483c3125190d010000020e1a26323e4a56616d7985919da89c90847775828f9ca8a69a8d807366594d4033261a0d000000050d151b20242633404d596673808d9aa6b2a6998c7f7265594c3f32262626262626262626262625221e1811121c25303a45515c68737f8b97a3afaa9e9285796d6154483c2f23160a00000000000000030c151e272f363d43494e53575a5c5e5f5f5f5f5e5d5b5955524d47423b342c241b12080000000000000000000000111e2a3744505d6a7783909da9b1a4978b7e7165584b3f3225190c0000000000000000000000000000000000000000000003101c2936424f5c6875828f9ba8b3a6998c8073665a4d4033271a0d000000000000000008141f2b37434f5b67727e8a96a2ada195897d7165594d4147535f6b77838f9ba7a195897d7165594d42362a1e1206000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000005080a0b0b0b0b0b15212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c798693a0a7a7a09386796d6053463a2d201717171717171715120e08010000000815212e3b4854616e7b8894a1a7a79e9184776a5d5144372a1e110013202c3946535f6c798693a0a0a0a09386796d6053463a2d201c19140e08010000000000020910151a1d212e3b4854616e7b8894a0a0a09e9184776a5d5144372a1e1100000000080f15191d1e1e1e212e3b4854616e7b8894a0a0a09e9285786b5e5145382b1e1e1e1e1c19140d06000000000000000000000000010b141e273039424a535b636a727980868c929895908c8885817e7d7b7a7979797a7b7d808285898d919696918b847e7770686159514840372e251b12080000000000000000000013202c3946535f6c798686868686868686868686868686868686868686868686868686867d706365727f8686868686868682766a5e53473b2f23170b16212d3945515d687480868686868686867e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0e111316181a1b1c1d1e1e1e1e1e1e1d1c1b19181613110e0b0804010000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a09386796c5f5346392c2013060000020c151e27303a434c555e67717a838c959fa0a09b928980766d645b52483d32261a0e010000000000000000000000000000000000000000000000000915212d3944505c6874808b97a3a3978b7f8995a1a89c9084786c6155493d31251a0e0200000000000000000000000000000000000000000013202c3946535f6c798693a0aca093867974808c98a4a3978b8073675c5044382c201408000000000915212d3945515d6975818d99a5a094887b75828e9ba8a69a8d807366594d4033261a0d00000000030a10141a2633404d596673808d9aa6b2a6998c7f7265594c3f3226191919191919191919191816120d141c242d37424c57626d7984909ca7b1a5998d8275695d5145382c2013070000000000000000030c151d242b32383e42474a4d4f515253535352504f4c4945413c363029221a1209000000000000000000000000121e2b3845515e6b7784919eaab0a3968a7d7063574a3d3124170b00000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e00000000000000010c1824303c48545f6b77838f9ba7a89c9085786d6155493d434f5b67737f8b97a3a59a8e82766a5e52463a2e22170b000000000000000013202c3946535f6c798693a0a7a7a09386796d6053463a2d20130700000000050c111417171717171717212e3b4854616e7b8894a1a7a79e9184776a5d5144372a1e110013202c3946535f6c7986939a9a9a9a9386796d6053463a2d2224242424242424221e19130c0400000815212e3b4854616e7b88949a9a9a9a9184776a5d5144372a1e110013202c3946535f6c798693939393939386796d6053463a2d2b29251f19120c05000000060d141b2126292b2e3b4854616e7b8893939393939184776a5d5144372a1e110000000912192025292b2b2b2b2e3b4854616e7b8893939393939285786b5e5145382b2b2b2b2b28241f181007000000000000000000000000020c151e2730384149515860676e757b81878c91969894918e8b89888786868687888a8c8f92959994908b858079736c655e564f473f362e251c13090000000000000000000000131f2c3946525f6b76797979797979797979797979797979797979797979797979797979786e62657179797979797979797971665a4e42362a1e1307111d2834404c58636f7979797979797979797064574b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f13171a1d2022242628292a2b2b2b2b2b2a2a2927262422201d1b1814110d0905000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693939393939386796c5f5346392c201306000000030c151e27313a434c555f68717a838d9393939393928980766d645a4e42362a1d110400000000000000000000000000000000000000000000000005101c2834404b57636f7b87929ea79b8f878d99a5a3978b8073685c5044382c2115090000000000000000000000000000000000000000000013202c3946535f6c798693a0aca09386797884909ca89e93877b6f63574b3f33271c10040000000005111d2935414d5864707c8894a0a4988c8075828e9ba8a69a8d807366594d4033261a0d000000000000040d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3226190c0c0c0c0c0c0c0c0c0b0d12181e252d364049535e68737e8a95a1acaca095897d7165594d4135291c1004000000000000000000030b131a21272d32363b3e41434445464646454442403d3935302b251f18100800000000000000000000000000121f2c3945525f6b7885929fabafa296897c6f6256493c3023160900000000000000000000000000000000000000000000000d1a2733404d5a6673808d9aa6b3a89b8e8275685b4f4235281c0f0000000000000005111d2935414c5864707c88949faba4988c8074685c5044383f4b57636f7b87939faa9e92867a6e63574b3f33271b0f030000000000000013202c3946535f6c7986939a9a9a9a9386796d6053463a2d2013070000020910171c2123242424242424232e3b4854616e7b88949a9a9a9a9184776a5d5144372a1e110013202c3946535f6c79868d8d8d8d8d8d86796d6053463a2d2e303131313131302e2a241d160f07000815212e3b4854616e7b888d8d8d8d8d8d84776a5d5144372a1e110013202c3946535f6c798686868686868686796d6053463a383835312a241d17100a030a11181e252c323638383b4854616e7b8686868686868684776a5d5144372a1e11000008121b242b313538383838383b4854616e7b8686868686868685786b5e514538383838383735302a221a1006000000000000000000000000030c151e262f373f474e555c636970757b81858a8e92959898969494939393949596999794918d89847f7a746e68615a534c453d352d241c130a010000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c675d5f686c6c6c6c6c6c6c6c6c686055493d31261a0e020c18242f3b47535e676c6c6c6c6c6c6c6c6c685e53483c2f23160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080e12171b1f23272a2c2f313334363737383838383736353433312f2c2a2724211d1915100c0702000000000000000000000000000000000000000000000000000000000013202c3946535f6c798686868686868686796c5f5346392c20130600000000030c151f28313a434d565f68717a84868686868686868680766a5e5145382b1f1205000000000000000000000000000000000000000000000000000c17232f3b47525e6a76828e99a5a19893969fa99e92867a6f63574b3f34281c10040000000000000000000000000000000000000000000013202c3946535f6c798693a0aca09386797c8894a0a69a8e82766a5e52473b2f23170b0000000000000c1824303c4854606c7884909ca89c908377818e9ba7a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3226190c0b0b0c0c0d0e101316191e232930374048525b656f7a85909ba6b2a79b9084786c6155493d3125190c000000000000000000000001080f161c21262a2e313436383939393938373533302d2925201a140d060000000000000000000000000000131f2c3946525f6c7986929facaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000d192633404c596673808c99a6b2a89c8f8275685c4f4236291c0f000000000000000a16222e3945515d6975818c98a4ab9f93877b6f64584c40343a46535f6b77838f9ba7a3978b7f73675b4f43382c2014080000000000000013202c3946535f6c79868d8d8d8d8d8d86796d6053463a2d20130700050c131b22282d303131313131312f2e3b4854616e7b888d8d8d8d8d8d84776a5d5144372a1e110013202c3946535f6c798181818181818181796d6053463a363a3d3e3e3e3e3e3d3a362f282019120b0815212e3b4854616e7b8181818181818181776a5d5144372a1e1100131f2c3946525f6b767979797979797979766b5f5346454544413c352f28221b150e151c222930373d424545454754606d77797979797979797975695d5044372a1d1100040f1a242d363d424445454545454754606d777979797979797979756a5e5144454545454544413b342c22180d02000000000000000000000000030c141d252d353c444b52585e646a7075797e8285888b8d8f919292929292908f8d8a8884817c78736e69635d565049423a332b231b120a010000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c55565d5f5f5f5f5f5f5f5f5f5d574e43382d2115090007131f2b36414c555c5f5f5f5f5f5f5f5f5f5c564d42372b1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e14191e23272c2f3336393b3e3f4142434445454544444342413f3d3b393633302d2925211c18130e0802000000000000000000000000000000000000000000000000000000131f2c3946525f6b767979797979797979766b5f5246392c1f13060000000000030d161f28313a444d565f687279797979797979797979766a5e5145382b1f12050000000000000000000000000000000000000000000000000007131e2a36424e5965717d8994a0aaa3a0a2a8a5998e82766a5e52463b2f23170b000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f928679808c98a4a195897d72665a4e42362a1e12060000000000000814202c38444f5b6773808b97a3a093877b818d9aa7a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f32261918181818191a1b1d1f22252a2e343a4249525a646d77818c96a1acaca0958a7e73675c5044382c20140800000000000000000000000000040a10151a1e2225282a2b2c2c2c2c2c2a292724211d19140e090200000000000000000000000000000013202c3946535f6c798693a0acaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f000000000000030f1b27323e4a56626e7985919da9a79b8f83776b5f53473b2f36424e5a66737e8b97a3a79b8f84786c6054483c3024180c0100000000000013202c3946535f6c798181818181818181796d6053463a2d201307080f161e252c33393c3e3e3e3e3e3d3c383b4854616e7b8181818181818181776a5d5144372a1e1100121f2c3845515d6972737373737373737372695e51453941464a4a4a4a4a4a4a46413a322b241c150e14202d3a46535f6a72737373737373737371675b4f43362a1d1000111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a51515151514d47403a332d2620191f262d343b42484e51515151515b656c6c6c6c6c6c6c6c6c6a63584d4135281c0f000a15212b363f474e5151515151514f505b656c6c6c6c6c6c6c6c6c6b63594e505151515151514d463e34291e130700000000000000000000000000020b131b232b323940474d53595f64696d7275797c7e81838485868686858482817e7b7874706c67625d57524b453e3730292119110900000000000000000000000000000a16212c3740484f5253535353535353535353535353535353535353535353535353535353504a4c51535353535353535353514c453c32271c100400020e1a25303a434b50535353535353535353504b443b30261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13191f252a2f33383c3f4245484a4c4e4f50515151515151504f4e4c4a484543403d3935312d28231e19130e080100000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a4f43372a1e1105000000000000040d161f28323b444d5660686c6c6c6c6c6c6c6c6c6c6b64594e4236291d100400000000000000000000000000000000000000000000000000020e1a25313d4955606c7884909ca0a0a0a0a0a095897d7165594e42362a1e1207000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f92857984909ca89d9185796d6155493d31261a0e02000000000000030f1b27333f4b57636f7b87939fa3978b7e808d9aa6a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f32262525252525262628292b2e32363a3f454c535b646c757f89939ea8afa59a8f84796d62564b3f34281c1004000000000000000000000000000000050a0e1216191b1d1e1f2020201f1e1c1a1815110d0803000000000000000000000000000000000013202c3946535f6c7986929facaea295887b6e6155483b2f22150800000000000000000000000000000000000000000000000d1926333f4c5966727f8c99a6b2a99c8f8275695c4f4236291c0f00000000000008141f2b37434f5b66727e8a96a2aea2968a7e72665a4f43372b323e4a56626e7a87939faba094887c7064584d4135291d1105000000000000121f2c3845515d6972737373737373737372695e5145392c1f130b121a212830373e45494a4a4a4a4a4a48433c46535f6a72737373737373737371675b4f43362a1d1000101c2935414c57606667676767676767676660574d41424b5256575757575756524b443d352e271f18121e2a36424e5861666767676767676767655f554a3f33271b0e000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5c5e5e5e5e5e5d58524b453e38312b242a31383f464c535a5e5e5e5e5e5e5b5f5f5f5f5f5f5f5f5f5e5951473c3025190c000e1a26323d4851595e5e5e5e5e5e5b55535b5f5f5f5f5f5f5f5f5f5e5951575c5e5e5e5e5e5d5850463b3024180c00000000000000000000000000000109111920272e353c42484e53585d6165696d6f727476777879797978777574716f6c6864605c57524c46403a332c251e170f0700000000000000000000000000000005101a252e373e434646464646464646464646464646464646464646464646464646464646443f404446464646464646464645413a332a20150b00000008131e283139404446464646464646464644403a32291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000030a11181e252b30363b3f44484b4f525457595a5c5d5e5e5e5e5e5d5d5c5a595754524f4c4945413d39342f2a251f19130c060000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e0200000000000000040d162029323b444e565d5f5f5f5f5f5f5f5f5f5f5f5a52483d31261a0e0100000000000000000000000000000000000000000000000000000915212c3844505c67737f8b939393939393939084786c6055493d3125190e02000000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9f92857b8794a0a4988c8174685d5145392d21150900000000000000000b17232f3b47525e6a76828e9aa69b8e82808c99a6a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3232323232323232333436383b3e42464b51575e656d757e88919ba5afa89e93887d73675c51453a2e23170b0000000000000000000000000000000000000206090c0e1012131313131211100e0b08050100000000000000000000000000000000000000131f2c3946525f6c7986929facafa295887b6f6255493c2f22160900000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275685b4f4235281c0f0000000000010c1824303c48535f6b77838f9ba6a99d92867a6e62564a3e32262e3a46525e6a76828e9ba7a5998d8175695d5145392d22160a000000000000101c2935414c57606667676767676767676660574d4135291d10151d242b333a41495055575757575757544e46424e5861666767676767676767655f554a3f33271b0e000d1924303b454e55595a5a5a5a5a5a5a5a59554e453f4a545d636464646464635d564e474038312a231b1a26313c464f565a5a5a5a5a5a5a5a5a59544d43392e22170b000a16212c3740484f5253535353535353545f676b6b6b6b6b6a635d565049433c352f353c434a50575e656a6b6b6b6b6b665d5353535353535353524e473f352a1f140800111e2a36424e59636a6b6b6b6b6b67605a5352535353535353535352545b61686b6b6b6b6b6962574c4034281b0f00000000000000000000000000000000070e161d242a31373c42474c5155595d60636668696b6b6c6c6c6b6a696765625f5c5854504b46413b352f28221b140c05000000000000000000000000000000000009131c252c32373939393939393939393939393939393939393939393939393939393939373434383939393939393939393835302921180e04000000020c161f272e343839393939393939393938342f2820170d02000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c232930363c41464b5054585b5e61636567686a6a6b6b6b6b6a6968676563615e5c5855514d4945403b36302a241e17110a03000000000000000000000000000000000000000000000a16212c3740484f525353535353535353524f4840372c21160a000000000000000000040e172029323c444c5153535353535353535353524e4840362b20150900000000000000000000000000000000000000000000000000000004101c28333f4b57636e7a8686868686868686867f73675c5044382c21150900000000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e92857e8b97a3a094887c7064584c4034281c1105000000000000000006121e2a36424e5a66727e8a96a29e92867f8c98a5a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c3f3e3e3e3e3e3e3f3f40414345474a4e52575c626870777f88919aa3adaaa0968c81776c61564b4034291e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabafa296897c6f6356493d3023160a00000000000000000000000000000000000000000000000e1b2734414d5a6773818d9aa6b3a89b8e8175685b4e4235281b0f000000000005111d2935404c5864707c88949faba5998d8175695d51453a2e222a36424e5a66727e8a96a2a99d9185796d62564a3e32261a0e0200000000000d1924303b454e55595a5a5a5a5a5a5a5a59554e453b3025191920272e363d444c535a6164646464646460584e43464f565a5a5a5a5a5a5a5a5a59544d43392e22170b0008131e29333c444a4d4d4d4d4d4d4d4d4d4d4a443c434f5b666f71717171716f676059524a433c342d261e202a343d454a4d4d4d4d4d4d4d4d4d4c49433b31271d11060005101a252e373e43464646464646464c5865707878787878756e68615b544e47403a40474d545b6269707678787878776e62564946464646464645423d352d23190e0300131f2c3945525e6b757878787878726b645e57514a464646464a51585f656c73787878787874685c5043362a1d100000000000000000000000000000000000040b12191f252b31373c4145494d515457595b5d5e5f5f5f5f5f5e5c5a585653504c48443f3a35302a241d17100902000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28282b2c2c2c2c2c2c2c2c2c2b29241e170f060000000000040d151d23282b2c2c2c2c2c2c2c2c2c2b28231d160e05000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f262d343b41474d52575c6064676b6d707274757677777878777776757372706d6b6865615d5955504c47413b352f29221b140d0500000000000000000000000000000000000000000005101a252e373e4346464646464646464646433e372e251a100500000000000000000000050e17202a323a40444646464646464646464645433d362e241a0f04000000000000000000000000000000000000000000000000000000000b17232f3a46525e6a75797979797979797979786e63574b3f33281c100400000000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9184828f9ba79b8f83776b5f53483c3024180c000000000000000000020e1a26323e4955616d7985919da295897e8b98a5a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7265594c4b4b4b4b4b4b4b4b4c4d4e4f5154565a5e62676d737a8189919aa3acaaa1988e847a70655a50453a2e23180c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3844515e6b7784919daab0a3978a7d7064574a3e3124180b00000000000000000000000000000000000000000000020f1c2835424f5b6875818e9ba7b3a69a8d8174675a4d4134271b0e00000000000a16222e3945515d6975818c98a4aca094887c7165594d4135291d26323e4a56626e7a86929eaaa2968a7e72665a4e42372b1f1307000000000008131e29333c444a4d4d4d4d4d4d4d4d4d4d4a443c33291f1c232a323940484f565e656c7171717171706a5f54473d454a4d4d4d4d4d4d4d4d4d4c49433b31271d110600020d17212a32393d404040404040404040403e393845515e6b777d7d7d7d7d79726b635c554d463f37302922222b33393e404040404040404040403d3831291f160b00000009131c252c3237393939393939404c59667380858585858079736c665f58524b454b51585f666d747a81858585857d7063574a3d39393939393936312b231b1107000013202c3946535f6c7985858585837c766f69625c554f48474e555c626970777e8585858584776a5d5044372a1d1100000000000000000000000000000000000000070e141a20262b3035393d4144474a4c4e5051525253525251504e4c494743403c38332f29241e19120c05000000000000000000000000000000000000000000010910161a1e1f202020202020202020202020202020202020202020202020202020201e1c1c1f2020202020202020201f1c18130d0500000000000000040b12171c1f2020202020202020201f1c18120c04000000000000000000000000000000000000000000000000000000000000000000000000000000081119212931383f464c53585e63686c7074777a7c7e8182838484858584848382817e7c7a7774716d6a65615c57524c47413a342d261f17100800000000000000000000000000000000000000000009131c252c32373939393939393939393937322c251c1309000000000000000000000000050e1820292f3538393939393939393939393936322c241b1208000000000000000000000000000000000000000000000000000000000006121e2a36414d58636a6c6c6c6c6c6c6c6c6c6c675d52463b2f23170b0000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aa9e918486929fa2968a7e73675b4f43372b1f1307000000000000000000000915212d3945515d6975818d99a4998d818a97a4a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f72655958585858585858585859595a5c5e6063666a6e73787e858c939ba3aca9a1988f867c72685e53493e33281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3743505d697683909ca9b1a5988b7e7265594c3f33261a0d0000000000000000000000000000000000000000000005111e2a3743505d6976838f9ca9b2a5998c7f7266594c4033261a0d00000000030f1b26323e4a56626d7985919da9a89c9084786c6054483c302519222e3a46525e6a76828e9aa6a69a8f83776b5f53473b2f23170c0000000000020d17212a32393d404040404040404040403e39322a211f262d353c434b525961686f767d7d7d7d7d7c706356493d393e404040404040404040403d3831291f160b000000050f1820272d3133343434343434343433312d3845515e6b78838a8a8a8a847c756e665f585149423b332c2521282e3233343434343434343433312c261f170d04000000010a131a21262a2c2c2c2c2c323f4c5865717a848d92918b847e77716a635d5650555c636a71777e858c92928b82786e6256493d302c2c2c2c2c2a2620191109000000131f2c3945525f6b767f8891928e88817a746d67605a53525960666d747b82898f9290877d74695c5043362a1d10000000000000000000000000000000000000000003090f141a1f24292d3135383b3e4042434445464646454443413f3d3a3734302c27231e19130d0701000000000000000000000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313131313131313120f101213131313131313131312100c080200000000000000000000070c0f1213131313131313131312100c070100000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b333b424a51575e64696f74787c808386898b8d8f90919192929190908e8d8b898784817d7a76716d68635e58524c453f383029211a11090100000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a26211a130a0100000000000000000000000000060e171e24292b2c2c2c2c2c2c2c2c2c2c2c2a26211a1209000000000000000000000000000000000000000000000000000000000000010d1925313c4751595e5f5f5f5f5f5f5f5f5f5f5c554b41352a1e12060000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9f93898b96a29e92867a6e62564a3e32271b0f030000000000000000000005111d2935404c5864707c8894a09c90888d98a4a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f726565656565656565656565656667686a6d6f72767a7f848a90969ea5ada8a0978f867d736a60564c42372c22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5b6875818e9ba7b3a69a8d8174675a4e4135281c0f030000000000000000000000000000000000000000000714202c3946525f6b7884919eaab0a4978a7e7164584b3e3225180c0000000008131f2b37434f5a66727e8a96a2ada3978b8073675c5044382c20141d2935424e5a66727e8a96a2ab9f93877b6f63584c4034281c10040000000000050f1820272d3133343434343434343433312d2820222931383f474e555c646b727a81888a8a8a877d7063564a3d303233343434343434343433312c261f170d0400000000060e161c212527272727272727272727252a3743505c67717a848d96968e878078716a625b544c453e362f282022252727272727272727272624211b150d050000000000010910161a1e1f20202024303c48545f68717a848d96968f89827b756e68615b60676e757b82899097958c837970675d52463a2e212020201f1d1a150f0700000000111e2a36434e5a646d7680899299928c857f78726b645e5d636a71787f868d939a91877e756b62584c4034281b0f0000000000000000000000000000000000000000000003090e14181d2125282c2e3133353738393939393837363533302e2b2724201c17120d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232c353d454d545b62696f757a8084888c909395989a9b9c9d9e9e9e9e9d9c9b99989593908d8a86827d79746e69635d575049423b332b231b130a0100000000000000000000000000000000000000010910161a1e1f20202020202020201f1e1a16100901000000000000000000000000000000050c13181c1f202020202020202020201f1e1a150f0800000000000000000000000000000000000000000000000000000000000000000814202b353f474e5253535353535353535353504a43392f24190d020000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca49b95969da5998d8175695d52463a2e22160a0000000000000000000000000c1824303c4854606c7884909ba29994979fa9a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7271717171717171717171727273747577797c7e82868b90959ba1a8aba59d968e867d746b62584e443a30251b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734404d5a6673808c99a5b2a89c8f8276695d5044372b1f12060000000000000000000000000000000000000000000a17232f3c4855616d7a8793a0acaea295897c6f6356493d3023170a000000000c1824303c48535f6b77838f9ba6aa9f93877b6f63574b3f33271b101925313d4956626e7a86929eaaa4988c8074685c5044382d211509000000000000060e161c21252727272727272727272725211e252c343b424a515860676e757d848b939790877e756b6054483c2f252727272727272727272624211b150d05000000000000040b1115181a1a1a1a1a1a1a1a1a1a1b2834404b565f68717b848d9799918a837b746d655e574f48413a322b241c1a1a1a1a1a1a1a1a1a1a1815100a030000000000000000050a0e1113131314202c38434d565f68727b848d969a948d878079736c666b727880868d949b968d837a71675e554b41352a1e13131313110e090400000000000e1a26323d48525b646d768089929b97908a837d766f69676e757c838a90979b91887e756c625950463b3024180c00000000000000000000000000000000000000000000000003080c1115191c1f222527282a2b2c2c2c2c2c2b2a282624211e1b1814100b0601000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1112131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100c080200000000000000000000000002040607070808080807060401000000000000000000000000000000000000000000000007111a232c353e474f575f666d747a80868b9094989c9fa2a4a6a8a9a8a8a7a7a8a8a9a8a6a4a29f9d9996928e8985807a746e68625b544d453d352d251c130a010000000000000000000000000000000000000000050a0e1113131313131313131313110e0a0500000000000000000000000000000000000001070c10121313131313131313131313110e0a04000000000000000000000000000000000000000000000000000000000000000000030e19232d353d424546464646464646464646443f3931271d1308000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada6a2a3a7a095897d7165594d4135291d12060000000000000000000000000814202c37434f5b67737f8b97a3a4a1a2a8b1a69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b2a6998c7f7e7e7e7e7e7e7e7e7e7e7e7e7e8081828486888b8e92979ba1a6aca6a09a938b847c736b625950463c32281e140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4b5864717d8a97a3b0aa9e9185786c6053473b2e22160a0000000000000000000000000000000000000000020e1a26333f4b5764707d8996a2afac9f93867a6d6154473b2e22150800000005111d2935404c5864707c88939faba69a8e82766a5e52473b2f23170b15212d3945515d6976828e9aa6a89c9085786d6155493d3125190d01000000000000040b1115181a1a1a1a1a1a1a1a1a1a19212830373e454d545b636a717980878f969a91887e756c62594f44382c201a1a1a1a1a1a1a1a1a1a1815100a0300000000000000000005090c0d0d0d0d0d0d0d0d0d0d17232e39444d565f69727b858e979c958d867e777069615a534b443d352e261d140d0d0d0d0d0d0d0d0b08040000000000000000000000000205060606101b26313b444d576069727b848e979f98918b847e7771767c838a91989f978d847a71685f554c43392f24190d0606060401000000000000000a15212c364049525b646d768089929b9b958e88817a74727980878e949b9b92897f766c635a50473e342a1f130800000000000000000000000000000000000000000000000000000005090c101316181a1c1d1e1f1f201f1f1e1d1b191715120f0b08040000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c18130d05000000000000000002070c0f11121314151515151412100e0b070200000000000000000000000000000000000000050f19232c353e475059616970787f858c91979ca0a5a8a9a6a3a09e9d9c9b9a9b9b9c9d9ea0a2a4a7a9a6a29e9a95908b86807a736d665e574f473f372e251c1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b232b3136393939393939393939393937342e271f150c01000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acacacacaca89c9084786c6054483d3125190d01000000000000000000000000030f1b27333f4b57636f7b87939eaaacacacaca69a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b3a79b918b8b8b8b8b8b8b8b8b8b8b8b8b8c8c8d8e909295979b9ea3a7aba6a19b958f88817a726a615950473e342a20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303c4955626f7b8894a0adada194887b6f63574b3e32261b0f030000000000000000000000000000000000000007131f2b37434f5b6773808c98a5b1a99d9084776b5e5245392c2013060000000a16222d3945515d6975818c98a4ada1958a7e72665a4e42362a1e1206111d2935414d5965717d8a96a2ada195897d7165594d42362a1e1206000000000000000005090c0d0d0d0d0d0d0d0d101a232b333a414950575f666d747c838b92999a91887e756c635a50473d33271c100d0d0d0d0d0d0d0d0d0b0804000000000000000000000000000000000000000000000007121d28323b444d576069727b858e979f989089827a736c645d564e4740382f251b100500000000000000000000000000000000000000000000000000000a151f29323b454e576069727b858e97a09c968f89827b81878e959ca0978e857b72685f564d433a31271d1308000000000000000000000000040f1a242e374049525b646d778089929ba099938c857f7d848b92989f9c938980766d645b51483f352c22180d020000000000000000000000000000000000000000000000000000000000000306090b0d0f1112121313131211100f0d0b080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a121a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b29241e170f06000000000000060d13181b1d1f202121222222211f1d1a17130e090300000000000000000000000000000000020c17212b343e475059626b737b828a90979da2a8aba6a19d99969492908f8e8e8e8e8f90919395989b9ea2a6aaa6a19c97918b857e7770696159514940372e251b110600000000000000000508090a0a0a0a0a0a0a0a0908050000000000000000000000000407090a0a0a0a0a0a0a0a0a08050200000000000000000000000206090a0a0a0a0a0a0a0a0a090603000000000000000000000000000000000000000000000000000000000000000000000009111920262a2c2c2c2c2c2c2c2c2c2c2c2b28231c150d0300000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0978b8074685c5044382c20140800000000000000000000000000000b17232e3a46525e6a76828e9aa0a0a0a0a0a09a8d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6b3ada39b9898989898989898989898989898999a9b9d9fa1a4a7aaa6a39f9a95908a847d766f6860584f473e352c22180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a46535f6c7885919daab0a4988b7f73675b4f43372b201409000000000000000000000000000000000000020d18242f3b47535f6b7783909ca8b2a69a8d8174685c4f43362a1d11040000030f1a26323e4a56616d7985919da9a99d9185796d6155493d32261a0e020d1925313d4955616d7985929eaaa59a8e82766a5e52463a2e22170b0000000000000000000000000000000000010c17222c353d444c535a626970787f868e959c9b92887f766c635a51483e352c21160b0000000000000000000000000000000000000000000000000000000000000000000000010c162029323b454e576069737c858e98a19b938c857d766f676059524a41372d21160a0000000000000000000000000000000000000000000000000000030d172029333c454e576069727c858e97a0a19a948d878b9299a0a1988e857c726960564d443a31281f150b010000000000000000000000000008121c252e374049525b656e778089939ca49d97908a888f959ca39d938a81776e645b52493f362d231a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c242c32363839393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835302921180e04000000000811181f24282a2c2d2e2e2e2e2e2d2c2927231f1a140e0700000000000000000000000000000009141e29333d465059626b747d858d949ba2a8aca59f9a95918d8a878583828181818282838587898b8e92969a9ea3a8a8a29c969089827b736b635b524940372d22170b000000000000060c11141617171717171717171614110c060000000000000000040b10131617171717171717171615120d08010000000000000003090e131516171717171717171615130f090300000000000000000000000000000000000000000000000000000000000000000000070f151a1d1f202020202020202020201e1c17120b030000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939393939393939393877b6f63574b3f33281c1004000000000000000000000000000006121e2a36424e5a66727d8a93939393939393938d807366594d4033261a0d000000000000000d1a2633404d596673808d9aa6acacaca7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a8a9a7a5a3a09d9a97938e89847e79726c655e564e463d352c231910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3744505c6975828e9aa6b2a79b8f83776b5f53483c31261b100600000000000000000000000000000000000a141f2a35404c58636f7b8793a0acaea2968a7d7165594c4033271b0e02000007131f2b37434f5a66727e8a96a2ada4988c8175695d5145392d211509000915212d3945515d6975818d99a5aa9e92867a6e63574b3f33271b0f030000000000000000000000000000000006121d29343e474f565e656c737b828991989f9b928980766d645a51483f362c231a0f05000000000000000000000000000000000000000000000000000000000000000000000000040e172029333c454e57616a737c868f98a19e978f888179726b635c53493e32261a0e020000000000000000000000000000000000000000000000000000050e17202a333c454e57606a737c858e97a0a59f9894969da4a2988f867c736a60574e443b32281f160d030000000000000000000000000000000a131c252e374049535c656e77818a939ca5a29b959499a0a69d948a81786e655c524940362d241b11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407080808080808080808080808080808080808080704000000000000000004101a242e363d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464644413b332a20160b00000007111a222a30343738393a3b3b3b3b3a3836332f2b251f19120a0200000000000000000000000006101b26303a454f58626b757e868f979ea6ada8a19a948f8985817d7b787775747474757576787a7c7f8286898e92979da2a8a8a19b948c857d756d645b52493f33281c1004000000010a11181d2123232323232323232323211d18110a010000000000070f161b2022232323232323232323211e19130c030000000000050d141a1f22232323232323232323221f1a140d050000000000000000000000000000000000000000000000000000000000000000000004090e111313131313131313131313120f0b0600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798686868686868686868682766a5e53473b2f23170b000000000000000000000000000000020e1a26313d4955616d7985868686868686868686807366594d4033261a0d000000000000000d1a2633404d596673808d9aa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9f9e9d9c9a999694918e8a87827d78736d67615a534c443c342b231a11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b2834414d5965727e8a96a2aeab9f93887c7064594d42372c22180e0500000000000000000000000000000009121c26303b46515d6874808c98a4b0aa9e92867a6e6155493d3024180b0000000c1824303c47535f6b77838f9aa6aca094887c7064584c4034281d11050005101d2935414d5965717d8995a1ada3978b7f73675b4f43372c201408000000000000000000000000000000000916222e3a45505961686f767e858d949ba29b928980766d645b52483f362d241a11080000000000000000000000000000000000000000000000000000000000000000000000000000050e17212a333c454e58616a737c868f98a0a09a928b847c756e655a4f42362a1d1004000000000000000000000000000000000000000000000000000000050e18212a333c454e57616a737c858e97a0a0a0a0a0a0a09990877d746a61584e453c322920160d0400000000000000000000000000000000010a131c252e37414a535c656e77818a939ca0a0a0a0a0a09e948b82786f665c534a40372e241b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10131515151515151515151515151515151515151513100c070000000000000a16212c3640484e525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252514c453c32271c110500030e19232c343b4043454647484848484745423f3b36312a241c140c0300000000000000000000010c17222d37424c57616a747e879098a1a9ada59d968f89837d7975716e6c6a6968676768696a6b6d707376797d82878c91979ea4aba59e978f877f766d645b5044382c1f13060000010a131b23292d2f30303030303030302f2d29231b130a0100000008111921272c2f3030303030303030302e2a241d150d03000000050f171f262b2e3030303030303030302e2b261f170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6b76797979797979797979797971665a4e42362a1e1207000000000000000000000000000000000915212d3945515d697479797979797979797979797165594c403326190d000000000000000d1a2633404d596673808d93939393939393939393939393939393939393939291908f8e8c8a8785827e7a76726d68625c564f49413a322a22191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825313d4955626e7a86929eaab0a4988c81756a5f54493e342a20170f08020000000000000000000000040a121b242d38424d58636e7985919ca8b1a69a8e82766a5e5245392d211408000005111d2934404c5864707b87939faba79b8f83776b5f54483c3024180c0200000c1825313d4955616d7985919da9a79b8f84786c6054483c3024180c010000000000000000000000000000000c1825323e4a56616b727a818890979ea09c938980776d645b524940362d241b120800000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a333c464f58616a747d869093939393938e8780776b5e5145382b1e120500000000000000000000000000000000000000000000000000000000060f18212a333c454e58616a737c858f9393939393939390877e746b62584f463c332a20170e04000000000000000000000000000000000000010a131c252f38414a535c656e78818a93939393939393938c827970665d544a41382e251c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181c2021222222222222222222222222222222222221201d18120b03000000000e1a26323d48525a5e5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d574e44392d211509000914202b353e464c505253545455555453514f4b47423c352e261e150c0200000000000000000007121e29343e49545e68727c869099a2aaaca49b938c847e77726d6965625f5d5c5b5b5b5b5c5d5f616366696d71767b80868c939aa1a9a9a199918980766c6054473b2e211508000008121c252d34393c3d3d3d3d3d3d3d3d3c39342d251c1208000005101a232b32383b3d3d3d3d3d3d3d3d3c3a352f271f150b0000020d17212931373b3d3d3d3d3d3d3d3d3d3b37312921170d03000000000000000000000000000000000000000000000000000000000000000003060808080808080808080807050200000000000000000000000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c686055493e32261a0e020000000000000000000000000000000005111d2834404c58626a6c6c6c6c6c6c6c6c6c6c6c686055493d3124180b000000000000000d1a2633404d596673808686868686868686868686868686868686868686868585848381807d7b7875726e6a66615c57514b443e3730282018100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212d3945515d6975818d99a5b0a99d92877b70655a50463c3229211a130e090603020101010204070a0f151c242d363f49545e6974808b96a1adaca195897d71665a4d4135291d110500000a16212d3945515d6974818c98a4aea3978b7e73675b4f43372b1f13110f0b070814202c3845515d6975818d99a5aca094887c7064584d4135291d11050000000000000000000000000000000d1a2633404d5966737d848b9393939393938a81776e655b524940372e241b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a343d464f58626b747d868686868686868685786b5e5145382b1e12050000000000000000000000000000000000000000000000000000000000060f18212a333c464f58616a737c8686868686868686867e756b625950463d342a21180e050000000000000000000000000000000000000000010a131d262f38414a535d666f78818686868686868686837a70675e544b42382f261c130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2c29231d150c03000000111e2a36434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6960554a3e3125190c000d1a25313c4750585c5e606161616161605e5b57534d47403830271e140a0000000000000000020d18242f3a45505b65707a848e98a2abada39a9289817a736c66615c595553514f4e4e4e4e4f505254575a5d61656a6f757b81888f979fa7aba39a92887b6e6155483b2e22150800030f1a242e373f45494a4a4a4a4a4a4a4a49453f372e241a0f03000c17212c353d44484a4a4a4a4a4a4a4a4946413931271c12060009141f29333b4247494a4a4a4a4a4a4a4947423b33291f1409000000000000000000000000000000000000000000000000000000000000050b10131515151515151515151514120e090300000000000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5d574e44382d2115090000000000000000000000000000000000000c1824303b4650595e5f5f5f5f5f5f5f5f5f5f5f5d574e43382d211509000000000000000d192633404c59657179797979797979797979797979797979797979797979797877767473716e6c6966625e5a55504b454039332c251e160e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414d5965717c88949fabaea3988d82776c62584e443b332b241e191512100f0e0d0e0f1113161b20272e363f48515b65707b86919ca7b2a79b9084786d6155493d3125190d0100000e1a26323e4a56616d7985919da1a19e92867a6e62564a3f33271e1e1d1b17120c101c2834404c5865717d8995a1a1a1998d8175695d5145392d2115090000000000000000000000000000000d1a2633404d59667380868686868686868681776e655c534940372e251b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b343d475059626b75797979797979797979756a5e5144382b1e1205000000000000000000000000000000000000000000000000000000000000060f18212a343d464f58616a73797979797979797979756c635950473e342b22180f0600000000000000000000000000000000000000000000010b141d262f38414a545d666f7879797979797979797971685e554c423930261d140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b39342e271e150a000000131f2c3946525f6b76797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797972665a4d4034271a0e00111d2a36424e5962686b6c6d6e6e6e6e6d6a67635e58524a423930261c11070000000000000007131e2a35404b57616c77828c96a0aaaea49b918880776f68615b55514c4946444242414142434446484a4d5155595e646970767d858d959ea8aca295887b6e6155483b2e221508000814202b3640495155565656565656565655514940362b20140805111d28333d474f54565656565656565656524b43392e23170b020e1a25303b454d53565656565656565656534d453b31261a0e02000000000000000000000000000000000000000000000000000000010910171c1f21222222222222222222211e1a140e06000000000000000000000000000000000000000000000000000000000000000a16212c3740484f525353535353535353535353514c453c32271c110500000000000000000000000000000000000008131f2a343e474e525353535353535353535353514c453c32271c1004000000000000000b1824313d495560686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a69686664625f5c5956524e4945403a342e28211b130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925313d4854606b77838e99a4afa99e93887e746960564d453d36302a25221f1d1b1a1a1b1c1d2023272c32384048515a636d77828c97a2adaca1968a7f73685c5045392d211509000000111e2a36434e5a66727e8a94949494948e82766a5e52463a2e2b2b2b2a28231e170f1824303c4854606c788591949494949185796d62564a3e3125190c0000000000000000000000000000000d192633404c596571797979797979797979786f665c534a41372e251c130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b343e475059626a6c6c6c6c6c6c6c6c6c6b63594e4235291d100300000000000000000000000000000000000000000000000000000000000000060f18222b343d464f5861696c6c6c6c6c6c6c6c6c6b635a51483e352c22191006000000000000000000000000000000000000000000000000020b141d262f38424b545d666c6c6c6c6c6c6c6c6c6c685f564c433a30271e140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f454848484848484848484848484848484848484845403930261c1106000013202c3946535f6c79868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675a4d4134271a0e00131f2c3945525e6a7477797a7b7b7b7b7977746f6a635c544b42382e23180d020000000000010c18242f3b46515d68737e89939ea8b0a69c92897f766d655e56504a45403d3a3736353434353637393b3e4145494e53585e656c737b838c97a4aea295887b6e6155483b2e221508000c1825313c48525b616363636363636363615b52483c3125180c0915212d39454f59606363636363636363625d554a3f34281c0f06121e2a36424d575f6363636363636363635f574d42372b1f12060000000000000000000000000000000000000000000000000000000a131b22282c2e2e2e2e2e2e2e2e2e2e2d2a261f18100600000000000000000000000000000000000000000000000000000000000005101a252e373e4346464646464646464646464645413a332a20160b00000000000000000000000000000000000000020d18222c353c4245464646464646464646464645413a332a20150b00000000000000000915212d38434e575d5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5d5c5b59575553504d4a46423e39342f29231d171009020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202c38434f5b66717d88939ea9afa59a90857b72685f574f48413b36322e2b2928272727282a2c2f33373d434a525a626c757f89949ea9b0a59a8f84796e62574b4034281c1005000000131f2c3945525f6b7783888888888888887d7165594d41383838383837342f28211814202c3844505c687481888888888888887e72665a4d4034271a0e0000000000000000000000000000000b1824313d495560686c6c6c6c6c6c6c6c6c6c665d544a41382f251c130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222c353e4750595e5f5f5f5f5f5f5f5f5f5e5951473d3125190d010000000000000000000000000000000000000000000000000000000000000000061019222b343d464f585e5f5f5f5f5f5f5f5f5f5e5951483f362c231a10070000000000000000000000000000000000000000000000000000020b141d262f39424b545b5f5f5f5f5f5f5f5f5f5f5c564d433a31281e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a5154555555555555555555555555555555555554514a42382e23170c000013202c3946535f6c798692929292929292929292929292929292929292929292929292929292929292929292929292929292929292928e8174675a4d4134271a0e0013202c3946535f6c79848687888888878684807b756e665d544a3f352a1f1308000000000005111d2935404c57636e79848f9aa5b0a99e948a80766d645b534c453e3934302d2b2928282828292b2c2f3235393d42474d535a6169717c8996a3aea295887b6e6155483b2e221508000f1b2834414d59646d70707070707070706d64594d4134281b0f0b1824313d4a56616b70707070707070706e675c5044372b1e120815212e3a46535e696f707070707070706f695f53473b2e221508000000000000000000000000000000000000000000000000000008121c252d33383b3b3b3b3b3b3b3b3b3b3a36312a22180f0400000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393939393835302921180e04000000000000000000000000000000000000000006111a232b31363939393939393939393939393835302921180e04000000000000000004101c27323c454c5153535353535353535353535353535353535353535353525251504e4d4b494644413d3a36322d28231e18120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27333e4955606b76828c97a1acaca1978d847a71696159524c47423e3a3836353434343536383b3f43484e555c646c757e87919ba5b0a99e94897e73685c51463a2f23170c0000000013202c3946525f6c777b7b7b7b7b7b7b7b786d61554942444444444443403a332a221a1c2834404c5864707a7b7b7b7b7b7b7b7b73665a4d4134271a0e0000000000000000000000000000000915212d38434e575d5f5f5f5f5f5f5f5f5f5f5b544b42382f261d130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a232c353e474e52535353535353535353524e483f362b20150900000000000000000000000000000000000000000000000000000000000000000000071019222b343d464d51535353535353535353524e483f362d241a110800000000000000000000000000000000000000000000000000000000020b141d273039424a5052535353535353535353504b443b31281f160c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27333f4a545c616161616161616161616161616161616161615c544a3f34281c10030013202c3946535f6c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675a4d4134271a0e0013202c3946535f6c798692949495959493908c8680786f665c51463b3025190d02000000000a16222e3a45515d68747f8b96a1acada2978d82786e645b5249413a332d2824211e1c1b1b1b1b1c1e202225292d31363c42484f57636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c69757d7d7d7d7d7d7d7d75695c4f4336291c100c1926323f4c5965727c7d7d7d7d7d7d7d786c5f5346392c20130916222f3c4955626f7b7d7d7d7d7d7d7d7b6f6256493c3023160900000000000000000000000000000000000000000000000000040f1a242e373e444748484848484848484846423c342a20160b000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2b29241e170f060000000000000000000000000000000000000000000008111920252a2c2c2c2c2c2c2c2c2c2c2c2c2b29241e170f06000000000000000000000b15202a333a4145464646464646464646464646464646464646464646464645444342403e3c3a3734312d2a26211c17120c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38444f5a65707b85909aa4aea99f968d847b736b645d57524e4a47444341414041424345484b4f545960666e767e879099a3adaba1978c82776c61564b4035291e120700000000111e2b37434f5b656d6e6e6e6e6e6e6e6e6d665c50494f5151515151504b443c342c241c24303c48545f696e6e6e6e6e6e6e6e6e6a61564a3e3225190c00000000000000000000000000000004101c27323c454c5153535353535353535352504a42392f261d140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232c353c424546464646464646464645423d362d24190f040000000000000000000000000000000000000000000000000000000000000000000000071019222b343c414546464646464646464645423d362d241b1208000000000000000000000000000000000000000000000000000000000000020b151e2730383f434646464646464646464644403a32291f160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f12060013202c3946535f6c798693a0acacacaca8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0a1a2a2a19f9c97918a81776d63584c41352a1e1206000000020e1a26323e4a56626d7985909ca7b2a79c91867b70665c524940383028221c181412101013151515151516191d21252b30373e4956636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c6976838a8a8a8a8a8a8376695c4f4336291c100c1926323f4c5965727f8a8a8a8a8a8a86796c5f5346392c20130916222f3c4955626f7c898a8a8a8a8a897c6f6356493c30231609000000000000000000000000000000000000000000000000000915202c3640495054555555555555555555534d463c32271c1005000000000000000000000000000000000000000000000000000000000000010910161a1e1f20202020202020202020201f1c18130d05000000000000000000000000000000000000000000000000070e141a1d1f20202020202020202020201f1c18130d050000000000000000000000040e1821293035383939393939393939393939393939393939393939393939383736353432302d2b2825211e1a15110c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323e49535e69737e88929ca5afa89f968d857d756f69635e5a5653514f4e4d4d4d4e505254575b60656b717880889099a2abaca2998f857b70665b50453a2f23180d01000000000f1b27333e49535b606161616161616161605c544b545b5e5e5e5e5e5c564e463e362d25202c37434d575e6161616161616161615f584f453a2e22160a000000000000000000000000000000000b15202a333a414546464646464646464646433f3830271d140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b3136393939393939393939393936322b241b120800000000000000000000000000000000000000000000000000000000000000000000000000071019222a3035383939393939393939393936322b241b12090000000000000000000000000000000000000000000000000000000000000000030c151e262d33373939393939393939393938342f2820170d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786c6053473a2d2014070013202c3946535f6c798693a0acb4a9a19b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675a4d4134271a0e0013202c3946535f6c7986939d9d9fa2a6aca8a39c938a7f74695e52463a2e22160a00000006121e2a37434f5b67727e8a96a1adaca1968a7f74695f544a40372e261e17110c0a11171c20222222222222222222222225303c4956636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c6976839096969696908376695c4f4336291c100c1926323f4c5965727f8c969696969386796c5f5346392c20130916222f3c4955626f7c899696969696897c6f6356493c30231609000000000000000000000000000000000000000000000000020e1a26313d48525b606161616161616161615f584e44382d21150a0000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131313131312100c0802000000000000000000000000000000000000000000000000000003090d1113131313131313131313131312100c080200000000000000000000000000060f171e24292b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a28272523211e1b1815110d0905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c37424d57626c76808a939da6aea89f978f87807a746f6a6663605e5c5b5a5a5a5b5c5e6164676b70767c838a929aa2ababa39a90877d73695e54493e34291d120700000000000b16222d38414a5054545454545454545454504a525c666a6b6b6b6b68605850483f372f2726313b454c52545454545454545454534e463d33281d120600000000000000000000000000000000040e1821293035383939393939393939393937332d261e150b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111920262a2c2c2c2c2c2c2c2c2c2c2c2a26211a12090000000000000000000000000000000000000000000000000000000000000000000000000000000710181f25292c2c2c2c2c2c2c2c2c2c2c2a26211a120900000000000000000000000000000000000000000000000000000000000000000000030c141c22272b2c2c2c2c2c2c2c2c2c2c2b28231d160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986888888888888888888888888888888877a6d6053473a2d2014070013202c3946535f6c798693a0acafa3978f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8174675a4d4134271a0e0013202c3946535f6c798691909192969ba1a9aea59b91867a6e63574b3e32261a0d0100000a16222e3b47535f6b77838f9ba6b2a79c9085796e63584d43382e251c140c050b141c23282c2e2f2f2f2f2f2f2f2f2f2f2f303c4956636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c697683909ca3a39c908376695c4f4336291c100c1926323f4c5965727f8c99a3a3a09386796c5f5346392c20130916222f3c4955626f7c8996a2a3a396897c6f6356493c3023160900000000000000000000000000000000000000000000000007131f2b36424e59646c6e6e6e6e6e6e6e6e6e6a6055493e32261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d13181c1f202020202020202020202020202020202020202020201f1f1e1d1c1a181714120f0c09050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303b46505a646e78818a949ca4aca9a199928b85807a76726f6c6a696767676768696b6d7073777c81878e949ca3acaaa29991887e756b61574d42382d22170c01000000000005111b262f383f4447484848484848484847454956626e7777777777726a625a51494139312829333b414647484848484848484846423c342b22170c010000000000000000000000000000000000060f171e24292b2c2c2c2c2c2c2c2c2c2c2b27221c140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151a1d1f2020202020202020201f1e1a150f080000000000000000000000000000000000000000000000000000000000000000000000000000000000060e14191d1f2020202020202020201f1e1a150f08000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1e202020202020202020201f1c18120c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939595959595959595959595959594877a6d6053473a2d2014070013202c3946535f6c798693a0acaca0938681818181818181818181818181818181818181818181818181818181818181818181818181818174675a4d4134271a0e0013202c3946535f6c7986858484868a8f97a0aaada2978b7f73675b4e4236291d100400000d1926323e4a57636f7b87939fabaea2978b7f73685c51463b31261c130a0209131d262d34393b3c3c3c3c3c3c3c3c3c3c3c3c3c4956636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000000000000000000000c18242f3b47535f6a767b7b7b7b7b7b7b7b7b72665a4e42372b1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090b0d0e0f10111212121111100f0d0c09070401000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c101213131313131313131313131313131313131313131313131211100f0e0c0a080503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29343e48525c666f78818a929ba2aaaba49d96918b86827e7b79777574747374747677797c8083888d92999fa6aea7a09890887f766c63594f453b30261b1006000000000000000a141d262d34383a3b3b3b3b3b3b3b3b3b3d4a5763707d848484847c746c635b534b423a322a293036393b3b3b3b3b3b3b3b3b3a37312b2219100500000000000000000000000000000000000000050d13181c1f202020202020202020201e1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e111313131313131313131313110e0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d101213131313131313131313110e0a04000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca093867974747474747474747474747474747474747474747474747474747474747474747474747474746f64584c4033261a0d0013202c3946525f6b7779787777797e858e99a4afa79b8f83766a5e5145382c1f13060004101c2935424e5a66737f8b97a4b0aa9e92867a6e63574b40352a1f150b0105101b252f383f4548484848484848484848484848484956636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c30231609000000000000000000000000000000000000000000000005111d2834404c58636f7b878888888888888882766b5f53473b3024180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090d10131517191b1c1d1e1e1e1e1e1e1d1b1a181613110e0a0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222c36404a545d666f78818990989fa5aca8a29c97928e8b888684828181818181828486898c9094999ea4aaa9a39d958e867e756d645a51473d33291f140a0000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e303d4a56636f79848e918e867e756d655d544c443c342b252a2d2e2e2e2e2e2e2e2e2e2d2a262019100700000000000000000000000000000000000000000002080c101213131313131313131313120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939696969696969696989fa9ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c67676767676767676767676767676767676767676767676767676767676767676767676767645d53483c3024180b00111e2a37434f5a656c6d6b6a6a6d737c87939fabab9f9286796d6054473a2e2115080006131f2c3845515d6a76838f9ba7b2a69a8e82766a5e52463a2f23180d03000a16212c37414a5054555555555555555555555555555556636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000000000000000000000a16212d3945515c6874808c95959595959593877b6f64584c4034291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1216191c1f22242627292a2b2b2b2b2b2a2928272522201d1a16120e0a0500000000000000000000000000000000000000000000000000000407080808080808080808080806040000000000000000000000000000000000000000000000000000000000010507080808080808080808080806020000000000000000000000000205080a0a0a0a0a0a0a0a0a09070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a242e38424b545d666e777e868d949aa0a6aba8a39e9b979492908f8e8d8d8d8e8f919395989ca0a4a9a9a49e98928b847c746c635b52483f352b21170d02000000000000000000020a11171c1f2121212121212121222e3a47525d68727c86909890877f776f665e564e463d352d2520212121212121212121211e1a150e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080a0c0d0e0f0f0f0f0f0e0d0c0a080502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305080a0c0e0f1011111212121111100e0d0b0907040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040608090a0a0b0b0a0a080705030000000000000000000000000000000002040506060606050403010000000000000000000013202c3946535f6c79868989898989898989898d98a4ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a58534b41372b201408000f1b27333e49535b60605f5d5e616b76828e9ba7aea195887b6f6255493c2f231609000915222e3b4754606d7986929eabafa3968a7e7265594d41352a1e120700000e1a26323e49535b61626262626262626262626262626262636f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000000000000000000030f1a26323e4a55616d7985919ca2a2a2a2a2988c8074685d5145392d22160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10151a1e2225292c2e3032343637373838383837363533312f2c2926231e1a16110c0600000000000000000000000000000000000000000000060c1013151515151515151515151513100b060000000000000000000000000000000000000000000000000002080d11141515151515151515151514120f0a04000000000000000001080d12151617171717171717171614100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131c263039424b545c656d747b83898f959a9fa4a7aba7a4a19f9d9c9b9a9a9a9b9c9d9fa2a4a8aaa6a29d98938d878079726a625a514940362d23190f05000000000000000000000000060c101314151515151515151e2a36414c56606a747e89939991898178706860584f473f372e261e161515151515151514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407080808080808080808080808080808080808080704000000000000000000000000000000000000000000000000000000000000000000000206090d10121517191a1b1c1c1c1c1c1b1a181614120f0c08050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080c0f121417191a1c1d1e1e1e1e1e1e1d1c1b1a181613100d0a070300000000000000000000000000000000000000000000000000000000000000000000000000000000000206090c0f111314161717171717161514120f0d0a060300000000000000000206090c0e10121313131312110f0d0a07040000000000000013202c3946535f6c787c7c7c7c7c7c7c7c7c7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4841392f251a0f03000a16212d3741494f53535251515a66727f8c98a5b0a3968a7d7063574a3d3124170a000b1724313d4a56636f7c8895a1aeaca093877a6e6256493d3125190d010000101d2a36424e5a656d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000000000000000008131f2b37434e5a66727e8a95a1adadacaea89d9185796d61564a3e32261b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000050b11161c21252a2e3235383b3d3f4142434444454544444341403e3c3936322f2b26211c17110b05000000000000000000000000000000000000020a11181c2021222222222222222222211f1c1711090100000000000000000000000000000000000000000000040c13191d2022222222222222222222211f1b150f07000000000000030c13191e2123232323232323232322201c16100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a141e273039424a535b626a71787e84898f93979b9fa2a4a6a8a9a8a7a7a7a7a8a8a9a8a6a3a19d9a96918d87827c756e67605850483f372e241b11070000000000000000000000000000000406080808080808080e19252f3a444e58626d77818b959b938a827a726a615951494038302820170f080808080807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10131515151515151515151515151515151515151513110c0700000000000000000000000000000000000000000000000000000000000005090e1216191c1f2123252728292929292828262523211e1b1815110d08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c1114181b1e2123252728292a2b2b2b2b2b2a2928262422201d1a16130f0a0601000000000000000000000000000000000000000000000000000000000000000000000000050a0e1215191b1e20212223242424242322201e1c1916120f0a0601000000050a0e1216191b1d1e1f2020201f1e1c1a1714100b060000000000121e2b3744505c666e6f6f6f6f6f6f6f6f6f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f534641414141414141414141414141414141414141414141414141414141414141414141403c372f271d1309000005101b252f373e44464645444a5764707d8a96a3b0a4978b7e7164574b3e3124180b000d1926333f4c5865727e8b97a4b0aa9d9184786b5f52463a2d211509000000121e2b3845515e6b777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c8996a3aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c30231609000000000000000000000000000000000000000000010c1824303c47535f6b77838e9aa6a7a19fa2a9a1968a7e72665a4f43372b1f140800000000000000000000000000000000000000000000000000000000000000000000000000020910161c22272d31363a3e4144474a4c4d4f505151515151504f4e4c4a4845423f3b37322d28221d17100a03000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2c28221b130a010000000000000000000000000000000000000000040e161e24292d2e2e2e2e2e2e2e2e2e2e2e2b262019110800000000030d151d242a2e3030303030303030302f2c28211a120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e273038414951585f666d73787e83878b8f9295989a9c9d9e9f9f9f9f9f9e9d9b999794918e8a86817c76706a645d564e463e362d241b12090000000000000000000000000000000000000000000000000008131e28323c46515b656f79848e989c948c847b736b635b524a423a3229211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181c2021222222222222222222222222222222222222201d18120b030000000000000000000000000000000000000000000000000001060c11151a1e2225282b2e3032333535363636353433312f2d2b2824211d19140f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f14181d2124282b2d303234353637383838383837363433312f2c2926231f1b16110c07010000000000000000000000000000000000000000000000000000000000000000060b11161a1e2225282a2c2e2f3031313130302e2d2b2825221f1b16120d07060c11161a1e2225282a2b2c2c2c2c2b2a282623201c17110a020000000f1b28333f4a545d6263636363636363636f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f53463934343434343434343434343434343434343434343434343434343434343434343433302b251d150b0100000009131d252d33373a3a393c4956626f7c8895a2afa5988b7e7165584b3e3225180b000e1b2834414e5a6773808d99a6b3a79b8e8275695c5043372a1e1105000000121e2b3845515e6b788588888888888888888888888888888888888d98a4aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000000000000000005111d2935404c5864707b87939fa89e959297a0a69a8f83776b5f53483c3024180d010000000000000000000000000000000000000000000000000000000000000000000000050d141b21272d33383d42464a4e515456585a5c5d5d5e5e5e5e5d5c5b595754524e4b47433e39342e28221b140d0600000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3b38332d251c130900000000000000000000000000000000000000020c1620282f35393b3b3b3b3b3b3b3b3b3b3a37322b231a10060000000b151f272f353a3c3d3d3d3d3d3d3d3d3c38332c241a110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e262f373f464d545b61676d72777b7f8386898b8d8f9091929292929291908e8d8a8885827e7975706b655f59524b443c342c241b12090000000000000000000000000000000000000000000000000000010c16202a353f49535d67727c86909a9e968e857d756d645c544c443b332b22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2c29231d150c030000000000000000000000000000000000000000000000060c12171c21262a2e3235383a3d3f4041424242424241403e3c3a3734312d2925201b16100b050000000000000000000000000000000000000000000000000000000000000000000000000000030a10151b2024292d3134373a3c3e4042434444454545444342413f3e3b3936322f2b27221d18120d070000000000000000000000000000000000000000000000000000000000040b11171c21262a2e313437393a3c3d3d3e3e3d3c3b393735322f2b27221d181311171d22262b2e313436383939393938373533302c28221b140b0100000b17232e38424b525556565656565656626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c27272727272727272727272727272727272727272727272727272727272727272624201a130b0300000000010b131b22272b2d2d2f3b4855626e7b8895a2aea5988b7e7165584b3e3225180b00101c2936424f5c6875828f9ba8b2a6998c8073665a4d4134281b0f02000000121e2b3845515e6b78859295959595959595959595959595959595979fa9aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000000000000000a16222e3945515d6974818c98a4a4988c868f9ba79f93887c7064584c4135291d1106000000000000000000000000000000000000000000000000000000000000000000000810171e252c33393e44494e52565a5d6063656768696a6b6b6b6b6a69676663615e5b57534e4a453f39332d261f18100800000000000000000000000006111c262f383f454848484848484848484847443f372e251a100500000000000000000000000000000000000009141e28323a41464848484848484848484847433d352c22170c010006121c2731394146494a4a4a4a4a4a4a4a48443e362c22180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d252d343c434a50565c61666b6f7376797c7e818284858586868685848382807e7b7875726d69645f5a544e474139322a231a120900000000000000000000000000000000000000000000000000000000040e19232d37414b56606a747e89939d9f978f877e766e665e554d453d352b21170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b39352e271e150b000000000000000000000000000000000000000000040b11171d23282d32363a3e414447494b4d4e4f4f4f4f4f4e4c4b494643403d3935302c27211c161009030000000000000000000000000000000000000000000000000000000000000000000001080e151b21262b3035393d404346494b4d4e50515151515151504f4e4c4a4845423f3b37332e29231e18120b040000000000000000000000000000000000000000000000000000070f151c22282d32363a3e4143454749494a4a4a4a49484644413e3b37332e29241e1c22282e32373b3e414344454646464543423f3c38332d261d1309000006111c27303940464949494949494955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a18140f0901000000000000010910161b1f20222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00111e2a3744505d6a7683909da9b1a4978b7e7165584b3f3226190c00000000121e2b3845515e6b7885929ea2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3a9b1aea295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000000000000030f1b27323e4a56626d7985919da9a093877f8b97a3a4988c8175695d51453a2e22160a0000000000000000000000000000000000000000000000000000000000000000010a121a222930373e444a4f555a5e62666a6d6f71737576777778787777757472706d6a67635f5a55504a443e383129221a120a02000000000000000000000b17222d38424a515455555555555555555554504940362c22170d020000000000000000000000000000000006111b26303a444c5255555555555555555555534e473e34291d1206000b17232e39434b52565656565656565656554f483e34291e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131b232a31383f454b50565a5f63676a6d707274757778787979797877767573716f6c6965615d59544e49433c362f282019110800000000000000000000000000000000000000000000000000000000000007111b252f39444e58626c76818b959fa1999188807870675f574f473d33281d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f454848484848484848484848484848484848484845403930271d120700000000000000000000000000000000000001080f161c23282e34393e42464a4e51535658595b5b5c5c5c5b5a59575553504d4945413c37322d27211b140e070000000000000000000000000000000000000000000000000000000000000000040c131920262c32373c4145494d50535558595b5c5d5e5e5e5e5e5d5c5a595754514e4b47433e3a342f29231d160f080100000000000000000000000000000000000000000000010a111920272d33393e42464a4d505254555657575757565453504e4a47433f3a352f2a272e34393e43474a4d4f515253535252504e4b48443f372f251b100500000a151e272f353a3c3c3c3c3c3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c20130e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d0b080300000000000000000000050b0f1215222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00121e2b3845515e6b7784919eaab0a3968a7d7063574a3d3124170b00000000121e2b3845515e6b7885929ea6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a295887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000000000000000814202b37434f5b66727e8a96a2a89b8f837b87939fa99d91857a6e62564a3f33271b0f03000000000000000000000000000000000000000000000000000000000000020b131c242c333b42494f555b60656a6e7276797c7e80828384848585848482817f7d7a77736f6b66615b565049423b342c241c140b020000000000000000000f1b27333f4a545c61616161616161616161605b52483e33291f140a000000000000000000000000000000030d18222d37424c565d616161616161616161615f5950453a2e22160a000f1c28343f4a555d626363636363636363615a50463a2e22160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111820272d343a3f454a4e53575a5e61636567696a6b6c6c6c6c6b6b6a68676562605c5955514d48433d37312b241d160e07000000000000000000000000000000000000000000000000000000000000000009131d28323c46505a656f79838d98a2a39a928a8279716961594f45392d211509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a5154555555555555555555555555555555555554514b42392e23180c0000000000000000000000000000000000040c131a21272e343a3f44494e52565a5d60626466676869696968676664625f5c5955514d48433e38322c261f18110a030000000000000000000000000000000000000000000000000000000000070e161d242b31373d43484d5155595c5f62646668696a6b6b6b6b6a6a69676563615e5b57534f4a45403a342e28211a120b030000000000000000000000000000000000000000020b131b232b32383f444a4e5356595c5f6062636364646362615f5d5a57534f4b46403b3532393f454a4f53575a5c5e5f5f5f5f5e5d5b5854504941372d22160a0000030c151d24292d2f303030303c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00121f2c3945525f6b7885929fabafa296897c6f6256493c3023160900000000121e2b3845515e6b7885929a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a95887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000000000000010d1924303c48545f6b77838f9ba6a3978b7f77838f9ba7a2968a7e73675b4f43382c2014080000000000000000000000000000000000000000000000000000000000020b141d252e363e454c535a60666c71767a7e8285888b8d8e909191929191908f8d8b898683807b77726d67615b544d463e362e261d140b020000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6c645a50453b30261b110700000000000000000000000000000a141f29343e49545e686e6e6e6e6e6e6e6e6e6e6b61564b3e3226190c00121e2b3744505c676e70707070707070706c62574b3e3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151c22282e34393e43474b4e515457595b5c5d5e5f5f5f5f5f5e5d5c5a585653504d4945413c37322c262019130b04000000000000000000000000000000000000000000000000000000000000000000010c16202a343e49535d67717b86909aa0a09c948b837b736a61564a3d3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27333f4a545c616161616161616161616161616161616161615c544b4034281c1004000000000000000000000000000000070e161d252c32393f454b50555a5e6266696c6f71737475757575757472706e6c6965615d59544f49443e37312a231c140d0500000000000000000000000000000000000000000000000000000009111920282f363c43494e54585d6165696c6e7173747677777878777776757472706d6a67635f5b56514b464039322b241d150d04000000000000000000000000000000000000020b141d252d353c434a50555a5f6366696b6d6f70707171706f6e6c6966635f5b56514c46403c434a50565b5f6366696a6c6c6c6c6b696764605b53493e33271b0f000000030b12191d21232323232f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c201306040404040404040404040404040404040404040404040404040301000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00131f2c3946525f6c7986929facaea295887b6f6255483c2f22150900000000121e2b3845515e6b78858d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d887b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000000000006121d2935414d5964707c88949fab9f93877b737f8b97a3a79b8f83776c6054483c3125190d01000000000000000000000000000000000000000000000000000000010a141d262f3740484f575e656b72777d82878b8e929597999b9c9d9e9e9e9e9d9c9a9896938f8b87837d78726c655f57504840382f261d140b020000000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b766c61574c42382d23180e0300000000000000000000000007111c26313b46505b65707a7b7b7b7b7b7b7b7b7b73675a4d4134271a0e0013202c3946535f6c787d7d7d7d7d7d7d7d73665a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d23282d32373b3e4245484a4c4e4f5151525253525251504f4d4c494744413d3935302b26211b150e08010000000000000000000000000000000000000000000000000000000000000000000000040e18222d37414b555f6a747e889293939393938d857c7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5145382c1f1306000000000000000000000000000008111820282f363d444a50565c61666a6e7276797b7e80818282828282817f7d7b7875716d6965605a554f49423c352e261f170f060000000000000000000000000000000000000000000000000109121a232b323941474e545a5f64696d7175787b7d8081828484858584848382817e7c7a77736f6b67625c57514b443d362e271f160e0500000000000000000000000000000000000a141d262f373f474e555b61666b6f7275787a7b7c7d7d7d7d7c7a7876736f6b67625d57514b474e555b61666b6f72757778797979787674706c655b4f43372a1e110000000001070d1114161616222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c20131111111111111111111111111111111111111111111111111111100d0a0500000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c7986939facaea295887b6e6155483b2e22150800000000121e2b3845515e6b78808080808080808080808080808080808080808080808080807b6e6155483b2e22150800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c30231609000000000000000000000000000000000000000b16222e3a46525d6975818d98a4a79b8f83776e7b87939faba094887c7065594d41352a1e120600000000000000000000000000000000000000000000000000000009131c262f384149525a616970767d83898e92979b9ea1a4a6a8a9aaa9a8a8a9a9a8a7a5a29f9b98938e89847d777069625a524a41392f261d140a00000000000000131f2c3945525e6b758088888888888888887e73695e54493f342a20150b0000000000000000000000030e18232d38424d57626c778288888888888888867c7166594d4034271a0d0013202c3946535f6c79868a8a8a8a8a8a8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171d22262a2e3236393b3e40414344454546464645454442413f3d3a3734312d2924201b15100a03000000000000000000000000000000000000000000000000000000000000000000000000000006111b252f39434e58626c76818686868686868686807366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786d6054473a2d2114070000000000000000000000000109121a222a323a41484f555c61676d72767b7e8285888a8c8e8f8f8f8f8e8d8c8a8785817d7975706b66605a544d463f3830292118100700000000000000000000000000000000000000000000000a131b242c353c444b52595f656b7075797d8185878a8c8e8f909191929191908f8d8b898683807b77736d68625c564f484039312820170f0600000000000000000000000000000008121c262f384149515960666c72777b7e82848688898a8a8a8a898785827f7b77736e68635c56515960666d72777b7f8284858686868483807c776b5f5246392c2013000000000000010508090916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c201d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1a151009020000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c7986929facaea295887b6e6155483b2f22150800000000111e2a3743505c677173737373737373737373737373737373737373737373737373726a5f53473a2d21140800101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000000000004101b27333f4b56626e7a86919da9a3978b7f736a77838f9ba7a4998d8175695e52463a2e23170b000000000000000000000000000000000000000000000000000007111b252e38414a535b646b737a81888e94999ea3a7aaa9a6a3a09f9d9c9c9c9c9d9ea0a2a5a9a8a49f9a958f89827b746c645c534b42382f261c1208000000000000111d2a36424e59646e78838d95959595958f857a70665b51463c31271c1208000000000000000000000b15202a353f4a545f69747e89939595959594897f746a6055493d3125180c0013202c3946535f6c798693969696968d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060c11161a1e2226292c2f31333536373839393939393837363432302e2b2825211d19140f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27323c46505a646f787979797979797979797165584c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986888888888888888888888888888888877a6d6154473a2e2114070000000000000000000000010a131b242c343c444b535a60676d73787d82878b8e9295979997969696969698989694918d8a86817c77716b655f58514a423b332a2219110800000000000000000000000000000000000000000009121c252e363e464e565d646a70767c81858a8d919496999a9c9d9e9e9e9e9e9d9b9a9895928f8c88837e79736d676059524a433a322921180e050000000000000000000000000005101a242e38414a535b636a71787d83878b8e91939596979797969594918f8b88837e79746e67615b636a71787e83878b8e9092939392918f8c86796c5f5346392c2013000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2926211b140c0300000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00131f2c3946525f6c7986929facafa295887b6f6255493c2f221609000000000f1b2834404b565f65666666666666666666666666666666666666666666666666666661584e42372b1e120600101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000000000914202c38444f5b67737e8a96a2ab9f93877b6f66737e8b97a3a99e92867a6e62574b3f33271c1004000000000000000000000000000000000000000000000000040f19232d37404a535c656d757d858c93999fa5aaaba6a19d9a969492908f8f8f8f90919396999da1a6aba6a09a948d857e766e655d544b41382e241a100500000000000e1a26323d48525c66717b85909aa2a2a1978c82776d62584e43392e24190f04000000000000000007121c27313c46515b66707b86909ba2a2a1978c82776d63584e43382d2115090013202c3946535f6c798693a0a3a39a8d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e12161a1d2022242628292b2b2c2c2c2c2c2b2a29282624211f1c1815110d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b16202a343e48535d666c6c6c6c6c6c6c6c6c6c685f54493d3024170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939595959595959595959595959594877a6d6154473a2e21140700000000000000000000000a131c252d363e464e565d646b72787e84898e93979793908e8c8a898989898a8b8c8f91949896928d88827d76706a635c544c453c342c231a11070000000000000000000000000000000000000008121b242e374048505860676f757c82878d91969a9da0a3a5a7a9a9a8a8a7a8a8a9a8a6a4a29f9c98948f8a857f78726b645c554c443b332a20170d040000000000000000000000010c17212c36404a535c656d757c83898e93979b9da0a1a3a2a2a2a2a2a09e9b98948f8a857f79726b656d757c83898f93979b9d9fa0a09f9e9c9386796c5f5346392c2013000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f534639373737373737373737373737373737373737373737373737373737373735322c261e150b01000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00121f2c3845525f6b7885929eabafa296897c6f6356493d3023160a000000000b17232e39444d54595959595959595959595959595959595959595959595959595959564f463c31261a0e0200101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000000020d1925313d4854606c78848f9ba7a79b8f83776b626e7a87939faba2968b7f73675b5044382c2015090000000000000000000000000000000000000000000000010b16202b353f49525c656e7780878f979ea4abaca6a09a95918d8a878584838282828385878a8d91959aa0a6aba59e97908880776f665d534a40362c22170d02000000000915202b36404a555f69737e88929da7a89e94897e746a5f554a40362b21160c01000000000000040f19242e39434e58636d78828d97a2aca49a8f857b70665b51473c32271c11050013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0d101316181a1b1d1e1f1f1f201f1f1e1e1c1b191715120f0c09050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222c37414b545b5f5f5f5f5f5f5f5f5f5f5d564d43382c2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a194877a6d6154473a2e2114070000000000000000000009121c252e374048505860686f767d83898f9597938e8a8784817f7e7d7c7c7c7d7e808285888b8f9499938e88827b746d665e564e463e352c23191006000000000000000000000000000000000006101a242d374049525a626a727980878d93989da2a6a9a8a5a29f9d9c9b9b9a9b9b9c9ea0a2a5a8a8a4a09b96908a847d766e665e564d453c32291f150c010000000000000000000007121e28333e48525c656e777f878e949a9fa3a39f9c99979695959597999b9fa3a09b96918a847d756e777f878e949a9fa4a7a5a2a09f9e9fa09386796c5f5346392c2013000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346444444444444444444444444444444444444444444444444444444444444423e3730271d1208000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00111e2b3844515e6b7784919daab0a3978a7d7064574a3e3124180b0000000007121d28323b43494c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4a443d342a2015090000101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c30231609000000000000000000000000000000000006121e2a36414d5965717c8894a0aca3978b7f73675e6a76838f9ba7a79b9084786c6054493d3125190e020000000000000000000000000000000000000000000008121d28323d47515b646e7780899199a1a8afa8a19b948f8a85817d7b79777675757577787a7d8185898f949ba1a9a9a29a928981786f655c52483e33291f140900000000040f1a242e38434d57626c76818b959faaa59b90867b71675c52473d32281e13090000000000010b16202b35404a555f6a747f89949ea9a79d93887e73695e544a3f352a20150b000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407090b0d0f10111213131313121211100e0d0b08060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a252f39424a5053535353535353535353514c443b31271b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaaa098969696969696969694877a6d6154473a2e21140700000000000000000007111b242e374049525a626a727981888e9597918c87827e7a77757371706f6f6f70717375787b7f83888d9298938d867f787068605850473e352b22180f05000000000000000000000000000000030d18222c363f49525b646c747c848b92989ea4a9aaa4a09c989593918f8e8e8e8e8f90919396999ca0a5aaa6a19b958e87807870685f574e443b31271d1309000000000000000000010d18242f3a454f5a646e77808991989fa5a39d98938f8c8a898888898a8c8f93979ca1a29c958f878078818991989fa6a7a19c989593929292939386796c5f5346392c2013000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f53505050505050505050505050505050505050505050505050505050505050504e4942392f24190d020000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00111d2a3743505d697683909ca9b1a5988b7e7265594c3f3326190d00000000010c16202931383d3f40404040404040404040404040404040404040404040404040403e39332b22180e030000101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000000000b17232f3a46525e6a75818d99a5ab9f93877b6f635a66727e8b97a3aca094897d7165594d42362a1e1207000000000000000000000000000000000000000000030e19242f39444e59636d768089929ba3abaea69e979089837e7975716e6c6a696968696a6c6e7174797e838990979ea6aca49b938a81776d645a4f453b30261b10050000000008121c27313b46505a646f79838e98a2aca2988d83786e63594f443a2f251a10060000000008121d27323c47515c66717c86919ba6aaa0968b81766c61574d42382d23190e04000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d2730383f444646464646464646464644403a322920150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca5998e898989898989898989877a6d6154473a2e2114070000000000000000050f19232d364049525b646c747c848b9298918b85807b76726e6b68666463626263636567696c6f73777c81878d9398918a827a726a625950473e342a21170d0200000000000000000000000000000a151f29343e48515b646d767e868e959da3a9aaa49e9994908c898684838281818182838587898c9094999ea4aaa6a099928a827a716960564d43392f251b1006000000000000000007121e2a35404b56616c768089929ba3a8a099928c8783807d7c7b7b7c7d8083878b90959ba2a099928a828a939ba3aaa39c96918c8986858585868886796c5f5346392c2013000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5a544b40352a1e12060000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000f1c2935424f5b6875828e9ba7b3a6998d8074675a4e4135281c0f0300000000040e171f262c30333333333333333333333333333333333333333333333333333333312d2821191007000000101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000004101c28333f4b57636e7a86929eaaa69a8f83776b5e56626e7a86929eaaa5998d82766a5e52463b2f23170b00000000000000000000000000000000000000000009141f2a35404b56606a757f89929ba4adada49c948c857e78726d6965625f5e5c5c5b5c5d5f6165686d72787e858d949ca5ada59c938980766c61574c42372c21160b00000000000b151f29343e48535d67717c86909ba5aa9f958a80756b60564c41372c22170d020000050f1a242f39444e59636e78838d98a2ada3998e84796f645a50453b30261c110700000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000103050608090a0a0b0b0b0a09080706040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e262e33373939393939393939393938352f2920170e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7c7c7c7c7c7c7c7c7c796d6054473a2e21140700000000000000020d17212b353f48525b646d757e868e96948d87807a746f6a66625f5c59585656555657585a5c5f63676b70767b82888f96948c847c736b625950463c33291e140a0000000000000000000000000006111c26313b465059636d767f889098a0a7aea69f99938d8884807c7a7776757474747576787a7d8084888d93999fa6aba49c948c847b72685f554b41372d22170d02000000000000000b17232f3a46515d68737d88929ba4a79e968e87817b7773716f6f6e6f7173767a7f848a91979fa49c948f939ca5a8a098918b85807c7a7878797a7c7e796c5f5346392c2013000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a655d52463a2e2215090000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000e1b2734414d5a6673808c99a6b2a89b8f8276695d5044372b1e12060000000000050d151b202426262626262626262626262626262626262626262626262626262625221d170f0700000000101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c30231609000000000000000000000000000000000915212c3844505c67737f8b97a3ada2968a7e72665a525e6a76828e99a5aa9e92867a6f63574b3f34281c100400000000000000000000000000000000000000030f1a25313c47525d67727c87919aa4adada49b928a827a736d67615d59555351504f4f4f515255585c61676d737b828a939ca5aea59b92887d73695e53493e33281d110600000000030d18222c36414b55606a747e89939da8a69c92877d72685d53483e34291f140a00010c16212b36404b55606a75808a959faaa69c91877c72685d53483e33291f140a0000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d090907050300000000000000000001040608090a0a090806040100000000000000000000000000000000000000000000000000000000000000000000000105080b0d101113151616171717171716151412110f0c09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141c22272b2c2c2c2c2c2c2c2c2c2c2b29241e170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca4978a7d706f6f6f6f6f6f6f6f6e675d5145392c201306000000000000000a141f29333d47515a646d767f889098918a837b756f69635e5a56524f4d4b4a4949494a4b4d5053575b60656a70767d848b93968e867d746b61584e443b30261c11070000000000000000000000020d18232d38434d57626b757f88919aa2aaaca49c958e87827c7773706d6b6968676767686a6b6e7074787c82878e959ca4aca69e968d847a71675d53493e34291e1308000000000000030f1c28343f4b57636e79848f9aa4a99f958c847c756f6b67646362626264676a6e73797f868d959da69e9c9ea5a79e968e86807974706d6b6b6c6d6f7272695d5145382c1f12000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca0938679777777777777777777777777777777777777777777777777777777777777777777766e63564a3d3124170b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000c1926323f4b5865717e8a97a3b0aa9e9185786c5f53473a2e221609000000000000030a101418191a1a1a1a1a1a1a1a1a1a1a1b22282c2f2f2e2a2723201c1a1a1a1815110c050000000000101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c30231609000000000000000000000000000000020e1a25313d4955606c7884909ca7a99d9185796d61564d5965717d8995a1aca3978b8073685c5044382d211509000000000000000000000000000000000000000914202b37424d58636e79848e98a3acafa59b928980787068625b56514c494644434242434446494c50565b62697078818a939ca5ada3998f857a70655a4f44392e23170c000000000006101a252f39434e58626d77818c96a0aaa3998e84796f655a50453b30261c110709131e28333d48525d67727c87919ca6a99f948a80756b60564b41372c22170d020000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a17161514120f0c080400000000050a0d111315161717161413100d0a0702000000000000000000000000000000000000000000000000000000000001060a0e1114171a1c1e2021222324242424242322211f1d1b1916130f0c08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1e202020202020202020201f1c18130c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca4978a7d706363636363636363625d554b4035291d100400000000000006111b26303b454f59636c767f8891988f878078716a635d58535252514c453e3d3c3c3c3d3f4144494f5254595f656b7279818991988f867d736a60564c42382e23180e030000000000000000000008131e29343f4a545f69737d87919aa3acaba29a928a837c76706c6764615e5d5b5b5b5b5c5d5f6164686c71767c838a929aa2aba89f968c83796f655b50453b30251a0f04000000000007131f2c3844505c68737f8b96a1aba1978d837a726a645f5b5856555556585a5e63686e747b838b949faaa8aaa99e958c847c756e6864605f5f5f6063666660574c4135291d10000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acada09387848484848484848484848484848484848484848484848484848484848484848484847e7164574b3e3124180b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000a1724303d4956626f7b8894a1adada094887b6f63564a3e32261a0e020000000000000004080b0d0d0d0d0d0d0d0d0d0d131c252d34393b3c3a37332f2c2825211d19140e07000000000000101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000007131e2a36424e5965717d8995a0aca4988c8175695d514955616c7884909ca8a89c9084786d6155493d31261a0e020000000000000000000000000000000000020e1a25313c48535e6a75808b95a0aab1a79d938980776e665e57504a45403d3a383636353637393c40454a50575f666f77818a949da7aba1978c82776c61564a3f34281d1105000000000009131d27323c46515b656f7a848e99a3aba0968b81766c61574d42382d23180e101a252f3a444f59646e79838e98a3aca2978d83786e63594e443a2f251a1006000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342723232322201e1c1814100b05050b11161a1d202223232323211f1d1a16130e08010000000000000000000000000000000000000000000000000003080d12161a1d212426292b2c2e2f303031313130302f2d2c2a2825221f1c1814100b060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca4978a7d70635756565656565656524c43392f24180c000000000000010c17222d38424d57616b757e8891978e867d756e665f5f5f5f5f5f5f5d574f453a302f303135404a535b5e5f5f5f5f61686f777f8790988f867c72685e544a3f352a1f1409000000000000000000020e1924303b46515b66717b858f99a3acaba29990888078716b65605b575452504f4e4e4e4f505255585b60656b717880889099a2aba89f958b81776c62574c41362b20150900000000000a16232f3b4854606c7884909ca7a69b90857b71686059534e4b494848494b4e52575c62697179828f9ba8b5b1a5988c837a726a635d585452525254565a5a564e453b3024190d000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acafa499929090909090909090909090909090909090909090909090909090909090909090908b7e7164574b3e3124180b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000815212e3a4753606c7985919eaab0a3978b7e72665a4e42362b1f1308000000000000000000000000000000000000040f1a242e373f45484946433f3c3834312d2925201911080000000000101c2936434f5c697683909ca9a99c908376695c4f4336291c100c1926323f4c5965727f8c99a6aca09386796c5f5346392c20130916222f3c4955626f7c8996a2afa396897c6f6356493c302316090000000000000000000000000000000c17232f3b47525e6a76828e99a5ab9f94887c7064584c44505c6874808b97a3aca195897d71655a4e42362a1f1307000000000000000000000000000000000007131f2a36424d5964707b86919ca7b2aa9f958b81776e655c544c453f3934302d2b2a2929292b2d3034393f454d545d656e78828b95a0aaa89e93887d72675b5045392d2115080000000000010b16202a343f49535e68727c87919ba6a79d93887e73695e54493f352a201517222c37414c56616b76808b95a0aaa59a90867b71665c51473d32281d130900000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342f3030302f2d2b2824201c161110171c2126292c2e2f30302f2e2c2926231f19120b020000000000000000000000000000000000000000000003090f14191e22262a2d30333537393b3c3d3d3e3e3d3d3c3b3a383634322f2b2824201b17110c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a49494949494946413a31281d120700000000000008131e29343f49545e69737d8791988e857c746b6360696b6b6b6b6b6b6961564b3f332625303b46515c656b6b6b6b6b6b6b6a6d757e8790988e847a70665b51463c31261b1004000000000000000008131f2a35414c57626d78838d97a1abada39990877e766e666059544f4b48454342414141424446484b4f545a60666e767e879099a3ada79d93897e73695e53483d31261a0f03000000000d1926323f4b5764707c8895a1aca1958a7e73695f564e47423f3d3c3c3d3f42464d57616b757e88929daab1b1a4988c81766c6158524c48454546474a4d4d4a443c33291f1308000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acb5aba39e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d988b7e7164574b3e3124180b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0006121f2b3844505d6975828e9aa7b3a79b8f83766a5f53473b30251a0f0500000000000000000000000000000000000a15202c364049505555534f4b4844413d3936312b231a110700000000101c2936434f5c697683909ca9a99c908376695d5043362a1d100c1926323f4c5965727f8c99a6aca09386796c5f5346392d20130916222f3c4955626f7c8996a2afa396897c6f6356493c30231609000000000000000000000000000005101c2834404b57636f7b87929eaaa79b8f83776b5f54483f4b57636f7b87939faaa59a8e82766a5f53473b2f23180c00000000000000000000000000000000000b17232f3b47525e6a75818c98a3aeaea3988e83796f655c534a423a342e2824211e1d1c1c1d1e2024282e343b434b535c666f79848e98a3aaa49a8f83786d6156493d3124170b000000000000040e18232d37414c56606b757f8a949ea8a49a8f857b70665b51463c32271d1e29333e48535d68727d87929ca7a89d93897e74695f544a40352b20160c0100000000000013202c3946535f6c798693a0aca79a8d8173675a4d403b3c3d3d3c3b3a3734302c27221c1b22282d3236393b3c3d3d3c3a3836322f2a241d140b010000000000000000000000000000000000000002080f141a20252a2e3236393c3f4244464748494a4a4a4a4a4948474543413e3b3834302c27221d17120b050000000000000000000000000000000000000000000000000407080808080808080808080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708080808080808080706030000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3c3c3c3c3c3a362f281f160b010000000000020e19242f3a45505b66707a858f998f867c736a625a677278787878787873675b4e4235282c37424d58636e7778787878787874696c757e8791968c82786d63584d42372c21160a00000000000000010d1824303b47525d68747e8a949fa9afa59b91877e756c645c554e48433f3b3937353434353537393c3f44494e555c646c757e87919ba5afa59a90857a6f64594e42372b201409000000000f1b2835414e5a6773808c98a5a89c9084786d62574d443c3732302f2f3037414b555f69737d87909aa4a8a4a5a89e93887d73685d52473c3938393b3e40403e39322a21170d02000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acb9b3aca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a4988b7e7164574b3e3124180b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00030f1c2835414d5a66727e8b97a3afab9f93877b6f63584c41362b21170d0400000000000000000000000000000007111c26313d48525b61625f5b5854504d4946423c352c23190e03000000101c2936434f5c697683909ca9aa9d9083766a5d5044372a1d110c1926323f4c5965727f8c99a6ada09386796d6053473a2d20140916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000000915212d3944505c6874808b97a3aea2968a7e72675b4f433b47535e6a76828e9aa6aa9e93877b6f63584c4034281d1105000000000000000000000000000000030f1b2834404b57636f7b86929da9b3a89d92877c71675d534a41383029221d181412100f0f101114181d22293139414a545e67727c87919c9e99938d887e7265584b3f3225180c0000000000000006111b25303a444e59636d78828c97a1aba1978c82776d63584e43392e2425303a454f5a646f79848f99a4aba0968c81776c62584d43382e23190f040000000000000013202c3946535f6c798693a0aca79a8d8173675a4d454749494a49484644403d38332d27252c33393e424547494a4a494745423f3b362e261d1309000000000000000000000000000000000000060d131a20262b31353a3e4246494c4e5152545556575757575756555352504d4a4744403c38332e28231d171009020000000000000000000000000000000000000000060c101315151515151515151514120e0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151515151515151514120f0a05000000000013202c3946535f6c798693a0aca4978a7d7063574a3d303030302f2e2a241e160d0400000000000008131f2a35414c57626d77828c9791877d736a61585b687582858585858275685b4f423528323d48535e69747f858585858581766a626b757e8993948a7f74695f54493d32271c100500000000000006121d2935414c58636e7a85909ba6b0a89e93897f756c635a524a433d38332f2c2a29282828292a2d2f33383d434a525a636c758089949ea9aca1978c81756a5f53483c3125190e02000000111d2a3743505c6976828f9ba8a5998c8074685c51453b322b2623222a343e49535d67717b858f99a2a69e98989ea49a8f84796e63584d42372c2c2e323434322d2821180f0600000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acb4aaa19c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b988b7e7164574b3e3124180b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000c1925313e4a56626e7a87939eaaafa3978c8074695e53483d33281f160e0701000000000000000000000002081019232d38434e59646d6f6b6864605d5955524e473e352a1f1408000000101c2936434f5c697683909ca9aa9e9184776b5e5145382b1f120c1926323f4c5965727f8c99a6ada194877a6e6154483b2e22150916222f3c4955626f7c8996a2afa396897c6f6356493c3023160900000000000000000000000000020e1a26323e4955616d7884909ca8a99d91867a6e62564a3e36424e5a66727d8995a1ada3978c8074685c5145392d21160a00000000000000000000000000000007131f2c3844505c6874808b97a3aeada2968b80756a60554b41382f261e17110c08050300000205080c11171f272f38424c56606a75808a95938d88827c766f63574b3e3125180b000000000000000009141e28323d47515c66707a858f99a4a99e94897f746a5f554b40362b2d37424c57616c76818b96a0aba3998f847a6f655b50463b31271c1207000000000000000013202c3946535f6c798693a0aca79a8d8173675a4f5254555656565553504d49443e39322f373e444a4e52545656565554514e4b4740382f251a0f04000000000000000000000000000000010910171e252b31373c41464a4e5255585b5d5f61626363646464636261605e5c5a5754504c48443f3a342e28211b140c050000000000000000000000000000000000020a11181c20212222222222222222211e1a150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e202121212121212121211f1b1610080000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024232323211e19130c04000000000000020d1925303b47525d68737e899494897f756b62584f5b6875828e92928f8275685b4f42352e39444f5a65707b869192928f857a6f645a636d76818b9591867b70655a4f43382d21160a0000000000000a16222e3a46515d6974808b96a1adaca1978c82776d635a51484039322c2723201d1c1b1b1b1c1e2023272c32384048515a636d77828d97a2ada89d92877b7065594d42362a1e1206000000121f2b3845515e6b7784919daaa3968a7d7064584c403429201a1d27323c46505a656f79838d97a1a89e958c8c96a0a1968b80756a5f54483d32262225272725221d160f060000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acafa398908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8b7e7164574b3e3124180b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000915222e3a46525e6a76828e9aa5b1a89d91867a6f64594f443a31282018120d08050302010101020406090e131a222b353f4a545f6a767b7774706d6965625e5950473c3024180c000000101c2936434f5c697683909ca9ab9f9286796c6053463a2d21140d1926333f4c5966727f8c99a6afa295897c6f6356493d3024170b1623303c4956636f7c8996a2afa396897c6f6356493c302316090000000000000000000000000007131f2b37424e5a66727d8995a1ada5998d8175695d51463a323d4955616d7985919ca8a89c9185796d61554a3e32261a0f0300000000000000000000000000000b17232f3c4854606c7884909ca8b4a89c91857a6f64594e44392f261d140d0600000000000000000000060d151d26303a444e59636e79848d88827c76716b655d52473b2f22160a0000000000000000020c16212b353f4a545e69737d88929ca6a59b91867c71675c52473d33343e49535e68737d88939da8a79c92877d72685e53493e342a1f150a00000000000000000013202c3946535f6c798693a0aca79a8d8173675a5b5e6162636363615f5c59554f4a443d39414950555a5e6162636362605e5b57524a41362b2014080000000000000000000000000000030b131b222930363c42484d52565a5e6265676a6c6d6f6f70717170706f6e6d6b696663605c58544f4a453f39332c251e170f07000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2b26201910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710181f262a2d2e2e2e2e2e2e2e2e2d2b27211a120900000013202c3946535f6c798693a0aca4978a7d7063574a3d302417161615120d08010000000000000007131e2a35414c58636e7a8590978c82776d6359504e5b6875828e9b9c8f8275685b4f4235343f4a55606b76818c979e93897e73685d535b656f79848e988d82766b6055493e32271b0f0300000000020e1b27333f4a56626e7a85919ca8b2a69b90857a70655b51483f362e27201b1713110f0e0e0e0f1114171b21272e363f48515b66707b86919ca8afa3988d81756a5e52463b2f23170b000000131f2c3946525f6c7985929faba194887b6e6255483c3023181a242f39434e58626c76818b959fa9a0968c83848e99a49c91867b70655a4e43382c21191a1a1916110b04000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386828282828282828282828282828282828282828282828282828282828282828282827e7164574b3e3124180b0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000005121e2a36424e5a66717d8995a0acaea2978c81766b60564c433a322a231d191512100e0e0d0e0f101216191e252c343d47515b66717c8784807c7975726e6a62584d4135281c0f030000101c2936434f5c697683909ca9ada194877b6e6255493c3024180d1a2733404d596673808c99a6b0a4978a7e7165584c3f33271a0e1723303d4a5663707d8996a3b0a396897c6f6356493c30231609000000000000000000000000000c1824303b47535f6b76828e9aa6aca094887c7064594d41352d3945515c6874808c98a4ada195897e72665a4e43372b1f130800000000000000000000000000010e1a27333f4b5864707c8895a1adafa3978b8074695d52473c32271d140b02000000000000000000000000030b141e28323c47525c68737e827c76716b65605a534b41362a1f1307000000000000000000040f19232e38424c57616b76808a959fa9a2988d83786e64594f443a3b46505b65707a858f9aa4aa9f958a80756b61564c41372d22180d0300000000000000000013202c3946535f6c798693a0aca79a8d81736764686b6d6f70706f6e6c6965605b554e47424b535a61666a6d6f70706f6d6a67635c53483c3124180c00000000000000000000000000040d151d252c343a41484e53595e62676a6e717476787a7b7c7d7d7d7d7d7c7b79777573706c6965605b56504b443e3730292119110900000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3a37312b2219100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222a31363a3b3b3b3b3b3b3b3b3a37322c241b1207000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a090805020000000000000000000b17232f3b46525e6974808b9691867b70665b51474e5b6875828e9b9c8f8275685b4f42353b46515c67727d88939e978d82776c61574c535d67727c879293887c71665a4f43372c2014080000000006121f2b37434f5b67737e8a96a2adaca1958a7e73695e53493f362d241c150f0b0704010000000205070b10151c242d36404a545f6974808b96a2aea99e92867a6f63574b3f33271b0e02000013202c3946535f6c798693a0aca094877a6d6054473a2d2117212c36414b555f6a747e88939da7a1978e847a7d88939ea3988d81766b6054493d32261b0f0e0c09050000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca0938679757575757575757575757575757575757575757575757575757575757575757575746d62564a3d3024170a0000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000010d1a26313d4955616c78848f9aa5b1a89d92877d72685e554c443c352e2925211e1c1b1a1a1b1c1d1f22252a30363e464f59636d77828d908c8985817e7a74695d5044372a1d11040000101c2936434f5c697683909ca9afa3968a7d7165584c4034291d131b2834414e5a6774818d9aa7b2a6998d8174675b4f43372b1f151824313e4b5764717d8a97a4afa296897c6f6256493c2f23160900000000000000000000000005111d2934404c58646f7b87939faaa79b8f84786c6054483c302834404c58646f7b87939faba69a8e83776b5f53473c3024180c0100000000000000000000000004111d2a36424f5b6774808c98a5b1ab9e93877b6f63584c41362b20160c020000000000000000000000000000020c16202b35404b56616d7776716b65605a544e4941392f24190e020000000000000000000007111c26303b454f5a646e78838d97a2aa9f958a80756b61564c41424d57626c77818c96a1aba2988d83786e64594f443a30251b10060000000000000000000013202c3946535f6c798693a0aca79a8d81736a7074777a7b7c7d7c7b7875716c666059514a545d656c72767a7c7d7c7b7976736e64594d4034271b0e000000000000000000000000050d161f272f373e454c53595f64696e73777a7d8183858788898a8a8a8a8a89888684827f7c7975716c67615c564f49423a332b231b120900000000000000000000000006111c262f383f4548484848484848484847433c342b21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18212b343c4246484848484848484847433e362d23190e030013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000004101c2834404b57636e7a8691968a7f74695e5449424e5b6875828e9b9c8f8275685b4f4236414c57626d78838e999b91867b70655b50454b55606b76818c978e82776b5f54483c3024180c000000000a16222f3b47535f6b77838f9ba7b3a79b8f84786d62574c42372d241b120b040000000000000000000000040b121b242e38424d58636e7a85919da9aea3978b7f73675b4f43372b1e1206000013202c3946535f6c798693a0aca094877a6d6053473a2d211e28333d48525d67717c86909aa4a3998f857b7276818c97a39e93877c71655a4e43372c2015090000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c686868686868686868686868686868686868686868686868686868686868686868645b51463a2e2115090000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000915212d3944505c67727e89949faaaea4998e847a70675e554d46403a35312d2b2928272727282a2c2e32363b41485058616b757f89949c9995918e8a81766a5d5044372a1e11040000101c2936434f5c697683909ca9b2a6998d8175685d51453a2f251f1e2936424f5c6875828e9ba8b4a89c9084776b5f53473c31271f1e26333f4c5965727e8b98a5aea295887b6f6255483c2f2216090000000000000000000000000a16222d3945515d6874808c98a3aea2978b7f73675b4f43382c242f3b47535f6b77838f9aa6ab9f93877b7064584c4035291d11050000000000000000000000000713202c3945525e6b7783909ca8b3a79a8e82766a5e52473b3024190e0400000000000000000000000000000000040e19242f3a45505b656b6b65605a544e49433d3730271d13080000000000000000000000000a141f29333d48525c67717b86909aa4a79c92877d72685d53494a545f69747e89939ea8a59b90867c71675c52483d33281e1309000000000000000000000013202c3946535f6c798693a0aca79a8d8173767b80848688898a898785817d77716b635b535c666f777d83868889898886838075685b4f4235281c0f0000000000000000000000040e171f283139414850575e646a70757a7e83878a8d8f929395969697979796959493918e8c8885817c78736d67615a534c453d352d241b120900000000000000000000000b17222d38424a51545555555555555555534e463d33281d110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17202a333d464d525454545454545454534f483f352b1f14080013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000814202c3844505c6874808b979084796e63584d42424e5b6875828e9b9c8f8275685b4f423d48535e69747e8a959f958a7f74695f54493e444e5964707b869293887c7064594d4135291d10040000000d1926323e4b57636f7b8894a0abaea2968a7e73675c51463b30261b120900000000000000000000000000000009121c26313b47525d6975818c98a4b0a79c9084776b5f53473b2e2216090000131f2c3946525f6c7985929faba194877b6e6155483b2f2225303a454f5a646e79838d98a2a59b91877d736a707b86919da4998d82766b5f54483d31251a0e0200000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5852493f35291d11050000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000005101c28333f4a56616c78838e98a3adaba0968c837970675f58514b45413d3a3736353434343536383b3e42474c535a626a737d87919ba6a5a19d92877b7065594d4135291c0f030000101c2936434f5c697683909ca9b5a99d9185796d61564b41372f2b2b2c3845515e6a7784909da9b6aca094877b7064584d4239302c2a2b35424e5b6774818d9aa6ada194877a6e6154483b2e2115080000000000000000000000030f1b26323e4a56616d7985919ca8aa9e92867a6e62564b3f33271f2b37434e5a66727e8a96a2aea4988c8074695d5145392e22160a0000000000000000000000000916222f3b4854616d7a86939facafa3978a7e72665a4e42362a1f130800000000000000000000000000000000000007121d28343f49535b5f5f5a544e49433d38322c251e150b01000000000000000000000000020d17212c36404a555f69747e88939da7a3998f847a6f655a50515b66707b85909aa5a89e93897e746a5f554b40362b21160c02000000000000000000000013202c3946535f6c798693a0aca79a8d817a81878c90939596969694918d89837c756d655c646e7881898e9395969695928f8275685b4f4235281c0f00000000000000000000030d162029313a434b535a61686f757b81868b8f9396999c9ea0a1a2a3a4a4a4a3a2a19f9d9b9895918d88847e78726c655e574f473f362e241b1209000000000000000000000f1b27333f4a545c6161616161616161615f584f453a2e221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f29323c454f585f6161616161616161605a51473c3024180c0013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000c1824303c4855616c788490968a7e73685c51463b424e5b6875828e9b9c8f8275685b4f42434e59646f7a85909b998e83786d63584d42373d48535e6975818c988d8175695d5145392d211408000004101c2935424e5a67737f8b98a4b0aa9e92867a6e62564b3f34291e140a00000000000000000000000000000000000a141f2a35414c5864707c8894a0acaca094887b6f63564a3e3125190c0000121f2b3845515e6b7784919daaa296897c7063574b3e33272c37414c56616b76808b959fa79d93897f756b616975808b97a29e93887c7065594e42362a1f130700000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f534e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4c4740372e23180d010000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000b17232e3945505b66717c87919ba5afa89e948b8279716a635c56514d4946444241414041424345474a4e52575d646c747c858f99a3adaca1968c81756a5f54483d3125190d000000101c2936434f5c697683909ca9b4aca1958a7e73685d5349413b3837383d4854616d7986929fabb2aaa4988c81756a5f544b423c3837383b45515e6a76838f9ca8ac9f9286796c6053463a2d201407000000000000000000000008141f2b37434f5a66727e8a96a1ada5998d81756a5e52463a2e221a26323e4a56626d7985919da9a99d9185796d62564a3e32271b0f0300000000000000000000000b1825313e4a5763707c8996a2aeaca094877b6e62564a3e32261a0e02000000000000000000000000000000000000010c17222d3841494f52524e49433d38322c26211b140c030000000000000000000000000000050f1a242e39434d57626c76818b95a0aaa0968b81766c625758626d77828d97a2aba1978c82776d62584e43392e241a0f0500000000000000000000000013202c3946535f6c798693a0aca79a8d81838b92989c9fa2a3a3a2a09d99948e8780776e656a75808a939a9fa2a3a3a19c8f8275685b4f4235281c0f000000000000000000010b151f28323b434c555d656c737a81878c92979b9fa3a6a8a9a6a5a3a2a2a2a2a2a3a5a7a9a7a4a19d99948f8a847d7770686159514840372d241b1107000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6a61564a3e3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27313b444e57616a6e6e6e6e6e6e6e6e6b63584d4134281b0f0013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000030f1b2834404c5965717d89959185796e62574b4035424e5b6875828e9b9c8f8275685b4f424a55606b76818c979d92877c71675c51463b3137424d5864707b87939185796d6155493d3024180b000006131f2c3845515d6a76838f9ba7b2a69a8e8275695d51463a2e23180d020000000000000000000000000000000000030e1924303c48535f6c7884909ca9b0a4978b7f72665a4d4134281c0f0300101d2a3643505c6975828e9ba7a4988c7f73675b4f43382e333e48535e68737d88929da7a0958b81776d6359636f7a86919da4998d81766a5e53473b2f23180c00000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346424242424242424242424242424242424242424242424242424242424242403c362e251c1107000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000006111d28333f4a55606a757f89939da7b0a69d948c837b746d67625d595653514f4e4d4d4d4e505154565a5e63696f767e868e97a1aaaea49a8f857a6f64594e42372c201409000000101c2936434f5c697683909ca9ada29b988f84796f655b534c47454445484e5965717d8995a2aeaaa0999892867b70665d544d48454445474c56626e7a86929fabaa9d9084776b5e5145382c1f120600000000000000000000010d1824303c48535f6b77838f9aa6aca094897d7165594d41352a1e16222d3945515d6975818c98a4ada2968a7e72665b4f43372b20140800000000000000000000000d1a2633404c5966727e8b98a4b1aa9d9184786b5f53463a2e211509000000000000000000000000000000000000000006111c262f373e434645433d38322c26211b151009020000000000000000000000000000000008121d27313b46505a656f79838e98a2a89d93887e73695f5f6a747f89949ea9a49a8f857a70655b51463c31271d12080000000000000000000000000013202c3946535f6c798693a0aca79b8f868c959da4a29f9c9b9a9a9b9c9e9f99918981776e6f7b87929ca5ababa49f9c9b8f8275685b4f4235281c0f00000000000000000009131d27313a444d565e676f767e858c92989da2a7aba7a39f9c9a9896969595959697989a9da0a3a7a9a5a09b958f88817a736b635a52493f362d23190f05000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b73665a4d4033271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f39434d56606a737b7b7b7b7b7b7b7b75695c504336291d100013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000006121f2b3744505c6975818d998d8175695d51463a35424e5b6875828e9b9c8f8275685b4f45505b66717c87929d968b80756b60554a3f352a303c48535f6b77838f968a7d7165594c4034271b0f02000915222e3b4754606d7986929eabafa3968a7e7165594d4135291d12060000000000000000000000000000000000000008131f2b37434f5c6874818d99a6b2a79b8e8275695d5044372b1e1205000f1b2834414d5a66727f8b97a4a89b8f83776b60554a40363a454f5a656f7a858f99a4a2988e84796f655b525e6975808c98a39e92877b6f63584c4034281c1004000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f534639353535353535353535353535353535353535353535353535353535353533302b241c130a00000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000c17222d38434e58636d77818b959ea7afa69e958d867f78736e6965625f5d5c5b5a5a5a5b5c5e6063666a6f747a81889098a0a9afa69c92887d73685e53483c31261b0f04000000101c2936434f5c697683909ca9a79b908b908b81766d655d57535151525459606a75818d99a5b0a4988e8b928d82786f665e585452515153575e68737e8a96a2aea79a8e8275685c4f43362a1d10040000000000000000000006111d2935414c5864707c88939faba79c9084786c6054483d312519111d2935414c5864707c8894a0aba69b8f83776b5f54483c3024190d01000000000000000000000f1b2835414e5b6774818d9aa7b3a79b8e8275695c5043372a1e12050000000000000000000000000000000000000000000a141d252d3337393936322c26211b15100a04000000000000000000000000000000000000000b151f2a343e48535d67727c86919ba5a59a90857b706666717b86909ba6a79d92887d73685e54493f342a20150b000000000000000000000000000013202c3946535f6c798693a0acaba09792969ea19b9692908e8d8d8e8f92959a9b9389807673808c97a3aeaba29a938f8e8f8275685b4f4235281c0f000000000000000006111b252f39434c565f687078818890969da3a9aaa49f9b9793908d8b8a89888888898a8c8e9093979ba0a5aaa6a09a938c857d756c645b51483f352b21170c020000000000000013202c3946535f6c79868888888888888173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232d37414b555f68727c858888888888877d73685c4f4336291d100013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000915222e3a4753606c78859195897c7064584c403535424e5b6875828e9b9c8f8275685b4f4c57626d78838e999a8f84796e64594e43392e232b37424e5a66727e8b978d8175685c5043372a1e1105000b1824313d4a56636f7c8895a1aeaca093877a6e6255493d3125190d0100000000000000000000000000000000000000030f1b27333f4c5864717d8a96a3afaa9e9185786c5f53463a2d201407000c1925313e4a56636f7b87939faba094887c71665c52483f414b56616c76818c96a1a59b91867c72675d534d58646f7b87939ea3978c8074685c5044382d211509000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c2828282828282828282828282828282828282828282828282828282827241f19120a0100000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000006111c27323c47515b656f79838c959da6aea79f98918a847e7975726e6c6a686767676768696a6d6f72767a80858b929aa2aaaea69d948a80766c61574c41362b20150900000000101c2936434f5c697683909ca9a5998c7f89928980766f6863605e5d5e60646a727c87929ea9aca09488818c948a8178706964605e5d5e606368707a848f9ba7afa3978b7e7266594d4034271b0e02000000000000000000000a16222e3a45515d6975818c98a4afa3978b7f73675c5044382c20140c1824303c48545f6b77838f9ba7ab9f94887c7064584d4135291d120600000000000000000000101d293643505c6975828f9ca8b2a6998c8073665a4d4134281b0f02000000000000000000000000000000000000000000020b131b22272a2c2c2a26211b15100a04000000000000000000000000000000000000000000030d18222c37414b55606a747e89939ea8a1978d82786d6e78838d98a2aaa0958b81766c61574c42382d23180e03000000000000000000000000000013202c3946535f6c798693a0acb2a9a29fa19e96908a8683818181818386898e949a92887e76838f9ca8b0a49a90888382828275685b4f4235281c0f00000000000000030d18222d37414b555e68717a828b939aa1a8aca59f99948f8a8783817e7d7c7b7b7b7c7d7f8184878b8f94999fa5aba59e968f877e766d635a51473d33281e13090000000000000013202c3946535f6c798693959595958d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16202b353f49535d67717a848e94949492887e756b61574c4034271b0e0013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000b1824313d4a56636f7b88949185796c6054483c3035424e5b6875828e9b9c8f8275685b50525d68737e89949e93887d72685d52473d32271c26323e4a56626e7b87939184786b5f5246392d201407000d1926333f4c5865727e8b97a4b0aa9d9084776b5f5246392d2115080000000000000000000000000000000000000000000b1724303c4955626e7b8794a0adada094877a6e6155483c2f221609000916222e3a47535f6b77838e9aa5a4998e83786e645a514947525d68737d88939da89e93897f746a60564c47535f6a76828e9aa59c9085796d6155493d3125190d000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c201b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a18140e08000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000a15202a353f4a545d67707a838b949ca3aba9a29b958f8a86817e7b78777574737374747577797c7e82878b91969da4abaca49c948b81786e645a4f453a30251a0f0300000000101d2a3643505d697683909da9a5988c7e838e9289817a746f6c6b6a6b6d70757c858e98a3afa89c90847b8691938a827b75706d6b6a6b6c6f747a828c96a1acab9f93877b6f63564a3e3125180c00000000000000000000030f1b27333f4a56626e7985919da9aa9e92867a6f63574b3f33271c1008141f2b37434f5b67737e8a96a2aea4988d8175695d52463a2e22160b00000000000000000000111e2b3744515d6a7784909daab1a4978b7e7165584b3f3225190c0000000000000000000000000000000000000000000000010910161b1e201f1e1a15100a0400000000000000000000000000000000000000000000000006101a252f39444e58626d77818c96a0a99e94897f7475808a949fa9a3988e83796f645a4f453b30261b110700000000000000000000000000000013202c3946535f6c798693a0acb9b3aea79d948c847e7a777573737476797d838990988f857a85929eabab9f93887e7775767873675b4e4235281b0f0000000000000009141f2a343f49535d67707a838c949da4aca9a29b948e88837e7a777472706f6f6e6f6f717275777b7e83888e949ba2a9a8a19990887f756c62594f453a30251b100500000000000013202c3946535f6c798693a0a2a29a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d28323d47515b656f79838c96a09e948a80766c63594f453b2f23170b0013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000d1a2633404c5965727e8b978e8275695d5044382c35424e5b6875828e9b9c8f8275685d5d5d646f7a85909b978c81766c61564b41362b2016222e3a46525f6b77849094877a6e6155483c2f231609000e1b2834414e5a6774818d99a6b3a79b8e8275685c4f43362a1e11050000000000000000000000000000000000000000000814212d3a46535f6c7885929eabafa296897d7063574a3d3124170b0006121e2a37434e5a66727d89949fa99f948a80756c635b534e59646f79848f9aa4a1978c82776d63584e44424e5a65717d8995a1a195897d7165594d4135291d11040000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c20130f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0b080300000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000040e19232d38424b555e687179828a9299a0a6aca6a19b96928e8a878583828181818181828486888b8e92979ca2a8afa8a29a928a82786f665c52483e33291e13080000000000101d2a3643505d697683909daaa5988b7e7c8792938b85807b79777778797c81878e97a0aaada2978b80747f8994948c86817c79787777797b80858c949ea8b0a59a8e83776b5f53463a2e221509000000000000000000000814202c37434f5b67737e8a96a2aea59a8e82766a5e52463b2f23170b030f1b27333f4a56626e7a86929ea9a99d91867a6e62564a3f33271b1004000000000000000000121f2c3845525e6b7885919eabb0a396897d7063574a3d3124170a00000000000000000000000000000000000000000000000000050a0f111313110e0a0400000000000000000000000000000000000000000000000000000009131d28323c46515b65707a848e99a3a69b91867c7c87919ca6a69b91877c72675d52483e33291e140a0000000000000000000000000000000013202c3946535f6c798693a0acb9b5aa9f958b827a736e6a686767686a6d71777e868e978c818693a0ada79b8e82766c68696c6961564b3f33261a0d00000000000004101b26303b46505b656f79838c959ea6aea89f979089827c77726e6b68656463626262636466686b6e73777d838990979fa8aba29a91887e746b61564c41372c21160b00000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a252f3a444e59636d77818b959ea1968c82786e645a51473d34291e13070013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000f1c2835424e5b6774818d988c7f73665a4d41342835424e5b6875828e9b9c8f82756a6a6a6a6a75808b969b90857a70655a4f453a30281e151e2a36434f5c6875818e96897d7064574a3e3125180b00101c2936434f5c6975828f9ba8b2a6998c8073665a4d4134271b0e0200000000000000000000000000000000000000000005121e2b3744515d6a7783909da9b1a4988b7e7265584c3f3226190c00020e1a26323e4a55616c77828d98a2a69c91887e756d655e575f6a75808b96a1a59a90857a70655b51463c3d4955616d7985919da59a8e8275695d5145392d2114080000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a0906020000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000007111c263039434c565f67707880878e959ba1a7aba7a29e9a979492908f8e8d8d8e8e8f909295979b9ea3a8ada9a39d97908881786f665d544a40362c22170c020000000000101d2a3743505d6a7683909daaa4988b7e75808a9496908c888684848586898c9298a0a9aea59b90857a6e78828c9597918c888684848486888b90979ea6b0a79e93887d72665a4e42362a1e1206000000000000000000010d1925313c4854606b77838f9ba7ada195897d7165594e42362a1e1206000a16222e3a46525d6975818d99a5aea2968a7e73675b4f44382c201408000000000000000000131f2c3946525f6c7985929facafa295887c6f6255493c2f2316090000000000000000000000000000000000000000000000000000000205060605020000000000000000000000000000000000000000000000000000000000010b16202a353f49535e68727d87919ca6a2988e83838e98a3a99e948a7f756a60554b41362c21170d020000000000000000000000000000000013202c3946535f6c798693a0acb9afa4988e83797068625e5b5a5a5b5d61666c747c858f92898b95a1aea4988b7e72665b5d5f5d584f453a2e23170a0000000000000a16212c37424d58626d77818b959ea7b0a79e968d867e77716b66625e5b5957565555555657595c5f62676c71777e868d959ea7aca39a90877c72685e53493e33281d1106000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c36414b56606a757f89939da4998f857a70665c52483f352b22170d020013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000111d2a3743505d6976838f968a7d7064574b3e322835424e5b6875828e9b9c8f827777777777777c87929d94897e74695f59524a423a30271d1b2734404d5966727f8c988b7e7265594c3f3326190d00111e2a3744505d6a7783909da9b1a4978b7e7165584b3f3225190c0000000000000000000000000000000000000000000003101c2936424f5c6875828f9ba8b2a6998c8073665a4d4033271a0d00000a16212d39444f5b66717b86909aa3a39a90877f776f686266717c87929da79e93897e73695e54493f353844505c6874818d99a59e9286796d6155493d3024180c0000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c2017171717171717171717171717171717171717171717171717171717171715120d0801000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000a141e27313a434d555e666e757c848a90969ba0a4a8aaa6a3a09e9d9b9a9a9a9a9b9c9d9fa1a4a7aba9a6a29d98928c857e766e665d544b42382e241a1005000000000000111d2a3744505d6a7784909daaa4978a7d7178828c959c9894929191919395999da3aaaba49c93897f7469707a838d959d9895929191919294989ca1a8aca69e958c82776c6055493e32261a0e0200000000000000000006121e2935414d5965707c8894a0aba89c9084786c6155493d3125190e020006121d2935414d5965717c8894a0aca79b8f84786c6054483d3125190d02000000000000000013202c3946535f6c7986939facaea295887b6e6155483b2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232d37424c56606b75808a949ea99f958c8c95a0aaa1978d82786d63584e44392f241a1005000000000000000000000000000000000013202c3946535f6c798693a0acb6aa9e93877c71675e56524f4d4d4e51555b626a737d879295969da6afa396897d7063575052514d463d33291d1206000000000005101b27323d48535e69747e89939da6b0a89e958c847b746d66605b56524f4c4a49484849494b4d4f52565b60666c747b848c959ea8aca2988f847a6f655a4f44392e23170c000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000007121d28333d48535d68727c87919ba59c92877d73685e544a40362d23191006000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000121e2b3845515e6b77849194887b6e6255493c2f2835424e5b6875828e9b9c8f84848484848484848d989b8e827975706a645c544c42392f251a25323e4b5764717d8a978d8173675a4d4134271b0e00121e2b3845515e6b7784919eaab0a3968a7d7063574a3d3124170b00000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000005111c28333e49545f69747e88919ba3a2999189817a736d6c77828d98a3a2978c82776c61574c42382d34404c5864707c8995a1a2968a7d7165594d4034281b0f0300000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5346392c24242424242424242424242424242424242424242424242424242424242424221e19130b030000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000020c151f28313a434c545c636b72787f858a8f94989c9fa2a4a7a8a9a8a7a7a7a7a8a8aaa9a7a5a3a09d9a96918c87817a746c655c544b423930261c120800000000000000111e2b3744515d6a7784919ea2a2968a7d70707a838b939a9f9f9e9e9e9fa1a5a9a7a49f99928a81776d6268717a838b93999f9f9e9e9e9fa1a4a8a8a5a09b948c837a70655a4f44382d21160a000000000000000000000b17232e3a46525e6975818d99a4afa3978b8074685c5044382d2115090000010d1925313c4854606c7884909ca7aca094887c7165594d41362a1e1206000000000000000013202c3946535f6c798693a0acaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b25303a444f59636e78828c97a1a79e98989ea7a49a90857b70665c51473c32271d130800000000000000000000000000000000000013202c3946535f6c798693a0acb2a69a8e82766b60554c454241414245495058616b75808b96a2a7afafa295887b6f6255494645413b342b21170c0100000000000a16212d38434f5a65707b86909ba5afa99f968c837a7269625b554f4a4642403e3c3c3c3c3d3e4043464a4f555b6269717a838c96a0aaaaa0968c81766c61564a3f34281d11060000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000030e19242f39444f5a646f79848e98a3a0958b80756b61574c42382e251b110800000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000121f2c3945525f6c78859293877a6d6054473a2e2835424e5b6875828e9ba0969190909090909090959f9c908986817c756e665e544b41372c2123303d4956636f7c89968e8175685b4e4235281b0f00121f2c3945525f6b7885929fabafa296897c6f6256493c3023160900000000000000000000000000000000000000000000000d1a2733404d5a6673808d9aa6b3a89b8e8275685b4f4235281c0f0000000b16222d38434d58626c768089919aa2a39b938c857e78737d89949fa69b91867b70655b50453b3026303c4854606c7985919da69a8d8175695c5044372b1f120600000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f53463931313131313131313131313131313131313131313131313131313131313131302e2a241d150c0200000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000030d161f28313a424a525960676d73797e83888c8f9395989a9c9d9e9f9f9f9f9f9e9d9c9a999694918d8a85817b756f69625a534b423930271e140a0100000000000000121e2b3845515e6b77849195959595897c6f68717981888e94989b9d9f9f9f9f9d9b98948e8881786f655b5f68717981888e93979b9d9e9f9f9f9e9b99959089827a71685e53493e33271c110500000000000000000004101c27333f4b57626e7a86929da9aa9f93877b6f63574b4034281c10040000000814202c3844505b67737f8b97a3afa5998d81756a5e52463a2f23170b000000000000000013202c3946535f6c798693a0acaea195887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e28333d47515c66707b858f9aa4a8a4a4a8a79d93887e73695f544a3f352b20160b0100000000000000000000000000000000000013202c3946535f6c798693a0acafa2968a7d71655a4e433a36343435393e464f59636e7a85919da9b5aea295887b6e6155483b3835302a22190f050000000000030f1b26323e4954606b76828c97a2acaca2988e847a716860585049433e3a363331302f2f2f303134363a3e444950585f68717a848e98a2ada89e93887d72675c5045392e22170b0000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d05060708080808070504010000000000000000000000000000000000000000000000000000000009141f2a35404b56616b76818b96a0a4998e84796e64594f453b30261c13090000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000013202c3946535f6c7986939386796c5f5346392d2835424e5b6875828e9ba39a96969696969696969696989a95928d87807870665d53483e3327222f3c4855626f7b88958f8275685b4f4235291c0f00131f2c3946525f6c7986929facaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000d192633404c596673808c99a6b2a89c8f8275685c4f4236291c0f00000005101b26313c46505a646d7680889098a0a59d96908a847e848f9aa5a0958a7f74695e54493e3429212c3844505c6975818e9a9c989185786c6053473b2e22150800000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3a352f271e140a00000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000040d161f28303840474e555c62686d73777c808386898b8d8f9091929293929291908f8e8c8a8785817d7975706a645e575049413930271e150c020000000000000000131f2c3946525f6c78858888888888887b6f62676f777d83888c8f9192939292918e8c88837d766e665d53565f676f767d82878b8e9092929392918f8c89847e7870685f564c42372c21160b000000000000000000000915202c3844505b67737f8b96a2aea69a8e82766a5e53473b2f23170b0000000004101b27333f4b57636e7a86929eaaa99e92867a6e63574b3f33281c10040000000000000013202c3946535f6c7986929facaea295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16212b35404a545e69737d88929da8b1b1aba0968b81766c62574d42382e23190e040000000000000000000000000000000000000013202c3946535f6c798693a0acaca093877a6e6155493d32292727292d343d47525d6974808c98a4b1aea295887b6e6155483b2e29251f18100700000000000008141f2b37434e5a66717c88939ea9b0a59b90867c72685f564e463f38322e2a2724232222222325272a2e33383f464e565f68727c86919ba6afa49a8f84786d61564a3f33271c100400000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a10121314151515141312100e0b0804000000000000000000000000000000000000000000000000040f1a25313c47525d67727d88929da79d92877c72675d52483d33291f140a010000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000013202c3946535f6c7986939286796c5f5246392c2835424e5b6875828e9b9d91898989898989898989898b8e939998928a82786f655a4f44382d222e3b4855616e7b88958f8275695c4f4236291c0f0013202c3946535f6c798693a0acaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f000000000a151f2a343e48525b646d767e868e959ca3a19b958f8a8b95a0a59a8f84786d63584d443e38332d2834404d5965717e8a94908c89857c6f6256493c3023160900000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f534a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a46413930261c1105000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000000040d161e262e363d444b51575c62676b6f73777a7c7e81828485858686868585848381807d7b7875716d69645f59534c463e372f271e150c0300000000000000000013202c3946525f6c777b7b7b7b7b7b7b796d615d656c72777c7f82848586868584827f7c77726b645c544b4d565d656b71767b7e8284858686858482807c78736d665e564d443a30251b1005000000000000000000020e1925313d4954606c7884909ba7ada195897d72665a4e42362a1e130700000000000b17232f3a46525e6a76828e99a5aea3978b7f73675c5044382c21150900000000000000121f2c3945525f6b7885929fabafa296897c6f6356493c3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19232e38424d57616b76808c99a6b3b5a89c8f84796f655a50453b31261c1107000000000000000000000000000000000000000013202c3946535f6c798693a0acaa9d9184786b5f5246392d211b1a1c222b36414c5864707c8895a1adaea295887b6e6155483b2e2219140d06000000000000000c1824303c48545f6b76828e99a4afaa9f94897e746a60564d443c342d27221d1a181615151617181b1e22272d343c444d56606a747f8a94a0ababa095897e72675b4f44382c20140800000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a1c1e202121222221201f1d1a1714100c07010000000000000000000000000000000000000000000915202b37424d58636e79848f99a4a2978c81766b60554b40362b21170d03000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000013202c3946535f6c7986939386796c5f5346392c2835424e5b6875828e9b9c8f827c7c7c7c7c7c7c7c7d7e82888f979c948b81766c60554a3e32262f3c4855626e7b88958f8275685c4f4236291c0f0013202c3946535f6c7986929facaea295887b6e6155483b2f22150800000000000000000000000000000000000000000000000d1926333f4c5966727f8c99a6b2a99c8f8275695c4f4236291c0f00000000030e18222c364049525b646c747c838b91989ea4a09b96969da79f93887d7267605a554f4a443e3831313d4956626e7a878784807c79756c6155483c2f22160900000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c5f5757575757575757575757575757575757575757575757575757575757575757575756524b42382d22160a000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000000000040c141c242b323940464c51565b5f63676a6d70727475777878797979787877767473716e6c6865615d58534e48423b342c251d150c0300000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6d675c535a61666b6f737577787979787775736f6b66605a534a42444c535a60666b6f72757778797979777673706c67625b544c443b32281e14090000000000000000000007121e2a36424d5965717d8994a0aca89c9185796d6155493d32261a0e02000000000006121e2a36424d5965717d8995a1ada79c9084786c6055493d31251a0e02000000000000121e2b3845515e6b7784919eaab0a3968a7d7064574a3e3124180b0000000000000000000000000000000000000000000000000003060809080502000000000000000000000000000000000000000000000000000000000000000000010b151f2a343e49535d67727c86919ca8b4b5a99c90867b71675c52483d33291e140a000000000000000000000000000000000000000013202c3946535f6c798693a0aca99c8f8376695d5043372a1e110e101924303c4854606c7985929eaaaea295887b6e6155483b2e221508020000000000000004101c2834404c5864707c88939faaafa4988d82776c62584e443b322a221c16110e0b0a0909090a0c0e12161c222a323b444e58626d78838e9aa5b1a69a8f83786c6054483c3024180c00000013202c3946535f6c798693a0aca79a8d8173675a4d40342726292b2c2e2e2e2e2e2d2b292724201c17120d0700000000000000000000000000000000000000040f1b26313d48535e6975808b95a0a79b90857a6f64594f44392f241a0f0500000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000131f2c3946525f6c79859293867a6d6053473a2d2835424e5b6875828e9b9c8f82756f6f6f6f6f6f6f7072767d858e989d93887d72665a4e42362a303c4956626f7c89958e8275685b4f4235281c0f00131f2c3946525f6c7986929facafa295887b6f6255493c2f22160900000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89c8f8275685b4f4235281c0f000000000006101a242e374049525a626a727980878d93999ea3a2a3a7a89b8f827a75706b66605b554f49433c353a46525f6b777e7b7774706c69645b5044392c20140700000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386796c6464646464646464646464646464646464646464646464646464646464646464646464635d54493e32261a0e020000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000020a121921272e343a40454a4f53575b5e61636567696a6b6c6c6c6c6c6b6a69686664625f5c5955514c48423c363029221b130b0300000000000000000000000f1b27333f4a545c6161616161616161615d554b4f555b5f6366696b6c6c6c6b6a6966635f5b554f4841383a41484f555a5f6366686a6b6c6c6c6b696764605c56504a423b322920160c02000000000000000000000b17232f3b46525e6a76828d99a5afa4988c8074685c5045392d211509000000000000020d1925313d4955616c7884909ca8aca095897d7165594e42362a1e1307000000000000111d2a3744505d6a7683909ca9b1a4988b7e7265584c3f3326190d0000000000000000000000000000000000000000000000050b0f13151514120e0a060200000000000000000000000000000000000000000000000000000000000008121d27313c46505a656f79848e98a3adaaaaada2988d83786e64594f453a30261b11070000000000000000000000000000000000000013202c3946535f6c798693a0aca89b8e8275685b4f4235281c0f0208131f2b3844505d6976838f9ca8aea295887b6e6155483b2e22150800000000000000000814202c3945515d6975818c98a4b0aa9e93877c71665b50463c32292018110a05010000000000000002060b11182029323c46515c67727d8994a0ababa094887d7165594d4135281c1004000013202c3946535f6c798693a0aca79a8d8173675a4d403430333538393a3b3b3b3b39383633302c28231e18120b0400000000000000000000000000000000000915202c37424e5964707b86919ca7a1968a7f74695e53483d32271d12080000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000121f2b3845515e6b78849194887b6e6155483b2f2835424e5b6875828e9b9c8f82756862626262626263666b737c86919c9a8e83776b5e5246392d313e4a5764707d8a968d8174675a4e4134281b0e00121f2c3845525f6b7885929eabafa296897c6f6356493d3023160a00000000000000000000000000000000000000000000000e1b2734414d5a6773818d9aa6b3a89b8e8175685b4e4235281b0f00000000000008121c252e374048505860676e757b82888d9398a1acb3aa9d928b86817c77716c66605a544e474039434f5b6770726f6b6764605d5952493e33281c100400000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca09386797171717171717171717171717171717171717171717171717171717171717171717171716e665b4f42362a1d10040000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000000000000000080f161d23292f353a3f43474b4e525457595b5c5d5e5f5f5f5f5f5e5d5c5b59575553504d4945403c37312b251e181009010000000000000000000000000b17222d38424a51545555555555555554514b43444a4f53575a5c5e5f5f5f5f5e5c5a57534f4a443d362f2f373d44494e5356595c5e5f5f5f5f5e5d5a5854504b453f38312920170e040000000000000000000004101c28343f4b57636f7a86929eaaab9f93877b6f64584c4034281c1005000000000000000915212c3844505c6874808c97a3afa5998e82766a5e52473b2f23170c000000000000101c2936424f5c6875828e9ba8b3a6998d8074675a4e4135281c0f030000000000000000000000000000000000000000000810161b1f2122211e1a16120e0a0602000000000000000000000000000000000000000000000000000005101a242e39434d58626c76818b95a0aaa39e9ea2a99f958a80766b61574c42372d23180e0400000000000000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675b4e4134281b0e01030f1c2835424e5b6774818d9aa7aea295887b6e6155483b2e22150800000000000000000b1824303c4955616d7985919da9b1a5998d82766b5f54493f342a20170e0600000000000000000000000000060e17202a353f4a55606c77838f9ba7b1a5998d8175695d5145382c201407000013202c3946535f6c798693a0aca79a8d8173675a4d40383c3f4244464748484847464542403c38342f29231d160e06000000000000000000000000000000030e1a26313d48545f6a76818c97a2a69b9084796e62574c41362b21160b010000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000111e2a3744505d6a76839096897c7063574a3e312835424e5b6875828e9b9c8f8275685b5555555555575a616a74808b979f93877a6e6255493c3033404c5965727e8b988c7f7266594c4033261a0d00111e2b3844515e6b7784919daab0a3978a7d7064574a3e3124180b00000000000000000000000000000000000000000000020f1c2835424f5b6875818e9ba7b3a69a8d8174675a4d4134271b0e000000000000000a131c252e363e464e555d636a70767c8287909ca8aca7a49c97928d88827d77726c655f58524b433f4a555e6566635f5b5854504d4740372d22170c0000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaca093867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d776a5e5144382b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000040b12181e24292e33373b3f4245484a4c4e4f515152525352525251504e4d4b494643403d3935302b26201a140d06000000000000000000000000000006111c262f383f45484848484848484848454039393e43474b4d50515253535251504d4b47433e39332c25252c32383e42474a4d4f515253535251504e4b48443f3a342d261f170e0500000000000000000000000915212d3844505c6873808b97a3afa69a8e83776b5f53473b2f24180c000000000000000004101c2834404b57636f7b87939faaaa9e92877b6f63574b4034281c100500000000000e1b2734414d5a6773808d99a6b2a89b8f8276695d5044372b1f1206000000000000000000000000000000000000000009121a21272c2e2f2e2a26221e1a16120e0a060100000000000000000000000000000000000000000000030d17212c36404b555f69747e88939da7a399929199a3a79c92877d73685e54493f352a20160b01000000000000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000d1a2633404c596673808c99a6aea295887b6e6155483b2e22150800000000000000020e1b2733404c5865717d8995a1adaca094887c7165594e43382d22180e05000000000000000000000000000000050e18232e39444f5b67727e8a96a2aea99d9185796d6155483c3023170b000013202c3946535f6c798693a0aca79a8d8173675a4d4044484c4f5152545455555453514f4c4844403a352e2720181008000000000000000000000000000008131f2b36424e5965707b87929ea9a1958a7e73685c51463b30251a0f04000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000f1c2935424f5b6874818e988b7e7265594d40342835424e5b6875828e9b9c8f8275685b4f494949494a4f58636f7b8794a0968a7d7164574b3e3236424f5b6874818d978a7d7164584b3e3225180c00111d2a3743505d697683909ca9b1a5988b7e7265594c3f33261a0d0000000000000000000000000000000000000000000005111e2a3743505d6976838f9ca9b2a5998c7f7266594c4033261a0d00000000000000010a131c242d343c444b52585f656b7178838f9ba8a19b9a9ea29e99938e89837d77716a635c554d45434c54585956534f4b4844413c362e251b10060000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acaea1968c8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a84776b5e5144382b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000000000000000000000070d13181d22272b2f3236393b3e4041434445454646464545444342403e3c3a3734302d29241f1a150f0902000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b39352f2d32373b3e414345464646454443413e3b37322d28211a1a21272d32363a3e414344454646464543413f3c38332e29231c150d050000000000000000000000020e1a26313d4955616c7884909ca8ada2968a7e72665a4e42372b1f13070000000000000000000b17232f3b47535f6a76828e9aa6afa3978b8074685c5044392d21150900000000000c1926323f4b5865717e8a97a3b0aa9e9185786c6053473b2e22160a0000000000000000000000000000000000000007111b242c33383b3c3a36322e2a26221e1a16120c050000000000000000000000000000000000000000000a141f29333e48525c67717b86909aa5a69c928787919ca6a4998f857a70655b51463c32271d1308000000000000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000c1925323f4c5865727e8b98a5aea295887b6e6155483b2e2215080000000000000005111e2a37434f5c6874818d99a5b2a89c9084786c6054493d32261b1106000000000000000000000000000000000007111c27333f4a56626e7a86929eabaea295897d7164584c3f33261a0e010013202c3946535f6c798693a0aca79a8d8173675a4d4c5054585b5d5f60616161615f5e5b5855504b464039322a221a1108000000000000000000000000010c1824303c47535f6a76818d98a4a79c9084796d62564b4035291e130800000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000e1a2734404d5966727f8b988e8175685c5043372b35424e5b6875828e9b9c8f8275685b4f423c3c3c3e46535f6b7885919e988c7f7266594c3f333945525e6a77839094887b6f6256493c3023170a000f1c2935424f5b6875818e9ba7b3a69a8d8174675a4e4135281c0f030000000000000000000000000000000000000000000714202c3946525f6b7884919eaab0a4978a7e7164584b3e3225180c0000000000000000010a121b232a323940474d545a66717d8994a0a4988f8d92979ca19f9a948e88827b756e675f574f4742484c4d4a46433f3c3834302b241c1309000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acb2a79e9897979797979797979797979797979797979797979797979797979797979797979797979184776b5e5144382b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000000000000000000000001070c12161b1f2326292c2f3133353637383939393939383736353432302d2b2824211d18140f0904000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2d292422272b2f3234363839393939383634322f2b27221c161010161c21262a2e3134363839393939383735322f2c28231d18110a0300000000000000000000000007131f2a36424e5a65717d8995a1aca99d9185796d61564a3e32261a0e0200000000000000000007131f2a36424e5a66727d8995a1ada89c9084786d6155493d32261a0e02000000000a1724303d4956626f7b8894a1adada194887b6f63574b3e32261b0f030000000000000000000000000000000000020e19232d363e44474846433e3a36322e2a26221d160f060000000000000000000000000000000000000007121c26303b454f5a646e78838d97a2a99f958a807f8a949fa9a1968c82776d62584e43392f241a10050000000000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000714202d3946525f6b7884909da9b1a4988c8074675b4f44382c20150a000000000000000000000000000000000000000b16222e3a46525e6a76828f9ba7b1a5998d8074675b4f4236291d10040013202c3946535f6c798693a0aca79a8d8173675a51575c6164676a6c6d6e6e6e6d6c6a6865615c57514b443c342c231a1107000000000000000000000005111d2935404c58646f7b87929ea9a2968b7f73685c51453a2f23180d0200000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000c1825313e4a5763707c89959184786c5f53473b2f35424e5b6875828e9b9c8f8275685b4f42352f2f3744505d6a7784909d998d807366594d40333d4955616e7a86939185796c6053473a2e211508000e1b2734404d5a6673808c99a5b2a89c8f8276695d5044372b1f12060000000000000000000000000000000000000000000a17232f3c4855616d7a8793a0acaea295897c6f6356493d3023170a0000000000000000000009111920272f353c46525e6a76828e9aa59e938782868b91969ba19f99938d8780787169615950473e3f403e3a37332f2c28242019120a01000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0acafafa9a5a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49e9184776b5e5144382b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000001060a0f13161a1d2022242628292b2b2c2c2c2c2c2b2b2a28272523211e1b1814100c0803000000000000000000000000000000000000000000020a11181c20212222222222222222201d18161b1f2225282a2b2c2c2c2c2b2a2825221f1b16110b05050b10151a1e222527292b2c2c2c2c2b2a282623201c17120c0600000000000000000000000000000c18232f3b47535f6a76828e9aa5b0a4988c8175695d5145392d21160a00000000000000000000020e1a26323d4955616d7985919da8ada195897d72665a4e42372b1f1307000000000815212e3a4753606c7985919eaab0a4988b7f73675b4f43372b201409000000000000000000000000000000000008131f2a353f484f5455534f4b47433e3b37332e2821180f050000000000000000000000000000000000050f19232e38424d57616b76808a959fa9a2988d837878838d98a2a89e93897f746a60554b41362c22170d0200000000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000a16232f3c4855616e7a8793a0acaea195897c7064574b3f33271b10040000000000000000000000000000000000000006111d2935424e5a66737f8b98a4b1a89c9083776a5e5145382c1f13060013202c3946535f6c798693a0aca79a8d8173675a5d63686d717476787a7b7b7b7a797774716d68625c554e463e352c23191006000000000000000000000916212d3945515d6975808c98a3a99d91867a6e62574b4034291d12070000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000916222f3b4854606d79869294887b6f63574b403435424e5b6875828e9b9c8f8275685b4f423b3b3c3e44515d6a7784909d998d807366594d4036414d5965717d8a968e8276695d5044382b1f1206000c1925323f4b5864717d8a97a3b0aa9e9185786c6053473b2e22160a0000000000000000000000000000000000000000020e1a26333f4b5764707d8996a2afac9f93867a6d6154473b2e2215080000000000000000000000070e161d26323e4a57636f7b87939fa5998d82767b80858a8f959ba19e98918a837b736b625950463c33312e2a2723201c18140e080000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e9184776b5e5144382b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000003070a0e111316181a1b1d1e1f1f1f201f1f1f1e1d1c1a191714120f0c08040000000000000000000000000000000000000000000000000000060c101315151515151515151513110c0a0f1316191b1d1e1f20201f1e1d1b1916130f0a0500000000050a0e1216181b1d1e1f20201f1f1d1c191713100b0601000000000000000000000000000005111d2834404c58636f7b87939eaaab9f94887c7064584c4035291d110500000000000000000000000915212d3945515c6874808c98a4b0a69a8e82766b5f53473b3024180c0000000006121f2b3844505d6975828e9aa7b3a79b8f83776b5f54483c31261b1006000000000000000000000000000000020d1824303b47515a60625f5b57534f4b47433f3a332a21170d02000000000000000000000000000000020c16212b35404a545e69737d88929ca7a59b90867b71717b86909ba5a59b91867c71675d52483e33291f140a00000000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000c1825323e4b5764707d8a96a3afab9e9286796d6054483b2f23170b0000000000000000000000000000000000000000010d1925323e4a5763707c8995a2aeab9f9286796d6054473a2e2115080013202c3946535f6c798693a0aca79a8d81736761686e74797d81838587888888878683817d78736d67605850473e352b22170d030000000000000000020e1a26323e4a56626d7985919da8a5998d8175695d52463a2f23180c010000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000007131f2c3845515d6976828e988c8074685c50453935424e5b6875828e9b9c8f8275685b4f484848484a4e56616d7985929e988c7e7265594c3f3b46525e6a76828e978b7e72665a4d4135281c0f03000a1723303c4955626f7b8894a0adada194887b6f63574b3e32261b0f030000000000000000000000000000000000000007131f2b37434f5b6773808c98a5b1a99d9084776b5e5245392c20130600000000000000000000000005111d2a36424e5a67737f8b97a3a094887c716f74797e848a90969da39c958d857d746b62584e43392e231e1b1713100c0803000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c79869395959595959595959595959595959595959595959595959595959595959595959595959595959595959184776b5e5144382b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000010407090b0d0f10111212131313131211100f0e0c0a0805020000000000000000000000000000000000000000000000000000000000000004070808080808080808080704010003060a0c0f11121313131212100f0c0a060300000000000000000206090c0e10121213131312110f0d0a070400000000000000000000000000000000000a16212d3945515c6874808c97a3afa79b8f83776b5f53483c3024180c00000000000000000000000005111c2834404c5864707b87939fabaa9f93877b6f64584c4034291d1105000000030f1c2835414d5a66727e8a97a3afab9f93887c7064594d42372c22180e0500000000000000000000000000010a141f2a35404c58636c6e6b67635f5b57534f4b443c33291e130700000000000000000000000000000009141e28323d47515c66707a858f99a4a89e93897e746a69747e89949ea9a2988e83796e645a4f453b30261c1107000000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000e1a2733404d5966727f8c98a5b1a99c8f83766a5d5144382c1f13070000000000000000000000000000000000000000000916222f3b4854616d7a86939facaea195887b6f6256493c3023170a0013202c3946535f6c798693a0aca79a8d8173676b72797f85898d9092939495949492908d89847f78726a625950473d33291f140a000000000000000005121e2a36424e5a66727e8a96a2aca094887c7064594d41352a1e1207000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000004101c2935414d5a66727e8a969084786d61564a3f35424e5b6875828e9b9c8f8275685b5555555555575a6068727d8995a196897d7064574b3e414c57636e7a869293877a6e62564a3e3125190c00000814212e3a46535f6c7885919daab0a4988b7f73675b4f43372b201409000000000000000000000000000000000000020d18242f3b47535f6b7783909ca8b2a69a8d8174685c4f43362a1d11040000000000000000000000000814202d3946525e6a77838f9ba79c9084786c63686d73787e858b9299a19f978f867d746a60554b4035291e130b0703000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946535f6c79868888888888888888888888888888888888888888888888888888888888888888888888888888888888888884776b5e5144382b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26323e4a55616d7985919ca8aea2968a7e72675b4f43372b1f1308000000000000000000000000000c1824303b47535f6b77838f9aa6afa3988c8074685d5145392d22160a000000000c1925313d4a56626e7a86929eaab0a4988d81756a5f54493e342a20170f070100000000000000000000040b131c26303b46515d69747b77736f6b67635f5b564e453b2f24180c000000000000000000000000000007111b25303a444f59636d78828c97a1aba1968c82776d62626d77828c97a1aa9f958b80766c61574d42382e23190e040000000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000f1c2835424e5b6874818e9aa7b3a79a8d8174675b4e4235291c10030000000000000000000000000000000000000000000713202c3945525e6b7884919daab0a3978a7d7164574b3e3125180b0013202c3946535f6c798693a0aca79a8d81736c757d848b9095999c9ea0a1a2a1a09f9c9995908a837c746b62594f453b31261b1005000000000000000915222e3a46525e6a76838e9aa6a89c9084786c6054483c3025190d01000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000d1925313d4956626e79859195897d72665b50453a424e5b6875828e9b9c8f82756861616161616263666b717a848f9a9d9186796d6155483c47525d6874808b978e82766a5e52463a2e221509000005121e2b3744505c6975828e9aa6b2a79b8f83776b5f53483c31261b100600000000000000000000000000000000000a141f2a35404c58636f7b8793a0acaea2968a7d7165594c4033271b0e020000000000000000000000000a1723303c4955616e7a87939fa4988c8073675b5d62676d737980878f97a0a1988f867c71675c51463a2f23180c0000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070013202c3946525f6c787b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b766a5e5144372b1e11050000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000001050708080808080808080808060300000000000000000000000000000000000000000000000000000000000000000000000004070808080808080808080807040000000000000000000000000000000000000000000000000000000105070808080808080808080808070400000000000000000000000000000000000000000008131f2b37434e5a66727e8995a1ada99d91867a6e62564a3e32271b0f030000000000000000000000000007131f2b37434f5a66727e8a96a2aea89c9185796d61564a3e32261b0f030000000915212e3a46525e6a76828e9aa5b1a99d92877b70655a50463c32292119120d0805030101010203060a0f151c252e38424c57636e7985837f7b77736f6b6760574c4034281c0f03000000000000000000000000040e18232d37424c56606b75808a949ea8a4998f857a70655b5b65707a85909aa5a79d92887d73695e544a3f352b20160c0100000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000101d2a3643505c6976838f9ca9b2a5988c7f7266594c4033271a0d0100000000000000000000000000000000000000000004111d2a3743505d6976838f9ca9b2a5988c7f7266594c3f3326190d0013202c3946535f6c798693a0aca79a8d8173757e878f969c9e9c9a999898999b9ea2a7a5a19b958e867d746b61574d42382d22170b000000000000000d1925313e4a56626e7a87939faba4988c8074685c5044382c20140800000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000915212d3945515d6975818c988f83786c61564b41424e5b6875828e9b9c8f82756e6e6e6e6e6e6e7072767c838c96a0978c8175695d5145434d58636e7a859195897d72665a4e42362a1e12060000030f1b2834414d5965727e8a96a2aeab9f93887c7064594d42372c22180e0500000000000000000000000000000009121c26303b46515d6874808c98a4b0aa9e92867a6e6155493d3024180b000000000000000000000000000d1926333f4b5864717d8a96a2a194887c6f635751565c62686f767d858e97a0a1988e83786e62574b4034281c100400000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d20140700121e2b3743505b666d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d655a4e4236291d10030000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000001080d111415151515151515151514130f0b050000000000000000000000000000000000000000000000000000000000000000060c10131515151515151515151513100c06000000000000000000000000000000000000000000000001070d1114151515151515151515151513100c07000000000000000000000000000000000000010c1824303c47535f6b77838e9aa6b0a4998d8175695d51453a2e22160a0000000000000000000000000000030f1a26323e4a56626d7985919da9ada1968a7e72665a4f43372b1f140800000005111d2a36424e5a65717d8994a0abaea3988d82776c62584e443b332b241e1915110f0e0e0e0e1013161b20272e374049545e69747f8b8f8b87837f7b7772685d5044372b1e11050000000000000000000000010b16202a343f49535e68727c87919ba6a79c92887d73685e54545e69737e88939da8a49a8f857a70665b51473c32281d130900000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000111e2b3744515e6a7784909daab0a4978a7d7164574b3e3125180b00000000000000000000000000000000000000000000010f1c2835424e5b6875818e9ba7b3a69a8d8173675a4d4134271a0e0013202c3946535f6c798693a0aca79a8d81747e8890999a96928f8d8c8c8c8d8f92969ba1a8a6a09890877d73695f54493e33281c1105000000000004101c2935414e5a66727e8b97a3ada194887c7064584b3f33271b0f0300000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000005111d2935414d5864707b879294897e73685d5248424e5b6875828e9b9c8f827b7b7b7b7b7b7b7b7c7e82878e959e988f857a6f64584d414a545f6a75808b968f84786d6155493d32261a0e020000000c1825313d4955626e7a86929eaab0a4988c81756a5f54493e342a20170f08020000000000000000000000040a121b242d38424d58636e7985919ca8b1a69a8e82766a5e5245392d211408000000000000000000000000000f1c2835414e5a6774808d99a59e9185786c6053474b51575d646b737c858e98a39f958a7f73685c5045382c20140800000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d201407000f1b27333f4a545c61626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262615b53483d32261a0d010000000000000000000815222e3b4855616e7b8895a1a1a1988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000040c13191d20222222222222222222211f1b1610080000000000000000000000000000000000000000000000000000000000020a11181c2021222222222222222221201c18110a020000000000000000000000000000000000000000040c13191d202222222222222222222221201c18120a020000000000000000000000000000000005111d2935404c5864707b87939fabaca094887c7064584d4135291d11050000000000000000000000000000000a16222d3945515d6975818d98a4b0a69a8e83776b5f53483c3024180d010000010d1925313d4955616c78838f9aa5b0a99e93897e746960564d453d352f2925211e1c1b1a1a1b1d1f22262b32394049525b65707a85909b97938f8b8783786b5e5145382b1e1205000000000000000000000009131d27323c46515b656f7a848e99a3aa9f958b80766b61574c4d57616c76818c96a1aba1978c82786d63594e44392f251a1006000000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000121f2c3845525e6b7885929eabafa396897c706356493d3023170a00000000000000000000000000000000000000000000000e1b2734414d5a6773818d9aa6b3a79b8e8174685b4e4135281b0f0013202c3946535f6c798693a0aca69a8d807b869099958f8a8683817f7e7f8082868a90979ea7aaa2998f857b70665b5044392d22160b00000000000713202c3845515d6a76828e9ba7aa9d9185786c6054483b2f23170b0000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000000010d1824303c48535f6a76818c988f84796f645a50464e5b6875828e9b9d91888888888888888888898b8e93999c968f867d73695e534747515c66717b8691958a7e73675c5044392d211509000000000915212d3945515d6975818d99a5b0a99d92877b70655a50463c3229211a130e090603020101010204070a0f151c242d363f49545e6974808b96a1adaca195897d71665a4d4135291d110500000000000000000000000002111d2a3743505c6976828f9ca89b8f8276695d50443f454c5259616a737c86919ca69b9085796d6155493c3024170b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d201407000b17222d38424a515555555555555555555c646869696969696969665e5555555556606769696969696969686259555555555555555554504941372c211509000000000000000000000815222e3b4855616e7b8894949494948b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000040d161e24292d2e2e2e2e2e2e2e2e2e2e2b27211a1209000000000000000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140b02000000000000000000000000000000000000040d161d24292d2e2e2e2e2e2e2e2e2e2e2e2c28231c140c020000000000000000000000000000000a16222e3945515d6974808c98a4aca79b8f83776c6054483c3024190d0100000000000000000000000000000005111d2935414c5864707c8894a0acab9f93887c7064584c4135291d11060000000915212d3844505b67727d89949faab0a59a90857b72685f574e47403a35312d2b2928272728292b2e32373d434a525b646d77828c97a2a39f9b958a7e73675b4f43372a1d11040000000000000000000006101a252f39444e58626d77818c96a0aaa2988e83796e645a4f4545505a656f7a848f99a4a89e94897f756a60564b41372c22180d030000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000131f2c3946525f6c7985929facafa295887b6f6255493c2f22160900000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685b4f4235281c0f0013202c3946535f6c798693a0aca6998c80828d98918a837e79767472727273767a7e858c959ea7aba1978d82776c61554a3e33271b0f04000000000a16232f3b4854616d7986929eaaa69a8e8175695c5044382b1f13070000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000008141f2b37424e5965707b8691968b81766c61584e4e5b6875828e9b9f9a95959595959595959596989b9996918b847d746b61574c465059636d78828d988e83786d61564b3f34281c10050000000005111d2935414d5965717c88949fabaea3988d82776c62584e443b332b241e191512100f0e0d0e0f1113161b20272e363f48515b65707b86919ca7b2a79b9084786d6155493d3125190d0100000000000000000000000005121f2b3845515e6b7784919da69a8d8174675a4e41353a41484f58616a75808b96a2a195897d7164584c3f33261a0d01000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070006111c2630384045484848484848484956626d75757575757575757065594c484f5b677275757575757575746a5f524848484848484848443f372f251a1004000000000000000000000815222e3b4855616e7b888888888888887e7165584b3e3225180b000000000000000000000000000000000000000000000000020c161f282f35393b3b3b3b3b3b3b3b3b3a38332c241b110700000000000000000000000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b38342e261d140a0000000000000000000000000000000000010c161f282f35393b3b3b3b3b3b3b3b3b3b3b39342e261e140a0000000000000000000000000000000e1b27323e4a56626d7985919da0a0a0968b7e73675b4f43372c20140800000000000000000000000000000000010c1824303c4854606b77838f9ba0a0a0988c8175695d51453a2e22160a00000004101c28333f4a56616c77828d98a2adaca1978d847a71696059524b46413d3a37353434343536383b3e43484e555c646d768089939ea8b0a59a8f84796d62564b3f33271b0e02000000000000000000030d18222c36414b55606a747e89939da8a69b91867c71675d52483d3e49535e68737d88929da7a69b91877c72675d53483e34291f150a0000000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e2215080000000000000013202c3946535f6c7986929facaea295887b6e6255483b2f22150800000000000000000000000000000000000000000000000d192633404c5966727f8c99a6b2a89c8f8275695c4f4236291c0f0013202c3946535f6c798693a0aca5988c7f899490878078726d6a67666565676a6e737a838c959faaa99e94897d72665b4f44382c201408000000000c1925323e4b5764707c8995a2aea3978a7e7265594d4034281c0f030000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000030f1a26313d48535f6a75808b9592887d736960564e5b6875828e92929292929292929292929292918f8d8985807a736b62594f464f58626b75808a9492887d72675c50453a2e23170b0000000000010d1925313d4854606b77838e99a4afa99e93887e746960564d453d36302a25221f1d1b1a1a1b1c1d2023272c32384048515a636d77828c97a2adaca1968a7f73685c5045392d211509000000000000000000000000000613202c3946525f6c7986929fa5998c7f7266594c40332f363d464f58636e7a86929ea5998d8174675b4e4235281c0f02000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d20140700000a141e262e34393b3c3c3c3c3c3e4a5764717d8282828282828174675a4d43505d6976828282828282827a6d6053473c3c3c3c3c3c3b38342d251d130900000000000000000000000815222e3b4854616d797b7b7b7b7b7b7b7a7164584b3e3125180b00000000000000000000000000000000000000000000000008131e28313a414648484848484848484847443e362d23190e0300000000000000000000000000000000000000000000000006111c262f383f4548484848484848484848453f382f261c11060000000000000000000000000000000008131e28313a4045484848484848484848484845403830261c11060000000000000000000000000000111e2a37434f5b66727e8a939393939392867a6e62564a3f33271b0f0300000000000000000000000000000000000814202b37434f5b67737e8a93939393939185796e62564a3e3225190c000000000b17222e3944505b66717b86919ba5afa99f968c837a726a635d57514d49464442414041414345474b4f545960666e767f88919ba5b0a99e94897e73685c51453a2e22170b000000000000000000000b151f29343e48535d67717c86909ba5a99e94897f746a60554b403637414c56616b76818b95a0aaa3988e84796f655a50453b31261c120700000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e2215080000000000000013202c3946535f6c798693a0acaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f0013202c3946535f6c798693a0aca69a8f898e92887e756d67615d5b5958595a5d62697079838d98a3aea59a8f83776c6054483c3024180c000000020f1b2834414d5a6673808c98a5ada094887b6f6256493d3124180c000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000000915202b37424d58636e79848e988f857b72685f565b68758286868686868686868686868686858483807d79746f68615950475058616a747d8791968b81766b60554a3f34281d12060000000000000814202c38434f5b66717d88939ea9afa59a90857b72685f574f48413b36322e2b2928272727282a2c2f33373d434a525a626c757f89949ea9b0a59a8f84796e62574b4034281c1005000000000000000000000000000613202c3946535f6c798693a0a5988b7e7265584b3f32252c343d47525d6976828f9ba89c8f8376695d5043362a1d1004000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070000020c141c23292d2f2f2f2f2f313e4a5764717d8a8f8f8f8f8e8174675a4d43505d6976838f8f8f8f8f877a6d6053473a2f2f2f2f2f2e2c28221b130b0100000000000000000000000713202d3945515d676d6e6e6e6e6e6e6e6e695f54483c3023170a0000000000000000000000000000000000000000000000010d1925303a434c52555555555555555555544f483f352a1f14080000000000000000000000000000000000000000000000000b17222d38424a5154555555555555555554514a42382d22170b000000000000000000000000000000040f1a252f3a434b515455555555555555555554514a42382d22170b0000000000000000000000000000131f2c3946525f6b7783868686868686868175695e52463a2e22160b000000000000000000000000000000000000030f1b27333f4a56626e7a86868686868686867e73665a4d4034271a0e0000000006111d28333e49545f6a747f89939da6b0a89e958d847c756e68625d595552504f4e4d4d4e4f5154575b5f656b71788088919aa3adaba1978d82776c61564b4034291d120600000000000000000008121c27313b46505a646f79838e98a2aca1978c82776d63584e44392f303a454f5a646f79848e99a3aaa0958b81766c62574d43382e23190f04000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e2215080000000000000013202c3946525f6c7986929facaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000d192633404c596673808c99a6b2a89c8f8275695c4f4236291c0f0013202c3946535f6c798693a0acaba19996968b80766c635c56514e4c4c4c4e51575e67717b86919da8aba094887c7065584c4034281c0f03000005111e2a3743505c6975828f9ba7aa9e9185786c5f53473a2e211508000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000040f1a26313c47525c67727c8791978e847a7168605a6773797979797979797979797979797978777674716d69635d564f4a5159626a737c868f988e84796f645a4f44392e23170c0100000000000004101b27333e4955606b76828c97a1acaca1978d847a71696159524c47423e3a3836353434343536383b3f43484e555c646c757e87919ba5b0a99e94897e73685c51463a2f23170c00000000000000000000000000000613202c3946535f6c7986939fa5988c7e7265594c3f3226222b35414e5a6774818d9aa79d9084776a5d5144372a1e1104000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d201407000000020b12181d202222222224313e4a5764717d8a979c9c9a8e8174675a4d43505d697683909c9c9c94877a6d6053473a2d2222222222201c17110a0100000000000000000000000004111d2935404b555c6161616161616161615e574d43382c201407000000000000000000000000000000000000000000000005121e2a36414c565d616161616161616161605a51473c3024180c0000000000000000000000000000000000000000000000000f1b27333f4a545c616161616161616161615c544a3f33271b0f0300000000000000000000000000000b16212b36414c555d61616161616161616161615c544a3f33281b0f0300000000000000000000000000131f2c3946525f6b767979797979797979797165594d4135291e1206000000000000000000000000000000000000000a16222e3a46525d697579797979797979797972665a4d4034271a0e00000000000b17222d38434d58636d77818b949ea7afa89f968e878079736e6965625f5d5b5b5a5a5b5c5e6063676b70767c838a929aa3acaca2998f857b70665b50453a2f23180c010000000000000000050f1a242e38434d57626c76818b959faaa49a8f857a70665b51473c322728333d48525d67727c87919ca6a79d93887e73695f544a40352b21160c020000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000121f2c3945525f6c7885929facafa295897c6f6255493c2f23160900000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89b8e8275685b4f4235281c0f0013202c3946535f6c798693a0acb3aaa59b9084796e645a514a4541403f3f41464d555f6a75808c98a3afa5998d8175695c5044382b1f130600000714202d3946525f6b7885919eaaa89b8f8276695d5044372b1e1206000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000000009141f2a35404b55606a757f8993968d837a726a6161696c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6b696764615d58524c4d545c636b747c858e9890867c72685d53483d32271c110600000000000000000a16222d38444f5a65707b85909aa4aea99f968d847b736b645d57524e4a47444341414041424345484b4f545960666e767e879099a3adaba1978c82776c61564b4035291e1207000000000000000000000000000006121f2c3945525f6b7885929ea6998d8073675a4e42362f2e2e34414d5a6773818d9aa69d9184776a5d5144372a1e1104000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d2014070000000000070c11141515151724313e4a5764717d8a97a4a79a8e8174675a4d43505d697683909da9a094877a6d6053473a2d201515151513100c060000000000000000000000000000010c18242f39434b51545454545454545454524d453c31261b0f0400000000000000000000000000000000000000000000000814212d3a46525d686e6e6e6e6e6e6e6e6e6c63584c4034281b0e020000000000000000000000000000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b4f43372b1e12050000000000000000000000000007121c27323d48535d676e6e6e6e6e6e6e6e6e6e6d665b5044372b1f120500000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c685f54483d3125190d010000000000000000000000000000000000000006121d2935414d58636a6c6c6c6c6c6c6c6c6c6960564a3e3225190c000000000005101b26313c46515b656f79828c959da6aea8a098918b847e7a75716e6c6a6867676767696a6c6f73777c81878e959ca4acaba29a90877d73695f54493e33281d12070000000000000000020d17212b36404a555f69737e88929da7a79d92887e73695e544a3f352a20212c36414b56606b75808a959faaa49a90857b71665c51473d32281e13090000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000121f2b3845515e6b7884919eabb0a396897d7063564a3d3024170a00000000000000000000000000000000000000000000000e1b2834414e5b6774818d9aa7b4a79a8e8174675b4e4135281b0e0013202c3946535f6c798693a0acb9aea2968a7e73685d5248403935333233353b434d58646f7b87939faba99d9185786c6054473b2f22160900000916222f3b4854616e7a8793a0ada6998d8073675a4e4135281c0f03000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000000000000030e19242f39444e59636d77818a94958d847b736c645d5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5d5b5855514c4c52585f666d757d868e9791887e746a60564c41362c21160b00000000000000000005101c27323e49535e69737e88929ca5afa89f968d857d756f69635e5a5653514f4e4d4d4d4e505254575b60656b717880889099a2abaca2998f857b70665b50453a2f23180d01000000000000000000000000000004111e2b3844515d6a7783909da89b8f82766a5e52473f3b3a3b3e46515c6975828e9ba79c908376695d5043372a1d1004000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d20140700000000000000040708090b1724313e4a5764717d8a97a4a79a8e8174675a4d43505d697683909daaa094877a6d6053473a2d20140909080704000000000000000000000000000000000007121d273139404547484848484848484846413b332a20150a0000000000000000000000000000000000000000000000000916222f3c4955626e7a7b7b7b7b7b7b7b7b75695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b776c5f5246392c201306000000000000000000000000030e18232e39444e59646f797b7b7b7b7b7b7b7b7b786c5f5346392d201306000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5d564d43382c2014080000000000000000000000000000000000000000010d1925303c4751595e5f5f5f5f5f5f5f5f5f5d574e44392d2216090000000000000a15202a353f49535d677079838b949ca4abaaa39c96908a86817e7b787675747373747577797c7f83888d92989fa6aea9a19990887e756b61574d42382d22170c0100000000000000000a141e29333d48525c66717b85909aa4aaa0958b81766c61574d42382d23191a242f39444e59636e78838d98a2aca1978d82786e63594f443a30251b100600000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000111e2b3744515d6a7784909daab1a4978a7e7164584b3e3225180c0000000000000000000000000000000000000000000003101d2936424f5c6875828f9ba8b3a6998d8073665a4d4034271a0e0013202c3946535f6c798693a0acb6aa9e92867a6e62564b40362e2926252629313c47535f6b77838f9ba8ada195887c7063574a3e3125190c00000b1724313d4a5663707c8996a2afa4978b7e7165584c3f3226190d00000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000007121d27323c47515b656e78818a94968e857d766f68615b5652525252525252525252525251504e4c494d52575d6369707880878f9891887f756c62584e443a2f251a0f05000000000000000000000b16212c37424d57626c76808a939da6aea89f978f87807a746f6a6663605e5c5b5a5a5a5b5c5e6164676b70767c838a929aa2ababa39a90877d73695e54493e34291d120700000000000000000000000000000001101d2936424f5b6874818d9aa69e92867a6f6459514b4847484a5058626d7985919da79a8e8175685b4f4235291c1003000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2ada094877a6d6053473a2d20140700000000000000000000000b1724313e4a5764717d8a97a0a09a8e8174675a4d43505d697683909da0a094877a6d6053473a2d20140700000000000000000000000000000000000000000008131e28313a414649494949494949494947423c342a20160a0000000000000000000000000000000000000000000000000916222f3c4955626f7c888888888888888376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798688888888888886796c5f5346392c2013060000000000000000000000000a141f2a35404a55606b7681888888888888888881766b5f5246392c201306000000000000000000000000000a16212c3740484f52535353535353535353514c443b31261b100400000000000000000000000000000000000000000008141f2a353f474e52535353535353535353514c453c32281d1105000000000000030e18232d37414b555e677079828a9299a0a7ada7a19b96928d8a8785838281818181828486888b8f93989ea4aaaca59e978f877e756c63594f453b31261b1106000000000000000007111c26303a454f59646e78838d97a1aca3998e84796f645a50453b30261c11131d28323d47525c67717c86919ba6a99f948a80756b60564c41372d22180e03000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000101d2936434f5c6975828f9ca8b2a5998c7f7366594d4034271a0e0100000000000000000000000000000000000000000006121f2b3844515e6a7783909da9b1a5988b7e7265594c3f3226190c0013202c3946535f6c798693a0acb3a79a8e8276695d51463a2f241d1a1919202b36424e5b6773808c98a5b1a4988b7f72665a4d4134271b0e02000c1926323f4c5865717e8b97a4afa295897c6f63564a3d3024170b00000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000000000010b16202b353f49535c666f78818a92978f888179736d67615c5853504d4a484746464647494b4d5154595d62686e747b828a919890887f766d635a50463c32281e1308000000000000000000000005101b26303b46505a646e78818a949ca4aca9a199928b85807a76726f6c6a696767676768696b6d7073777c81878e949ca3acaaa29991887e756b61574d42382d22170c01000000000000000000000000000000000e1a2733404c5965717e8a96a2a3978b80756b635c57555454565b616a747e8a95a1a3978b7e7266594d4034271a0e0100000000000000000000000000000000000003070a0b0b16222f3c4955626f7c8996a2ada094877a6d6053473a2d20140700000000000000000000000b1724313e4a5764717d8a939393938e8174675a4d43505d6976839093939393877a6d6053473a2d2014070000000000000000000000000000000000000000010d19242f3a434c52555555555555555555534e463c32271c100400000000000000000000000000000000000000000000000916222f3c4955626f7c899595959595908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693959595959386796c5f5346392c201306000000000000000000000006101b26313c46515c67727c879295959595958f857a6f645a4f43372a1e11050000000000000000000000000005101a252e373e434646464646464646464644403a32291f150a00000000000000000000000000000000000000000000030e19232d353d424546464646464646464645413b332a21160b000000000000000007111b252f39434c555e67707880888f959ca2a7aca7a29e9a969491908e8e8d8d8e8f909295989b9fa4a9aba6a09a948d857d756c635a51473d33291f140a0000000000000000040e19232d38424c57616b75808a949fa9a69c91877c72675d53483e33291f140a0b16202b35404a555f6a747f8a949ea9a69c91877c72685d53493e342a1f150b000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000f1b2835414e5b6774818d9aa7b3a79a8e8175685b4f4236291d11040000000000000000000000000000000000000000000815212e3a4753606c7985929fabafa3968a7d7064574a3e3124180b0013202c3946535f6c798693a0acb0a4978b7e72665a4d4135291e120d0c0e1a26323f4b5764707d8996a2afa79b8e8275685c4f43362a1d1004000e1a2734404d5a6673808c99a6ada094877a6e6154483b2f22150900000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000000040e19232d37414a545d666f7881899198928b847e78726d6864605c595755545353535456575a5d6165696e737980868d94968f877e766d645b51483e342b20160c0100000000000000000000000009141f29343e48525c666f78818a929ba2aaaba49d96918b86827e7b79777574747374747677797c8083888d92999fa6aea7a09890887f766c63594f453b30261b100600000000000000000000000000000000000b1824313d4955616d7985919ca79d92877d746d676361616163676c737c86909ba69e92877b6e62564a3d3125180c000000000000000000000000000000000002090f1316181818222f3c4955626f7c8996a2ada094877a6d6053473a2d20140700000000000000000000000b1724313e4a5764717d8686868686868174675a4d43505d6976838686868686867a6d6053473a2d201407000000000000000000000000000000000000000005111d2935414c565d6262626262626262625f584e43382c20140800000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2a2a29c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0a2a2a09386796c5f5346392c20130600000000000000000000010c17222d38424d58636e78838e99a2a2a29d93887d73685d53483d32261a0e02000000000000000000000000000009131c252c32373939393939393939393938342f2820170d03000000000000000000000000000000000000000000000007111b232b3136393939393939393939393835302921180f0400000000000000000009141d27313a434c555e666e767d848b91969ca1a5a9aaa6a3a09e9c9b9a9a9a9a9b9d9fa1a4a7aba8a49f9a958f89827b736b635a51483f352b21170d0300000000000000010c16202b353f49545e68737d87929ca6a99f948a80756a60564b41362c22170d02040f19242e39434e58636d78828d97a2aca3998e847a6f655b50463b31271c12080000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000d1a2633404c5965727e8b98a4b1a99d9084776a5e5245392c2014080000000000000000000000000000000000000000000c1824313d4956626f7b8894a1adada194887b6e6255493c2f23160a0013202c3946535f6c798693a0acaea195887c6f63564a3e3125190d01000a16232f3c4855616e7a8793a0adaa9d9084776b5e5145382c1f1206000f1c2835424e5b6875818e9ba7ac9f9286796c6053463a2d20140700000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000000000000007111b252f38424b545d666e777f878e95968f89837e78746f6c6866636261605f6061626466696d71757a7f858b9198938c847c746c645b52493f362c23190f0400000000000000000000000000020d18222c36404a545d666f78818990989fa5aca8a29c97928e8b888684828181818181828486898c9094999ea4aaa9a39d958e867e756d645a51473d33291f140a0000000000000000000000000000000000000815212d3945515d6974808b96a0a39990877e7873706e6d6e6f73777e858e98a2a2978c81766a5e52463a2e22150900000000000000000000000000000000050d141a1f23252525252f3c4955626f7c8996a2ada094877a6d6053473a2d20140700000000000000000000000a1724313d4a57636f797979797979797972665a4d434f5c687479797979797979776c6053463a2d20140700000000000000000000000000000000000000000714202d3946525d686e6f6f6f6f6f6f6f6f6a6055493c3023170a00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2aea99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000008131e29333e49545f6a747f8a95a0aaaca1968c81766c61564c41372c21160a000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b28241e160e050000000000000000000000000000000000000000000000000009111920262a2c2c2c2c2c2c2c2c2c2c2c29241f170f0600000000000000000000020c151f28313a434c545c646b727980858b9095999da0a3a5a7a9a9a8a7a7a7a7a8a9a9a7a5a29f9c98948f8a847e777069615951483f362d23191005000000000000000008131e28323c47515b66707a858f99a3aca2978d82786e63594e44392f251a1005000007121c27323c46515b66707b86909ba5aaa0968b81776c62584d43392e24190f0300000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000b1825313e4a5763707c8996a2aeac9f93867a6d6155483c3024180c000000000000000000000000000000000000000004101c2834404d5965727e8a97a3b0ab9e9285796c6053463a2d2114080013202c3946535f6c798693a0acac9f9386796d6054473b2e22150900000714202d3946525f6c7885919eabac9f9286796c6053463a2d20140700101d293643505c6976828f9ca9aa9e9184786b5e5245382b1f120500000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000000000009131d263039424b545c656d747c838a9197948f8984807c787572706e6d6d6c6d6d6f717376797d81868b9096968f89817a726b625a524940372d241a110700000000000000000000000000000006101a242e38424b545d666e777e868d949aa0a6aba8a39e9b979492908f8e8d8d8d8e8f919395989ca0a4a9a9a49e98928b847c746c635b52483f352b21170d0200000000000000000000000000000000000005111d2935414c58636e79848e98a1a299908a84807c7b7a7a7c7e83898f97a0a29990857b7065594e42362a1e1206000000000000000000000000000000040e171f262b2f31323232323c4955626f7c8996a2ada094877a6d6053473a2d20140700000000000000000000000916222e3b47535e676c6c6c6c6c6c6c6c6960564a404c58626a6c6c6c6c6c6c6c6b655b4f44372b1f120500000000000000000000000000000000000000000815222e3b4855616e7a7c7c7c7c7c7c7c7b7164584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000040f1a252f3a45505b65707b86919ca6afa59a8f857a6f655a4f453a2f251a0f0400000000000000000000000000000000010910161a1e1f2020202020202020201f1c18130c05000000000000000000000000000000000000000000000000000000070f151a1d1f2020202020202020201f1d19130d06000000000000000000000000030d161f28313a424a525961676e747a7f84898d909496999b9c9e9e9f9f9f9f9e9d9c9a989693908c88837e78736c665f574f473f362d241b11080000000000000000010d19242f3a444e59636d77828c96a1aba59a90857b71665c51473d32281d1309000000000b15202a353f4a545f69747e89939ea8a89d93897e74695f554a40362b20140900000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000916222f3b4854616d7a86939facaea296897d7165584c4034281d1106000000000000000000000000000000000000000a15212d3844515d6975818e9aa6b3a89b8f83766a5d5144382b1f12050013202c3946535f6c798693a0acaa9e9184786b5e5245382c1f1306000005111e2b3744515d6a7783909da9ada194877b6e6155483b2f22150800111e2a3744515d6a7784909daaa99d9083776a5d5044372a1e110400000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000000000000000010b141e273039424a535b636a727980868c929895908c8885817e7d7b7a7979797a7b7d808285898d919696918b847e7770686159514840372e251b1208000000000000000000000000000000000008131c263039424b545c656d747b83898f959a9fa4a7aba7a4a19f9d9c9b9a9a9a9b9c9d9fa2a4a8aaa6a29d98938d878079726a625a514940362d23190f0500000000000000000000000000000000000000010d1824303b47525d68727c868f979fa29b95908c89888787898b8f949aa1a09890877e74695e53483d31251a0e020000000000000000000000000000010c16202930373c3e3e3e3e3e3e4955626f7c8996a2ada094877a6d6053473a2d201407000000000000000000000006121f2b36414c555c5f5f5f5f5f5f5f5f5d574e443b4650595e5f5f5f5f5f5f5f5f5a53493e33271b0f0300000000000000000000000000000000000000000815222e3b4855616e7b888989898989897e7165584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000b16212b36414c57616c77828d98a2ada89e93887e73685e53483e33281e130900000000000000000000000000000000000000050a0e111313131313131313131312100c0701000000000000000000000000000000000000000000000000000000000004090e111313131313131313131312100d08020000000000000000000000000000040d161f28303840484f565d63696e73787c8184878a8c8e9091929292929292908f8e8c898683807c77726d67615b544d453d352d241b120900000000000000000005121e2a35414b56606a757f89949ea0a09d93897e74695f544a40352b20160c0100000000040e19232e38424d58626c77828c97a0a0a09a90867b71675c52473c3125190d01000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e221508000000000000000713202c3945525e6a7783909ca8b2a5998d8175695d5145392e22170c02000000000000000000000000000000000005101b26323d4955616d7985919daab1a4988c8073675a4e4135291c10030013202c3946535f6c798693a0aca99c908376695d5043372a1d1104000002101c2936434f5c6975828f9ca8afa295897c6f6256493c3023160a00121e2b3845515e6b7884919eaba99c8f8275695c4f4336291d100300000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000000000000020c151e2730384149515860676e757b81878c91969894918e8b89888786868687888a8c8f92959994908b858079736c655e564f473f362e251c1309000000000000000000000000000000000000010a141e273039424a535b626a71787e84898f93979b9fa2a4a6a8a9a8a7a7a7a7a8a8a9a8a6a3a19d9a96918d87827c756e67605850483f372e241b110700000000000000000000000000000000000000000008131f2a36414b56606a747d858d949a9fa09c989694949495989b9fa09b958e867e756c62574d42372b20150900000000000000000000000000000007121d28323b42484b4b4b4b4b4b4b55626f7c8996a2ada094877a6d6053473a2d2014070000000000000000000000020e1a25303a434b505353535353535353514c453c343e474e5253535353535353524f4941372d22160b0000000000000000000000000000000000000000000815222e3b4855616e7b8895969696968b7e7165584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000007121d27323d48535d68737e89949ea9aca1978c81776c61574c41372c21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e262e363d444b51575d63686c7074787b7d808283848586868685858483817f7d7a77736f6b67615c565049423b332b231b1209000000000000000000000814212d3a46525d68727c879193939393938b81776c62574d43382e23190f0400000000000007111c26313b46505b65707a858f93939393938d83786e64594d4135291c1003000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e2215080000000000000004111d2a36424f5b6774808c98a4b1a99d9185796d61564a3f34291e130900000000000000000000000000000000040d17222d38434e5a65717d8995a1adada194887c7063574b3e3226190d000013202c3946535f6c798693a0aca89b8f8275685c4f4235291c0f030000000f1b2835414e5b6774818e9ba7b0a3968a7d7063574a3d3124170a00121f2c3945525f6b7885929faba89b8e8275685b4f4235281c0f0200000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000000000000000000000000030c151e262f373f474e555c636970757b81858a8e92959898969494939393949596999794918d89847f7a746e68615a534c453d352d241c130a0100000000000000000000000000000000000000020c151e273038414951585f666d73787e83878b8f9295989a9c9d9e9f9f9f9f9f9e9d9b999794918e8a86817c76706a645d564e463e362d241b120900000000000000000000000000000000000000000000020e19242f3a444e58626b737b83898f93979a9d9e9fa09f9e9d9b98948f8a837c746c635a50463b30261a0f040000000000000000000000000000000c18232f3a444d535758585858585858626f7c8996a2ada094877a6d6053473a2d20140700000000000000000000000008131e2831394044464646464646464645413b332c353c42454646464646464646433e372f251b10050000000000000000000000000000000000000000000815222e3b4855616e7b8895a2a2a2988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000030e19232e39444f59646f7a858f9aa5b0a59a90857a70655a50453a30251a100500000000000000000003070a0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b09050100000000000000000000000000000000000000000000000000000000000000000000040c141c242b333a40464c52575c6064686b6e717375767778797979797877767472706d6a67635f5b56514b453e383129211a110900000000000000000000000916232f3c4955626e798486868686868686847a6f655a50463b31261c120700000000000000000a151f2a343f49545e69737e868686868686868680756a5d5144372b1e1104000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aea295887b6e6155483b2e22150800000000000000010e1a26333f4b5864707c8894a0acada1958a7e72675b50453a30251b120a0200000000000000000000000000050d161f29333e49545f6b76828e9aa5b1a89c9084786c6054473b2f23160a000013202c3946535f6c798693a0aca79b8e8174675b4e4135281b0e020000000e1a2734414d5a6773818d9aa7b1a4978a7e7164574b3e3124180b0013202c3946525f6c7986929faca89b8e8174675b4e4135281b0e0200000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000000000000000000000030c141d252d353c444b52585e646a7075797e8285888b8d8f919292929292908f8d8a8884817c78736e69635d565049423a332b231b120a01000000000000000000000000000000000000000000030c151e262f373f464d545b61676d72777b7f8386898b8d8f9091929292929291908e8d8a8885827e7975706b655f59524b443c342c241b120900000000000000000000000000000000000000000000000008131d28323d465059616971787e83878b8e909192939392908e8c88847e78726a625a51483e34291f140900000000000000000000000000000000101c2834404b565e6465656565656565656f7c8996a2ada094877a6d6053473a2d201407000000000000000000000000020c161f272e3438393939393939393938353029232b313639393939393939393937332d251d1309000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aca5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000a141f2a35404b55606b76818b96a1aca99e93897e73695e53493e33291e13090000000000000000030a0f141718191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919181815110c0600000000000000000000000000000000000000000000000000000000000000000000020a121a21282f353b41464b5054585c5f62646668696b6b6c6c6c6c6b6a69686664615e5b57534f4a453f3a332d261f1710080000000000000000000000000916232f3c4955626e7879797979797979797972685d53493e34291f150a000000000000000000030d18222d37424c57616c76797979797979797979756a5d5144372b1e1104000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a5aca295887b6e6155483b2e22150800000000000000000b17232f3b4854606c7884909ca7b2a69a8f83786c61564c41372d241c140d070200000000000000000004090f161f28313b45505a65717c87939faaafa4988c8074685c5044382b1f1307000013202c3946535f6c798693a0aca79a8e8174675a4d4134271b0e010000000d1a2733404d596673808d9aa6b1a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8e8174675a4e4134281b0e0100000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000000020b131b232b323940474d53595f64696d7275797c7e81838485868686858482817e7b7874706c67625d57524b453e37302921191109000000000000000000000000000000000000000000000000030c151d252d343c434a50565c61666b6f7376797c7e818284858586868685848382807e7b7875726d69645f5a544e474139322a231a120900000000000000000000000000000000000000000000000000010c16212b343e474f585f666c72777b7e8183858686868584827f7c78736d67605850483f362c22180d0300000000000000000000000000000000121f2b3844505c68707171717171717171717c8996a2ada094877a6d6053473a2d20140700000000000000000000000000040d151d23282b2c2c2c2c2c2c2c2c2c29241f1920252a2c2c2c2c2c2c2c2c2c2a27211b130b01000000000000000000000000000000000000000000000815222e3b4855616e7b8895a0a0a0988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000006101b26313c46515c67727c87929da8aca1978c82776c62574c42372c22170c0200000000000000050d141b2023252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252524211d1710090000000000000000000000000000000000000000000000000000000000000000000000080f161d242a30353a3f44484c4f5255585a5b5d5e5f5f5f5f5f5e5e5c5b595755524f4b47433e39342e28221b140d05000000000000000000000000000814212d3a46525d666c6c6c6c6c6c6c6c6c6c6960564c41372c22180d030000000000000000000006111b26303b45505a646b6c6c6c6c6c6c6c6c6c6b63594d4135291c1003000013202c3946535f6c798693a0a0a09a8e8174675a4d4134271a0e01000b1825323e4b5865717e8b98a0a0a095887b6e6155483b2e221508000000000000000007131f2b3744505c67737f8b97a2aeaba094897e73685d53493f362e251e18130f0b090707060708090c10141a2128313a434d57616c77828d99a4afaa9e93877b6f64584c4034271b0f03000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0e010000000d1a2633404c596673808c99a6b2a5988c7e7265584c3f3225190c0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e0100000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000109111920272e353c42484e53585d6165696d6f727476777879797978777574716f6c6864605c57524c46403a332c251e170f070000000000000000000000000000000000000000000000000000030b131b232a31383f454b50565a5f63676a6d707274757778787979797877767573716f6c6965615d59544e49433c362f2820191108000000000000000000000000000000000000000000000000000000050f19222c353d464d555b61666b6f72757778797979787775736f6c67625c554e463e362d241a1006000000000000000000000000000000000013202c3946535f6c797e7e7e7e7e7e7e7e7e7e8996a2ada094877a6d6053473a2d2014070000000000000000000000000000040b12171c1f20202020202020201f1d19130e141a1d1f20202020202020201e1b1610090100000000000000000000000000000000000000000000000815222e3b4855616e7b8893939393938b7e7165584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000020c17222d38424d58636e78838e99a4afa59b90857a70655b50453b30251b100500000000000000040e171f262c303232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232312e29221b12090000000000000000000000000000000000000000000000000000000000000000000000050c12191e242a2f34383c404346494b4d4f505152525352525251504e4d4b4845423f3b37322e28231d17100a03000000000000000000000000000005111d2935404b545c5f5f5f5f5f5f5f5f5f5f5d574e443a30251b100600000000000000000000000009141e29333e48525a5f5f5f5f5f5f5f5f5f5f5e5951473c3125190d00000013202c3946535f6c798693939393938e8174675a4d4134271a0e01000b1825323e4b5865717e8b9393939393887b6e6155483b2e2215080000000000000000030f1b27333f4b57636e7a86919da8b1a69a8f857a6f655b514840373029231f1b1816141313131416191c20252b323a434c555f69737e89939eaaafa4998d82766b5f53473b2f23170b00000013202c3946535f6c798693a0aca79a8d8173675a4d4134271a0e010000000d192633404c596673808c99a6b2a5988c7e7265584c3f3225190c0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e0100000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000070e161d242a31373c42474c5155595d60636668696b6b6c6c6c6b6a696765625f5c5854504b46413b352f28221b140c05000000000000000000000000000000000000000000000000000000000109111820272d343a3f454a4e53575a5e61636567696a6b6c6c6c6c6b6b6a68676562605c5955514d48433d37312b241d160e07000000000000000000000000000000000000000000000000000000000007101a232b343c434a50565b5f6366686a6b6c6c6c6c6a6966635f5b56514a443c352c241b120800000000000000000000000000000000000013202c3946535f6c79868b8b8b8b8b8b8b8b8b8f99a4ada094877a6d6053473a2d20140700000000000000000000000000000000070c0f12131313131313131312100d0803090d11131313131313131313110f0a05000000000000000000000000000000000000000000000000000815222e3b4855616e7b868686868686867e7165584b3e3225180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000008131e29343e49545f6a74808a95a0aba99e93897e73695e54493e34291e140900000000000000010c16202931373c3e3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d3a342c241b1006000000000000000000000000000000000000000000000000000000000000000000000001070d13191e23282c3033373a3c3e40424344454646464645444342403e3c3936332f2b27221d18120c0600000000000000000000000000000000010d19242f39424a5053535353535353535353514c453c32281e130900000000000000000000000000020d17222c3640484f52535353535353535353524e473f352b20140900000013202c3946535f6c79868686868686868174675a4d4134271a0e01000b1825323e4b5865717e868686868686867b6e6155483b2e2215080000000000000000000b17232f3b46525e6975808b97a2adaca1968b81776d635a5249423b352f2b27242221202020212325282c31363d444c555e67717b858f9aa5b0a99e93887c71655a4e42372b1f130700000013202c3946535f6c798693a0aca79a8e8174675a4e4134271b0e010000000d1a2633404c596673808c99a6b2a5988c7e7265584c3f3225190c0013202c3946535f6c798693a0aca79a8e8174675b4e4134281b0e0100000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000040b12191f252b31373c4145494d515457595b5d5e5f5f5f5f5f5e5c5a585653504c48443f3a35302a241d1710090200000000000000000000000000000000000000000000000000000000000000070e151c22282e34393e43474b4e515457595b5c5d5e5f5f5f5f5f5e5d5c5a585653504d4945413c37322c262019130b0400000000000000000000000000000000000000000000000000000000000000081119222a31383f454a4f5356595b5d5f5f5f5f5f5e5c5a57534f4b453f39322b231a12090000000000000000000000000000000000000013202c3946535f6c79869398989898989898989aa1aaaca094877a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616d7779797979797979797064574b3e3125180b00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000040f1a25303a45505b66707b86919ca6aca2978c82776c62574c42372d22170d020000000000000007121d28323b42484b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4a453e362c22170c0100000000000000000000000000000000000000000000000000000000000000000000000002080d12171c2024272a2d30323435373838393939393837363533312f2d2a26231f1b16110c060100000000000000000000000000000000000007121d2730383f444646464646464646464645413b332a21160c02000000000000000000000000000005101a242e363d434646464646464646464645423d362d23190e03000000131f2c3946525f6b76797979797979797972665a4d4034271a0e01000b1825313e4b5764707979797979797979776d6154483b2e21150800000000000000000006121e2a36414d58636f7a85909ba6b0a89d93897f756c645b534c46403b3733312f2e2d2c2d2e2f3134383c42484f565e677079838d97a1acada2978d82766b6054493d32261a0e0300000013202c3946535f6c798693a0aca89b8e8174685b4e4135281b0f020000000d1a2733404d5a6673808d9aa6b2a5988b7e7165584b3e3225180c0013202c3946525f6c7986929faca89b8e8174685b4e4135281b0f0200000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000070e141a20262b3035393d4144474a4c4e5051525253525251504e4c494743403c38332f29241e19120c0500000000000000000000000000000000000000000000000000000000000000000000030a11171d23282d32373b3e4245484a4c4e4f5151525253525251504f4d4c494744413d3935302b26211b150e08010000000000000000000000000000000000000000000000000000000000000000000710181f272d33393e43474a4d4f515253535352514f4d4a47433f3a342e2720191108000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a094877a6d6053473a2d20140700000000000000040708080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808060200000000000000000000000000000713202c3845515c666c6c6c6c6c6c6c6c6c685e53483c2f23160a00000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000b16212b36414c57616c77828d98a2ada59b90857b70655b50463b30261b100600000000000000000c18242f3a444d5458585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585650483e34291d1105000000000000000000000000000000000000000000000000000000000000000000000000000002070b1014171b1e21232527292a2b2c2c2c2c2c2c2b2a28272523201d1a17130f0a05000000000000000000000000000000000000000000010b151e272e3337393939393939393939393835302921180f050000000000000000000000000000000009121c242c3236393939393939393939393936322b241b110700000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6960564a3e3225190c00000a16232f3c48535e686c6c6c6c6c6c6c6c6c665c5145382c201307000000000000000000020d1925303c47525e69747e89949ea8afa59b91887e756d655e57514c4743403d3c3a3a393a3b3c3e4144484d535960687079828b959fa9afa59b91867b70655a4f43382c2115090000000013202c3946535f6c798693a0aca89b8f8275685c4f4236291c0f030000000e1b2734414d5a6774818d9aa7b1a4978b7e7164574b3e3125180b00121f2c3845525f6b7885929faba89b8f8275685b4f4235291c0f0200000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000003090f141a1f24292d3135383b3e4042434445464646454443413f3d3a3734302c27231e19130d070100000000000000000000000000000000000000000000000000000000000000000000000000060c12171d22262a2e3236393b3e40414344454546464645454442413f3d3a3734312d2924201b15100a03000000000000000000000000000000000000000000000000000000000000000000000000060e151c22282d32373a3e40424445464646454443413e3b37332e29231c160e0700000000000000000000000000000000000000000013202c3946535f6c7986939393939393939393939393939393877a6d6053473a2d2014070000000000060c101315151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151514120f0a0400000000000000000000000004101c28343f4a545b5f5f5f5f5f5f5f5f5f5c564d42372b1f130700000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130601010107121d27323d48535d68737e89949ea9a99e94897e74695e54493e34291f1409000000000000000000101c2834404b565f6465656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565625a50453a2e211509000000000000000000000000000000000000000000000000000000000000000000000000000000000004070b0e111417191b1c1d1e1f1f201f1f1f1e1d1c1a181614110e0a0703000000000000000000000000000000000000000000000000030c151c23282b2c2c2c2c2c2c2c2c2c2c2c29241f170f060000000000000000000000000000000000000a121a21262a2c2c2c2c2c2c2c2c2c2c2c2a26201a120900000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d574e44392d221609000007131f2b37424d565c5f5f5f5f5f5f5f5f5f5b544a3f34281c10040000000000000000000008141f2a36414c57626d77828c96a0aaada39a91887f777069625c57534f4c4a484746464647494a4d5054595e646b727a828b949da7b0a79d93897f74695f54493d32271b10040000000013202c3946535f6c798693a0aca99c9083766a5d5043372a1e11040000000f1b2835424e5b6874818e9ba7b0a3978a7d7064574a3e3124170b00121e2b3845515e6b7784919eaaa99c8f8276695c4f4336291d100300000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000003090e14181d2125282c2e3133353738393939393837363533302e2b2724201c17120d08020000000000000000000000000000000000000000000000000000000000000000000000000000000001060c11161a1e2226292c2f31333536373839393939393837363432302e2b2825211d19140f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d22262a2e313436373839393939383634322f2b27221d18110b040000000000000000000000000000000000000000000013202c3946535f6c7986868686868686868686868686868686867a6d6053473a2d201407000000020a11181c20212222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222211f1b150f070000000000000000000000000c18232e38424a4f525353535353535353504b443b30261a0f0300000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130e0e0e0e0e19232e39444f59646f7a858f9aa5ada2978d82776d62574d42382d22180d02000000000000000000121f2b3844515d6870727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272726c62564a3d3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080a0c0e0f111212131313131211100f0d0c0a07040100000000000000000000000000000000000000000000000000000000030a11171b1e202020202020202020201f1d19130d0600000000000000000000000000000000000000000810161a1e1f2020202020202020201f1d1a150f080000000000000a16212c3740484f525353535353535353514c453c32281d11050000030f1a26303b444b505353535353535353524f4a42382e23180c0000000000000000000000030e1925303b46515b66707a858e98a2abaca39a9189817a746d68635f5c595755545353535455575a5d60656a6f767d848c949da6afa89f958b82776d62584d42372c21160a000000000013202c3946535f6c798693a0acaa9e9184786b5e5245382c1f1306000003101d2936434f5c6975828f9ca8afa296897c6f6356493d3023160a00111e2a3744515d6a7784909daaaa9d9084776a5d5144372a1e110400000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3024170b0b0a070300000000000000000000000000000000000000000000000000000000000003080c1115191c1f222527282a2b2c2c2c2c2c2b2a282624211e1b1814100b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e12161a1d2022242628292b2b2c2c2c2c2c2b2a29282624211f1c1815110d080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11161a1e222527292b2c2c2c2c2c2b2a2825221f1b17120c06000000000000000000000000000000000000000000000000131f2c3946525f6b767979797979797979797979797979797979776c6053463a2d2014070000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2b2620191108000000000000000000000006111c262f383f4346464646464646464644403a32291f14090000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201a1a1a1a1a1a1f2a35404b55606b76818b96a1aca69b90867b70665b50463b30261b10060000000000000000000013202c3946535f6c797e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100d080200000000000000000000000000000000000000000000040a0e111313131313131313131313110e09040000000000000005101a252e373e4346464646464646464645413b332a21160b0000000009141f29323a4044464646464646464646433f382f261c110600000000000000000000000008131e29343f4a545e69737c869099a1aaaca39b938c857f79746f6b6865636260605f6061626466696c71757b81878e969ea6afa79f968d837970655b51463b31261b1004000000000013202c3946535f6c798693a0acac9f9386796d6054473b2e221509000005121f2b3844515e6a7784909daaaea194887b6e6255483c2f22150900101d2936434f5c6976828f9ca8ab9e9185786b5e5245382c1f120600000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d302418181817140f0a030000000000000000000000000000000000000000000000000000000000000005090c101316181a1c1d1e1f1f201f1f1e1d1b191715120f0b0804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0d101316181a1b1d1e1f1f1f201f1f1e1e1c1b191715120f0c0905010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1215181b1c1e1f2020201f1e1d1b1916130f0b060100000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b655b4f44372b1f120500000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a37322b231a100600000000000000000000000a141d262d333739393939393939393938342f2820170d020000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2727272727272727313c47515c67727d87929da8a99f94897e74695f54493f34291f140a000000000000000000000013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c7e7265584c3f3225190c0000000000000004070808080808080808080808080808080808080808080808080808070604030100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393835302921180f0400000000020d1720282f343839393939393939393937332d261d140a00000000000000000000000000020d18232d38424d57616a747d878f98a0a8ada59e97908a85807b787472706e6d6d6c6d6d6f707275797d81868c9299a0a8ada69e958d847a71675e54493f352a1f140900000000000013202c3946535f6c798693a0acaea195887b6f63564a3d3125180c00000814212d3a46535f6c7985929fabaca09386796d6054473a2e211408000f1c2835424e5b6874818e9aa7ac9f9286796c6053463a2d20140700000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d302525252523201b150e050000000000000000000000000000000000000000000000000000000000000000000306090b0d0f1112121313131211100f0d0b0806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407090b0d0f10111213131313121211100e0d0b08060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090c0e1011121313131212100e0c0a0603000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a53493e33271b0f030006111c262f383f4548484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484847433d352c22170c0100000000000000000000020b141c22272b2c2c2c2c2c2c2c2c2c2b28231d160e05000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53463934343434343434343438424d58636e78838e99a4ada2988d82786d62584d42382d22180d02000000000000000000000013202c3946535f6c7986939290909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090968c7e7265584c3f3225190c0000000000060c101315151515151515151515151515151515151515151515151515141412110f0d0b090603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406080a0c0e0f101111121212121111100f0e0c0a08060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29241f170f06000000000000050e161d23282b2c2c2c2c2c2c2c2c2c2b27221c140b02000000000000000000000000000006111c26303b454f58626b747d868e969ea5aca8a29b96908c8884817e7c7b7a7979797a7b7d7f8285898d92979da4aba9a39b948c837a72685f564c42382d23180e0300000000000013202c3946535f6c798693a0acb0a4978b7e7265594d4134281c1106050b1724303c4955626e7b8794a0adaa9e9184786b5f5245392c1f1306000e1a2734404d5a6673808c99a6ada194877b6e6155483b2f22160900000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3d3232323231302c261f170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3740484f525353535353535353535353535353535353524f4941372d22160b00000b17222d38424a51545555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555534e473e34291d12060000000000000000000000020a11171b1e2020202020202020201f1c18120c0400000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346414141414141414141414149545f6a74808a95a0aba69b91867b71665b51463b31261b110600000000000000000000000013202c3946535f6c7986938983838383838383838383838383838383838383838383838383838383838383838383838383838383838383838384908c7e7265584c3f3225190c000000020a11181c202122222222222222222222222222222222222222222222222221201f1e1c1a1815120f0b070300000000000000000000000000000000000000000000000000000000000000000000000000000000000003060a0d10131517191a1c1d1d1e1e1e1e1e1e1d1d1c1a19171513100d0a060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f20202020202020201f1d19130d060000000000000000040c12181c1f2020202020202020201e1b17110a02000000000000000000000000000000000a141f29333d465059626b747c848c939aa1a7aca7a19c9894908d8b89888786868687888a8c8e9195999ea3a9aaa59e98918a827a716960574d443a30261b11070000000000000013202c3946535f6c798693a0acb3a69a8e8175695d5145392d22171312131c2834404c5865717d8a96a3afa89b8f8276695d5043372a1e1104000c1925323f4b5865717e8b97a4afa296897c7063564a3d3124170b00000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574a3e3e3e3e3e3e3c37312921170d0200000000000002070b0e101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100e0b07020000000000000000000000040708090909090909090908070501000000000000000000000000030608090909090909090909080502000000000000000000000000030608090909090909090909080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a252e373e4346464646464646464646464646464646464646433e372f251b100500000f1b27333f4a545c6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615f5950453a2e22160a00000000000000000000000000060b0f1213131313131313131312100c07010000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f534d4d4d4d4d4d4d4d4d4d4d4d505b66707b86919ca7aa9f948a7f746a5f544a3f342a1f140a0000000000000000000000000013202c3946535f6c798693887b767676767676767676767676767676767676767676767676767676767676767676767676767676767676767683908c7e7265584c3f3225190c0000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2c2a292724221f1b18140f0b060100000000000000000000000000000000000000000000000000000000000000000000000001060a0f13161a1c1f2124252728292a2b2b2b2b2b2b2a2928272524211f1c1916130f0a0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131312100d08020000000000000000000001070c1012131313131313131313120f0b06000000000000000000000000000000000000030d17212b343e475059626a727a82898f969ba1a6aaa8a4a09d9a98969493939393949596989b9ea1a5a9a9a49f99938d867f7870685f574e453b32281e140a000000000000000013202c3946535f6c798693a0acb6aa9d9185796d61554a3e342922201f1f232d3844505c6874818d99a6b2a5998c8073675a4e4135281c0f02000b1724303d4a5663707c8995a2afa4978b7e7265584c3f33261a0d01000000000000000000000000000013202c3946535f6c798693a0aca4978a7d7063574b4b4b4b4b4b4b48433b33291e13080000000000060d13171b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b17130d060000000000000000070c11141515151515151515151514110d08010000000000000000050b0f131515151515151515151514120e09030000000000000000040a0f121515151515151515151515130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393939393939393939393937332d251d1309000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b61564b3e3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1004000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5a5a5a5a5a5a5a5a5a5a5a5a5a5a626c77828d98a2ada2988d83786d62584d43382d23180f070000000000000000000000000013202c3946535f6c798693887b6f6969696969696969696969696969696969696969696969696969696969696969696969696969696969697683908c7e7265584c3f3225190c00000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a3a39373533312e2b2724201b17120c0701000000000000000000000000000000000000000000000000000000000000000002070d12161b1f2226292c2e3032343536373738383838383736353432302e2c2926221f1b16120d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222c353e475058606870777e848a90959a9ea2a6a9a9a6a4a2a1a0a0a0a0a0a1a3a5a7aaa8a4a19d98938e88827b746d665e564d453c332920160c02000000000000000013202c3946535f6c798693a0acb9ada195897d72665b50453b332f2c2c2c2e353f4955606c7884909da9aea296897d7064584b3f3226190d00000915222f3b4854616e7a8793a0aca69a8d8174675b4e4235291c1003000000000000000000000000000013202c3946535f6c798693a0aca4978a7d70635858585858585857544d453b3025190d010000000810181e23272929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292927231e1810080000000000020b12181d2022222222222222222222211d19130c040000000000000810161b1f21222222222222222222211e1a140d06000000000000070e151a1f21222222222222222222211f1b160f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27211b130b0100000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b73675a4d4134271a0e00000000000000030507080909090909080706040100000000000000000000000000000000000000000000000000000000000000000000000005101a25303c4955626f7c8996a2afa99c908376695c4f43362b20150b000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c67676767676767676767676767676768737e89949ea9a69c91867b71665c51463c362f282119110900000000000000000000000013202c3946535f6c798693887b6f625c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c697683908c7e7265584c3f3225190c0006111c262f383f45484848484848484848484848484848484848484848484848484746454442403d3a3734302c27221d18120c06000000000000000000000000000000000000000000000000000000000000070d13181d22272b2f3235383b3d3f40424344444445454544444342403f3d3b3835322f2b27221d18130d0600000000000000000000000000000000000000040708080808080808080808070400000000000000000000000000000000000000000000000000000407080808080808080808080704000000000000000000000000000000000000000000000000000000000000000000000007101a232c353e464e565e656c73797f84898e9296999c9fa1a3a4a5a6a6a6a6a6a5a4a2a09e9b9895918c87827d77706a635b544c443b332a20170e0400000000000000000013202c3946535f6c798693a0acb8b1a69a8e83776c61574d453f3b3938393b3f47505b66717d8995a1adaa9e92867a6d6155483c3023170a00000713202d3946525f6b7884919daaa89c8f83766a5d5144382b1f1206000000000000000000000000000013202c3946535f6c798693a0aca4978a7d706565656565656565645f574c4135291d1104000007111a22292f3336363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636332f29221a1107000000020c141c23292d2f2f2f2f2f2f2f2f2f2f2d2a241e160d040000000009121a21272c2e2f2f2f2f2f2f2f2f2f2e2a251f180f060000000007101920262b2e2f2f2f2f2f2f2f2f2f2e2b27211a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020201e1b161009010000000013202c3946535f6c79868888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888174675a4d4134271a0e0000000000050b0f1214151516161615151412100e0b08040000000000000000000000000000000000000000000000000000000000000000010c17212c37414c56626f7c8996a2afa99c908376695c51473c32271c12070000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca093867974747474747474747474747474747474747a85909aa5aa9f948a7f746a5f57524d47413a332b231b1209000000000000000000000013202c3946535f6c798693887b6f62554f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5c697683908c7e7265584c3f3225190c000b17222d38424a5154555555555555555555555555555555555555555555555555545352504e4c4a4743403c38332e29231d17110a030000000000000000000000000000000000000000000000000000040b12181e24292e33373b3e424547494b4d4e4f50515151515151504f4e4d4b494745423e3b37332e29241e18110b04000000000000000000000000000000060c10131515151515151515151513100c0600000000000000000000000000000000000000000000060c10131515151515151515151513100c070000000000000000000000000000000000000000000000000000000000000000000008111a232c343c444c535b61686e73797d82868a8d909294969798999a9a9a9998979694918f8c8885817c77716b655f58514a423a322921180e050000000000000000000013202c3946535f6c798693a0acafa69f9d94897e73695f57504b47464545474b5159626d77838e99a5b1a69a8e82766a5d5145392c201407000005111e2a3743505c6975828e9ba7ab9e9285796c6053473a2e221509000000000000000000000000000013202c3946535f6c798693a0aca4978a7d71717171717171717170695e5245392c20130700030e19232c343b4042434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434342403b342c23190e0300000a141e262e34393b3c3c3c3c3c3c3c3c3b39352f281f160c01000007111b242c33383b3c3c3c3c3c3c3c3c3c3a36312921180e030000050f19222a31373a3c3c3c3c3c3c3c3c3c3b37322b231a100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131313131313131313131313110f0a0500000000000013202c3946535f6c798693959595959595959595959595959595959595959595959595959595959595959595959595959595959595958e8174675a4d4134271a0e000000010910161b1f2022222222222221201f1d1a1714100b0600000000000000000000000000000000000000000000000000000000000008131e28333e48535e68737d8996a2afa99c9083786e63594e43392e23190e0300000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386818181818181818181818181818181818181818c96a1aca4988d83786f6b67635e58524c453d352d241b12090000000000000000000013202c3946535f6c798693887b6f6255484343434343434343434343434343434343434343434343434343434343434343434343434f5c697683908c7e7265584c3f3225190c000f1b27333f4a545c6161616161616161616161616161616161616161616161616161605f5d5b595653504c48443f3a342f28221c150d06000000000000000000000000000000000000000000000000070e151c23292f353a3f43474b4e515456585a5b5c5d5e5e5e5e5e5e5d5c5b5a585654514e4b47433f3a352f29231c150e06000000000000000000000000020a11181c2021222222222222222221201c18110a02000000000000000000000000000000000000020a11181c2021222222222222222221201c18120a0200000000000000000000000000000000000000000000000000000000000000000008111a222b333a424950565c62686d72767a7d81838688898b8c8c8d8d8d8c8c8a89878582807c7874706b66605a544d473f38302820170f06000000000000000000000013202c3946535f6c798693a0aca89d94909490857b7169615b575452525254575c636b747e89949faaaca195897d72665a4d4135291d10040000020f1b2834414d5a66737f8c98a4ada194887b6f63564a3e3125190c000000000000000000000000000013202c3946535f6c798693a0aca4978a7e7e7e7e7e7e7e7e7e7e7a6d6154473a2e211407000914202a353e464c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4c463e352a2014090006111c26303840454848484848484848484846413a31281e130800020d18232d363e444748484848484848484846423b332a20150a00000b16212b343c434748484848484848484847433d352c22180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29a8e8174675a4d4134271a0e0000010b131b22272b2d2e2f2f2f2f2f2e2d2b292724201c17110b05000000000000000000000000000000000000000000000000000000050f1a252f3a454f5a646f7a858f9aa5b1aca0958a80756a60554a40352a20150a00000000000000000000000000000000000000000013202c3946535f6c798693a0acafa3978f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e939da8b0a3968a817e7b78736f69635d564f473f372e241b120800000000000000000013202c3946535f6c798693887b6f6255483c36363636363636363636363636363636363636363636363636363636363636363636434f5c697683908c7e7265584c3f3225190c00121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6b6a6865635f5c58544f4a45403a342d261f1810080000000000000000000000000000000000000000000009111920272e353b40464b4f53575a5d6062646668696a6a6b6b6b6b6a6a6968666563605d5a57534f4a45403a342e272018100800000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140b0200000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140c02000000000000000000000000000000000000000000000000000000000000000000081019212830373e454b51575c61666a6e717477797b7d7e7f80808180807e7d7c7a787673706c68645f5a554f49433c352e261e160e0500000000000000000000000013202c3946535f6c798693a0aca5988c848b968d847b736c6763615f5f5f6063676d757d87909ba5b0a69b9084796d6155493d3125190d010000000c1925323e4a5763707c8995a1aea4978b7e7266594d4135281c10040000000000000000000000000013202c3946535f6c798693a0aca59a8f8b8b8b8b8b8b8b8b8b877a6d6154473a2e211407000d1925313c4650575c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5750463c3125190d000b17222d38424a5155555555555555555555524c433a2f24190d0107131f2a353f484f54555555555555555555534d453c31261b0f0305111c28333d464e53555555555555555555544f473e34291e120600000000000000000000000000000000000000000000000000000000000000010305060708080808070604020000000000000000000000000000000102030303020100000000000000000000000000000013202c3946535f6c798693a0acaeaea9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59a8e8174675a4d4134271a0e000009131d252d33373a3b3c3c3c3c3c3b3a383633302c27221d160f0800000000000000000000000000000000000000000000000000010c16212c36414c56616b76818c96a1acb6b1a69c91877c71675c51473c31271c1107000000000000000000000000000000000000000013202c3946535f6c798693a0acb4a9a19b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ea5afb2a69b918e8b8884807a756f686159514940372d231a0f05000000000000000013202c3946535f6c798693887b6f6255483c2f292929292929292929292929292929292929292929292929292929292929292936434f5c697683908c7e7265584c3f3225190c0013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a79787674726f6c6864605b56514b453f38312a221a120a020000000000000000000000000000000000000009121a232a323940464c51565b5f63676a6d6f717374757677777878777777767473716f6d6a67635f5b56514c463f39312a221a12090000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b38342e261d140a000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b39342e261e140a00000000000000000000000000000000000000000000000000000000000000000000070f171e25303a444c535656565a5e6165686a6c6e707172737373737372716f6e6c696763605c58534e49443e38312a231c140c040000000000000000000000000013202c3946535f6c798693a0aca5988c7e8590968d857d78736f6d6c6b6b6d6f73787f878f98a2acaa9f958a7e73685c5045392d211509000000000a16222f3b4754606d7985929eaaa79a8e8275695d5144382c2014070000000000000000000000000013202c3946535f6c798693a0acaba19a989898989898989894877a6d6154473a2e21140700111d2936424d58626869696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696862584d4236291d11000f1b27333f4a545c616262626262626262625d564c41352a1d11050b17242f3b46515a606262626262626262625e574e43382c2014070915212d39444f585f626262626262626262605950463a2f23170a0000000000000000000000000000000000000000000000000000000003070a0d0f111314151515141412110f0c090602000000000000000206090c0d0f0f0f0f0f0e0d0b0906030000000000000000000013202c3946535f6c798693a0acb3a89f99989898989898989898989898989898989898989898989898989898989898989898989898988e8174675a4d4134271a0e0005101b252f373e444648484949494848464542403c38332e28211a120900000000000000000000000000000000000000000000000008131d28333d48535d68737d88939da8aeababaea3988e83786e63584e43382e23180e030000000000000000000000000000000000000013202c3946535f6c798693a0acb9b2aca8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a9a9aaabaca39d9a9794908b868079736b635b52493f352c21170d020000000000000013202c3946535f6c798693887b6f6255483c2f221c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c7986888888888888888888888888888888888888888888888887868583817e7b7874706c67625c565049433b342c241c140b02000000000000000000000000000000000009121b242c343c434a51575d62676b6f7376797b7e80818283848485858484838281807e7c7976736f6b67625d57514a433c342c241b12090000000000000006111c262f383f4548484848484848484848453f382f261c1106000000000000000000000000000006111c262f383f454848484848484848484845403830261c11060000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e6263636363605a5b5e606263656566666766666564636362605e5954504c48433e38322c261f19110a02000000000000000000000000000013202c3946535f6c798693a0aca6998c7f7f8a94968f89837f7c7a797878797c7f848a9199a1aaaba1988d83786d62574b4034281c11050000000007131f2c3844515d6975828e9aa6aa9e9185796d6054483c3024180c0000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a094877a6d6154473a2e21140700121f2c3945525e6a747676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676746a5e5245392c1f1200121e2b3743505b666d6f6f6f6f6f6f6f6f6e685d5246392d2114070e1a2733404c58636c6f6f6f6f6f6f6f6f6e695f54483c2f23160a0b1824313d4a55616a6f6f6f6f6f6f6f6f6f6b62574b3f3326190d0000000000000000000000000000000000000000000000000000050a0f1316191c1e202121222221201f1d1b1916120e0a0500000003090e1215181a1b1c1c1c1c1b19171513100c06000000000000000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8174675a4d4134271a0e000a16212d3741494f535455555555555453514f4c48443f39332c241b120900000000000000000000000000000000000000000000040f1a242f3a444f5a646f79848f9aa4aaa29e9fa4aa9f958a80756a5f554a3f352a1f150a0000000000000000000000000000000000000013202c3946535f6c798693a0acb5aba29d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9d9d9fa0a3a6a7a4a09c97918b847d756d645b51473d33291e13080000000000000013202c3946535f6c798693887b6f6255483c2f2215101010101010101010101010101010101010101010101010101010101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c79869395959595959595959595959595959595959595959594949391908d8b8884817c78736d68615b544d463e362e261d140b0200000000000000000000000000000008121b242d363e464e555c62686e73777b808386888a8c8e8f90919192929191908f8e8c8a888683807b77736e68625c554e463e362d241b11080000000000000b17222d38424a5154555555555555555554514a42382d22170b00000000000000000000000000000b17222d38424a5154555555555555555554514a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000714212d3a46525e686f6f6f6f6f6c635751535557585959595b61666a6d6f6f6f6d6a655f5851483f362d27211b150e070000000000000000000000000000000013202c3946535f6c798693a0aca6998c8078828c969a948f8b898785858586888b90959ba3aba9a19990867c71675c51453a2f23170c000000000003101c2835414d5966727e8a96a3ada195897c7064584c4034281c100400000000000000000000000013202c3946535f6c7986939393939393939393939393939393877a6d6154473a2e2114070013202c3946535f6c798383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383796c5f5346392c20130013202c3946525f6c787b7b7b7b7b7b7b7b7a6e6255483b2f2215080f1c2835424f5b68747b7b7b7b7b7b7b7b7b7064574b3e3124180b0c1926333f4c5965727b7b7b7b7b7b7b7b7b73675a4e4134281b0e000000000000000000000000000000000000000000000000040a10161a1f2326292b2c2d2e2e2e2e2d2c2a2825221e1a16110b05080f141a1e2225272829292928272624221f1c17120b0300000000000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e74675a4d4134271a0e000f1b27333e49535b6061626262626261605e5b5854504a443d362d241b12080000000000000000000000000000000000000000010b16212b36414b56616b76818b96a1aba29891939ba5a69c91867c71665c51463c31261c110700000000000000000000000000000000000013202c3946535f6c798693a0acafa39991909090909090909090909090909090909090909090919294969a9ea2a8a8a39d968f877e766d63594f453a30251a0f0300000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a09f9e9c9a9794918d88847e79736c665f58504840382f261d140a010000000000000000000000000006101a242d374048505860676d74797e83888c8f929597999a9c9d9e9e9e9e9e9e9d9c9b999795928f8c88837e79736d665f5850483f362d231a100500000000000f1b27333f4a545c616161616161616161615c544a3f33271b0f03000000000000000000000000030f1b27333f4a545c616161616161616161615c544a3f33281b0f030000000000000000000000000000000000000000000000000000000000000000000915222f3b4855626e7a7c7c7c7c74675b4e47484a4e545b61666c7176797c7c7b7976716a635a51483e33291e120a03000000000000000000000000000000000013202c3946535f6c798693a0aca69a8d80737a848d969e9b9895939292929395989ba0a6aba59f978f877d746a5f554a3f34291e12070000000000000c1925313d4a56626e7a86929eaaa5998d8174685c5044382c20150900000000000000000000000013202c3946535f6c7986868686868686868686868686868686867a6d6154473a2e2114070013202c3946535f6c798690909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909086796c5f5346392c20130013202c3946535f6c7986888888888888887b6f6255483c2f2215090f1c2835424f5b687582888888888888887e7164574b3e3124180b0d192633404c59667380888888888888888174675b4e4134281b0e0000000000000000000000000000000000000000000000080f151c21262b2f323537393a3b3b3b3b3a383734312e2a26211c1610131a20252a2e313335363636353432312e2c28231c150c03000000000013202c3946535f6c798693a0acaca093867971717171717171717171717171717171717171717171717171717171717171717171717171716d63584c3f33261a0d00111e2a37434f5a656c6e6f6f6f6f6f6e6c6a6864605b564f483f372d241a0f040000000000000000000000000000000000000008121d28323d48525d68727d88929da8a69b908689949ea9a3988d83786d63584d43382d23180e03000000000000000000000000000000000013202c3946535f6c798693a0acaca093878383838383838383838383838383838383838383838485878a8d92979ca3aaa8a19991887f756b61574c41362b20140900000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaeaea8a4a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a5a7a9a9a6a4a09d99948f8a847e777169625a524a41382f261c1309000000000000000000000000030e18222c363f49525a626a71787f858a8f94989b9ea1a4a5a7a7a6a5a4a4a4a4a5a5a6a7a6a4a19e9b98948f8a857e78716a625a51483f352c22170d0200000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b4f43372b1e120500000000000000000000000005121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000815222e3b4854616e7a87898983766a5e52494d53595f666c72787d828688898886827c756c635a4f453a2f23180d01000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173727b848c93999ea2a09f9e9f9fa1a4a8a6a39f9a948d867d756b62584e43392e23180c010000000000000915212d3a46525e6a76828e9aa6a99d9185786c6155493d3125190e020000000000000000000000131f2c3946525f6b767979797979797979797979797979797979776c6053473a2d2114070013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9386796c5f5346392c20130013202c3946535f6c7986939595959595887b6f6255483c2f2215090f1c2835424f5b6875828f95959595958b7e7164574b3e3124180b0d192633404c596673808c95959595958e8174675b4e4134281b0e000000000000000000000000000000000000000000020a121920272d32373b3f4244464748484847464543413e3a36322d28221b1d252b31363a3e404242424242413f3d3b38342e271e150b010000000013202c3946535f6c798693a0acaca09386796c65656565656565656565656565656565656565656565656565656565656565656565656565625b52473b2f23170b0013202c3946525f6b777b7b7c7c7c7b7a797774716c67615951493f362b21160b000000000000000000000000000000000000040f19242f39444f59646f79848f99a4aa9f948a7e828d98a2aa9f948a7f746a5f544a3f352a1f150a000000000000000000000000000000000013202c3946535f6c798693a0acaca0938679767676767676767676767676767676767676767677797b7e81868b9198a0a8aba39a91877d73685e53483c31261a0e03000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acb2a79d9796969696969696969696969696969697989a9c9fa2a6aaa9a5a09b958f89827b746c645c534a41382e251b110700000000000000000000000a151f2a343e48515b646c747c838a90969ba0a4a8a8a5a19f9d9b99989898979898999a9b9da0a3a6a8a4a09b96908a837c746c635a51473e33291e14090000000013202c3946525f6c777b7b7b7b7b7b7b7b776c5f5246392c2013060000000000000000000000000613202c3946525f6c777b7b7b7b7b7b7b7b786c5f5346392d2013060000000000000000000000000000000000000000000000000000000000000000000714202d3a46535f6c79859293867a6e635956595e646b71777d83898e92959695928d877e756c61564b4035291d1206000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d817369727a81888e9396999c9d9e9e9e9d9c9a97938e89827b746b625950463c32271c11060000000000000005111d2936424e5a66727d8995a1ada195897d7165594d42362a1f13070000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b655b5044382b1f12060013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09386796c5f5346392c20130013202c3946535f6c798693a0a2a2a295887b6f6255483c2f2215090f1c2835424f5b6875828f9ca2a2a2988b7e7164574b3e3124180b0d192633404c596673808c99a2a2a29b8e8174675b4e4134281b0e0000000000000000000000000000000000000000020b141c242b32383e43474b4e505254545555545352504d4a47423e39332d26272f363c42464a4d4e4f4f4f4e4d4c4a47443f3930271d12070000000013202c3946535f6c798693a0acaca09386796c5f58585858585858585858585858585858585858585858585858585858585858585858585856514940352a1f13070013202c3946535f6c79868889898988878684817d78726b635b51483d32271c110500000000000000000000000000000000000b16202b36404b56606b75808b96a0aba3988d83787b86919ba6a69b91867b71665b51463b31261c11060000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c696969696969696969696969696969696969696a6c6e71757a80878e969fa8aca3998f857a6f64594e42372b1f1307000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acada1958c8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8c8d909296999ea2a8aca6a19a948d867e766e655c534a40372d23190f0400000000000000000006111c26313c46505a636d757e868e959ba1a7aba6a19c989592908e8d8c8b8b8a8b8b8c8d8f9193969a9ea2a8a7a19b958d867e756c63594f453b30251a0f0400000013202c3946535f6c798688888888888886796c5f5346392c2013060000000000000000000000000613202c3946535f6c798688888888888886796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000005121f2b3844515d6a778390978b80746b6563656a70767c82898f949a9ea2a3a29e9890877d73685c51463a2e22160a000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d817367686f767d82878a8d8f90919292918f8d8a87837d777169625950473e342a20150b0000000000000000010d1925313d4955616d7985919ca8a5998d82766a5e52473b3024180d02000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b53493f33281c0f030013202c3946535f6c798693939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939386796c5f5346392c20130013202c3946535f6c798693a0acafa295887b6f6255483c2f2215090f1c2835424f5b6875828f9ca8afa4988b7e7164574b3e3124180b0d192633404c596673808c99a6afa89b8e8174675b4e4134281b0e00000000000000000000000000000000000000010b141d262e363d43494f53575a5d5f6061616161605e5c5a56534e4a443e3831313941484e5256595b5c5c5c5b5a585654504a42392f24180d0100000013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a463f372e24190e020013202c3946535f6c798693969696959492908d89847d756d63594f44382d22160a0000000000000000000000000000000007121d27323d47525d67727d87929da7a79c91877c71747f8a959faaa2988d83786d62584d43382d23180d0300000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5d5e5f6265696f757c848d96a0aaaba1978c81756a5f53473b2f24170b000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca093867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e7f818386898d92979ca2a8aca59f97908880776e655c52493f352b20160b0100000000000000000b17222d38434d58626c757f8890989fa6ada6a09a95908c89868482807f7e7e7d7e7e7f818284878a8e92979ca3a9a69f9890877e756b61574c42372c20150900000013202c3946535f6c798693959595959386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693959595959386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000003101c2936424f5b6874818d9991867d75716f71757b81878d949aa0a5a2a0a0a1a4a2998f84796e62564a3e32261a0e020000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675e656b71767a7e8182848585858483817e7b77726c665f5850473e352c22180e040000000000000000000915212d3945515c6874808b97a3aa9e92867b6f63584c41352a1e1308000000000000000000000a16212c3740484f525353535353535353535353535353535353524f4941372d22170b000013202c3946535f6c798686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5346392c20130013202c3946535f6c798693a0acafa295887b6f6255483c2f2215090f1c2835424f5b6875828f9ca8b1a4988b7e7164574b3e3124180b0d192633404c596673808c99a6b3a89b8e8174675b4e4134281b0e0000000000000000000000000000000000000009131d262f3840474e555a5f63676a6c6d6e6e6e6d6d6b6966635f5a554f49423b3a434b53595e63666869696968676563605c544b4035291d110500000013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3a342d251c1207000013202c3946535f6c7986919190909193969a99948f877f756b60554a3e32261a0e020000000000000000000000000000040e19242e39444e59646e79848e99a4aba0958a80756a6d78838e99a3a99f948a7f74695f544a3f342a1f140a00000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f534f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f50515355595e636a727b848e99a3aea89d92877b6f64584c4034281b0f030000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386797070707070707070707070707070717274777a7d81868b91979ea5aca9a29a928981776e645b51473c32281d12070000000000000005111d28333e4a545f6a747e88919aa2aaaba39c958f8984807c79777573727171717171727475787a7d82868b91989fa7aaa29990877d73695e53483d31261a0e03000013202c3946535f6c798693a0a2a2a09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0a2a2a09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000e1a2733404c5865717d8a96988f87817d7c7d81868c92989fa59f9a96939394979ca1968a7e73675b4f42362a1e11050000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a5a60656a6e71747677787878777674726e6b66615b544d463e352c231a10060000000000000000000005111c2834404c57636f7a86929da9a3978b8074685d51463b2f24190e0300000000000000000005101a252e373e4346464646464646464646464646464646464646433e372f261b11060000131f2c3946525f6b767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979766b5f5246392c1f130013202c3946535f6c798693a0acaca295887b6f6255483c2f2215090f1c2835424f5b6875828f9ca8aca4988b7e7164574b3e3124180b0d192633404c596673808c99a6aca89b8e8174675b4e4134281b0e00000000000000000000000000000000000007111b252f38414a525960666b6f7376787a7b7b7b7a797775726f6b66615b544d45434c555d646a6f72747575757573726f6d665d5145392d20140700000013202c3946535f6c798693a0acaca09386796c5f534639323232323232323232323232323232323232323232323232323232323232323232312e29231b130a00000013202c3946535f6c79868584848485868a8e959d9991877d72665a4e42362a1e110500000000000000000000000000000b15202b35404b55606b75808b95a0aba4998e84796e6367717c87929ca7a69b91867b71665b51463b31261b1106000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346434343434343434343434343434343434446494d52596069727c87929da8afa3988c8074685c5044372b1f12060000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c636363636363636363636363636466686a6d71757a80868c939aa2aaaca49b938980766d63594e44392f24190e030000000000000b16222e3944505b66717b86909aa3acaaa199918a837d7874706d6a68676565646464656667696b6e71757a80868d959ea7aba2998f857a7065594e42372b1f1307000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000b1724303d4955616e7a86929d99928d8a898a8d92979ea4a09a948e898786888b91999b8f83776b5e52463a2d2114080000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4f555a5e626567696a6b6b6b6b696865625e5a555049433b342c231a11080000000000000000000000000c18242f3b47525e6975818c97a3a89c9185796e63574c41352a1f14090000000000000000000009131c252c32373939393939393939393939393939393939393937332d251d140a000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e110013202c3946535f6c798693a0a0a0a095887b6f6255483c2f2215090f1c2835424f5b6875828f9ca0a0a0988b7e7164574b3e3124180b0d192633404c596673808c99a0a0a09b8e8174675b4e4134281b0e0000000000000000000000000000000000030e18232d37414a535c636b71777b80838586888888878684827e7b77726c665f574f4b555e676f757b7e8182828281807e7c786e6155483b2f22150800000013202c3946535f6c798693a0acaca09386796c5f5346392c252525252525252525252525252525252525252525252525252525252525252524221d18110a0100000013202c3946525f6b777978777777787a7d838b949f998e83776b5e5246392d2014070000000000000000000000000007121c27323c47525c67727c87929ca7a89d92877c72675c606a75808b96a0aba2988d82776d62584d42382d22180d020000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f534639363636363636363636363636363637383a3d41474e57606a75818c98a3afa89c9184786c6053473a2e2215090000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f56565656565656565656565758595b5e6165696f747a81889098a0a9ada49b92897e756a60564b40352a1f14090000000000030f1b27333e4a56616c77828d98a2acaba2988f877f78726d6864605e5c5a595857575758595a5c5f6265696f757b838c959ea8aba1978c81766a5f53473b2f23170b000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000814212d3945515d6975818c97a19d99979697999ea3a19b958f88827d7a797b8087909a93877a6e6255493d3024170b0000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d494e5255585b5c5d5e5e5e5e5d5b5956524e4a443e38312a221a11080000000000000000000000000007131f2a36424d59646f7b86929da8a2968b7f74685d52473c31261b1005000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27221b130b020000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e0013202c3946535f6c7986939393939393887b6f6255483c2f2215090f1c2835424f5b6875828f93939393938b7e7164574b3e3124180b0d192633404c596673808c93939393938e8174675b4e4134281b0e000000000000000000000000000000000009141f2a353f49535c656e757c82878c8f91939495949493918e8b87837d7770696159525c67707981878b8e8f8f8f8e8d8b887b6f6255483c2f22150900000013202c3946535f6c798693a0acaca09386796c5f5346392c20181818181818181818181818181818181818181818181818181818181818181715120d070000000000111e2a37434f5a656c6c6b6a6a6a6b6d7278828d999f93877a6e6155483b2f221509000000000000000000000000030e19232e39434e59636e79838e99a3aba1968b81766b605559646e79848f99a4a99f94897e74695f54493f34291f14090000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c292929292929292929292929292a2b2d31363c454e59646f7b87939facada194887b6f63564a3d3124170b0000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f534a4a4a4a4a4a4a4a4a4a4a4b4c4f5155595e636970767e868e97a0a9ada49a91877c72675d52473c31251a0f030000000007131f2b37434f5b67727d89949fa9aea49990867d756d67615c5854514f4d4c4b4b4b4b4b4c4e505255595e636a7179838c96a1aca89e92877b7064584c4033271b0f020013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000005111d2935414d58646f7a858f99a2a6a3a3a3a6a29c96908a837d77716d6d6f757e8893968a7d7165584c3f3326190d0000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d404246494c4e505151515151504e4c4946423e39332d261f1810080000000000000000000000000000020e1925313c47535e6a75808c97a2a79c90857a6e63584d42372c21170c01000000000000000000010910161a1e1f2020202020202020202020202020202020201e1b16100901000000000a16212c3740484f525353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524f4840372c21160a0013202c3946535f6c7986868686868686867b6f6255483c2f2215090f1c2835424f5b687582868686868686867e7164574b3e3124180b0d192633404c59667380868686868686868174675b4e4134281b0e00000000000000000000000000000000040f1a26313c46515b656e7780878e93989b9ea0a1a2a1a19f9d9b97938e89827b736b6259636e78838b92979a9c9c9c9b9995887b6f6255483c2f22150900000013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0906010000000000000f1b27333e49535b60605e5d5d5d5f6167717d8a96a296897c6f6356493d3023160a0000000000000000000000000a15202a35404a55606a75808a95a0aaa59a8f84796f64594f525d68727d88939da8a69b90867b70665b50463b30261b100600000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201c1c1c1c1c1c1c1c1c1c1c1c1d1e21252b333d47535f6b7783909ca8b0a4978b7e7265584c3f3326190d0000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f53463d3d3d3d3d3d3d3d3d3d3e404245494d52585e656c747c858e97a1abaca3988e84796e63584d42372b201409000000000b1723303c4854606c77838f9aa5b0a79d92887e746b635c56504b484542413f3e3e3e3e3f40414346494d52585f67707a85909ba6afa3988c8074685c5043372b1e12050013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000010d1925303c47535e69737d8790979c9fa09e9b96918b857e78726c666160636c76818d998d8074675a4e4135281c0f0200000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40363a3d3f414344454545444342403d3a36322d28221c150e06000000000000000000000000000000000914202b36424d59646f7a85909ba6a1968b8075695e53493e33281e13090000000000000000000000050a0e1113131313131313131313131313131313131313110f0a0500000000000005101a252e373e4346464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372e251a100500131f2c3946525f6b767979797979797979786d6155483b2f2215080f1b2835424e5b67737979797979797979797063574a3e3124170b0c1926333f4c58657179797979797979797972675a4d4134271b0e000000000000000000000000000000000914202b37424d58636d77818991999fa4a8a5a19d9b9a9a9a9b9c9f9f9a948d857d746b626974808a949da3a7a6a09b989795887b6f6255483c2f22150900000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d3741494f53575a5a5a5a5b5d636f7c8996a2968a7d7063564a3d3023170a000000000000000000000007111c27313c47515c67717c87919ca7a89e93887d73685d52484b56616b76818c97a1aca2978d82776d62574d42372d22170d02000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013101010101010101010101010121519212b36424f5b6774818d9aa6b3a6998d8073675a4d4134271b0e0100000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f534639303030303030303030323336393d41474d535a626a737c858f99a3adaaa0958b8075695e53483c3125190e020000000e1b27333f4c5864707c8894a0abada1968b80766c6259514a443f3b383634333231313132333437393d41474d555e68737e8a96a1ada89c9084786b5f53463a2d2114080013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000814202b36424c57626b757e868c909293918f8a85807a736d67615b55535a65717d89938f8276695c5043372a1d110400000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342d303335363738383838373533312e2a26211c17110a030000000000000000000000000000000000030e1a25313c47525e69747f8a959fa79c91867b70655a4f453a2f251a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937322c251c13090000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c665c5145392d2014070d1a26333f4b5761696c6c6c6c6c6c6c6c6c675e53473b2f2216090b1724303d49545f686c6c6c6c6c6c6c6c6c6961564a3e3226190d000000000000000000000000000000010d1925313d48535f6a747f89939ba3aaa7a09a95918e8d8d8d8e9092969a9e978f877d746a6d7985919ca6afa59c958f8c8a8b887b6f6255483c2f22150900000013202c3946535f6c798693a0acaca09386796c5f5346392c20130606060606060606060606060606060606060606060606060606050300000000000000000000000005101b252f37434f59626767676767696d75808b98a195887c6f6256493c3023160900000000000000000000030e18232e38434e58636e78838e98a3aca2978c81766c61564c41444f5a656f7a85909aa5a99e94897e74695e54493e34291f1409000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000305080f1a26333f4c5965727e8b98a5b2a89b8e8275685b4e4235281c0f0200000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c23232323232323242527292d31363b42495058616a737d87919ba6b1a79c91867b7064594d42362a1e1307000000111e2a36434f5c6874818c989d9fa29c9085796e645a50473f39342f2c292726252424242526282a2d31363c434c57626d7985919eaaaca094877b6e6255493c2f23160a0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000030e1a25303b45505a636c747b8084868685827e79746e68625c564f494854616d7986868684776b5e5145382b1f120500000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034272426282a2b2b2b2b2b2a282724211e1a16110b0500000000000000000000000000000000000000000914202b36414c57626d78838e99a3a2978c82766c61564c41372c22180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a0100000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5b544a4034291d11040a17232f3a454f585e5f5f5f5f5f5f5f5f5f5c554c42372b1f13070814202c38434d565d5f5f5f5f5f5f5f5f5f5d574f44392e22160a00000000000000000000000000000005111d2a36414d5965707b86919ba5ada69d958f8985828180808183868a8e93999990867c72717d8a96a2ada99e938a837f7d7e807b6f6255483c2f22150900000013202c3946535f6c798693a0acaca09386796c5f5346392c2013131313131313131313131313131313131313131313131313131312100c0701000000000000000000000915212e3b4754606b737473737476797f87919c9c9185796d6054473b2e221508000000000000000000000a151f2a353f4a555f6a75808a959faaa59b90857a70655a4f453a3d48535e68737e89949ea9a59b90857b70655b50453b30251b10060000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000b1825313e4b5764717e8b98a4b1a89c8f8275685b4f4235291c0f0200000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2017171717171717181a1d20252a30373e464f58616b757f8a949faaaea3978c81756a5e52473b2f23170b000000131f2c3945525f6b77848b8e909395978b8074685d52483e352e2823201d1b1918181818181a1b1e21252a313a45515d6975828e9ba7afa3968a7d7064574a3e3124180b0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000009141f29343e48515a62696f747779797876726e68635d57514a443e45525e6a7679797979766a5e5145382b1f120500000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a1a1b1d1e1e1e1e1e1d1c1a1815120e0a0500000000000000000000000000000000000000000000030e1925303b46515c67717c87919ca69e93887d73685d53483e342a1f150b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1e1a161009010000000a16212c3740484f52535353535353535352504a42382e23180c0006121e29333d464d51535353535353535353504b433a30251a0e0304101b27313b444c51535353535353535353514d453d33281d11060000000000000000000000000000000915212d3a46525e6a75818d98a2ada89e948b847d787573737375777a7d82888e95988e847a74818d99a6afa3988c827873717173746b6054473b2e21150800000013202c3946535f6c798693a0acaca09386796c5f5346392c202020202020202020202020202020202020202020202020202020201f1c18120b040000000000000000000915222f3c4855626f7b8181818182858a91999d948b8074695d5144382c1f130600000000000000000006111c26313c46515c66717c86919ca6a99f94897e74695e53493e3337414c57626c77828d98a2aca2978c82776c62574c42372d22170d0200000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000001040b1825313e4b5764717e8b98a4b1a89c8f8275685b4f4235291c0f0200000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c20130a0a0a0a0a0a0c0e1114191f252c343d464f59636d78838e99a4b0a99d92867a6f63574b3f34271b0f03000013202c3946525f6c777c7e818486898b877b6f63574c41362c231d1713100e0d0c0b0b0b0c0d0f1115191f2934414d5a6673808c99a6b1a5988b7e7265584c3f3226190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000020d17222c363f4850585e64686a6c6c6b6966625d57524c463f3936424e59646b6c6c6c6c6b64594e4236291d100400000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0f101112121211110f0d0b0805020000000000000000000000000000000000000000000000000008131e29343f4a55606a75808a959fa59a8f847a6f655a50463b31271d130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110e0a05000000000005101a252e373e4346464646464646464646433f3830261c120700010c17212b343c414546464646464646464644403931281e140900000a152029323a404446464646464646464645413b342b21160c000000000000000000000000000000000c1824313d4956626e7a86929ea9aca1968c8279726c69676667686a6d71767c838a92968c8177838f9ca9ac9f93877b706764656767625a4f43382b1f130600000013202c3946535f6c798693a0acaca09386796c5f5346392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28231d160d0400000000000000000814212e3a47535f6b77838d8d8e8f92969a96928b82796e63584c4034281c10040000000000000000030d18232d38434d58636d78838d98a3ada2988d82776d62574c42372c303b45505b66707b86919ba6a99e93897e73695e53493e34291e140900000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0b0b0b0b0b0c0c0e10141b2733404c5965727e8b98a5b2a89b8e8275685b4f4235281c0f0200000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000104080e141b222b343d47515c66717c88939eaaaea3978b8074685c5044382c1f13070000111e2b37434f5b656d707275777a7c7e81776b5f53473b2f241a110b070401000000000000000205080e1926323f4c5865727e8c98a5b2a6998c807366594c403326190d0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000006101a242d363e464d53585b5e5f5f5f5d5a56514c46413b342e313d48525a5f5f5f5f5f5f5a52483d31261a0e0100000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e39434e59636e78838d98a2a1968b81766c62574d43392f251c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393937332d261e140b000000051019222a30353839393939393939393938342f281f160c020000030e1720292f35383939393939393939393835302922190f05000000000000000000000000000000000e1b2734404d5965727e8a97a3aea79b90857a7067615c5a595a5b5e61666b717880889193887d84919eaaa99c9083776b5f57585a5b5750483d32271b0f0300000013202c3946535f6c798693a0acaca09386796c5f534639393939393939393939393939393939393939393939393939393939393938342f281f160c020000000000000006121e2b37434f5b67737e8b979a94908f8d8a86807970675d52473b3024180c0000000000000000000a141f2a343f4a545f6a747f8a949faaa69c91867b71665b50463b302529343e49545f69747f8a959faaa59b90857a70655b50453b30251b1005000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20181818181818181818181818191a1d20252d38434f5b6874818d9aa6b3a69a8d8174675a4e4134271b0e0100000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000002091019222b353f4a55606b76828d99a5b1a89c9084786c6054483c2f23170b00000f1b27333e49535b616366686b6d70727571675b4f42362a1e130800000000000000000306090c1014181e26333f4c5965727e8c98a5b2a6998c807366594c403326190d0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000008121b242c343b42474c4f51535352504e4a46403b352f29232b3640484e5253535353524e4840362b2015090000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000006111c27323d47525c67717b86909aa49d93887e74695f554b41372e241a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001030506070808080807060402000000000000000000000000000000010203030302010000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b27221c140c02000000000710181f25292c2c2c2c2c2c2c2c2c2c2b28231d160d0400000000050e171e24292b2c2c2c2c2c2c2c2c2c2c29251f1810070000000000000000000000000000000000101d2936424f5b6875818e9aa6afa3978b7f73685e56504d4d4d4f51555a60666e767f88928f8486929faba79a8e8174685b4f4b4e4e4b463f362c21160a0000000013202c3946535f6c798693a0acaca09386796c5f534646464646464646464646464646464646464646464646464646464646464644403931281e140900000000000000020e1a26323e4a56626e7a8692988c8382817e7a756e675e554b40352a1f1308000000000000000006111b26313b46515b66717b86919ba6aa9f958a7f746a5f54493f34291f222d38424d58636d78838e99a3aca1978c82776c61574c42372c22170c020000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c252525252525252525252525252627292c31373f4954606b7784909ca9b1a4988b7e7265594c3f33261a0d0000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000071019232e38434f5a65717d8894a0acaca194887c7064584b3f33261a0e01000b16222d38414a505457595c5e61636668665f564a3f33271a0e020000000104070a0c0f1215181c2024293038424e5b6774808d99a6b2a5998c7f7266594c3f3326190d0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000009121a222a30363b3f424546464544413e3a352f2a241e1a242e363d43454646464645433d362e241a0f040000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202b36404b555f6a747e88929ca49a90857b71675d534940362c23180e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0d0f111314151515141412110f0c090602000000000000000206090c0d0f0f0f0f0f0e0d0b09060300000000000000000000000000000000000000000000000000010910161a1e1f2020202020202020201e1b17110a02000000000000060e14191d1f2020202020202020201f1c18120b04000000000000050c13181c1f2020202020202020201f1d19140d06000000000000000000000000000000000000111e2b3744515d6a7783909da9aca093877a6e62574c444140404245494e555c646d76808a948f8f97a2aea6998c807366594d4041413f3b342d241a0f050000000013202c3946535f6c798693a0acaca09386796c5f5353535353535353535353535353535353535353535353535353535353535353504b433a30251a0e03000000000000000a16222e3a46525e6a76828e998d827674726e69645d554c43392f24190e0200000000000000020d18222d38424d58626d78828d98a2ada3998e83786e63584d43382d22181b26313c46515c67717c87929ca7a99e93897e73695e53493e33291e13090000000000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232323232323436383c4249515b66717c8894a0acada195897c7063574a3e3124180b0000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000007111c27323d4954606c7884909ca8b1a5988c8074675b4f42362a1d11040005111b262f383f44484a4d4f525457595b5a554d44392e22170a0205080b0d101316191c1f2225282c30353b414a545f6a76838f9ca8b1a4978b7e7165584b3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000810181f252b2f3336383939393735322e29241e1913121b242c323639393939393936322c241b1208000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242e39434d58626c76808a949da1978d83796f655b52483e352a1f1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f1316191c1e202121222221201f1d1b1916120e0a0500000003090e1215181a1b1c1c1c1c1b19171513100c0600000000000000000000000000000000000000000000000000050a0e1113131313131313131313120f0b0600000000000000000003080d101213131313131313131312100c0701000000000000000001070c101213131313131313131312100d080200000000000000000000000000000000000000121f2c3945525f6b7885929eabaa9e9184786b5f52463a34333436393d434a525b646d78828d989ba0a9b2a6998c7f7265594c3f3435332f2a231b1208000000000013202c3946535f6c798693a0acaca09386796c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c554c42372b1f13070000000000000006121e2a36424e5a66727e8a9692867a6e65625e58524b433a31271d1208000000000000000009141f29343f49545f69747f89949fa9a79c92877c71675c51463c31261c11141f2a353f4a55606a75808b96a0aba59a90857a70655a50453a30251a100500000000000013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3e3e3e3e3e3f3f404245484d535b636d77828d99a4b0a99d9185796d6054473b2f2216090000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000b16212c3844505b6774808c98a4b1a89c9083776a5e5245392c20130700000a141d262d34383b3e404345484a4d4f4e4a443b32281d110b0e1114171a1d1f2225282b2e3134383c41464c535c66707b87939fabaea295897c7063564a3d3124170b0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a1f2327292b2c2c2c2b2825221d18130d0809121a21262a2c2c2c2c2c2c2a26211a120900000000000000000000000000000000000013202c3946535f6c798693a0a0a09a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000008121d27313c46505a646e78828b959f9f958b81776d645a50463b3024180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a10161a1f2326292b2c2d2e2e2e2e2d2c2a2825221e1a16110b05080f141a1e2225272829292928272624221f1c17120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facaa9d9083766a5d5044372a2627292d32394049525c66707b86929da9b2b2a6998c7f7265594c3f322826231e18110900000000000013202c3946535f6c798693a0acaca09386796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c675e53473b2f22160900000000000000010d1925313d4956626d798692938b7f73675b524d47403931281f150b010000000000000006101b26303b46505b66707b86909ba6aba0968b80756b60554a40352a1f150a0e18232e39434e59646e79848f99a4aca1978c81776c61574c41372c21170c01000000000013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4c4d4f5154595e656d757f89949faaafa4998d8175695d5144382c1f13070000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000004101c27333f4b5763707c8895a1adac9f93867a6d6154483b2f2216090000020b141c23282c2f313436393b3e4042413e393229201614171a1d202326292c2f3235383a3d4144484c51575e656e77828d98a3afab9f92867a6d6154483b2f2216090013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e13171a1d1f20201f1e1c1916110d07020000080f151a1e1f202020201f1e1a150f080000000000000000000000000000000000000013202c3946535f6c798693939393938d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000b15202a343e48525c667079838d939393938980766c62584c4034281b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151c21262b2f323537393a3b3b3b3b3a383734312e2a26211c1610131a20252a2e313335363636353432312e2c28231c150c0300000000000000000004070808080808080808080704010000000000000000000000000000000000000000000000000306080808080808080808080808070400000000000000000000000000000407080808080808080808060300000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaa9d908376695d5043362a1d1a1d21272e37404a545f6a75818c98a3afb2a6998c7f7265594c3f32261a17130d060000000000000013202c3946535f6c798693a0acaca0938679797979797979797979797979797979797979797979797979797979797979797979797063574a3e3124170b00000000000000000915212d3945515d69758186868684786c5f53463c362f271f160d0300000000000000020d17222d37424d57626d77828d97a2ada4998f84796e64594e43392e23190e0307111c27323c47525d68727d88939da8a89e93887e73685e53483e33281e1309000000000013202c3946535f6c798693a0acaca09386796c5f5858585858585858585858585858585858595a5b5e61656a70777f88919ba5b0a99e93887c7065594d4034281c10030000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000b17232f3b4754606c7985929eabaea295897c7063574a3e3124180b000000020a11171c202225272a2c2f31343535322d2720181c2023272a2d303335383b3e4144474a4d5054585d62686f77808a949ea9b2a69a8e83766a5e5245392c2013070013202c3946535f6c798693a0acaca09386796c5f5346392c2013060303030303030303030303030613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0e1012131313110f0d0906010000000000040a0e11131313131313110e0a04000000000000000000000000000000000000000013202c3946535f6c79868686868686868173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222c36404a545e67717a848686868686867e74695c4f4336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121920272d32373b3f4244464748484847464543413e3a36322d28221b1d252b31363a3e404242424242413f3d3b38342e271e150b01000000000000060c101315151515151515151513110c07010000000000000000000000000000000000000000040a0f1214151515151515151515151513100c0700000000000000000000060c1013151515151515151515130f0b050000000000000000000000000000000000000000000013202c3946535f6c7986929facaa9d9084776a5d5144382b1f1a18161c252e38424d58646f7b87939fabb2a6998c7f7265594c3f3226190c0702000000000000000013202c3946535f6c798693a0acada09489868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b000000000000000005111d2935414d5965717979797979766b5f5346392d241d150d04000000000000000009141e29343e49545e69747e89949ea9a89d93887d72685d52473d32271c120700000b15202b36404b56616b76818c97a1aca59a8f857a6f655a4f453a2f251a10050000000013202c3946535f6c798693a0acaca09386796c6565656565656565656565656565656565656566686a6d71757b8189919aa3adaba1978d82766b6054483c3024180c000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000007131f2b3844515d6976838f9ca8b1a4988b7e7265594c3f33261a0d0000000000060c101316181b1d20222527282826221c2125282c303336393c3f4245484a4d505356595c6064696e737a8189929ba5b0aba0958a7e72665a4e4236291d11040013202c3946535f6c798693a0acaca09386796c5f5346392c2013101010101010101010101010101013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6b7679797979797979797266594d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a242e38424c555f6872797979797979797974685c4f4336291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c242b32383e43474b4e505254545555545352504d4a47423e39332d26272f363c42464a4d4e4f4f4f4e4d4c4a47443f3930271d120700000000020a11181c20212222222222222222201d18120b03000000000000000000000000000000000000070f151b1f212222222222222222222221201c18120a02000000000000020a11181c202122222222222222211f1c161009010000000000000000000000000000000000000000121f2c3845525e6b7884919eaaab9e9285796c6053473b312b272423222126313c47535f6b77838f9ca8b2a6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acb0a59b949393939393939393939393939393939393939393939393939393939393939393938b7e7164574b3e3124180b0000000000000000010d1925313d49545f686c6c6c6c6c6b645a4f43372b1e120b03000000000000000005101b25303b45505b65707b85909ba5aca1968c81766b61564b40362b20160b000000040f19242f3a444f5a656f7a85909aa5aca1968c81766c61564c41372c21170c0100000013202c3946535f6c798693a0acaca09386797171717171717171717171717171717171717272737476797d81868c939ba3acaca39990857b70655a4e43372c201408000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000003101c2835414e5a6774818d99a6b3a69a8d8174675a4e4135281b0f000000000000000407090c0e111316181a1c1b1f24282d3135383c3f4246494c4e5154575a5d606366696c70757a7f858c939ba4adaea49a8f84786d61564a3e32261a0d010013202c3946535f6c798693a0acaca09386796c5f5346392c201c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040608090a0b0b0c0c0c0b0b0a0807050301000000000000000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6960554a3d3125180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c26303a434d5760686c6c6c6c6c6c6c6c6a62584c4034271b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141d262e363d43494f53575a5d5f6061616161605e5c5a56534e4a443e3831313941484e5256595b5c5c5c5b5a585654504a42392f24180d010000020b141c23282c2e2e2e2e2e2e2e2e2e2d29241d150d030000000000000000000000000000000008111920262b2e2e2e2e2e2e2e2e2e2e2e2e2c28231c140c0200000000020b141c23282c2e2e2e2e2e2e2e2e2e2c27221b130a0000000000000000000000000000000000000000111e2a3744505d6976838f9ca8ada194887c6f63584d433c3633312f2e2e2d2d37424e5b6773808c99a5b2a6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acb7ada5a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988b7e7164574b3e3124180b0000000000000000000814202c38434d565d5f5f5f5f5f5f5a52493e33271b0f020000000000000000020c17222c37424c57626c77828c97a2aca59a90857a6f655a4f443a2f24190f040000000008121d28333d48535e68737e89949ea9a89d93887d73685d53483d33281e130800000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e80818386898d92979ea5acaaa29a91877e74695f54493d32261b0f03000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000d1926333f4c5865727e8b98a4b1a89b8f8275695c4f4336291c1000000000000000000000000104070c13191f252a2f34393d4145484c4f5255585b5e606366696c6f7275797c81858a90969da5adaea59c92887d72675c5145392d211609000013202c3946535f6c798693a0acaca09386796c5f5346392c2929292929292929292929292929292929292c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090c0e11131416171818191918181716151412100d0b08040100000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d574e44392d211509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a141e28313b454e575d5f5f5f5f5f5f5f5f5e5950463b3024180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d262f3840474e555a5f63676a6c6d6e6e6e6d6d6b6966635f5a554f49423b3a434b53595e63666869696968676563605c544b4035291d110500000a141d262e34383b3b3b3b3b3b3b3b3b39352f271f150b01000000000000000000000000000006101a232b32373a3b3b3b3b3b3b3b3b3b3b3b39342e261e140a000000000a141d262e34383b3b3b3b3b3b3b3b3b38332c251c1208000000000000000000000000000000000000000f1c2835424e5b6774808c99a5b0a4988c8074695f554d4743403e3c3b3a3a3a3a3f4b5864717d8a97a3b0a6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acb9b1aaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4988b7e7164574b3e3124180b00000000000000000004101b26313b444c515353535353524f4940372c21160a00000000000000000009131e29333e49535e69737e89939ea9a99e93897e73685e53483d33281d13080000000000010c16212c37414c57626c77828d98a2ada49a8f857a6f645a4f453a2f251a0f05000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8c8e909295999ea3a9aca69f9890887e756c62574d42372c21150a00000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000b1824313e4a5764707d8a96a3b0a99d9083766a5d5044372a1d110000000000000000000000010810171e242a30363b4045494d5154585b5e6164676a6d707376787b7e8285898d91969ca1a8afaca49c938a80766c61564b3f34281d1105000013202c3946535f6c798693a0acaca09386796c5f53463936363636363636363636363636363636363636363946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1215181b1d1f212224242525252525242322201e1c1a1714110d09050000000000000000000000000000000000000000000000000a16212c3740484f525353535353535353514c453c32271c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f29333c454c515353535353535353524e473e342a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252f38414a525960666b6f7376787a7b7b7b7a797775726f6b66615b544d45434c555d646a6f72747575757573726f6d665d5145392d2014070006111c262f383f4548484848484848484845403931271d120700000000000000000000000000020d18222c353d4347484848484848484848484845403830261c1106000006111c262f383f45484848484848484847443e372e241a0f030000000000000000000000000000000000000d1a26333f4b5864707c8995a1aca89c91867b71675f58534f4c4a494847474646464956626f7c8996a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acb3a89f9a9999999999999999999999999999999999999999999999999999999999999999988b7e7164574b3e3124180b000000000000000000000a151f29323a4044464646464646433e372e251b1005000000000000000004101a25303a45505a65707a85909aa5ada2978d82776c62574c41372c21160c0100000000000005101a25303b45505b66707b86919ba6aba1968b81766b61564c41362c21160b000013202c3946535f6c798693a0acb3a89f99989898989898989898989898989898989898989898999a9c9fa2a5a9aaa5a09b948d867e756d635a50463b31261b100400000000000013202c3946535f6c798693887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000091623303c4956626f7c8995a2afaa9e9184776b5e5144382b1e1100000000000000000000020a131a22292f363c41474c5155595d6164676b6e717476797c7f8285888b8e9195999da2a7adada7a19a928a81786e645a4f45392e23180c00000013202c3946535f6c798693a0acaca09386796c5f53464343434343434343434343434343434343434343434346535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000004090e13171b1f2225272a2c2e2f3031323232323231302e2d2b292623201d1915110c070200000000000000000000000000000000000000000005101a252e373e4346464646464646464645413b332a20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d17202a333a4145464646464646464645423c352c22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18232d37414a535c636b71777b80838586888888878684827e7b77726c665f574f4b555e676f757b7e8182828281807e7c786e6155483b2f221508000b17222d38424a51545555555555555554514b43392f23180c0000000000000000000000000009141f29343e474e535555555555555555555554514a42382d22170b00000b17222d38424a515455555555555555544f4940362b2014090000000000000000000000000000000000000a1723303c4854606c7884909ba6aea2978d8379716a635f5b5957555554535353535255626f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaea2978e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b7e7164574b3e3124180b00000000000000000000030d1720282f343839393939393937322c251c13090000000000000000000a16212c37414c57616c77818c97a1aca69b90867b70655b50453a30251a1005000000000000000009131e29343e49545f69747f8a959faaa89d93887d73685d53483d33281d11050013202c3946535f6c798693a0acacaca9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a9a8a6a4a19d99958f89837c746c635b51483e34291f14090000000000000013202c3946535f6c798693887b6f6255483c2f2215090909090909090909090909090909090909090909090909090909101c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000915222f3c4855626e7b8895a2aeab9e9285786b5e5145382b1e12000000000000000000020b141c242c333a41474d52585c6165696d7074777a7d808386898c8e9194979a9da1a5a9aeaca7a29c968f8880786f665c52483e33281d120600000013202c3946535f6c798693a0acaca09386796c5f534f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000040a10151a1f23272b2e313436393a3c3d3e3e3f3f3f3e3e3d3b3a383533302d2925211d18130d0701000000000000000000000000000000000000000009131c252c32373939393939393939393835302921180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18212930353839393939393939393936312b231a11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a353f49535c656e757c82878c8f91939495949493918e8b87837d7770696159525c67707981878b8e8f8f8f8e8d8b887b6f6255483c2f221509000f1b27333f4a545c6161616161616161615d554b4034291d1004000000000000000000000005101b25303b4650595f61616161616161616161615c544a3f33281b0f03000f1b27333f4a545c6161616161616161605a52483c3125190d0000000000000000000000000000000000000714202c3844505c68737e8a959fa9a99f958c837b756f6b6865636261616060605f5f5f626f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca093867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7164574b3e3124180b0000000000000000000000050e161e24282b2c2c2c2c2c2c2a27211b130a010000000000000000000e1a26323d48535e68737e89939ea0a09f948a7f74695f54493e34291e1309000000000000000000020d17222d38424d58636d78838e99a0a0a09a8f84796f645a4f44392e2216090013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9e9d9c9a9895918d89847e78716a625a51493f362c22180d030000000000000013202c3946535f6c798693887b6f6255483c2f2215151515151515151515151515151515151515151515151515151515151c2936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000815222e3b4855616e7b8894a1aeab9e9285786b5f5245382c1f120000000000000000020b141d262e363e454c52585e63686d7175797d8084878a8d8f9295989b9ea1a4a7aaadada9a5a09b96918b857e766e665d544a40362c21170c0100000013202c3946535f6c798693a0acaca09386796c5f5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000030910161b21262b2f33373b3e40434547484a4b4b4c4c4b4b4a49484644423f3c3935312d28231e18130d0600000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29241e170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e24292b2c2c2c2c2c2c2c2c2c2a252019110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a26313c46515b656e7780878e93989b9ea0a1a2a1a19f9d9b97938e89827b736b6259636e78838b92979a9c9c9c9b9995887b6f6255483c2f22150900121e2b37434f5b666d6e6e6e6e6e6e6e6d675c5145392c20130700000000000000000000010c17212c37424d57626b6e6e6e6e6e6e6e6e6e6e6d665b5044372b1f120500121e2b37434f5b666d6e6e6e6e6e6e6e6c64594d4135291c1004000000000000000000000000000000000004101c28343f4b57626d78838d97a1a9a79e958d86807b777472706f6e6d6d6d6d6c6c6c6b6f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca0938679727272727272727272727272727272727272727272727272727272727272727272726c6155493d3023170a000000000000000000000000050c13181c1f20202020201f1e1b1610090100000000000000000000111d2a36434e5a656f7a858f93939393938d83786d62584d42382d22170d020000000000000000000006101b26313c46515c67717c879293939393938b81766b61564a3e3225190c0013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939292918f8d8b8885817d78736d665f5850483f372d241a1006000000000000000013202c3946535f6c798693887b6f6255483c2f222222222222222222222222222222222222222222222222222222222222222936434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000815222e3b4855616e7b8894a1aeab9f9285786b5f5245382c1f1200000000000000000a141d262f38404850575d63696f74797d8285898c909396999c9fa1a4a7aaadadaaa7a4a19d9994908b858079736c645c544b42382f251a10050000000013202c3946535f6c798693a0acaca09386796c696969696969696969696969696969696969696969696969696969696c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000070e141b21272c32373b3f43474a4d4f5254555657585858585857565453514e4c4945413d39342f2a241e18110a03000000000000000000000000000000000000010910161a1e1f20202020202020201f1c19130d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d13181c1f20202020202020201f1d1a140e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b37424d58636d77818991999fa4a8a5a19d9b9a9a9a9b9c9f9f9a948d857d746b626974808a949da3a7a6a09b989795887b6f6255483c2f2215090013202c3946525f6c777b7b7b7b7b7b7b796d6154473b2e2114080000000000000000000008131d28333e49535e69747b7b7b7b7b7b7b7b7b7b786c5f5346392d2013060013202c3946525f6c777b7b7b7b7b7b7b75695d5145382c2013070000000000000000000000000000000000000b17232f3a45515c67717b858f979fa6a79f98918c8784817e7d7c7b7a7a797979797978787b8895a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c656565656565656565656565656565656565656565656565656565656565656565625a5045392d2114080000000000000000000000000001070c1012131313131313110e0a05000000000000000000000000121f2c3945525e6b768186868686868686867c71665c51463b31261b10060000000000000000000000000a141f2a353f4a55606a758086868686868686867d72665a4d4034271a0e0013202c3946535f6c79868686868686868686868686868686868686868686868686868686868686858482817e7c7975716c67615b554e463e362d241b120800000000000000000013202c3946535f6c798693887b6f6255483c2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f36434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000915222f3c4855626e7b8895a2aeab9e9285786b5e5145382b1e120000000000000007121c262f38414a525a61686f757a8085898e9295999c9fa2a5a8abaeadaaa7a4a19e9b9894918d88847f7a746e68615a524a423930261d1308000000000013202c3946535f6c798693a0acaca0938679767676767676767676767676767676767676767676767676767676767676798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000020a11181f262c32383d42474b4f5356595c5e6062636465656565646463615f5d5b5855514d4945403b352f29231c150d0600000000000000000000000000000000000000050a0e1113131313131313131312100d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c1012131313131313131313110d09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925313d48535f6a747f89939ba3aaa7a09a95918e8d8d8d8e9092969a9e978f877d746a6d7985919ca6afa59c958f8c8a8b887b6f6255483c2f2215090013202c3946535f6c79868888888888887b6e6154483b2e211508000000000000000000040f19242f3a454f5a65707a85888888888888888886796d6053463a2d20130700131f2c3945525e6b7784888888888885796d6054483c2f23170a00000000000000000000000000000000000006121e29343f4a555f69737c858d959ca1a6a39d9893908d8b8a8888878786868686868585858a96a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f59595959595959595959595959595959595959595959595959595959595959595650483e33281d110500000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6b76797979797979797979756a5f554a3f352a1f140a00000000000000000000000000030e18232e39434e59646e7879797979797979797972665a4d4034271a0e00131f2c3946525f6b7679797979797979797979797979797979797979797979797979797979797978777674726f6c6965605c56504a433c342c241b12090000000000000000000013202c3946535f6c798693887b6f6255483c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c434f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000091623303c4956626f7c8995a2afaa9e9184776b5e5144382b1e11000000000000040e19232e38414a535c646c737a80868b91959a9ea1a5a8acafaca9a6a3a09d9a9895928f8b8884817c78736e69635d575048403830271e140b01000000000013202c3946535f6c798693a0acaca0938783838383838383838383838383838383838383838383838383838383838383838793a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000040c141c232a31373d43494e53575c5f6366686b6d6e70717172727171706f6e6c6a6764615e5a55514c46403a342d261f18100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414d5965707b86919ba5ada69d958f8985828180808183868a8e93999990867c72717d8a96a2ada99e938a837f7d7e807b6f6255483c2f2215090013202c3946535f6c79869395959594887b6e6154483b2e2115080000000000000000000b15202b36404b56616c76818c959595959595959386796d6053463a2d20130700111e2a36434f5b6774808c95959595897c7064574b3f33261a0e010000000000000000000000000000000000010c18232e39434d57616a737b838a90969b9fa2a3a09c9a9896959494949393939292929291939ca6b2a6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a453e362c22170c0000000000000000000000000407080909090909090909080705010000000000000000000000000000111d2a36424e5a646b6c6c6c6c6c6c6c6c6c6a63594e43382e23180d03000000000000000000000000000007111c27323c47525d666c6c6c6c6c6c6c6c6c6c6960564a3e3225190c00111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a69676563605d5955504b453f38312a221a1209000000000000000000000013202c3946535f6c798693887b6f6255484848484848484848484848484848484848484848484848484848484848484848484848484f5c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000b1824313d4a5763707d8a96a3b0a99d9083766a5d5044372a1d110000000000000a15202b353f49535c656e767e858b91979ca1a6aaaeaca9a6a29f9c999794918e8b8885827f7c7874706c67625d57524c453e362f261e150c0200000000000013202c3946535f6c798693a0acafa3999190909090909090909090909090909090909090909090909090909090909090909199a3afada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000050e161e262d353c42494f545a5f63686c6f727577797b7c7d7e7e7e7e7e7d7c7a797674716d6a66615c57514c453f38312a221a120a01000000000000000000000000000000000000000004070a0c0d0e0f1010100f0e0c0a0704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0d0e0e0e0e0e0e0e0e0e0d0b08030000000000000000000000000000000000000000000000000103050708080909080706050300000000000000000000000000000001020303030202000000000000000000000000000915212d3a46525e6a75818d98a2ada89e948b847d787573737375777a7d82888e95988e847a74818d99a6afa3988c827873717173746b6054473b2e2115080013202c3946535f6c798693a0a2a194887b6e6154483b2e211508000000000000000007111c27323c47525d68727d88939ea2a2a2a2a2a09386796d6053463a2d201307000e1a27333f4c5864707d8995a2a2988c8073675b4e42362a1d110500000000000000000000000000000000000006111c27313c464f58616971787f858a8f9296999b9d9fa0a1a2a1a0a0a0a0a09f9f9f9e9e9fa5aeb2a6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f53463f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3a342c241a100500000000000000000000070c11141515151515151515151514110d08010000000000000000000000000e1a26323d48525a5f5f5f5f5f5f5f5f5f5f5e5951473c32271c1107000000000000000000000000000000000b15202b36404b545c5f5f5f5f5f5f5f5f5f5f5d574e44392d221609000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5c5b595654504d49443f3a342d272018100800000000000000000000000013202c3946535f6c798693887b6f625555555555555555555555555555555555555555555555555555555555555555555555555555555c697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000d1a26333f4c5865727e8b98a4b1a89b8f8275695c4f4336291c10000000000005101c27323c47515b656e7780888f969da3a8adada8a4a09d999693908d8a8785827e7c7976736f6c6864605b57524c46403a332c251d140c030000000000000013202c3946535f6c798693a0acb5aba29d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9da2abb5ada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000060e17202830383f464d545a60656b6f74787b7e82848688898a8b8b8c8b8b8a89878583817d7a76726d68635d57504a433b342c241c130a010000000000000000000000000000000000040a101316181a1b1c1c1c1c1c1b191714100c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e13171a1a1a1a1a1a1a1a1a1a1a18140f09010000000000000000000000000000000000000003070a0d10121314151515151413110f0d0a0602000000000000000206090c0e0f1010100f0e0d0b09070400000000000000000c1824313d4956626e7a86929ea9aca1968c8279726c69676667686a6d71767c838a92968c8177838f9ca9ac9f93877b706764656767625a4f43382b1f13060013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000000000000030d18232e38434e59646e79848f9aa4aeaeaeaeada09386796d6053463a2d201307000b1723303c4854616d7986929ea89c8f83776a5e5246392d211408000000000000000000000000000000000000000b15202a343d464f585f676e74797e83868a8c8f919293949596969696969797979898989aa0aab2a6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232323232323232323232323232323232323232312e29221a1208000000000000000000020b12181d2022222222222222222222211d19130c0400000000000000000000000a15212c3640484f52535353535353535353524e473f352b20150a0000000000000000000000000000000000040f19242f39424a5053535353535353535353514c453c32281d1105000a16212c3740484f525353535353535353535353535353535353535353535353535353535353535251504e4c4a4744413d38332e28221c150e060000000000000000000000000013202c3946535f6c798693887b6f6262626262626262626262626262626262626262626262626262626262626262626262626262626262697683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000003101c2935424e5b6774818d99a6b3a69a8d8174675b4e4135281b0f00000000000a16212d38434e59636d77818a929aa1a8aeaca6a19c9894908d8a8784817e7b7875726f6c696663605c5854504b46413b352f29221a130b02000000000000000013202c3946535f6c798693a0acb9b4adaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9aaadb4b9ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000050e182029323a424951585f656b71767b8084888b8e91939496979898989898979594928f8d8a86827d79746e68625b544d463e362e251c130a01000000000000000000000000000000070f161b20232527282929292929272523201c18130e0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191f23262727272727272727272624201a130b0300000000000000000000000000000000050a0f13171a1c1e202122222222211f1e1c1916130e0a0500000004090e1216181b1c1c1c1c1c1b1a181613100c070000000000000e1b2734404d5965727e8a97a3aea79b90857a7067615c5a595a5b5e61666b717880889193887d84919eaaa99c9083776b5f57585a5b5750483d32271b0f030013202c3946535f6c798693a0aca194887b6e6154483b2e2115080000000000000009141f2a343f4a55606a75808b96a0abb1b0b3b8ada09386796d6053463a2d201307000714202c3845515d6a76828f9ba79f93877a6e6155493d3024180b00000000000000000000000000000000000000030e18222b343d464e555c62686d72767a7d808284868788888989898a8a8a8a8a8b8b8b8e98a4b0a6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2626262626262626262626262626262626262626262626262626262624221d171008000000000000000000020c141c23292d2f2f2f2f2f2f2f2f2f2f2d2a241e160d0400000000000000000000040f1a242e363d434646464646464646464645423d352d23190e0400000000000000000000000000000000000008121d2730383f444646464646464646464645413b332a21160b000005101a252e373e434646464646464646464646464646464646464646464646464646464646464645444342403d3b3834302c28231d17110a03000000000000000000000000000013202c3946535f6c798693887b6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7683908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000007131f2c3844515d6a76838f9ca8b1a4988b7e7265594c4033261a0d00000000030f1b27323e4955606a758089939ca4acafa8a19b95908c8884817d7a7774716e6c696663605d5a5753504c48443f3a35302a241e1710090100000000000000000013202c3946535f6c798693a0acb6ada5a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa0a5adb6ada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000040e17202a323b444c545b626970767c82878c9094979a9d9fa1a3a4a4a5a5a5a4a3a2a09e9c9996928e8a857f79736d665f58504840372e251c1309000000000000000000000000000007101920272c2f313335353636363534322f2c28241f19130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f3334343434343434343433302b251d150b0100000000000000000000000000040b11161b1f2326292b2d2e2f2f2f2e2d2c2a2825221f1b16110b06090f151a1e222527292929292928262422201c18120b0300000000101d2936424f5b6875818e9aa6afa3978b7f73685e56504d4d4d4f51555a60666e767f88928f8486929faba79a8e8174685b4f4b4e4e4b463f362c21160a000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000000000005101b26303b46515c66717c87929ca7aaa5a4a7adada09386796d6053463a2d2013070004101d2935414e5a66737f8b98a4a2968a7d7165594c4034271b0f02000000000000000000000000000000000000030d161e252b343c434b51575d62666a6e71737577797a7b7b7c7c7d7d7d7d7d7d7e7e7e8895a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201919191919191919191919191919191919191919191919191919191815110c06000000000000000000000a141e262e34393b3c3c3c3c3c3c3c3c3b39352f281f160c010000000000000000000008121c242c3236393939393939393939393936312b231b110700000000000000000000000000000000000000010b151e272e3337393939393939393939393835302921180f0400000009131c252c3237393939393939393939393939393939393939393939393939393939393939393938363533312e2b2824201c17120c060000000000000000000000000000000013202c3946535f6c798693887b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b83908c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000010c1824303c4854606d7985929eabaea295897c7063574a3e3124180b000000000714202c37434f5a66717c87919ba5aeada59d968f8a84807c7874716e6b6865625f5c595653514e4a4744403c38332e29241e19130c05000000000000000000000013202c3946535f6c798693a0acb0a59b949292929292929292929292929292929292929292929292929292929292929292949ba5b0ada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000020c162029323c444d565e656d747b82888d93989ca0a4a7aaa8a5a3a2a1a1a0a1a1a2a4a6a8a8a5a29e9a95908b857e787169625a524940372e251b1208000000000000000000000000040f19222b32383c3e40414243434342413f3c3834302a251e17100901000000000000000000000000000000000000000000000000000000000000000000000000000007121c252e353b3f414141414141414141403c372f271d1309000000000000000000000000080f161c22272b2f333538393b3b3c3c3b3a393735322f2b26221d1711131a20262b2e313435363636353433312f2c28231d150d03000000111e2b3744515d6a7783909da9aca093877a6e62574c444140404245494e555c646d76808a948f8f97a2aea6998c807366594d4041413f3b342d241a0f05000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080000000000010c17222c37424d58626d78838e98a3aaa099979ba4ada09386796d6053463a2d20130700000d1925323e4a57636f7c8894a1a6998d8174685c5043372b1e12060000000000000000000000000000000000000b151f282f363a3d3e40464c51565a5e616467696b6c6d6e6f6f6f70707070717171717b8895a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b0905010000000000000000000006111c26303840454848484848484848484846413a31281e130800000000000000000000000a121a21262a2c2c2c2c2c2c2c2c2c2c2c2a2620191109000000000000000000000000000000000000000000030c151c23282b2c2c2c2c2c2c2c2c2c2c2c29241f170f0600000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a282724221f1c1814100b0601000000000000000000000000000000000013202c3946535f6c7986938c88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889928c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000007121d2834404c5864707c8995a1aeab9f93867a6d6154483b2f221609000000000b1724303c4854606b77828e98a3adada49b938b847e78746f6c6865615e5b585553504d4a4744413e3b3734302c27231e1a181614110f0d0a06010000000000000013202c3946535f6c798693a0acada0948986868686868686868686868686868686868686868686868686868686868686868994a0adada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000a141e28323b444e565f6770777f868d93999ea3a8aaa6a29e9b99979594949494949697999b9ea2a6aaa6a19c969089827b746c645b524940372d241a100600000000000000000000000b16212b343d43484b4d4e4f4f4f4f4f4d4b4845403b363029221b130b02000000000000000000000000000000000000000000000000000000000000000000000000010d18232e3740474c4d4d4d4d4d4d4d4d4d4c4841392f251a0f03000000000000000000020a121a21272d32373b3f4244464748484848474544413e3b37322d28221c1e252c31363b3e404243434342413f3e3b38342e271f150b010000121f2c3945525f6b7885929eabaa9e9184786b5f52463a34333436393d434a525b646d78828d989ba0a9b2a6998c7f7265594c3f3435332f2a231b120800000013202c3946535f6c798693a0aca194887b6e6154483b2e211508000000000008131e28333e49545e69747f8a949faaa3988e8a929eaaa09386796d6053463a2d20130700000a16222e3b4753606c7885919da99d9084786b5f53473a2e221509000000000000000000000000000000000006121d27313a41474a4b4c4d4e4f50525355585a5c5e5f6161626363636363636464646f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b080400000000000000000b17222d38424a5155555555555555555555524c433a2f24190d0100000000000000000000000810161a1e1f2020202020202020201f1d1a150f070000000000000000000000000000000000000000000000030a11171b1e202020202020202020201f1d19130d06000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020201f1e1d1c1a181513100c0804000000000000000000000000000000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938c7e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000040e18232e3945515c6874808c98a5b1a89c9083776a5e5245392c201307000000010e1b2733404c5864707c88949faab0a59b92898179736d68635f5c5855524f4c494643413e3b3835322f2b282a2c2c2b29272422201e1c1916120c0600000000000013202c3946535f6c798693a0acaca0938679797979797979797979797979797979797979797979797979797979797979798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000007111c26303a444d5660687179828991979ea4aaa9a39e9a95928f8c8a898887878788898a8d8f92969a9ea4a9a7a19b948d867e756d645b52493f362c22170d0200000000000000000004101c27323d464e5457595b5c5c5c5c5b5a5854514c47413b342c251d140b02000000000000000000000000000000000000000000000000000000000000000000000006121e2a35404952585a5a5a5a5a5a5a5a5a58534b41372b2014080000000000000000020b141c242b32383e43474b4e515354555555555452504e4b47433e39332d262830373d42474a4d4f4f4f4f4f4e4c4a4845403931271d1207000013202c3946535f6c7986929facaa9d9083766a5d5044372a2627292d32394049525c66707b86929da9b2b2a6998c7f7265594c3f322826231e1811090000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000000040f1a242f3a45505a65707b86909ba6a79c9287828f9ca8a09386796d6053463a2d201307000006121f2b3744505c6975818d9aa6a094877b6f62564a3e3125190c00000000000000000000000000000000000b17232e39434c525657595a5b5c5d5e5f5e59515051535455555656565657575757626f7b8895a2afa5998c7f7265594c3f3226190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a191814100a030000000000000f1b27333f4a545c616262626262626262625d564c41352a1d1105000000000000000000000000040a0e111313131313131313131313110e09040000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100d0802000000000000000000050a0e11131313131313131313131313131313131313131313131313131313131313131212100f0d0b090603000000000000000000000000000000000000000000000013202c3946535f6c798686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7265584c3f3225190c0013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000050d16202a35404b56616d7985919da9b0a4988c8073675b4f4236291d110400000004111d2a36434f5c6874818d99a4b0a99e938980776f68615c5753504c494642403d3a3734312e2b2825232b31363939383533312f2d2a2826231e171008000000000013202c3946535f6c798693a0acaca09386796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000000030e19232e38424c565f68727a838b939ba2a9aba49e98928e898582807d7c7b7a7a7a7b7c7e8083868a8e93989ea4aba69f9790887f766d645b51483e33291f140a0000000000000000000814202d38444f586064666768696969686664615d58524c453e372f261d140b02000000000000000000000000000000000000000000000000000000000000000000000916222e3a46515b63676767676767676767645d53483c3024180b00000000000000020b141d262e363d444a4f54585b5d5f6161626261605f5d5a57534f4a443f3831313a41484e5357595b5c5c5c5b5a595754514b43392f24180d010013202c3946535f6c798693a0acaa9d908376695d5043362a1d1a1d21272e37404a545f6a75818c98a3afb2a6998c7f7265594c3f32261a17130d06000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211508000000000b16202b36414c56616c77828c97a2aba0968b8083909ca9a09386796d6053463a2d2013070000030f1b2834404d5965717e8a96a3a3978b7e7266594d4135281c1003000000000000000000000000000000030f1c28343f4b555d6364656667696a6b6c6b63594e454647484949494a4a4a4a4a56636f7c8996a2afa5988c7e7265584c3f3225190c0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2626262626262626262626262626262626262626262626262626262626262624201b150d050000000000121e2b3743505b666d6f6f6f6f6f6f6f6f6e685d5246392d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6b76797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797064584b3e3225180c0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000040910171f28323c46515c67727e8a95a1adaca094887c7064574b3f33261a0e0100000006131f2c3945525e6b7784909ca9b0a4988d82776e655d56504b4743403c393633302d2b2825221f1c222c353c4245464442403e3b393735322e29221a11070000000013202c3946535f6c798693a0acaca09386796c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000000000a15202a353f4a545e68717a848d959da5ada8a19a938d87827d797673716f6e6d6d6d6e6f717376797d82878d939aa1a8a9a299918980766d63594f453b30261b100500000000000000000a1723303c4955606a707274757676767573706d69635e57504941382f261d140a010000000000000000000000000000000000000000000000000000000000000000000b1824313e4a57636d7474747474747474746f64584c4033261a0d000000000000000a141d262f3840484f555b5f64676a6c6d6e6f6f6e6d6b6966635f5b56504a433b3a434c53595f63666869696968676563615c554b4035291d11050013202c3946535f6c7986929facaa9d9084776a5d5144382b1f1a18161c252e38424d58646f7b87939fabb2a6998c7f7265594c3f3226190c070200000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000007121c27323d48525d68737e88939ea9a49a8f847984909daaa09386796d6053463a2d2013070000000c1824313d4956626e7a87939fa79a8e8275695d5044382c1f130700000000000000000000000000000005121e2b3844505c676f7172737475777879756a5e5145393a3b3c3c3c3d3d3d3e4b5864717d8a97a4b0a4988b7e7165584b3e3225180b0000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393333333333333333333333333333333333333333333333333333333333333333302c261f170e040000000013202c3946525f6c787b7b7b7b7b7b7b7b7a6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000030608080808080808080808070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080b0d0f101112131313131212100f0d0b09070400000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c685f54483c3023170a0013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000010205070b0f141b2129313a444e58636e78848f9ba6b2a79b8f83776b5f53473b2f23170a000000000814212e3a4754606d7a86939facaca093877b70655c534c45403b3734302d2a2724211e1b1815131f2a343e474e5253514f4c4a484644413f3a342c23190f0400000013202c3946535f6c798693a0acaca09386796c5f53525252525252525252525252525252525252525252525252535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000005101b26313c47515b66707a838d969fa7afa79e968f88817b76716d6966646261616161626365676a6d71767b82888f969ea7aba39b92897f756b61574d42382d22170c01000000000000000b1825323e4b5864717c7f818282838382807d79746f69625a534a42392f261c13080000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e818181818181818174675a4d4134271a0e01000000000007111c262f39424a525960666b707376797a7b7b7b7b7a7876736f6b66615b544d46434d555e656a6f7275767676757472706d675d5145392d20140700121f2c3845525e6b7884919eaaab9e9285796c6053473b312b272423222126313c47535f6b77838f9ca8b2a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080000030e18232e39444e59646f7a848f9aa5a89e93887d7784919eaba09386796d6053463a2d2013070000000815212d3a46525e6b7783909ca89e9285796c6054483b2f23160a0000000000000000000000000000000613202c3946535f6c787d7e808182838486796c6053473b302f2f3030303036424e5a6773808c99a5afa396897d7063574a3d3124170b0000000000000000000013202c3946535f6c798693a0acaca09386796c5f534640404040404040404040404040404040404040404040404040404040404040403f3d38312920160b0000000013202c3946535f6c7986888888888888887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f121415151515151515151514110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0f1215171a1b1d1e1f1f20201f1f1e1d1c1a181613100d0905010000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d564d42372c2014070013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0c0c0e0f1114171b20262c333b434d56606a747f8a95a0acada1968a7e73675b4f43372b1f1307000000000915222f3c4855626e7b8895a1aea99c9084776b5f544a413a342f2b2724211d1a1714120f0c0c1824303b4650595e5f5d5b59575452504e4b453e352b20150a00000013202c3946535f6c798693a0acaca09386796c5f53464646464646464646464646464646464646464646464646535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000b16212d38434d58636d77828c959fa8afa69d958c857d76706a65615d5a5856555454545556585a5d61656a70767d858c959da6ada49b91877d73695e54493e33281d1207000000000000000b1825323e4b5865717e8b8d8f8f908f8e8c8985807a736c645c544b41382e241a100600000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c8e8e8e8e8e8e8174675a4d4134271a0e0100000000030e19232d38414b545c646b71777c80838587888888888685827f7b77726c665f58504b555f676f767b7f8183838382817e7c796e6155483b2f22150800111e2a3744505d6976838f9ca8ada194887c6f63584d433c3633312f2e2e2d2d37424e5b6773808c99a5b2a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000a141f2a35404a55606b75818b96a1aca2978c81767885929eaba09386796d6053463a2d20130700000005111e2a36424f5b6774808c99a5a195897c7064574b3f32261a0d01000000000000000000000000000006121f2c3845525e6b77848b8d8e8f9091887c6f63574c413c39373737383a3f47525e6a76828f9ba8ada094877b6e6255483c2f2316090000000000000000000013202c3946535f6c798693a0acaca09386796c5f534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c49433b32271d120600000013202c3946535f6c7986939595959595887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000080f161b1f21222222222222222222201e19130d050000000000000000000000000000000000000000000000000000000000000000000000000000000001060b1014181b1f212426282a2b2c2c2c2c2c2c2b2a282725221f1c1915110d0803000000000000000000000000000000000000000a16212c3740484f5253535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353514b443b31261b0f030013202c3946535f6c798693a0acaca09386796c5f5346392c201818181819191a1c1e2023272c31373e454d565f68727c86919ca6b1a69b9085796e62564a3f33271b0f03000000000916222f3c4955626f7c8996a2afa79b8e8175685b4f43382f29231f1b1814110e0b08050205101c2834404c58626a6c6a686563615f5d5a5750473c32261a0e02000013202c3946535f6c798693a0acaca09386796c5f53463939393939393939393939393939393939393939393946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000005111c27333e49545f6a747f89949ea7b1a79d948b837a736c655f5a55514e4b4948474747484a4b4e51555a5f656b737a838b949da7ada3998f857b70655b50453a2e23180c010000000000000b1825323e4b5865717e8b989b9c9c9c9b9995918b857e766e665d534a40362c22180d02000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c989a9a9a9a8e8174675a4d4134271a0e01000000000915202a353f49535d666e767d83888c8f92949595959493918f8b88837d7771696259525d67717981878b8e8f908f8e8d8b887b6f6255483c2f221509000f1c2835424e5b6774808c99a5b0a4988c8074695f554d4743403e3c3b3a3a3a3a3f4b5864717d8a97a3b0a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080006101b26313c46515c67727c87929da8a59b90857a707986929faca09386796d6053463a2d201307000000020e1a27333f4b5864707d8995a2a4988c8073675b4e4236291d1104000000000000000000000000000004111d2a36434f5c6874818d999a9c9d988c8074685d534c484644444444464a5059646f7a86929faba99d9185786c5f53463a2d2114080000000000000000000013202c3946535f6c798693a0acaca09386796c5f5959595959595959595959595959595959595959595959595959595959595959595959544d43392e23170b00000013202c3946535f6c798693a0a2a2a295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000009121a21272b2e2e2e2e2e2e2e2e2e2e2d2a251e170e050000000000000000000000000000000000000000000000000000000000000000000000000001070c12171c2024282b2e313335363738393939393838363533312f2c2925211d18140e0903000000000000000000000000000000000005101a252e373e43464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464644403a32291f140a000013202c3946535f6c798693a0acaca09386796c5f5346392c2525252525252627282a2d3033383d42484f575f68717a848e98a2adaaa0958a7f73685d51453a2e22160b00000000000916222f3c4955626f7c8996a2afa79a8e8174675a4d4134271e17130f0b08070708080a0d1117212d3844505c697479767472706e6b696762594e43372b1e1205000013202c3946535f6c798693a0acaca09386796c5f5346392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000000a16222d38444f5a66717b86919ba5b0a99f958b82797169615a544e4945413e3d3b3a3a3b3b3d3f4245494e545a61687179828b959fa9aba1978c82776c61564b4034291d12060000000000000b1825323e4b5865717e8b98a1a1a2a4a7a5a19c97908880786f655c52483e34291f1409000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5a7a79a8e8174675a4d4134271a0e01000000040f1b26313c47515b656f7880878e94989c9ea0a1a2a2a1a09e9b98948f89827b746b6259636e79838b92979b9c9c9c9b9a95887b6f6255483c2f221509000d1a26333f4b5864707c8995a1aca89c91867b71675f58534f4c4a494847474646464956626f7c8996a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211508020c17222d38424d58636e78838e99a4aa9f94897e746d798693a0aca09386796d6053463a2d201307000000000b17232f3c4854616d7986929ea89b8f83766a5e5245392d2014080000000000000000000000000000010e1b2733404c5965717d8995a1a8a89c90857a6f655d5854525150505153565b626b75808c97a3afa5998d8175695c5044372b1e12050000000000000000000013202c3946535f6c798693a0acaca09386796c6666666666666666666666666666666666666666666666666666666666666666666666655f554b3f33271b0e02000013202c3946535f6c798693a0acafa295887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000007111b242c32373a3b3b3b3b3b3b3b3b3b3936302920170d030000000000000000000000000000000000000000000000000000000000000000000000050c12181d23272c3034373a3d3f414344454646464645444342403e3b3835312d29241f1a140e08010000000000000000000000000000000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938342f2820170d03000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323233343537393c3f44484e535a6169717a838c96a0aaada3998e83786d62574c4035291d120600000000000916222f3c4955626f7b8895a2aea79a8e8174685b4e423529221d191715141414141517191d2229333e4955606c788583817e7c7a7876736a5f53463a2d211407000013202c3946535f6c798693a0acaca09386796c5f5346392c201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000000040f1b27323e4a55606c77828d98a3adaca1978d837970675f574f48423d393532302f2e2e2e2f303235393d42484f575f677079838d97a2aca99e94897e73675c51453a2e23170b0000000000000b1825323e4b5865717e8b95949495989b9fa5a8a19a928a81776e645a50463b30261b10050000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000915202c37424d58636d77818a92999fa4a8a5a09d9b9999999a9c9e9f9a948d867d756b626974808b959da3a7a69f9b989795887b6f6255483c2f221509000a1723303c4854606c7884909ba6aea2978d8379716a635f5b5957555554535353535255626f7b8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150808131e29343e49545f69747f8a95a0aaa3988d82776d6d7a8794a0ada09386796d6053463a2d201307000000000714202c3845515d6a76828f9ba79f92867a6d6155493c3024170b0000000000000000000000000000000b1824303d4955616d7985909ba7ada1968b81776f6964615f5e5d5d5e5f62676d747d87929da8aba094897d7165594d4034281b0f030000000000000000000013202c3946535f6c798693a0acaca093867973737373737373737373737373737373737373737373737373737373737373737373737371675c4f43362a1d1104000013202c3946535f6c798693a0acafa295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000020d18232d363d434748484848484848484846413b32291f1409000000000000000000000000000000000000000000000000000000000000000000020910171d23292e33383c404447494c4e505152525353525251504e4c4a4845413d3935302b251f19130c05000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28241d160e0500000013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3f3f40424346484c4f54595f656c737b838c959ea8afa59b91877c72675c51463a2f24180d0100000000000815212e3b4854616e7a8794a0ada99c8f83766a5d51463b332d2926242221212021222326292d333b454f5a65717d89908d8b898785827a6e6154483b2e211508000013202c3946535f6c798693a0acaca09386796c5f5346392c2013131313131313131313131313131313202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000814202c38434f5b66727d88939fa9afa59a8f857b71675e554d453e37312d29252322212121222426292d32373e454d555e67717b85909ba5b0a59a8f84796d62564b3f33281c100400000000000b1825323e4b5865717e89888888898b8f949aa0a8a49c938a80766c62574d42372c21160b0000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000010d1925313d48545f6a757f89939ca4aaa7a09994918e8c8c8c8e8f9295999e978f877e746b6d7985919ca7afa59c948f8b8a8a887b6f6255483c2f221509000714202c3844505c68737e8a959fa9a99f958c837b756f6b6865636261616060605f5f5f626f7b8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080f1a25303a45505b65707b86919ca6a79c91867b71666e7b8794a1ada09386796d6053463a2d2013070000000004101c2935414e5a66737f8b98a4a2968a7d7164584c4033271b0e0200000000000000000000000000000814202c3945505c68737f8a959fa9a89d938a817a74706d6b6a6a6a6a6c6f72787e868f99a3aea4998e83786c6054483c3024180c000000000000000000000013202c3946535f6c798693a0acaca0938680808080808080808080808080808080808080808080808080808080808080808080808080776b5e5144382b1e1105000013202c3946535f6c798693a0acaca295887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000007131e2a353f484f53555555555555555555524c443b31261a0e0300000000000000000000000000000000000000000000000000000000000000040c131b22282e343a3f44484c505356585a5c5e5f5f5f5f5f5f5e5d5b595754514d4a45413c36312b241d160f07000000000000000000000000000000010910161a1e1f202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1c18120c040000000013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4c4c4d4e505255585c60656a70767d858d959ea7afa69d938980756b60554a3f34291e13070000000000000713202d3946525f6c7885919eaaab9e92867a6e62574d453e393532302f2e2d2d2e2f303235393e454d57616c77828e999a9896938f83776a5e5246392d201407000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000000000d1925303c4854606b77838e9aa5b0a99e93887e73695f554c433b332c26211c1917151414141517191d21262c333b434c555f69747e89949faaaca1958a7e73675c5044382c21150900000000000b1825323e4b5865717d7c7b7b7b7c7f83888f969ea6a59c92887e73695e53493e32271c110500000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000005111e2a36424d5965707b86919ba5aea69d958e898481808080818386898e93999990867c73717d8a96a2aea99e938a837e7d7d807b6f6255483c2f2215090004101c28343f4b57626d78838d97a1a9a79e958d86807b777472706f6e6d6d6d6d6c6c6c6b6f7b8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150b16212c36414c57616c77828d98a2aba0958a80756a616e7b8895a1ada09386796d6053463a2d20130700000000000d1925323e4a57636f7b8894a0a5998d8174685c4f43372a1e1205000000000000000000000000000004101c2834404b57626e78838e98a1aaa59c938b85817d7a7877767777797b7e83899098a1aba59c92887d72665b5044382c201408000000000000000000000013202c3946535f6c798693a0acaea2978e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d84776b5e5144382b1e1105000013202c3946535f6c798693a0a0a0a095887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000b17232f3b465159606161616161616161615e564d42372b1f1306000000000000000000000000000000000000000000000000000000000000060e161e252c333a40454b5054585c5f626567696a6b6c6c6c6c6b6a69686663605d5a56514c47423c362f282119110901000000000000000000000000000000050a0e11131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100c0701000000000013202c3946535f6c798693a0acaca09386796c5f58585858585858585858595a5b5d5f6164686c70757b81888f979fa7aea69d948b81776d63594e44392e23180d0100000000000005111e2b3744505d6975828e9aa6aea2968a7f74695f574f4a45423f3d3b3b3a3a3a3b3d3f41454a50575f69737d88939fa7a4a2968a7e72665a4e42362a1e1105000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000004111d2935414d5965707c88949fabafa3988d82766c61574d433a3129211b15100d0a08080708090a0d10151b2129313a434d57626c77838e99a4b0a69b8f84786c6155493d3125190d00000000000a1724303d4955616b71706f6e6e6f73777d848c949da6a49a90857b70655a4f44392d22160b00000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000915212e3a46525e6a76818d98a3ada89e948b837d78757373737476797d82878d94988f857a74818d9aa6afa3978c817872707173736b6054473b2e21150800000b17232f3a45515c67717b858f979fa6a79f98918c8784817e7d7c7b7a7a797979797978787b8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115121d27323d48535d68737e89949ea9a4998e84796e63626f7b8895a2ada09386796d6053463a2d20130700000000000916222e3b4753606c7885919da99c9084776b5f53463a2e2115090000000000000000000000000000000c18232f3a46515c67717c868f98a0a7a59d96918c8987858483838485878b8f949ba2aaa49c938a80766b60554a3f33271c1004000000000000000000000013202c3946535f6c798693a0acb3a9a09a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9184776b5e5144382b1e1105000013202c3946535f6c7986939393939393887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000e1a2733404c57626b6e6e6e6e6e6e6e6e6e685e53473b2f2215090000000000000000000000000000000000000000000000000000000000060f18202830373e454b51565c6064686c6f7274757778797979797877767472706d6a66625d58534d47413a332b231b130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c6565656565656565656565656668696b6e7174787c81878d939aa1a9aca49c948b82786f655b51473d32271d120700000000000000020f1c2834414d5966727e8a96a1ada79b90857b7169615b55514e4b4a484747474748494b4e51555b6169717b858f9aa5b0a89c91857a6e62564a3e32261a0e02000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000814212d3945515d6975818d99a4b0a99e92877b70655a50453b31281f17100904000000000000000001040910171f28313b46505b66717c88949fabaca095897d7165594d4135291d1004000000000815212d39444f5961646362616163666c727a828b949ea8a1978c82766b60554a3e33281c1105000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000c1825313d4a56626e7a86929ea9aca1968c8279726c68666666686a6d71767c838a92968c8277838f9ca9ac9f93877b70666464666762594f43372b1f1306000006121e29343f4a555f69737c858d959ca1a6a39d9893908d8b8a8888878786868686868585858a96a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211519232e39444f59646f7a858f9aa5a89d92887d72675c626f7b8895a2ada09386796d6053463a2d201307000000000006121f2b3744505c6875818d9aa6a094877b6e62564a3d3125180c00000000000000000000000000000007121e2935404b55606a737d868e959ca2a7a29d99959392919090919294979ba0a5a6a09a928a81786e645a4f44392d22170b00000000000000000000000013202c3946535f6c798693a0acacacaba7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69e9184776b5e5144382b1e1105000013202c3946535f6c7986868686868686867b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000f1c2835424e5b68747b7b7b7b7b7b7b7b7a6f63564a3d3024170a00000000000000000000000000000000000000000000000000000000060f18212a323a41494f565c62676c7175787b7e8182848586868686858483817e7c7976726e69645e58524b443d352d251c130a01000000000000000000000000000000000000000000000000000000000000000000000306080808080808080808080603000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca093867971717171717171717171717272737476787a7d8184888d92989ea4aba8a19a928a827970665d534a3f352b20160b0000000000000000000c1925313d4956626d7985909ba6ada2978d837a736c66615d5a585655545353545556585a5d61666c737b838d96a1abaca1968b8074695d51463a2e22160a00000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000000c1824303d4955616d7986929da9b0a4988d81756a5f54493e33291f160d0500000000000000000000000000050d161f29343f4a55606b77838e9aa6b1a5998e8275695d5145392d2014080000000005111c28333e474f555756555555565b61687079828c96a0a99e93887d72665b4f44392d22160a000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000e1b2734404d5965727e8a97a3afa79b90857a7067605c5a59595b5d61656b717880889193897d84919eaaa99c9083776b5e57585a5a5750473d32271b0f030000010c18232e39434d57616a737b838a90969b9fa2a3a09c9a9896959494949393939292929291939ca6b2a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21151f2a35404b55606b76818b96a1aca1968b81766b6055626f7b8895a2ada09386796d6053463a2d2013070000000000030f1b2834404d5965717e8a96a3a3978b7e7266594d4134281c0f030000000000000000000000000000010d18232e39434e58616b737c838a91969b9fa3a5a2a09e9d9d9d9d9fa0a3a5a29f9a958f8880786f665c52483d32271c110600000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09e9184776b5e5144382b1e11050000131f2c3946525f6b767979797979797979786d6155483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b687582888888888888887d7063574a3d3024170a000000000000000000000000000000000000000000000000000000050f18212a333c444c535a61676d73787c8185888b8d8f90929293939292918f8d8b8986827e7a756f6a635d564f473f372e251c130a0000000000000000000000000000000000000000000000000000000000000000050b0f1314151515151515151514120f0a0500000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7f8081838487898d9094999ea3a9aaa49d978f8880786f675e544b41382e23190f040000000000000000000915212d3945515d68747f8a959fa9a99f958c857d77726d6a6765636261606061616364676a6d72777d858d959fa8aea49a90857a6e63584c4135291d110600000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000020f1b2734404c5965717d8a96a2aeaca094887c7065594e42372c22170d04000000000000000000000000000000040e18222d38434f5b66727e8a96a2aeaa9e9286796d6155493c3024170b00000000000b17212c353d44494b4a4848484a4f565e67707a848f99a4a4998e83776c61554a3e33271b10040000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000101d2936424f5c6875818e9aa6afa3978b7e73685e55504d4c4d4e51555a5f666e767e88918f8486929faba79a8e8174685b4f4b4d4e4b463e352b21160a0000000006111c27313c464f58616971787f858a8f9296999b9d9fa0a1a2a1a0a0a0a0a09f9f9f9e9e9fa5aeb2a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211b26313c47515c67727d88929da8a59a8f857a6f645955626f7b8895a2ada09386796d6053463a2d2013070000000000000c1824313d4955626e7a87939fa69a8e8275695d5044382b1f130600000000000000000000000000000007121d27323c464f59616a727980858a8f9396999b9c9e9e9f9f9f9e9d9b9996938e89847d766e665d544a40362c21160b0000000000000000000000000013202c3946535f6c79869393939393939393939393939393939393939393939393939393939393939393939393939393939393939184776b5e5144382b1e11050000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c665c5145392d20140700000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f95959595958a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000030d17212a333c454e565d656c72797e84898d919497999b9d9e9fa0a09f9e9d9c9a9895928e8a85817b756e686159514940372e251c12080000000000000000000000000000000000000000000000000000000000000810161b1f212222222222222222211f1b160f08000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8c8c8d8e8f919396999ca0a5a9a8a39e98928c857e766e665d554c42392f261c12070000000000000000000005111d2935404c57626d78838d97a0a9a89f968f88837e797673716f6e6d6d6d6d6e6f717376797e83898f979fa8aea69c92887e73685d52473b3024180d0100000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000000000000000005121e2a3743505c6875818d9aa6b2a89c9083776b5f54483c31261b1005000000000000000000000000000000000006111c27323e4a56616d7986929eaaaea296897d7165584c3f33271a0e010000000005101a232c33393c3e3d3c3b3b3e444c555e68727d88929da89f94897d72665b4f43382c2015090000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000111e2b3844515d6a7784909da9aca093877a6e62574c444040404245494e555c646c758089948f9097a2aea6998c807366594d4041413f3a342c231a0f0400000000000b15202a343d464f585f676e74797e83868a8c8f919293949596969696969797979898989aa0aab2a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21222d38434d58636e79848e99a4a99e93897e73685d5355626f7b8895a2ada09386796d6053463a2d2013070000000000000815212d3946525e6b7783909ca89e9185786c6054473b2f22160a000000000000000000000000000000000b16202a343d474f5860676e747a7e83878a8c8e90919292929291908f8c8a86827d78726b645c544b42382e241a0f040000000000000000000000000013202c3946535f6c79868686868686868686868686868686868686868686868686868686868686868686868686868686868686868684776b5e5144382b1e110500000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5b544a4034291d110400000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca2a2a2978a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000a151f29333c454e575f676f767d848a8f94999da1a3a6a8a9a7a6a6a6a6a7a9a9a7a4a19e9a96918c868079726b635b524940372e241a10060000000000000000000000000000000000000000000000000000000009121a21272b2e2e2e2e2e2e2e2e2e2e2b27211a12090000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acb3a89f999898989898989898989898989899999a9c9ea0a2a5a9a8a5a19c98938d87817a736c645c544b433a30271e140a0000000000000000000000000c18242f3b46515c67717b858e979fa6a8a19a948e8a8683807e7c7b7a7a7a7a7b7c7d8082868a8e949aa1a9aca59c948a81766c61574c41352a1f13080000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000814212d3a46535f6b7884919da9b0a4988c8073675b4f43372c201409000000000000000000000000000000000000000a16222d3945515d6976828e9ba7b2a5998d8174685b4f4236291d1004000000000008111a21282d3031312f2e2f333a434c56616b76818c97a3a59a8e83776c6054493d31251a0e0200000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000121f2c3945525f6b7885929eabaa9e9184786b5f52463a34333335383d434a525a646d77828d979ca1a9b2a6998c7f7265594c3f3434332f29221a1108000000000000030e18222b343d464e555c62686d72767a7d808284868788888989898a8a8a8a8a8b8b8b8e98a4b0a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2129343f49545f6a75808a95a0aba2978d82776c61574c55626f7b8895a2ada09386796d6053463a2d20130700000000000005111e2a36424f5b6774808c99a5a195887c6f63574b3e3226190d01000000000000000000000000000000040e18222b353d464e555c63696e73777a7d8082838485858685848382807d7a76726d67615a524a423930261c12080000000000000000000000000000131f2c3946525f6b76797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979756a5d5144372b1e110400000a16212c3740484f52535353535353535352504a42382e23180c0000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8aea4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000007121c27313b454e576069717981888f959ba0a5a9a7a4a09e9c9b9a99999a9a9c9ea0a3a7aaa6a29d97918b847d756d645b524940362c22170d02000000000000000000000000000000000000000000000000000007111b242c33383a3b3b3b3b3b3b3b3b3a37322c241b110700000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acacaca9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a9a8a6a4a29f9c9995918c87827c766f69615a524a423931281e150c0200000000000000000000000007131e2935404a555f69737c858d959ca2a8a59f9a96928f8c8a89888787878788898a8c8f92969a9fa5aca8a19a938a81786e655a50453a2f24190e020000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000a1623303c4955626e7b8794a0acada195887c6f63574b3f33271b0f030000000000000000000000000000000000000005111d2935414d5a66727e8b98a4b0a99c9084776a5e5145382c1f13060000000000000810161c2123242422222228313a444f5a646f7b86919da89f94887c7165594e42362a1f130700000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000013202c3946535f6c7986929facaa9d9083766a5d5043372a2627292c32384048525b66707b86919da8b3b2a6998c7f7265594c3f322826231e18100800000000000000030d161e252b343c434b51575d62666a6e71737577797a7b7b7c7c7d7d7d7d7d7d7e7e7e8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e25303b45505b66717b86919ca7a69b91867b70655b504855626f7b8895a2ada09386796d6053463a2d201307000000000000020e1a26333f4b5864707d8995a2a4988c7f73675a4e4235291d100400000000000000000000000000000000061019232b343c444b52575d62676a6e71737576777879797878777573716e6a66615c564f48403830271e140a010000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b63594d4135291c1003000005101a252e373e4346464646464646464646433f3830261c12070000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a000000000000000000000000000000000000000000000000030e19232e38434d576069727b838b939aa0a6aba5a09b9794918f8e8d8d8d8d8e8f9194979a9fa4a9a8a39c968f877f766d645b52483e34291f140900000000000000000000000000000000000000000000000000030e19232d363e4447484848484848484847433d362d23190e02000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9f9e9d9b9a989593908c8985807b76706b645e575048403830271f160c0300000000000000000000000000020d18232e39434d57616a737b838a91979ca1a6a6a29e9b9997969594949494949597999b9ea2a6a9a6a19c96908981786f665d53483e34291e1308000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000c1925323e4b5764717d8a96a3afab9e9285796c6054473b2f23160a0000000000000000000000000000000000000000010d1925313e4a56636f7c8895a1aeac9f9386796d6054473b2e22150800000000000000050b10141718171615161f28333d48535e6975818c98a3a5998d82766a5e53473b2f23170c00000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000013202c3946535f6c798693a0acaa9d908376695d5043362a1d1a1c21272e364049545f6a75808c98a3afb2a6998c7f7265594c3f32261917120d0600000000000000000b151f282f363a3d3e40464c51565a5e616467696b6c6d6e6f6f6f70707070717171717b8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2c37414c57626d77828d98a3aa9f958a7f74695f54494855626f7b8895a2ada09386796d6053463a2d201307000000000000000b17232f3c4854616d7986929ea79b8f83766a5e5145392c2014070000000000000000000000000000000000071019222a323940464c52565a5e616466686a6b6b6c6c6b6b6a686764615e5a55504a443d362f261e150c020000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5951473c3125190d0000000009131c252c32373939393939393939393937332d261e140b000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000000000009141f2a35404a555f68727b858d959da5aba6a099948f8b8885838181808081818385878a8e93989ea4aba7a099918980766d645a50453b30261b100500000000000000000000000000000000000000000000000008141f2a353f484f545555555555555555534f483f352a1f1307000000000000000000000000000000000000000000000000000013202c3946535f6c79869393939393939393939393939393939393939393929291908f8d8b898683807c78746f6a655f59534c453e362e261e150d0400000000000000000000000000000007121c27313b454e58616971787f868c91959a9da1a3a6a6a4a2a1a1a0a0a1a1a2a3a5a7a5a3a09d9a95918b857e776f665d544b41372c22170c01000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000e1a2734404d596673808c99a5b2a89c8f83766a5d5144382b1f13060000000000000000000000000000000000000000000916222e3b4754606d7986939facaea195887c6f6256493d3023170a00000000000000000004080a0b0b09080d16212c37424d58646f7b87939eaa9e92877b6f63574c4034281c1004000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000013202c3946535f6c7986929facaa9d9084776a5e5144382b201b18161c242e38424d58646f7b87939fabb2a6998c7f7265594c3f3226190c0601000000000000000006121d27313a41474a4b4c4d4e4f50525355585a5c5e5f6161626363636363636464646f7b8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e333d48535e69737e89949fa9a3998e83786d63584d424855626f7b8895a2ada09386796d6053463a2d201307000000000000000713202c3845515d6a76828f9ba79f9286796d6155483c3023170b00000000000000000000000000000000000007101820272e353b41464a525d666a6b6b6b6b68605f5f5e5d5c5a5855524e4a453f39332c241d140c03000000000000000000000000000000000a16212c3740484f52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524e473f352b20140900000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b27221c140c02000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000000040f1a26313c47515c66707a848e979fa7aca39c958e89837f7b787674737373737476787b7e82878d939aa1a9aba39b928980766c61574d42372c21160b0000000000000000000000000000000000000000000000000c1824303c47515a606161616161616161605a51473b3024180b000000000000000000000000000000000000000000000000000013202c3946535f6c798686868686868686868686868686868686868686868685848382817e7c7a7774706c68645f5a544e48413b332c241c140c0300000000000000000000000000000000000b151f29333c464e575f666e747a8085898d919497999b9c9d9e9f9f9f9f9f9e9d9c9b999794918d8985807a736c655d544b42392f251b100600000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000000000000000000000000000000000f1c2835424e5b6874818e9aa7b3a69a8d8174675b4e4235291c100300000000000000000000000000000000000000000006131f2c3845525e6b7784919daab0a3978a7d7164584b3e3225180c00000000000000000000000000000000050f1a25303c47535f6a76828e9aa6a3978c8074685c5044382d211509000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000121f2c3845525e6b7884919eaaab9e9285796c6053473c322b272523222126313c47535f6b77838f9ba8b2a6998c7f7265594c3f3226190c000000000000000000000b17232e39434c525657595a5b5c5d5e5f5e59515051535455555656565657575757626f7b8895a2afa5998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2f39444f5a646f7a85909ba5a79d92877c71675c51463c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000004101c2935414e5a66737f8b97a4a296897d7164584c3f33271a0e02000000000000000000000000000000000000060e161d242a30353d4a56636e7777777777726a625951514f4d4b4945423e39342e28211a130b02000000000000000000000000000000000005101a252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645423d362d23190e030000000000010910161a1e1f2020202020202020201e1b17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000000000915202b37424d58636e78828c96a0a9aba29a928a837d77736f6c69686766666768696b6e72767b81888f979fa8ada49b91887e73695e53493d32271c100500000000000000000000000000000000000000000000000e1b2834404c58636c6e6e6e6e6e6e6e6e6b63584c4034271b0e0100000000000000000000000000000000000000000000000000131f2c3946525f6b7679797979797979797979797979797979797979797979787776757472706d6a6764605c58534e49433d363029221a130b02000000000000000000000000000000000000030d17212b343c454d555c63696f74797d8185888a8c8e909192929292929291908f8e8c8a8785817d79746e68625b534b423930271d13090000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000000000000000000000000000000101d2a3643505d6976838f9ca9b1a5988b7e7265594c4033261a0d0100000000000000000000000000000000000000000004111d2a3643505c6976828f9ca8b2a5988c7f7266594c4033261a0d000000000000000000000000000000000009141f2b36424e5a65717d8995a1a89c9084786d6155493d3125190d020000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000111e2a3744505d6976838f9ca8ada194887c7064584d443c373431302f2e2e2d36424e5b6773808c99a5b2a6998c7f7265594c3f3226190c000000000000000000030f1c28343f4b555d6364656667696a6b6c6b63594e454647484949494a4a4a4a4a56636f7c8996a2afa5988c7e7265584c3f3225190c000000000000000013202c3946535f6c798693a0aca194887b6e6154483b35404b56616b76818c97a1aba1968b80756b60554a3f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000d1925323e4a57636f7b8894a0a5998d8074685b4f43362a1e110500000000000000000000000000000000000000040b12191e24313e4a5764717d848484847c746b635b534a423f3c3936322d28231d161008010000000000000000000000000000000000000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393936322b241b11070000000000000000050a0e1113131313131313131313120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000000020e1a26313d48535f6a75808a949ea8ada39990888078726c67635f5d5b5a59595a5b5d5f62666b70767d858d959ea8ada39a8f857b70655a4f44382d21150a0000000000000000000000000000000000000000000000101c2936434f5c69757b7b7b7b7b7b7b7b74685c4f4235291c0f0300000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6b6a68676563615e5b5854504c47423d37322b251e171008010000000000000000000000000000000000000000050f19222a333b434a51585e63686d7175787b7d8082838485868686868585848381807d7b7875716d68635d575049413930271e150b010000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0acaca09386796d6053463a2d2013070000000000000000000000000000000000000000111e2b3844515e6a7784919daab0a3978a7d7164574b3e3125180b00000000000000000000000000000000000000000000010f1c2835424e5b6874818e9ba7b3a69a8d8173675a4d4134271b0e000000000000000000000000000000000004101c27333f4b57636e7a8693a0aca195897d7165594e42362a1e12060000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000f1c2835424e5b6773808c99a5b0a4988c8075695f564e4743403e3d3c3b3a3a3a3f4b5764717d8a97a3b0a6998c7f7265594c3f3226190c00000000000000000005121e2b3844505c676f7172737475777879756a5e5145393a3b3c3c3c3d3d3d3e4b5864717d8a97a4b0a4988b7e7165584b3e3225180b000000000000000013202c3946535f6c798693a0aca194887b6e6154483b3c47525d67727d88939da8a59a8f84796f64594e43393c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000916222e3b47535f6c7884919da99c9084776b5f52463a2d211508000000000000000000000000000000000000000001070d1724313d4a57636f7a848e918e867d756d655c544c443c332b26211c17110b05000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26201a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000007131f2b36424e5965707b86919ca6b0a59b91877e766e67605b5753504e4d4d4d4d4e5053565a5f656b737b838c96a0aaaba1978c82766b6055493e32261a0e0300000000000000000000000000000000000000000000101c2936434f5c6976838888888888888275695c4f4236291c0f03000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5d5c5a595654524f4b4844403b37312c26201a130d0500000000000000000000000000000000000000000000000710182129313940464d52585d6165696c6f71737576777879797979787877767473716e6c6965615c57524c453e372f271e150c03000000000000000013202c3946535f6c798693a0a0a0a09386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693a0a0a0a09386796d6053463a2d2013070000000000000000000000000000000000000000121f2c3845525f6b7885929eabafa296897c6f6356493d3023170a00000000000000000000000000000000000000000000000e1a2734414d5a6773818d9aa6b3a79b8e8174685b4e4235281b0f00000000000000000000000000000000000915202c3844505c67737f8b97a3afa59a8e82766a5e52463a2e22170b0000000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000d1a26333f4b5864707c8995a0aca89d91867b71685f59534f4d4b494848474747464956626f7c8995a2afa6998c7f7265594c3f3226190c0000000000000000000613202c3946535f6c787d7e808182838486796c6053473b302f2f3030303036424e5a6773808c99a5afa396897d7063574a3d3124170b000000000000000013202c3946535f6c798693a0aca194887b6e6154483b434e58636e79848f99a4a89e93887d73685d52473d323c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000006121f2b3743505c6875818d9aa6a093877a6e6256493d3124180c000000000000000000000000000000000000000000000916222e3b47535e68727c8791988f877f766e665e564e453d352d241c140c040000000000000000000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d1a150f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a000000000000000000000000000000000000000000000b17232f3b47535e6a76818d98a3ada99e93897f756c645c554f4a474442414040404244464a4e545a6169717a848e98a3ada99e93887c71665a4e43372b1f130700000000000000000000000000000000000000000000101c2936434f5c69768390959595958f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000a16212c3740484f52535353535353535353535353535353535353535353535251504f4e4c4a4845423f3c38342f2b26211b150f090200000000000000000000000000000000000000000000000000060f171f272e353b41474c5155595c5f62646668696b6b6c6c6c6c6b6b6a69686664625f5c5955514c46413a342d251d150c0300000000000000000013202c3946535f6c798693939393939386796c5f5346392c2013060000000000000000000000000613202c3946535f6c798693939393939386796d6053463a2d2013070000000000000000000000000000000000000000131f2c3946525f6c7986929facafa295887b6f6255493c2f22160900000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685b4f4235281c0f00000000000000000000000000000000020d1925313d4954606c7884909ca7b3aa9e92867a6e63574b3f33271b0f0300000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000a17232f3c4854606c7884909ba6aea2988d837a716a645f5c5957565554545353535355626f7b8895a2afa6998c7f7265594c3f3226190c00000000000000000006121f2c3845525e6b77848b8d8e8f9091887c6f63574c413c39373737383a3f47525e6a76828f9ba8ada094877b6e6255483c2f231609000000000000000013202c3946535f6c798693a0aca194887b6e6154483f4a545f6a75808b95a0aba2978c81766c61564b41362f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000030f1b2834404c5965717e8a96a3a3978a7e7265594d4034281b0f0300000000000000000000000000000000000000000006121f2b36414c56606a757f8993999189817870685f574f473f362e261e160d05000000000000000000000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110e09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a000000000000000000000000000000000000000000020f1b27333f4b57636f7b87929ea9aea3978c82776d635a524a443f3a37353433333435373a3e42484f575f68727c86919ca7afa4998e82766b5f53473b2f23170b00000000000000000000000000000000000000000000101c2936434f5c697683909ca2a29c8f8275695c4f4236291c0f030000000000000000000000000000000000000000000000000005101a252e373e43464646464646464646464646464646464646464646464645454442413f3d3b3936332f2c28241f1a15100a0400000000000000000000000000000000000000000000000000000000050d151c232a30363b4045494d505356585a5b5d5e5f5f5f5f5f5f5e5d5d5b5a585553504d4945403b352f29221b130b030000000000000000000013202c3946535f6c798686868686868686796c5f5346392c2013060000000000000000000000000613202c3946535f6c798686868686868686796d6053463a2d201307000000000000000000000000000000000000000013202c3946535f6c7986929facaea295887b6e6155483b2f22150800000000000000000000000000000000000000000000000d1926333f4c5966727f8c99a6b2a99c8f8275695c4f4236291c0f0000000000000000000000000000000006121e2a36414d5965717d8994a0acb8afa3978b7f73675b4f43382c20140800000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000713202c3844505c67737e8a949fa9a99f958c837c75706b686664636261616060605f5f626f7b8895a2afa6998c7f7265594c3f3226190c00000000000000000004111d2a36434f5c6874818d999a9c9d988c8074685d534c484644444444464a5059646f7a86929faba99d9185786c5f53463a2d211408000000000000000013202c3946535f6c798693a0aca194887b6e61544846505b66717c87919ca7a69b90857a70655a4f453a2f2f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000c1824303d4955626e7a87939fa69a8e8175695c5044372b1f1206000000000000000000000000000000000000000000020e1a25303a444e59636d77818b969b928a827a716961595148403830281f170f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000006121e2b37434f5c6874808c97a3afa99d92867b70655b51484039332e2b2927262627282a2e32373d454d56606a74808b96a1adaa9f93877b6f64574b3f33271b0e020000000000000000000002070a0b0c0c0c0c0c0c0c101c2936434f5c697683909ca9a99c8f8275695c4f4236291c0f0c0c0c0c0c0c0c0b0a07020000000000000000000000000000000009131c252c32373939393939393939393939393939393939393939393939393837363433312f2c292623201c18130e090400000000000000000000000000000000000000000000000000000000000000030b12181f252a3034393d404447494b4d4f50515252525352525151504f4d4b494644403d39342f2a241e171009010000000000000000000000131f2c3946525f6b767979797979797979766b5f5246392c1f130600000000000000000000000006131f2c3946525f6b767979797979797979766b5f5346392d201306000000000000000000000000000000000000000013202c3946535f6c798693a0acaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f000000000000000000000000000000000b17232f3a46525e6a76828d99a5b1b1b2a79b9084786c6054483c3024180c01000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000030f1c28333f4b56626d78838d97a0a9a79e958d87817b787572716f6e6e6d6d6d6d6c6c6c6f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000010e1b2733404c5965717d8995a1a8a89c90857a6f655d5854525150505153565b626b75808c97a3afa5998d8175695c5044372b1e1205000000000000000013202c3946535f6c798693a0aca194887b6e6154484c57626d78838d98a3aa9f94897e74695e53493e33282f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000815212d3946525e6b7783909ca89d9185786c6053473b2e2216090000000000000000000000000000000000000000000008131e28323d47515b656f7a848e989c948c847b736b635a524a423a31292119100700000000000000000000000000000000000000000000000000000000000000000000010407090a0b0c0c0c0c0b0a080604010000000000000000000000000305060707070605040200000000000000000000000000000000000000000000000000000000000000000000040608080808080808080806040000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000915222e3a47535f6c7884909ca8b0a4988c8175695e54493f362e27221e1c1a1a1a1a1c1e21262c333b444e58636e7985909ca8b0a4988c8074685b4f43372a1e1105000000000000000001080e13161819191919191919191c2936434f5c697683909ca9a99c8f8275695c4f4236291c19191919191919191816130e08010000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a2928262422201d1a1713100b07030000000000000000000000000000000000000000000000000000000000000000000000070d14191f24282d3134373a3d3f4142434445464646464545444342403e3c3a3734302d28241e19130d0600000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a4f43372a1e110500000000000000000000000005111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a4f43372b1e12050000000000000000000000000000000000000000131f2c3946525f6c7986929facaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000d192633404c596673808c99a6b2a89c8f8275685c4f4236291c0f00000000000000000000000000000004101c27333f4b57636e7a86929eaaa7a4a5aaa094887c7064584d4135291d1105000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000b17232e3a45515c66717b858e979fa6a79f98928c8884817f7d7c7b7b7a7a7a79797979787b8895a2afa6998c7f7265594c3f3226190c000000000000000000000b1824303d4955616d7985909ba7ada1968b81776f6964615f5e5d5d5e5f62676d747d87929da8aba094897d7165594d4034281b0f03000000000000000013202c3946535f6c798693a0aca194887b6e615448535e69747e89949faaa3988d83786d62574d42372c222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000005111d2a36424f5b6774808c98a5a194887b6f63574a3e3225190d00000000000000000000000000000000000000000000020c16212b353f49535e68727c86909b9e958d857d756c645c544b433b332b22190f0500000000000000000000000000000000000000000000000000000000000002060a0e11131517181919191818161513100d0a0602000000000001060a0d0f11131313131312100f0d0a070300000000000000000000000000000000000000000000000000000000060b101315151515151515151513100b06000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000b1824313d4a56626f7b8894a0acaca094887c7064584d42372d241c16120f0e0d0d0e0f12151b2129323c47525d6874808b97a4b0a89c9084776b5f52463a2d21140800000000000000030b13191f22252525252525252525252936434f5c697683909ca9a99c8f8275695c4f42362925252525252525252525231f1a130c030000000000000000000000000000010910161a1e1f202020202020202020202020202020202020202020201f1e1e1c1b19181513110e0b070300000000000000000000000000000000000000000000000000000000000000000000000000000002080e13181c2124282b2e303234353738383939393939383736353432302d2b2824201c18130d080200000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e02000000000000000000000000020e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a52493e33271b0f020000000000000000000000000000000000000000121f2c3945525f6b7885929fabafa295897c6f6256493c2f23160900000000000000000000000000000000000000000000000d1a2734404d5a6673808d9aa6b3a89b8e8275685b4f4235281c0f0000000000000000000000000000000914202c3844505c67737f8b97a3a59c9799a0a5998d8175695d5145392d22160a000000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000006121d29343f4a555f69737c858d959ba1a6a39d9894908e8c8a8988888787878686868685858a96a2afa6998c7f7265594c3f3226190c000000000000000000000814202c3945505c68737f8a959fa9a89d938a817a74706d6b6a6a6a6a6c6f72787e868f99a3aea4998e83786c6054483c3024180c00000000000000000013202c3946535f6c798693a0aca194887b6e61544f5a65707a85909ba6a79c91877c71665b50463b3025222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000010e1a26333f4b5864707c8995a1a4988b7f73665a4e4135291c100400000000000000000000000000000000000000000000050f19232d37414c56606a747e89939d9f978f877e766e665d554d453d342b21160b0000000000000000000000000000000000000000000000000000000003080e12161a1d20222425252626252423211f1c1916120d09030001070d1216191c1e1f202020201f1d1b1917140f0a03000000000000000000000000000000000000000000000000010a11171c1f2122222222222222211f1c1711090100000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000d1a2733404c5965727e8b97a3b0a99d9084786c5f54483c31261b120b06030000000002050a1017202a35404c57636f7b8794a0acaca093877b6e6255493c3023170a000000000000020c151d242a2f313232323232323232323236434f5c697683909ca9a99c8f8275695c4f423632323232323232323232312f2b251e150c02000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313121211100e0d0b09070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c1015181c1e21232627292a2b2c2c2c2c2c2c2b2b2a28272523211e1b1814100c0702000000000000000000000000000000000a16212c3740484f525353535353535353524f4840372c21160a00000000000000000000000000000a16212c3740484f525353535353535353524f4940372c21160a000000000000000000000000000000000000000000121f2b3845515e6b7884919eabb0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000f1b2835414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e0000000000000000000000000000010d1925313d4854606c7884909ca79e938b8e98a49d9185796d62564a3e32261a0e020000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000010c18232e38434d57616a737b838a90959a9ea2a4a09d9a9897969594949493939393929292949ca6b2a6998c7f7265594c3f3226190c0000000000000000000004101c2834404b57626e78838e98a1aaa59c938b85817d7a7877767777797b7e83899098a1aba59c92887d72665b5044382c20140800000000000000000013202c3946535f6c798693a0aca194887b6e615456616c76818c97a2aba0958b80756a5f544a3f34291f222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000000a17232f3c4854616d7986929ea79b8f82766a5d5145382c201307000000000000000000000000000000000000000000000007111b25303a444e58626d77818b95a0a199908880786f675f574f463d33281c11050000000000000000000000000000000000000000000000000000070e14191e23262a2c2f30313232323231302e2c2926221e19140f090c12181d2226282b2c2d2d2d2c2b2a282623201b150e0600000000000000000000000000000000000000000000010b131b22282c2e2e2e2e2e2e2e2e2e2c28221b130a01000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a0000000000000000000000000000000000000000000f1c2835424e5b6774818d9aa6b3a69a8d8174685c4f43372b20140900000000000000000000050e19242f3b47535f6b7784909da9afa3968a7d7164584b3f3225190c00000000000009141e272f363b3e3f3f3f3f3f3f3f3f3f3f3f434f5c697683909ca9a99c8f8275695c4f423f3f3f3f3f3f3f3f3f3f3f3e3b362f271e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0f121517191b1c1d1e1f1f20201f1f1f1e1d1c1a191714120f0c08040000000000000000000000000000000000000005101a252e373e4346464646464646464646433e372e251a1005000000000000000000000000000005101a252e373e4346464646464646464646433e372e251b1005000000000000000000000000000000000000000000111e2a3744515d6a7784909daab1a4978b7e7165584b3f3225190c0000000000000000000000000000000000000000000003101d2936434f5c6975828f9ba8b3a6998c8073665a4d4034271a0d000000000000000000000000000006121e2a36414d5965717d8994a0a69a8e828894a0a2968a7e72665a4e42372b1f13070000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000006111c27313b454f58616971787e858a8e9295989b9d9ea0a1a2a2a1a1a0a0a0a09f9f9f9fa0a5aeb2a6998c7f7265594c3f3226190c00000000000000000000000c18232f3a46515c67717c868f98a0a7a59d96918c8987858483838485878b8f949ba2aaa49c938a80766b60554a3f33271c100400000000000000000013202c3946535f6c798693a0aca194887b6e61545d68727d88939ea8a4998e84796e63584e43382d2318222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000000713202c3845515d6976828e9ba79e9286796d6154483c2f23170a00000000000000000000000000000000000000000000000009141e28323c46515b656f79848e98a2a29a928a8179716960584f44392d211508000000000000000000000000000000000000000000000000030b12191f252a2f3336393b3d3e3f3f3f3f3e3c3a3835322e2a25201a14161d23292e323537393a3a3a3938363532302c2620180f0600000000000000000000000000000000000000000009131d252d33383b3b3b3b3b3b3b3b3b38332d251c1309000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a000000000000000000000000000000000000000000111d2a3743505d6976838f9ca8b1a4978b7e7265594c4033271b0f03000000000000000000000007131e2a37434f5c6874818d9aa7b2a5998c8073665a4d4034271a0e000000000004101b25303941474b4c4c4c4c4c4c4c4c4c4c4c4c4f5c697683909ca9a99c8f8275695c4f4c4c4c4c4c4c4c4c4c4c4c4c4b47413930261b1005000000000000000000000004080a0c0c0c0c0c0c0c0c0c0b0804000000000000000000000102030303020100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080a0c0e0f11111213131313121211100f0e0c0a080503000000000000000000000000000000000000000000000009131c252c32373939393939393939393937322c251c13090000000000000000000000000000000009131c252c32373939393939393939393937322c251c130900000000000000000000000000000000000000000000101d2936434f5c6975828f9ba8b2a5998c8073665a4d4034271b0e0200000000000000000000000000000000000000000006121f2b3845515e6a7784909da9b1a4988b7e7265584c3f3226190c00000000000000000000000000000b17232e3a46525e6a75818d99a5a2968a7e84909ca69a8f83776b5f53473b2f23170c0000000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000000000a151f29333d464f575f666d73797e8286898c8e9092939495959696969696979797979899a0aab2a6998c7f7265594c3f3226190c000000000000000000000007121e2935404b55606a737d868e959ca2a7a29d99959392919090919294979ba0a5a6a09a928a81786e645a4f44392d22170b0000000000000000000013202c3946535f6c798693a0aca194887b6e6159646e79848f9aa4a89d92887d72675c52473c31271c15222f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000004101c2935414d5a66727e8b97a4a295897d7064584b3f33261a0e010000000000000000000000000000000000000000000000020c16202a353f49535d67727c86909aa0a09c938b837b726a6155493d3124180b0000000000000000000000000000000000000000000000050d151d242a30363b3f4245484a4b4c4c4c4b4a494745423e3a36312b251f21282f353a3e414446464646464543413f3c38312a21180d030000000000000000000000000000000000000004101b252f373f44474848484848484847443f372e251a0f040000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a000000000000000000000000000000000000000000121e2b3845515e6b7784919daaafa296897c7063564a3d3124180b000000000000000000000000020e1b2733404c5965727e8b98a5b1a79b8e8175685b4f4235281c0f00000000000915212c37414b5257585858585858585858585858585c697683909ca9a99c8f8275695c5858585858585858585858585857534b42382d21160a000000000000000000030a0f14171919191919191919191714100a0300000205080a0c0d0e0f0f0f0f0f0e0d0b090705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a26211a130a0100000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a27211b130a01000000000000000000000000000000000000000000000f1b2835414e5a6774818d9aa6b3a79b8e8175685c4f43362a1d11050000000000000000000000000000000000000000000915212e3a4753606c7986929fabafa396897d7063574a3e3124180b0000000000000000000000000004101b27333f4b57636e7a86929eaa9e92867a808b97a39f93877b6f63584c4034281c100400000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000030e18212b343d454d555c62686d7276797d8082848586878888898989898a8a8a8a8a8b8e98a4b0a6998c7f7265594c3f3226190c0000000000000000000000010d18232e39434e58616b737c838a91969b9fa3a5a2a09e9d9d9d9d9fa0a3a5a29f9a958f8880786f665c52483d32271c11060000000000000000000013202c3946535f6c798693a0aca194887b6e61606a75808b96a0aba1968c81766b60564b40352a201515222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000000000d1925323e4a56636f7b8894a0a5998c8074675b4f42362a1d1105000000000000000000000000000000000000000000000000040e19232d37414b56606a747e899393939393938d857c7265584c3f3226190c00000000000000000000000000000000000000000000050e171f272e353c41464b4f5254565858595958575654514e4a46423c3730292b323a40464a4e50525353535251504e4b48433c33291f1409000000000000000000000000000000000000000a15212c37414950545555555555555554504940362c2115090000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a000000000000000000000000000000000000000000121f2c3945525f6b7885929fabaea194887b6e6155483b2f221509000000000000000000000000000b1824313e4a5764707d8a96a3b0a99c8f8376695c5043362a1d1000000000000d1925313d49535d636565656565656565656565656565697683909ca9a99c8f8275696565656565656565656565656565645d54493e32261a0d0100000000000000050d151b202425262626262626262524201b150e070b0e111416181a1b1c1c1c1c1c1b19181614110e0a0602000000000000000000000000000000000000000000000000000000000407080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080704010000000000000000000000000000000000010910161a1e1f20202020202020201f1e1a16100901000000000000000000000000000000000000010910161a1e1f20202020202020201f1e1b1610090100000000000000000000000000000000000000000000000d1a26333f4c5965727e8b98a4b1a99d9084776b5e5245392d2014080000000000000000000000000000000000000000000c1825313d4a56626f7b8894a1adada094877b6e6255483c2f231609000000000000000000000000000814202c3844505b67737f8b97a3a69a8e82767b87939fa4988c8074685c5044382d21150900000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000040d161e252b333b434a51575c61666a6d7073757778797b7b7b7c7c7c7d7d7d7d7d7d7e8895a2afa6998c7f7265594c3f3226190c00000000000000000000000007121d27323c464f59616a727980858a8f9396999b9c9e9e9f9f9f9e9d9b9996938e89847d766e665d544a40362c21160b000000000000000000000013202c3946535f6c798693a0aca194877a6d6166717c87929ca7a59a90857a6f645a4f44392f24190e15222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000000000916222e3b47535f6c7884919da89c9083776b5e5246392d2114080000000000000000000000000000000000000000000000000007111b252f3a444e58626c778186868686868686867f7265594c3f3226190c000000000000000000000000000000000000000000040e172029313940474d52575b5e616364656565656462605e5a56524d48423b34343c444b51565a5d5f6060605f5e5c5a58544e453b31251a0e020000000000000000000000000000000000020e1a26323d49535b6061616161616161605b52483d32261a0d0000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c7986929facada094877a6d6054473a2e211407000000000000000000000000000916232f3c4956626f7c8895a2afaa9d9084776a5d5044372a1d1100000000000f1c2835414e5a656f7272727272727272727272727272727683909ca9a99c8f82757272727272727272727272727272726f665a4e4235291c1003000000000000040e171f262c30323232323232323232302c27201713171b1e2123252628282929292827262423201d1a17130e0904000000000000000000000000000000000000000000000000060c10131515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151513110c07010000000000000000000000000000000000050a0e1113131313131313131313110e0a0500000000000000000000000000000000000000000000050a0e1113131313131313131313110e0a05000000000000000000000000000000000000000000000000000b1824313e4a5763707c8995a2aeac9f93877a6e6155493d3024180c010000000000000000000000000000000000000005111d2935414d5966727e8b97a3b0aa9e9185786c5f53463a2d211407000000000000000000000000010d1925313d4854606c7884909ba7a2968a7e7277838f9ba79c9085786d6155493d3125190d02000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000000000b151f2830363b3d3e40464b51555a5d616466686a6c6d6e6e6f6f6f6f7070707071717b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000b16202a343d474f5860676e747a7e83878a8c8e90919292929291908f8c8a86827d78726b645c544b42382e241a0f04000000000000000000000013202c3946535f6c798693a0aca094877a6d626d78838e98a3a99e94897e73685e53483d32281d120915222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000000006121f2b3743505c6875818d9aa69f93877a6e6255493d3024180b000000000000000000000000000000000000000000000000000009131e28323c46505b656f787979797979797979797165584b3f3225190c0000000000000000000000000000000000000000020c162029323b434b52585e63676b6d707172727271706f6d6a67635e59534d463e3d464e565c6266696c6d6d6d6c6b6967645f574d42362a1e1205000000000000000000000000000000000005111e2a36424e5a656d6e6e6e6e6e6e6e6c645a4e4236291d100000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201407000000000000000000000000000815222f3b4855616e7b8895a2aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c69767e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e83909ca9a99c8f827e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e766a5d5044372a1d11040000000000010c16202931373c3f3f3f3f3f3f3f3f3f3c383129211f23272a2d2f31333435363636353433312f2d2a26231f1a15100a040000000000000000000000000000000000000000020a11181c2021222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222201d18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854616d7a86929fabafa2968a7d7165594d4135291d1206000000000000000000000000000000000000000a16212d3945515d6975828e9aa6b3a79b8f8276695d5044372b1e120500000000000000000000000006121e2a35414d5965717c8894a0aa9e92867a6e727e8b97a3a195897d7165594d42362a1e1206000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000007121d27313a41474a4b4c4d4f5051525354575a5c5e5f6061626262636363636363646f7b8895a2afa6998c7f7265594c3f3226190c00000000000000000000000000040e18222b353d464e555c63696e73777a7d8082838485858685848382807d7a76726d67615a524a423930261c120800000000000000000000000013202c3946535f6c798693a0aca09386796d69747f8a949faaa2988d82776c62574c41362c21160b0915222f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000000030f1b2734404c5965717d8a96a3a3968a7d7165594c4034271b0f0200000000000000000000000000000000000000000000000000010c16202a343f49535d666c6c6c6c6c6c6c6c6c6c685f54483c3024170b000000000000000000000000000000000000000009141e28323b444d555c63696f73777a7c7e7e7f7f7e7d7b7976736e6a645e575049454f5860686e7376787979797977757370695e53463a2e21140800000000000000000000000000000000000815212d3946525e6b767b7b7b7b7b7b7b766a5e5144372b1e110000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c6976838c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c949fabaa9e938c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c84776a5d5044372a1d1104000000000007121d28323b43484b4c4c4c4c4c4c4c4c49433b33292b2f3336393c3e40414242424242413f3e3c3936332f2b26211b150f08010000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d29241d150d0300000000000000000004070808080808080808080808080808080808080808080808080808080807060503010000000000000000000000000000000000000000000000000000000000000407080808080808080808080704010000000000000000000713202c3945515e6a77838f9ca8b2a6998d8175695d51453a2e23180d02000000000000000000000000000000000006111c27323e4a55616d7985929eaab0a4988b7f73665a4e4135281c0f030000000000000000000000000b17222e3a46525e6a75818d99a5a69a8e82766a6e7a86929ea59a8e82766a5e52463a2e22170b000000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000000c17232e39434c535758595a5b5c5d5f605f5a524f51525354555555565656565757626f7b8895a2afa5998c7f7265594c3f3226190c0000000000000000000000000000061019232b343c444b52575d62676a6e71737576777879797878777573716e6a66615c564f48403830271e140a0100000000000000000000000013202c3946535f6c798693a0aca09386796c707b86909ba6a69c91867b70665b50453a30251a0f050915222f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000000000b1824303d4955626e7a87939fa69a8d8175685c5043372b1e12060000000000000000000000000000000000000000000000000000040e18222d37414b545c5f5f5f5f5f5f5f5f5f5f5d564d43382c2014080000000000000000000000000000000000000005101b25303a444d565f676e757a7f8386898a8c8c8c8b8a8886837f7a756f69625a524d57616a72797e8285868686858482807b6e6255483c2f22150900000000000000000000000000000000000c1824313d4955626e7a87888888888882766a5d5144372b1e110000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c697683909898989898989898989898989898999da6b0b0a59d9998989898989898989898989898989084776a5d5044372a1d110400000000000c18232f3a444d54585959595959595958544d453b32373b3f4346494b4c4e4f4f4f4f4e4d4c4a4846423f3b36312c262019120b03000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b39352f271f150b01000000000000060c101315151515151515151515151515151515151515151515151515151514141311100e0c090703000000000000000000000000000000000000000000000000060c10131515151515151515151513110c07010000000000000004101d2936424e5b6773808c98a4b0a99d9185796e62564b3f34291e140a01000000000000000000000000000000040e18222d38434f5a66727d8a96a2aeaca094887c6f63574a3e3225190d00000000000000000000000004101b27333f4b57626e7a86929eaaa2968a7e72656a76828e9aa69e92867a6e63574b3f33271b0f030000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000030f1c2834404b555e6364666768696a6b6d6b64594e4446474848494949494a4a4a56636f7c8996a2afa5988c7e7265584c3f3225190c000000000000000000000000000000071019222a323940464c52565a5e616466686a6b6b6c6c6b6b6a686764615e5a55504a443d362f261e150c020000000000000000000000000013202c3946535f6c798693a0ac9f9286796c77828c97a2aaa0958a7f746a5f54493e34291e1309000915222f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000000000814212d3946525e6b7783909ca89d9184786c5f53473a2e22150900000000000000000000000000000000000000000000000000000006111b252f39424a5053535353535353535353514c443b31261b1004000000000000000000000000000000000000000b16212c37414c565f68717880868b90939597989998989795928f8b86817b746c645c545e69737c848a8f9193939392918f887b6f6255483c2f22150900000000000000000000000000000000030f1b2834404c5965717e8a959595958b7f72665a4e4135291c100000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c697683909c9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aab3b3aaa29f9e9e9e9e9e9e9e9e9e9e9e9e9e9d9084776a5d5044372a1d110400000000000f1c2834404b565f6465656565656565655f574d433d43474b4f525557595a5b5c5c5c5b5a595755524f4b47423d37312b241d150d05000000000000000000000000000006111c262f383f454848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484845403931271d120700000000020a11181c2021222222222222222222222222222222222222222222222222222221201f1e1c1b181613100c080400000000000000000000000000000000000000020a11181c2021222222222222222222201d18120b03000000000000010d1a26323f4b57636f7c8894a0acaea2968a7e73675c51463b30261c130a0300000000000000000000000000050d16202a343f4a55606b77838e9aa6b2a89c9084786c5f53473b2f22160a0000000000000000000000000814202c38444f5b67737f8b97a2aa9e9286796d6166727e8a96a2a3978b7f73675b4f43382c2014080000000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000005121f2b3844505c676f7172737576777879766a5e5145393a3b3c3c3c3c3c3d3f4b5864717d8a97a4b0a4978b7e7165584b3e3225180b0000000000000000000000000000000007101820272e353b41464a4e5255585a5c5d5e5f5f5f676b6b6b6b6b675e544a453f39332c241d140c03000000000000000000000000000013202c3946535f6c798693a0ac9f928578737d88939ea9a4998e83786e63584d42382d22170d02000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000000000005111d2a36424f5b6773808c98a5a094887b6f63564a3e3125190c0000000000000000000000000000000000000000000000000000000009131d2730383f444646464646464646464644403a32291f150a0000000000000000000000000000000000000005111c28333e49535e68717a838a91979c9fa2a4a5a4a2a2a2a19f9b97928c867e766e655c65707b858e969b9ea0a0a09f9d95887b6f6255483c2f2215090000000000000000000000000000000006121f2b3743505c6875818d9aa2a094887b6f63564a3e3225190d0000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c6976839092929292929292929292929292929298a2adada1989292929292929292929292929292929084776a5d5044372a1d11040000000000121e2b3844505c68707272727272727271695f554c494e53575b5f626466676869696868676563615e5b57534e49433c362f271f170f06000000000000000000000000000b17222d38424a5154555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554514b43392f23180c000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2d2c2b292725221f1c1814100b0601000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2d29241d150d030000000000000a16232f3b47535f6b77848f9ba7b2a69b8f84786d62574c42382e251c150e0804000000000000000001050a10171f28323c46505b66717c88939fabafa3978c8074685b4f43372b1f13060000000000000000000000010d1925313d4854606c78848f9ba7a69a8d8275695d616d7986929ea79b8f84786c6054483c3024180c0100000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000613202c3946535f6c797e7f818283848586796c6053473b302e2f2f2f303036424e5a6773808c99a5afa396897d7063574a3d3124170b0000000000000000000000000000000000060e161d242a30353a3e4246494b4d4f50515860697177777777777065584c3f342e28211a130b0200000000000000000000000000000013202c3946535f6c798693a0ab9e92857879848f9aa5a79d92877c72675c51463c31261b100600000915222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000000000010e1a26333f4b5864707c8995a1a4978b7e72665a4d4135281c1004000000000000000000000000000000000000000000000000000000010b151e272e33373939393939393939393938342f2820170d03000000000000000000000000000000000000000a16222d39444f5a656f79838c959ca2a8a8a29d999796969697989b9e9d97908880776e656a76828c97a0a7aba39c97949394887b6f6255483c2f221509000000000000000000000000000000000916222e3b47535f6c7884919da99d9184786c5f53473b2e2216090000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c69768385858585858585858585858585858586919da9a99c908685858585858585858585858585858584776a5d5044372a1d11040000000000131f2c3946525f6c797f7f7f7f7f7f7f7a71675e54545a5f64686b6e70727475757575757372706e6b67635f5a544e474039312921180f060000000000000000000000000f1b27333f4a545c616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615d554b4034291d100400000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a39373634312f2c2824201c17120c0600000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b39352f271f150b01000000000007131f2b37434f5b67737f8b96a2adaca0958a7e73695e544a40372e261f1914100c0a09080708090b0d11151b2229313a444e58626d77838e99a4b0a99e92877b6f63574b3f33271b0f03000000000000000000000006121e2935414d5965717c8894a0aca195897d7165595d6975828e9aa6a094887c7064584d4135291d110500000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000006121f2c3845525e6b77848c8d8e8f9092887c6f63574c423c39383737383a3f48535e6a76838f9ba8ada094877b6e6255483c2f231609000000000000000000000000000000000000040b12191e24292e3236393c3f4149515a626a727a83848484807366594c4033261d161008010000000000000000000000000000000013202c3946535f6c798693a0aa9e918477808b96a1aca1968b80756b60554a40352a1f140a0000000915222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000000000000a17232f3c4854606d7985929ea79b8e8276695d5144382c1f130700000000000000000000000000000000000000000000000000000000030c151c23282b2c2c2c2c2c2c2c2c2c2c2b28241e160e0500000000000000000000000000000000000000030f1b27323e4a55616c77818b959ea7ada49d96918d8a8989898a8c8e92969b9a928980766d6f7b87929ea9ada399918b888687887b6f6255483c2f221509000000000000000000000000000000000d1925323e4a56636f7b8894a0a69a8d8175685c5043372b1f12060000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000f1c2936424f5b68737878787878787878787878787878787883909ca9a99c8f827878787878787878787878787878787874685c5043362a1d10040000000000121f2b3844515d69737c868c8c8c8c8c837970665c5f656b6f74777a7d7f818282828282817e7d7a77736f6a655f59524b433b332a21180e040000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d675c5145392c2013070006111c262f383f454848484848484848484848484848484848484848484848484848484747454442403e3b3834302c28231d17110a03000000000000000000000006111c262f383f454848484848484848484845403931271d12070000000000030f1b27333f4b57626e7a85919ca7b1a69b90857a70665c52494038312a25201c19171515141516171a1d21262c333b434c565f6a747e89949faaafa4988d82766a5e53473b2f23170b0000000000000000000000000b17222e3a46525e6975818d99a5a99d9185796d61555965717d8996a2a5998d8175695d5145392d22160a00000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000004111d2a36434f5c6874818d999b9c9d988c8074685d544c484645444445474a5159646f7b87939faba99d9185786c5f53463a2d2114070000000000000000000000000000000000000001070d13191d22262a323a424b535b636c747c848c9190867b7165584c3f3326190c0500000000000000000000000000000000000013202c3946535f6c798693a0aa9d90837c87929da7a59a8f84796f64594e44392e23180e030000000915222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000000000000713202c3845515d6976828e9ba79e9285796d6054483b2f23160a0000000000000000000000000000000000000000000000000000000000030a11171b1e202020202020202020201f1c18130c05000000000000000000000000000000000000000006131f2b37434f5b66727d88939da7ada49b928b85817e7c7c7c7d7f82868a8f959b92897f75727e8b97a3afa79c9187807b797a7c7b6e6255483c2f22150900000000000000000000000000000004101c2935414d5a66727e8b97a4a3968a7e7165594c4034281b0f030000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000e1a27333f4b5761696b6b6b6b6b6b6b6b6b6b6b6b6b6b6b75828f9ca9a99c8f82756b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6962574c4034281b0f020000000000101c2935414c57616a747e87919999958b82786e656b71767b8084878a8c8d8e8f8f8f8e8d8b898783807b76706a645d554d453c332a20160c020000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b796d6154473b2e211408000b17222d38424a51545555555555555555555555555555555555555555555555555554545352514f4d4a4744413d38332e28221c150e07000000000000000000000b17222d38424a5154555555555555555554514b43392f23180c0000000000000b17222e3a46525d6974808b96a1acaca1978c82786e645b524a433c36302c28252322212121222426292d32383e454d565e68717b86909ba5b0a89d92877c7065594e42362a1f13070000000000000000000000040f1b27333f4b56626e7a86929ea9a4998d8175695d5155616d7985919da99d9185796d62564a3e32261a0e02000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000010e1b2733404c5865717d8995a1a9a89c90857a6f665e5855535151515153565b626b75818c97a3afa5998d8175685c5044372b1e1205000000000000000000000000000000000000000000020b131b232b343c444c545d656d757e868e9692887e74695f54493d3024170b0000000000000000000000000000000000000013202c3946535f6c798693a0a99c9083838e99a3a99e93887d73685d52483d32271c1207000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000000000004101c2935414d5a66727e8b97a4a195897c7064574b3f32261a0e01000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c07010000000000000000000000000000000000000000000a16222f3b47535f6b77838e9aa5afa69b9289817a75716f6f6f7173767a7e848a919991877c75818e9aa7aea2968a7f756f6d6d6f70695e53463a2d2114080000000000000000000000000000000713202c3845515d6976828e9ba79f93877a6e6255493d3024180c000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000b17232f3a454f575d5e5e5e5e5e5e5e5e5e5e5e5e5e5e6975828f9ca9a99c8f8275695e5e5e5e5e5e5e5e5e5e5e5e5e5e5d5850463b3024180c0000000000000c1824303b454f58626c757f89929c9d948a80766e757c82878c909396989a9b9c9c9c9b9a989693908c87827c756e675f574e453c32281e140a0000000000000000000013202c3946535f6c7986888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888887b6e6154483b2e211508000f1b27333f4a545c61616161616161616161616161616161616161616161616161616161605f5d5b595754504d49443f3a342d27201811090000000000000000000f1b27333f4a545c616161616161616161615d554b4034291d1004000000000006121e2935414c57636e79858f9aa5afa89e948a80766d645c544d47413c383532302f2e2e2e2f303336393e434950575f68707a838d98a2acaca2978c81766b5f54483d31251a0e0200000000000000000000000814202c38444f5b67737f8b96a2aca094887c7064584c515d6975818d99a5a2968a7e72665a4e42372b1f1307000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000000b1824303c4955616d7884909ba6ada1968b81786f6964615f5e5d5d5e6063676d747d87929da8ab9f94887d7165594c4034281b0f030000000000000000000000000000000000000000040c141d252d353d464e565e666f777f879098958b81766c62584d43382c2014080000000000000000000000000000000000000013202c3946535f6c798693a0a99c90858a959faaa2978c82776c61564c41362b20160b00000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000000000000000d1925313e4a56636f7b8894a0a5988c8073675b4e4236291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323e4a57636f7b88949fabab9f948a80766f69656362636466696e737980878f978e847983909da9ab9e92867a6e63606163635f574d42362a1e12050000000000000000000000000000000a17232f3c4854606d7985929ea89c9083776b5e5246392d211408000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000a16222d38434c54595b5b5b5b5b5b5b5b5b5b5b5b5b5c6975828f9ca8a99c8f8275695c5b5b5b5b5b5b5b5b5b5b5b5b5b5a554d44392e22170b00000000000008131e29333d46505a636d76808a949d9c92897f7980878d93989ca0a3a3a09f9e9e9e9fa1a3a29f9c98938d878079716960574e443a30261b110600000000000000000013202c3946535f6c7986939595959595959595959595959595959595959595959595959595959595959595959595959595959595959594887b6e6154483b2e21150800121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d6d6b6a686663605d5955504a453f38312a231b120a0100000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6d675c5145392c2013070000000000010d1924303b46525d68737e89939ea8b0a69c928980766e665f58524d4844413f3d3b3b3a3b3c3d3f4245494e545a6169717a838c959fa9afa59a90857a6f64594e43372c2015090000000000000000000000010d1925313c4854606c78848f9ba7a79b8f84786c6054484d5965717d8995a1a69a8f83776b5f53473b2f23170c000000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000000814202c3844505c68737e8a959fa9a89d938a817a75716e6c6b6a6a6b6c6f73787e879099a3aea3998e83776c6054483c3024180c0000000000000000000000000000000000000000050e161e262e373f474f586068707881899199978d83796e645a50463c31271b10040000000000000000000000000000000000000013202c3946535f6c798693a0aca19791939ca6a69b90867b70655a4f453a2f241a0f0400000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000000000000000916222e3a47535f6c7884919da89c8f83776a5e5245392d20140800000000000000000000000003090d0f111111111111100e0b06000000000000050a0d10111111111111100d0a050000000000000000000000000000000000000000000000000f1b2834414d5a66737f8b98a4b0a69a8e83786d645d58565556575a5d62676e757d858e958a8085919eaba89c8f83766a5d53545657544d453b30251a0e020000000000000000000000000000010e1a26333f4b5764707c8995a1a5988c8074675b4f42362a1d1105000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000d1a26323e4a555f6567676767676767676767676767676875828f9ca8a99c8f8275696767676767676767676767676767665f554a3f33271a0e010000000000020d17212b343e48515b656e78828b959f9b9187838b92999ea4a39e9a9694929191929394979a9ea4a39e98928b837b726960564c42382d22170c01000000000000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a194887b6e6154483b2e2115080013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a7978777572706d6965605b56504a433c342d241c130a0100000000000013202c3946525f6c777b7b7b7b7b7b7b7b796d6154473b2e21140800000000000008131e2a35404c57616c77818c96a0a9aea49b92898078716a635e5854504d4b4948484748484a4c4e51555a5f656c737b838c959ea7b0a69d93897e74695e53483d32261b0f04000000000000000000000006121e2935414d5965707c8894a0aca3978b7f73675b4f434955616d7985919da99f93877b6f63584c4034281c10040000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000004101c2834404b57626d78838d97a1a9a59c938c86817d7a7977777777797b7f84899099a2aba59c92877d72665b4f44382c20140800000000000000000000000000000000000000060f172028303840495159616a727a828a939b9a90857b71675d52483e342a20150a000000000000000000000000000000000000000013202c3946535f6c798693a0aca9a19d9fa5aa9f948a7e74695e53493e33281e13080000000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000000000000000000000006121e2b3743505c6875818d9aa69f93867a6e6155493c3024170b0000000000000000000000080f14191c1e1e1e1e1e1e1d1a17110b030000020910161a1c1e1e1e1e1e1e1c1a1610090200000000000000000000000000000000000000000000101d2a3643505c6975828e9ba7aea296897d72665c524c4949494b4d51565c636b737c858f918788939faca79a8d8174675b4e474a4a48433b33291f140900000000000000000000000000000005111d2a36424e5b6773808c98a5a195897c7064584b3f33261a0e01000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000f1c2835424e5a667174747474747474747474747474747475828f9ca8a99c8f827574747474747474747474747474747471675b4f4236291d1003000000000000050f19222c363f49535c667079838d96a099918e959ca3a69f98928e8a878584848586888a8e93989ea5a39c958d847b72685e54493f34291e1207000000000000000013202c3946535f6c798693a0acaeaeaeaaa6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a194887b6e6154483b2e2115080013202c3946535f6c79868888888888888888888888888888888888888888888888888887868583817f7c7975716c67615b554e463f362e251c130900000000000013202c3946535f6c7986888888888888887b6e6154483b2e211508000000000000020d19242f3a45505b65707a848e97a1aaada49b928a827b756e6964605d5a5856555454545556585b5e61666b70777e858d959ea7b0a79e948b81776c62574c42372b20150a0000000000000000000000000b16222e3a46525d6975818d99a5aa9e92867a6e63574b3f44505c6975818d99a5a4988c8074685c5044382d2115090000000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000000000c17232f3a46515c67717b858f979fa6a59e97918d8987858484848486888b8f959ba2aba49c938a80756b60554a3e33271c1004000000000000000000000000000000000000030e172129323a424a525b636b737b848c949c9c92887e73695f554b41362c22180e03000000000000000000000000000000000000000013202c3946535f6c798693a0acb3adaaabaea3988d83786d62574d42372c22170c010000000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000000000000020f1b2734404c5965717d8a96a2a2968a7d7165584c4033271b0f020000000000000000000912192025292a2a2a2a2a2a2a27221c150d04020b141b2126292a2a2a2a2a2a2926211b140b02000000000000000000000000000000000000000000121e2b3845515e6b7784919daaac9f9286796d61554a413d3c3d3e41454b5259616a737d879292939aa4afa6998c807366594c403d3d3b37312a21170d030000000000000000000000000000000814212d3946525e6a77838f9ca89e9285796d6154483c2f23170a00000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c697681818181818181818181818181818181828f9ba8a99c8f8381818181818181818181818181818181776a5d5044372a1d11040000000000000007101a242d37414a545e67717b858e98a19c9b9fa7a59c948d87827e7b79787778797b7e82878d949ba4a79f968d847a70655b50453a2f24180d010000000000000013202c3946535f6c798693a0acb7b4a9a09998989898989898989898989898989898989898989898989898989898989898989898989894887b6e6154483b2e2115080013202c3946535f6c798693959595959595959595959595959595959595959595959594949392908e8b8985817d78736d665f58504840372e251b1107000000000013202c3946535f6c7986939595959594887b6e6154483b2e2115080000000000000007131e29343e49535e68727c858f98a0a9ada49c948d86807a75706c6966646362616161626365676a6e72767c82888f979fa7afa69e958c83796f655a50463b30251a0f040000000000000000000000030f1b27333f4b56626e7a86929ea9a69a8e82766a5e52463a404c5864707c8995a1a89c9084786d6155493d3125190d0100000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000000007121e29343f4a555f69737c858d959ca1a7a29d99969492919090919294979ba0a6a5a099928a81786e64594f44392d22160b0000000000000000000000000000000000000009151f29333b444c545c646d757d858e969e9f958a80766c62574d43392f251a100600000000000000000000000000000000000000000013202c3946535f6c798693a0acb9b9b7b2a79c91877c71665b51463b30261b1005000000000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d2013070000000000000000000000000000000b1824303d4955626e7a87939fa6998d8174685c4f43372a1e1206000000000000000008121b242b313537373737373736332e271f160d0b141d252c323637373737373736322c251d140b000000000000000000000000000000000000000000131f2c3946525f6c7885929fabaa9d9184776b5e514539302f3032353a40474f58616b75808b969fa4acb2a6998c7f7265594c3f32312f2b261f180f05000000000000000000000000000000000b1824303d4955616e7a87939fa79b8e8276695d5145382c20130700000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c6976838e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e949faaab9f958e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5044372a1d1104000000000000000008121b252f38424c555f69727c868f9aa5a8aba69c938a827b76716e6c6b6b6b6c6f72767b8289929ba4a89f968c82776c62574b4035291e12060000000000000013202c3946535f6c7986919ba5b0b0a4988e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887b6e6154483b2e2115080013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a0a09e9d9a9895918d89847e78716a625a524940372d23190e040000000013202c3946535f6c798693a0a2a2a194887b6e6154483b2e21150800000000000000010c17222d37424c56606a737c868e979fa7aea69f98918b86817c797673716f6e6e6d6e6f707174767a7e82878d939aa1a9aca59d948c837a70675d53493e34291e14090000000000000000000000000814202c38434f5b67737e8b96a2ada195897d7165594e42363c4854606c7885919da9a195897d7165594d42362a1e120600000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000010d18232e39434e58616a737b838a90969b9fa2a5a2a09f9e9d9d9e9fa1a4a5a29e9a948e8880786f665c52483d32271c1105000000000000000000000000000000000000030f1a26313b454d555e666e767e878f979fa1978d83786e645a50463b31271d13080000000000000000000000000000000000000000000013202c3946535f6c798693a0acacacacaba0958b80756a5f554a3f342a1f140900000000000000000915222f3c4855626f7b8895a2aca09386796d6053463a2d2013070000000000000000000000000000000814212d3946525e6a77838f9ca89d9084786b5f53463a2e2115090000000000000005101a242d363c41444444444444433f3931281f14121c262f373e42444444444444423e372f261c1207000000000000000000000000000000000000000013202c3946535f6c798693a0acaa9d908376695d5043372a222325292e353d464f59636e7984909ba7b3b2a6998c7f7265594c3f3226231f1b150e0600000000000000000000000000000000020f1b2734404c5965717d8a96a2a4978b7e72665a4d4135291c100400000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c697683909b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa6b0b1a79f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5044372a1d110400000000000000000009131d26303a434d57606a747d8a96a3b0aa9f948a8178716a65625f5e5e5e6062666a70778089929ca6a89e93897e73685d51463a2e23170b00000000000000131f2c3945525e6a75808a949ea8aea295887e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7a6e6154483b2e2115080013202c3946535f6c798693a0acaeaea8a4a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a4a5a7a9a7a4a19d99948f89837c746c645b52493f352b20150b0000000013202c3946535f6c798693a0acaea194887b6e6154483b2e211508000000000000000006101b25303a444e58616a737c858d959da4aba9a39c97918d898582807d7c7b7a7a7b7b7c7e8083868a8e93999ea5aca8a29a938b837a71685e554b41372d22180d020000000000000000000000010d1925303c4854606c77838f9ba7a89c9185796d6155493d313844505c6874818c98a5a59a8e82766a5e52463a2e22170b00000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000000000007121c27323c464f58616971787f858a8f9296989a9c9d9e9e9f9e9e9c9b9896928e89837d766e665d544a40362b21160b0000000000000000000000000000000000000007131f2b37424d575f67707880889199a1a4998f857b71675c52483e34291f150b010000000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0998f84796e63594e43382d23180d0200000000000000000915222f3c4855626f7b8895a0a0a09386796d6053463a2d20130700000000000000000000000000000005111d2a36424e5b6773808c98a5a094877b6f62564a3d3125190c000000000000000a16212c3640474d5051515151514f4a433a31261b18242e3841494e5151515151514e4941382e24180d010000000000000000000000000000000000000013202c3946535f6c798693a0acaa9d908376695d5043372a1d16191d242b343d47525d68737f8a96a2aeb2a6998c7f7265594c3f322619130f0a03000000000000000000000000000000000006121e2b3743505c6874818d99a6a094887b6f63564a3e3225190d0000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c697683909b9b9b9b9b9b9b9b9b9b9b9b9da3a8aab0b7b8b1aba8a49d9b9b9b9b9b9b9b9b9b9b9b9b9084776a5d5044372a1d1104000000000000000000010b141e28323e4955616c78838e99a5b1a89c8f82786f665f59555351515253565a5f666d76808a95a0aba59b9085796e62574b3f33271b0f03000000000000111d2a36424e59636d77828c96a0aaa4998e847a71717171717171717171717171717171717171717171717171717171717171717171717171695e5246392d2014070013202c3946535f6c798693a0acb2a79d9796969696969696969696969696969696969798999b9da0a3a7aaa5a09a948d867e766d645b51473c32271c110600000013202c3946535f6c798693a0acaea194887b6e6154483b2e21150800000000000000000009141e28323c464f58616a737b838b9299a0a6aba8a29d9995918f8c8a898887878888898b8d8f92969a9fa4aaa9a49d979089817970685f564c43392f251b100600000000000000000000000006121d2935414d5965707c8894a0aca4988c8074685c5044392d34404c5864707c8894a0aa9e92867a6e63574b3f33271b0f03000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000000000000b15202a343d464f585f676e74797e8386898c8e8f919192929291908e8c8986827d78726b645c544b42382e241a0f04000000000000000000000000000000000000000916222f3b47535f697179828a929aa0a09c92887d73695f554a40362c22180e03000000000000000000000000000000000000000000000013202c3946535f6c79869393939393939393887d72675d52473c31271c11060000000000000000000915222f3c4855626f7b88939393939386796d6053463a2d201307000000000000000000000000000000010e1a26333f4b5764707c8995a1a3978b7e7266594d4134281c10030000000000030f1b27323e4852595d5d5d5d5d5d5b554c42372c201e2935404a535a5d5d5d5d5d5d5a534a4035291e120500000000000000000000000000000000000000131f2c3946525f6c7985929fabaa9d9184776b5e5145382c231e1c1a19222b36404b57626e7a86929eaab2a6998c7f7265594c3f3226190c03000000000000000000000000000000000000000915222e3a47535f6b7884909da99d9184786c5f53473a2e2216090000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c6976838e8e8e8e8e8e8e8e8e8e8e8e8e919ba6b2aeababafb3a79b928e8e8e8e8e8e8e8e8e8e8e8e8e84776a5d5044372a1d11040000000000000000000006121e2a36424e5a66727d8994a0abb6aa9e93897f756c62584f46454445474a4e545c646e78838e99a5aca1968a7f73675b5044382b1f13070000000000000e1a26313d47515c66707a848e98a2aaa0968c82786e65656565656565656565656565656565656565656565656565656565656565656565645f574d41362a1e11050013202c3946535f6c798693a0acada1958c8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b8c8e9093979ba0a6aca69f98908880766d63594e43392d22170b00000013202c3946535f6c798693a0a3a3a194887b6e6154483b2e211508000000000000000000020c16202a343d464f586169717981888e949aa0a5a9a9a5a19e9b99979695949494959697999c9fa2a6aba7a39e98928c857e776f675e564d443a31271d1309000000000000000000000000000a16222e3a46525d6975818d99a5ab9f93877b7064584c403428303c4854606c7884909ca8a3978b7f73675b4f43372c201408000000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000000000000040e18222b343d464e555c63686e72767a7d7f81838485858585848382807d7a76716c676059524a42392f261c120800000000000000000000000000000000000000000a1724303d4a5663707b838b9393939393938a80766b61574d43392e241a100600000000000000000000000000000000000000000000000013202c3946535f6c7986868686868686868681766b61564b40352b20150a000000000000000000000915222f3c4855626f7b86868686868686796d6053463a2d201307000000000000000000000000000000000a17232f3b4854606d7985929ea79a8e8275695d5044382b1f1307000000000005121e2b37434f5a646a6a6a6a6a6a675e54483d3024212e3a46515c656a6a6a6a6a6a655c51463a2e21150900000000000000000000000000000000000000121f2b3845515e6b7784919daaac9f9286796d6154493d342e2b28272625242f3a46515d6976828e9ba7b2a6998c7f7265594c3f3226190c00000000000000000000000000000000000000000c1925313e4a56626f7b8794a0a69a8d8175685c5043372b1f12060000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000101c2936434f5c697681818181818181818181818181818a97a4aba39e9ea3aca4978b8181818181818181818181818181776a5d5044372a1d1104000000000000000000000916222e3a46525e6a76828e9aa5b1b0aca59b91887e746a61574d443a383a3d424a525c67727d8994a0aca79b9084786c6054483c2f23170b0000000000000915202b36404a545e68727c86909aa5a89e948a80756b61585858585858585858585858585858585858585858585858585858585858585858544d453b3025190d010013202c3946535f6c798693a0acaca093867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e808184878b8f959ba2aaaaa29a92887e756a60554a3f33281c1105000013202c3946535f6c7986939696969694887b6e6154483b2e21150800000000000000000000040e18222b343d464f575f676f767d83898f94999da1a4a8aaa8a5a4a2a1a1a1a1a2a2a4a6a8a9a6a3a09c97928d87817a746c655d554c443b32281f150b01000000000000000000000000030f1b27333f4a56626e7a86929da9a79b8f83776b5f53473b2f242b3844505c6874808c98a4a79b8f84786c6054483c3024180c010000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000000000061019222b343c434b51575d62666a6d70737476777878787877767573706d6a66615b554f4840382f261d140a0000000000000000000000000000000000000000000a1724303d4a5763707d868686868686868682786e645a4f453b31271d120800000000000000000000000000000000000000000000000000131f2c3946525f6b76797979797979797979796f655a4f44392f24190e04000000000000000000000815222f3b4855616d7879797979797979766b5f5346392d201306000000000000000000000000000000000713202c3844515d6976828e9ba79e9185796c6054473b2f22160a00000000000714202d3a46535f6b7577777777777065594c40332723303d4956626e7777777777776e62564a3d3124180b00000000000000000000000000000000000000111d2a3643505c6975828e9ba7aea295897d71655a4f463f3a3735333232313135414d5a66727f8b98a4b1a6998c7f7265594c3f3226190c0000000000000000000000000000000000000003101c2835414d5966727e8b97a3a3968a7d7165594c4034271b0f030000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000f1c2835424e5a667174747474747474747474747478838e99a5a39992929aa4a69a8e847874747474747474747474747471675b4f4236291d1003000000000000000000000c1925313e4a56626f7b87939fabada59f9ea29a90867c73695f564c42392f3138404a55606c77838f9ba7aca094887c7064584b3f33271a0e020000000000040f19242e38424c56606a747e89939da7a69c92887d73695f554b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b48433c33291f1408000013202c3946535f6c798693a0acaca09386797070707070707070707070707070707070717375777b7f848a9098a0a9aca49a91877c71665b5044392d21150a000013202c3946535f6c79868a8a8a8a8a8a887b6e6154483b2e2115080000000000000000000000061019222b343d454d555d646b72787e83888d9195989b9ea0a1a3a4a5a5a5a5a5a4a2a19f9d9a9793908b86817b766f69625a534b433a322920160d03000000000000000000000000000814202c37434f5b67737e8a96a2aea2968a7e72665b4f43372b1f27333f4b5864707c8894a0aca094887c7064584d4135291d11050000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000000000000000071019222a323940464c51565a5e616466686b6e6f70706f6c6a686664615e5a55504a443d362e261d140b020000000000000000000000000000000000000000000a1723303d4a56636f7879797979797979797970665c52483e33291f150b0100000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c675e53483d33281d120800000000000000000000000714202d3945515c666c6c6c6c6c6c6c6c6b645a4f43372b1e12050000000000000000000000000000000004101c2835414d5a66727e8b97a0a095887c7063574b3e32261a0d00000000000714212e3a4754606d79848484848174685b4f42362924303d4a5663707c848484847e7265594c4033271a0e010000000000000000000000000000000000000f1b2834414d5a66737f8b98a4b0a5998d82766b6158514b464442403f3e3e3e3e3e4a5763707d8a96a3b0a6998c7f7265594c3f3226190c0000000000000000000000000000000000000007131f2c3844505d6975828e9aa79f93877a6e6255493d3024180b000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000d1a26323e4a555f656767676767676767676769747f8a95a0a89d928788939ea9a0958a7f746967676767676767676767665f554a3f33271a0e01000000000000000000030f1c2835414d5a66727e8b97a3afa69b939298a1988f857b71685e544b41372e2e39444f5b67737f8b97a3b0a5988c8074675b4f42362a1d110400000000000008121c26303a444e58626c77818b959fa9a3998f857b71675d53483e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3c38312a21170d02000013202c3946535f6c798693a0acaca09386796c636363636363636363636363636363646566686b6e73787e868e97a1abaca3988e83786c61554a3e32261a0e010013202c3946535f6c787d7d7d7d7d7d7d7d7a6e6154473b2e211408000000000000000000000000071019222b333c434b525a60676d72777c8185898c8f9193959697989898989897969492908e8b87837f7a76706a645e5750494139312820170e0400000000000000000000000000010d1924303c4854606c77838f9ba7a99e92867a6e62564a3e32261a232f3b47535f6b7884909ca8a4998d8175695d5145392d21160a0000000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000000000000007101820272e353b40454a505860676d73777a7c7d7d7b7975706a635c544d49443f39322b241c140b02000000000000000000000000000000000000000000000915222e3a47525d676c6c6c6c6c6c6c6c6c6c685f544a40362c22170d0300000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5c554c41372c21160b01000000000000000000000004111d2934404a545b5f5f5f5f5f5f5f5f5f5a52493e33271b0f0200000000000000000000000000000000000d1925313e4a56636f7b88939393938c8073675a4e4235291c10000000000006131f2c3845515e6a778390919083776a5e5145382c222f3b4854616d798691918d8174685b4f42362a1d11040000000000000000000000000000000000000c1925323e4a57636f7b87939fabaa9e93887d736a625c5753504e4d4c4b4b4a4a4a4a55626f7c8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000000000a16232f3b4854606c7985919ea89c9083776a5e5246392d211408000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000a16222d38434c54595b5b5b5b5b5b5b5b5b65707a86909ba6a1968b80828c97a3a69c91867b70655b5b5b5b5b5b5b5b5b5a554d44392e22170b0000000000000000000005121f2b3744505d6976828e9ba7aea2958a868f99a1978d837a70665d534940362c333f4a57636f7b8794a0ada89c9084776b5e5245392c201307000000000000000a141e28323c46515b656f79838d97a1aba1978d83796f645a50463c323232323232323232323232323232323232323232323232323231302c2620180f0500000013202c3946535f6c798693a0acaca09386796c5f565656565656565656565656565657585a5c5f62676d747c858f99a4afaa9f94897d72665a4e42362a1e110500121e2b3744505c676e70707070707070706f685d5145392d20130700000000000000000000000000071019212a323941484f555b61676c7075797c80828586888a8b8b8c8c8c8b8a89888684817e7b77736f6a655f59534c463e372f271f160e05000000000000000000000000000006121d2935414d5964707c8894a0aca5998d8175695d51463a2e22161f2b37434f5b6773808c98a4a99d9185796d62564a3e32261a0e0200000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000000000000000060e151d232a323d465059626a72787e8387898a898885817b756e665d544b41372e27211a120a02000000000000000000000000000000000000000000000006121e2a36414c555c5f5f5f5f5f5f5f5f5f5f5c564d43382e241a10060000000000000000000000000000000000000000000000000000000a16212c3740484f5253535353535353535353504b433a30251a0f05000000000000000000000000000c18232e38424a505253535353535353524f4940372c21160a0000000000000000000000000000000000000915222e3a47535f6c7884868686868683766a5d5144372b1e11000000000004101d2936424f5b6874818d9a9286796d6054473b2f222c3945515e6a7783909c9084776a5e5245392c2013070000000000000000000000000000000000000916222e3b47535f6b77828e99a4afa49a8f857c746d67635f5d5b595958575757575656626f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000000010d1a26323f4b5764707c8995a1a5988c8073675b4f42362a1d1105000000000000000000000000000000000000000000000000000f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170a00000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000005111c27313a43494d4e4e4e4e4e4e4e55606b76818c97a2a69b90857a7b86919ca7a2978c81766b61564e4e4e4e4e4e4e4d49433b32271d1106000000000000000000000814212d3a4653606c7885919eaaab9f92867d87919a9f958c82786f655b52483e352e3a47535f6b7884919daaac9f93867a6d6154483b2f22160900000000000000020c16202b353f49535d67717b858f9aa4a99f958b81766c62584e443a302625252525252525252525252525252525252525252525252523201b150e060000000013202c3946535f6c798693a0acaca09386796c5f534a4a4a4a4a4a4a4a4a4a4a4a4a4a4b4d4f52565c626a737d87929da9b1a69a8e83766a5e5246392d211408000f1c28343f4a555d626363636363636363635e564c4135291d11040000000000000000000000000000070f1820272f363d444a50565b6065696c707376787a7b7d7e7e7e7f7e7e7d7c7b797775726f6b67635e59544e48423b342d251d150d040000000000000000000000000000000a16222e3a46515d6975818d99a4aca094897d7165594d4135291d111b27333f4b57636f7b8894a0aca2968a7e72665a4e42372b1f130700000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e01000000000000000000000000040d18242f3a444e58626b747c848a8f9395969694918d8780786f665d53493f34291e130800000000000000000000000000000000000000000000000000020e19252f3a434b5053535353535353535353504b443b31271c12080000000000000000000000000000000000000000000000000000000005101a252e373e43464646464646464646464644403931281e1309000000000000000000000000000007121c2630383f43464646464646464646433e372e251b100500000000000000000000000000000000000006121e2b3743505c687479797979797979756a5d5144372b1e110000000000010e1a2733404c5965727e8b9795897c7063574a3e31252936424f5b6874818d9a93867a6d6154483b2f22160a00000000000000000000000000000000000006121e2b37434e5a66717d88929da7aba1978e867e78736f6c6967666565646464636363636f7b8895a2afa6998c7f7265594c3f3226190c00000000000000000000000000000000000004111d2936424e5b6773808c98a4a195897c7064584b3f33261a0e010000000000000000000004090b0d0d0d0d0d0d0d0d0d0d0d0d0f1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d3024170d0d0d0d0d0d0d0d0d0d0d0d0c0a070300000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000000a151f2831383d40414141414146515c67727d88939ea8a0958a7e7475808b96a1a99e93887d72675c51464141414141413d38312920160b00000000000000000000000a16232f3c4955626e7b8894a1ada99c9083777e88929c9e948a81776d645a50473d333743505c6975828e9ba8aea295897c7063574a3d3124180b0000000000000000040f19232d37414b555f69737d88929ca6a79c92887e746a60564c42372d23191818181818181818181818181818181818181818181817140f0a03000000000013202c3946535f6c798693a0acaca09386796c5f53463d3d3d3d3d3d3d3d3d3d3d3d3e3f4043464b5158616b76818c98a4afab9f93877a6e6255493d3024170a000b17232e39434b5256565656565656565656534c443a2f24190d01000000000000000000000000000000060e161d242c32393f454a4f54585c606466696b6d6f7071727272727171706e6d6b6865625f5b57524d48423d373029221b130b03000000000000000000000000000000030f1b27333f4a56626e7a86919da9a89c9084786c6054483d3125190d17232f3b47535f6b77838f9ba8a69a8e83776b5f53473b2f23170c00000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e0100000000000000000000000007121e2a35404b56606a747d868e959b98959495979a98918a82786f655b50453a2f24180c000000000000000000000000000000000000000000000000000008131e2831393f444646464646464646464644403a32291f150a00000000000000000000000000000000000000000000000000000000000009131c252c3237393939393939393939393938342e271f160c020000000000000000000000000000000b141e262d333739393939393939393937322c251c130900000000000000000000000000000000000000020f1b2734404c57626a6c6c6c6c6c6c6c6b63594d4135291c100000000000000b1824313d4a56636f7c8895988b7e7266594d4034272733404c5965727e8b9795897c7063574b3e3225190c000000000000000000000000000000000000020e1a26323e4955606b76818b959ea6a9a098908a847f7b7876747372717171717070706f6f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000000000000000000000000814202d3945525e6a76838f9ba89e9285796d6054483c2f23170a000000000000000000040b101518191a1a1a1a1a1a1a1a1a1a1a1a1c2835424f5b6875828f9ca8b0a4978a7d7063574a3d30241a1a1a1a1a1a1a1a1a1a1a1a1a1917130e08010000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000030d161f262d313434343437424d58636d78838e99a4a5998e83786d6e79848f9aa5a4998f84796e63584d423734343434312d271f170e0400000000000000000000000b1825313e4b5764707d8a96a3afa79a8e817476808a939d9c938980766c62594f453c34414d5a6673808c99a6b1a4988b7e7265584c3f3326190d00000000000000000007111b252f39434d57616c76808a949ea8a49a90867c72685d53493f352b21170d0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a07040000000000000013202c3946535f6c798693a0acaca09386796c5f5346393030303030303030303030313234363a3f464f5964707b87939facafa3968a7d7165584b3f3226190d0006121c2731394146494c4c4c4c4c4c4c4c4a47423a32281e13080000000000000000000000000000000000040b131a21272e34393f44484c5054575a5c5f6162636465656565656464646464615b56534f4b46423d37312b251e18100901000000000000000000000000000000000814202b37434f5b67737e8a96a2aea3978b8074685c5044382c201408131f2b37434f5b67737f8b97a3ab9f93877b6f63584c4034281c1004000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000000000000000000b17232f3b46515d68727c86909898918c8988888a8e949c948b81776d62574c4034291d110500000000000000000000000000000000000000000000000000010c161f272e34383939393939393939393938342f2820170d03000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000000000000000000000000000000020c141c22272b2c2c2c2c2c2c2c2c2c2a27211b130a0100000000000000000000000000000000000000000b17232f3b4650585e5f5f5f5f5f5f5f5e5951473c3125190d0000000000000915222e3b4754606d7986929a8e8175685c4f43362a24313d4a56636f7b8895988c7f73665a4d4134281b0f020000000000000000000000000000000000000a16212d38444f5a646f79838c949ca3a9a29b958f8b87858281807e7e7e7d7d7d7d7d7c7c7c8895a2afa6998c7f7265594c3f3226190c0000000000000000000000000000000000000b1724303c4955616d7a86929fa79b8e8276695d5144382c2013070000000000000000060e151c212426262626262626262626262626262835424f5b6875828f9ca8b0a4978a7d7063574a3d30262626262626262626262626262626231f1a130b0200000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000040d151b2125272828323d48535e69747f8a95a0a99e93887d726768737e89949faaa0958a8074695e54493e3328282725211c150d050000000000000000000000000d1926333f4c5965727e8c98a5b1a5998c7f736e78818b959e9b91887e746b61574e443a3f4b5865717e8b97a4b1a6998d8073675a4d4134271b0e0100000000000000000009131d27313b46505a646e78828c96a0aaa2988e84796f655b51473d33291f140a000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c232323232323232323232425272a2e343d48535f6b7783909ca8b2a6998d8073675a4d4134271b0e00000b17232e39444d5458595959595959595650473d32271c100400000000000000000000000000000000000001080f161c22282e33383c4044484b4d505254555757585b626a7071717171716c63574b433f3b36312c26201a140d060000000000000000000000000000000000010d1924303c4854606b77838f9ba7ab9f93877b6f63574b3f33271c10040e1b27333f4b57636f7b87939faba4988c8074685c5044382c211509000000000000000000000c1925323f4c5865727e8c98a5b2a79a8e8174675a4d4134271a0e010000000000000000000000030f1b27333f4b57636e79848e98968d86807c7b7b7e838a929b93897e73685d5145392d2115090000000000000000000000000000000000000000000000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2b28231d160e050000000000000000000000000000000000000000000000000000000000000000010910161a1e1f202020202020202020201f1c17120b04000000000000000000000000000000000000020a11171b1e20202020202020201f1e1b1610090100000000000000000000000000000000000000000007131e29343e464d5253535353535353524e473f352b20140900000000000006131f2b3845515e6a7683909c9084776b5e5245392c212e3a4753606c7985929b8e8275695c5043372b1e120500000000000000000000000000000000000005101c27323d48535d67707a828a92989ea3a6a09b9794918f8e8c8c8b8b8a8a8a8a898989898c97a3b0a6998c7f7265594c3f3226190c0000000000000000000000000000000000020e1b2733404c5864717d8a96a2a4978b7e72665a4d4135291c100400000000000000050f1820272d3133333333333333333333333333333335424f5b6875828f9ca8b0a4978a7d7063574a3d333333333333333333333333333333322f2b241d140b01000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000000000030a1015181a232e39444f5a65707b86919ba6a3988d82776c61616c77838e99a4a79c91867b70655a4f44392e241a1915100a03000000000000000000000000000e1b2734414d5a6773818d9aa6b1a4978b7e71666f79838c96a09a90867d736960564c433d4a5763707d8996a3b0a89b8e8275685b4f4235291c0f02000000000000000000010b151f2a343e48525c66707a848f99a3aaa0968b81776d63594f453b30261c12080000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2017171717171717171717191b1e232b37424f5b6774818d9aa6b3a89b8e8275685b4f4235291c0f00000f1b28343f4b555f656666666666666661594f44382c2013070000000000000000000000000000000000000000040b11171d22272c3034383b3e414346474950575e666d747c7d7d7d7d7d74675a4d41342f2a25201b150f090200000000000000000000000000000000000006111d2935414d5864707c8894a0aba69a8e82766a5e53473b2f23170b000a16222e3b47535f6b77838f9ba7a89c9084786d6155493d3125190d010000000000000000000c1925323f4c5865727e8c98a5a7a79a8e8174675a4d4134271a0e01000000000000000000000006121f2b3743505c68737f8b96988e847b74706e6e72788089939b9085796d6155493d3125180c000000000000000000000000000000000000000000000000000000030b12171c1e202020202020202020201f1c18120c040000000000000000000000000000000000000000000000000000000000000000000000050a0e111313131313131313131313120f0c0700000000000000000000000000000000000000000000060b0f12131313131313131313110e0a050000000000000000000000000000000000000000000000020d18222c353c42454646464646464645423d362d23190e0300000000000003101c2935424e5b6774818d9993867a6d6154483b2f222b3844515d6a76838f9c9185786b5f53463a2d211408030303030201000000000000000000000000000b16212c36414b555e68707880878d92979b9ea1a3a09e9c9a999898989797979696969695979ea8b2a6998c7f7265594c3f3226190c000000000000000000000000000000000005121e2a37434f5c6874818d99a5a094887b6f63564a3e3125190d00000000000000020d17212a32383d40404040404040404040404040404040424f5b6875828f9ca8b0a4978a7d7063574a404040404040404040404040404040403f3c362f261d1309000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000409141f2a35404b55606b76818c97a2a89d92877b70655a5b66717c87929da8a2978c82766c61564b40352a1f1409050000000000000000000000000000000f1b2835424e5b6875818e9ba8b0a3968a7d706367717a848e97a1988f857b72685e554b414955626f7b8895a2afa99c8f8376695c504336291d100300000000000000000000040e18222c36404a545e68727c87919ba5a79d93897f756b61574c42382e241a100600000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130a0a0a0a0a0a0a0a0b0c0e121a26333f4c5965727e8b98a5b1a99c8f8376695c4f4336291c100000111e2b3744505c6770737373737373726b6054483c2f23160900000000000000000000000000000000000000000000060c11161b2024282c2f32363d444c535a616970777f868a8a8a8a8174675a4d4134271e19140f090400000000000000000000000000000000000000000a16222e3a46515d6975818d98a4ada2968a7e72665a4e42362a1e12070006121e2a36424e5b67737f8b97a3ada195897d7165594d42362a1e12060000000000000000000c1925323f4c5865727e8c989a9a9a9a8e8174675a4d4134271a0e0100000000000000000000000815212e3a47535f6c7884909c91867c7269636162666e77818c97968a7e7265594d4034271b0e0200000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232a313639393939393939393936322b241b110700000000000001070d1a26333f4c5865717e8a9795897c7063574a3e31252935424e5b6774808d9994877b6e6255493c3023170f0f0f0f0f0f0d0b060100000000000000000000040f1a252f39434c565e666e757b81868b8f929597999b9c9d9e9e9f9f9f9fa0a0a0a0a0a1a2a7afb2a6998c7f7265594c3f3226190c00000000000000000000000000000000000915212e3a46535f6b7784909ca99d9184786c5f53473a2e2216090000000000000008131e29333c43494c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4f5b6875828f9ca8b0a4978a7d7063574d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4b4741382f251a0f030013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000000000000005101a25303b46515c67727d88939ea9a1968b80756a5f5455606b76818c97a2a99e93887d72675c51473c31261b10050000000000000000000000000000000f1c2936424f5c6975828f9ca8afa296897c6f635f68727c858f99a1978d847a70675d534a4855616e7b8894a1aeaa9d9083776a5d5044372a1d1104000000000000000000000006101a242e38424c57616b757f89939da7a59b91877d73685e544a40362c22180e03000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000020b1824313e4b5764717d8a97a4b1a99c908376695c4f4336291c100001121f2c3845525f6b788080808080807d7063574a3d3024170a000000000000000000000000000000000000000000000000060b0f141c232a313940474f565d656c737a82899197938a81776e64584c4033261a0e0904000000000000000000000000000000000000000000030f1b27333e4a56626e7a86919da9a99d9185796d61554a3e32261a0e0200020e1a26323e4a56626e7b87939faba5998e82766a5e52463a2e22170b0000000000000000000c1925323f4c5865727e8c8d8d8d8d8d8d8174675a4d4134271a0e0200000000000000000000000a1723303d4956626f7b8894988c80756a605854565c65707b87939a8e8175685c4f4336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0e1010101010100f0d090400060a0e101010101010100e0a06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000811192025292c2c2c2c2c2c2c2c2c2a26201a1209000000000000060d12171a24303d4956626f7b8894988c7f72665a4d41342826333f4c5864717d8a96968a7d7164584b3f33261c1c1c1c1c1c1c1a17120c050000000000000000000008131d27313a434c545c636a70767a7e8286888b8d8e9090919292929292939393949494969da8b2a6998c7f7265594c3f3226190c00000000000000000000000000000000000c1825313d4a56626e7b8794a0a6998d8175685c5043372b1e1206000000000000000c1824303a454e555959595959595959595959595959595959595b6875828f9ca8b0a4978a7d706359595959595959595959595959595959595958524b41362b2014080013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000000000b16212c37424d58636e78848e99a4a69b90857a6f64594d4e59646f7a85919ca7a59a8f84796e63584d42372c21170c010000000000000000000000000000101c2936434f5c6976838f9ca9afa295887b6f6256606a737d87909a9f968c82786f655c524854616e7a8794a1aeaa9d9184776a5d5144372a1e110400000000000000000000000008121c26303b454f59636d77818b959faaa3998f857a70665c52483e34291f150b010000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000002050b1824313e4b5764717d8a97a4b1a99c8f8376695c4f4336291c100004121f2c3945525f6b78858c8c8c8c8a7d7063574a3d3124170a000000000000000000000000000000000000000000000000050e171f262d353c434b525960686f767e858c949b948a81786f655c52473c3024170b00000000000000000000000000000000000000000000000814202b37434f5b67737e8a96a2aea4988c8175695d5145392d2115090000000a16222e3a46525e6a76838f9ba7aa9e92867a6e62574b3f33271b0f0300000000000000000c1925323f4c5865727e818181818181818174675a4d4134271d140900000000000000000000000b1825313e4b5764717d8a9795897c7064584e484a535e6a7783909c9084776a5d5144372b1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13181b1d1d1d1d1d1d1c19150f0b11161a1c1d1d1d1d1d1c1a16110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14191d1f202020202020201f1d1a150f080000000000000710171e2327292e3a4753606c7985929b8e8275695c5043372a29303c4955626e7b8794998d8074675b4e4235292929292929292826231d170f07000000000000000000010b151f28313a424a52595f656a6e7276797c7e808283848485858586868686868787878b97a3afa6998c7f7265594c3f3226190c00000000000000000000000000000000030f1c2834414d5966727e8b97a3a2968a7d7165594c4034271b0f0200000000000000101c2935414c5760656666666666666666666666666666666666666875828f9ca8b0a4978a7d7066666666666666666666666666666666666666645d53483c3024180b0013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000007121d28333d48535e69747f8a95a0aba0958a7e73685d524748535e69747f8a95a0aba0958a80746a5f54493e33281d12070000000000000000000000000000101c2936434f5c697683909ca9afa295887b6f625558616b757e88929b9e948b81776d645a5054616d7a8794a1aeaa9e9184776a5d5144372a1e1104000000000000000000000000000a141f29333d47515b656f79848e98a2aba0968c82786e645a50453b31271d13090000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0b0b0c0d0f11151b26333f4c5865727e8b98a4b1a79b8e8275685b4f4235291c0f0006131f2c3946525f6c7986929999978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000020d17202930383f464e555c646b727981888f979d948b81786f665d534a41362b1f140800000000000000000000000000000000000000000000000c1824303c48545f6b77838f9ba6a6a094887c7064584c4035291d11090401060b121e2a36424e5a66727e8a97a3a6a3978b7f73675b4f43372c20140800000000000000000b1824313e4a56626d7373737373737373736f64584c40382f251b1004000000000000000000000b1825323e4b5865717e8b9894877a6d6154473c424e5b6875818e9b9185786b5e5145382b1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000811181f2427292a2a2a2a2a2825201a151c2226292a2a2a2a2a2926221d160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d11121313131313131313110e090400000000000006101922292f3335363844515d6a76838f9c9184786b5f5246393636363a46535f6c7885919c8f83766a5d5144383636363636363635332e2821190f06000000000000000006101921282e323940474e54595e62666a6d6f71737576777778787979797979797a7a7b8895a2afa6998c7f7265594c3f3226190c0000000000000000000000000000000006131f2b3844505d6975828e9aa69f93877a6e6155493d3024180b0000000000000000121f2b3845515d68717373737373737373737373737373737373737375828f9ca8b0a4978a7d73737373737373737373737373737373737373736f64594c4033271a0d0013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000000000020d18232e39444f5a65707b86919ca6a4998e83786d62574c41414c58636e79848f9aa5a79c91867b70655a4f443a2f24190e0300000000000000000000000000101c2936434f5c697683909ca9afa295887b6f62554f59636c768089939d9d938980766c625954616d7a8794a1aeaa9e9184776a5d5144372a1e110400000000000000000000000000030d17212b353f49535d67727c86909aa4a89e948a80766c61574d43392f251b110700000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201818181818181818191a1b1e21262d37434f5b6774808d99a6b1a5988c8073665a4d4134271b0e000613202c3946535f6c7986939fa4978b7e7164574b3e3124180b000000000000000000000000000000000000000000000009141f29323b424951585f676e757d848b939a9e948b82786f665d544b41382f241a0e030000000000000000000000000000000000000000000000101c2935414d5864707c88949a9a9a9a8f84776c6054483c30241b19150f0c12171a1c26323e4a56626e7a86929a9a9a9a8f84786c6054483c3024170b00000000000000000916222e3a46515b63676767676767676767645d56524a41372c211509000000000000000000000b1825323e4b5865717e8b9894877a6e61554940444f5c6875828e9b9184786b5e5145382b1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a222a303436363636363635312c251f272e3336363636363636332e2720170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222c343a3f424242424e5b6774808d9993877a6e615548424242424244505d6975828f9b9285796d6054474242424242424242423f3a332b21170d02000000000000020d18222b33393e41424344484d52565a5d6063656768696a6b6b6b6c6c6c6c6d6d6d6f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000a16222f3b4754606c7885919ea89c8f83776a5e5246392d211408000000000000000013202c3946535f6c798080808080808080808080808080808080808080828f9ca8b0a4978a80808080808080808080808080808080808080808074675b4e4134281b0e0013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000009141f2a35404b56606b76818c97a2a99e93887d72675c51453a3b46515c67727d88939ea9a2988d82776c61564b40352a1f140a00000000000000000000000000101c2936434f5c6976828f9ca9afa295887c6f625549515a646e77818b959e9b92887e746b6157616e7a8794a1aeaa9d9084776a5d5144372a1e11040000000000000000000000000000050f19232d37414c56606a747e88929ca6a69c92887d73695f554b41372d23180e04000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2525252525252525252526282a2d31373f49545f6b7783909ca8ada195897d7064574b3e3225190c000713202d3a4653606d798693a0a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000020e1a25303b444d545b626a717880878e969d9e958c827970665d544b42392f261d1308000000000000000000000000000000000000000000000000121f2b3845515d6975818d8d8d8d8d8d8b7f73675b4f43372b292825201a171e232729292e3a46525e6a76828d8d8d8d8d8d887c7064584c4033261a0d000000000000000006121e29353f4951575a5a5a5a5e636464646464625c53493d3226190d000000000000000000000b1824313e4a5764707d8a9696897d71655a514d4e56606c7884909c9083766a5d5044372a1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e19232c343b40434343434343413d362f2931393f424343434343423f39322920150b00000000000000000000000000000004070809090909090909090807050507080909090909090909080705010000000000000000000000000000000000000000000000000000000000000009141f2a343e454b4f4f4f4f4f5864717d8a9696897d7064574f4f4f4f4f4f4f4f5a6673808c9895887c6f63564f4f4f4f4f4f4f4f4f4e4b453d33291e130800000000000008141f29343d444a4d4f50515253545657565456585a5b5d5d5e5f5f5f5f5f5f6060626f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000010d1926323e4b57636f7c8895a1a5988c8073675b4e42362a1d1105000000000000000013202c3946535f6c79868d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d949faab2a69a918d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675b4e4134281b0e0013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000000005101b25303b46515c67727d88939ea9a3988d82766b60554a3f3435404b56616c77828d98a3a99e93887d72675d52473c31261b10050000000000000000000000000f1c2935424f5c6875828f9ca8afa296897c6f63564948525c656f79838c96a09a90877d736960616e7b8894a1aeaa9d9083766a5d5043372a1d110400000000000000000000000000000007111b25303a444e58626c76808a949fa9a4998f857b71675d53493f342a20160c020000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232333437393d4249515b65707b87939faba89d9185796d6154483c2f23160a000714202d3a4753606d798693a0a5988b7e7165584b3f3225180c0000000000000000000000000000000000000000000005121e2a36424c565e666d747c838a9299a09e958c837970675e544b423930261d140b0100000000000000000000000000000000000000000000000013202c3946535f6c7980808080808080807a6e62574b3f36363634312c2521292f3335363636424e5a66727e808080808080808074675a4d4134271a0e0000000000000002091018232d3740474b4d525a61686f71717171716e655a4e4235291c10000000000000000000000a16232f3c4955626e7a8793998d82776c635c595a6068727d8894998d8174685b4f4235291c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202b353e464c4f50505050504d484138313b434a4f50505050504f4a443b31271c1105000000000000000000000000070c111415151515151515151515141111141515151515151515151514110d070100000000000000000000000000000000000000000000000000000000000d1925313c4650575b5c5c5c5c5c626e7b8794988c8073665c5c5c5c5c5c5c5c5c5c64707d8996978b7e72655c5c5c5c5c5c5c5c5c5c5b564f453b3024180c0000000000010d1925303b454f565a5b5d5e5f60616263625d544c4d4f5051515252525253535355626f7c8995a2afa5988c7f7265594c3f3226190c00000000000000000000000000000004101d2935424e5a67737f8c98a4a195897c7064574b3f33261a0e01000000000000000013202c3946535f6c7986939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ea6b0b7aca29c9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675b4e4134281b0e0013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000000b16212c37424d58636e78848e99a4a89c91867b70655a4f44392e2e39444f5a65707b87929da8a59a8f84796e63584d42372d22170c0100000000000000000000000f1b2835414e5b6874818e9ba7b0a3978a7d7064574a404a535d67707a848e97a1998f857b7268626f7c8895a2afa99c8f8276695c4f4336291d10030000000000000000000000000000000009141e28323c46505a646e78838d97a1aba1978d83796f655a50463c32281e140a0000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3e3e3f40414346494e545b636c77828d98a4ada2978c8075695d5145382c201407000714202d3a4753606d7a8794a0a5988c7e7265584c3f3225190c000000000000000000000000000000000000000000000814212e3a46525e6870777f868d959ca09f958c837a70675e554c423930271e140b0200000000000000000000000000000000000000000000000000121f2b3845515d6871737373737373737372695e524642424242413d372f2b333a3f42424242424a56616c7373737373737373736e64584c4033261a0d000000000000050c141b222a31383f474e555d646b737a7d7d7d7d7d766a5d5043372a1d11000000000000000000000814212d3a46525f6b77838f9a93887e756e6866676b727a848e9994897c7164584c3f33271a0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a25313c4750585c5d5d5d5d5d59524a3f38434d555b5d5d5d5d5d5b554d43392d22160a00000000000000000000020b12181d2022222222222222222222211d1d2022222222222222222222201d18120b0300000000000000000000000000000000000000000000000000000000111d2936424d5862686969696969696c7885919b8e82756969696969696969696969696e7a87939a8e817569696969696969696969696761574c4034281c0f030000000004101d2935414d57616768696a6b6d6e6f706e665b4f43424344454545464646464a5663707d8996a3b0a5988b7e7265584c3f3225190c0000000000000000000000000000000714202c3945515e6a76838f9ba79e9285796d6054483b2f23170a00000000000000000013202c3946535f6c798693a0a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a9acacacacaca8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69b8e8174675b4e4134281b0e0013202c3946535f6c798693a0acaca09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1acaa9e9184776a5d5144372a1e1100000000000007121d28333e48535e69747f8a95a0aba1968b80756a5f54493e322728333e49545f6a75808b96a1aba0958b80756a5f54493e33281d120700000000000000000000000e1a2734404d5a6773808d99a6b1a4988b7e7165584b3f414b555e68727b858f99a1978d847a7067707d8a96a3b0a89b8e8275685b4f4235281c0f0200000000000000000000000000000000020c16202a343e48525c67717b858f99a3a99f958b81766c62584e443a30261c110700000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4b4b4b4b4c4c4e5052555a5f656d757e89939ea9a59b91867b6f64584c4034281c1004000714212e3a4754616d7a8794a1a5998c7f7265594c3f3226190c000000000000000000000000000000000000000000000916222f3c4955626f7a82899193939393938d837a71685e554c433a30271e150c020000000000000000000000000000000000000000000000000000101c2935414c57606566666666666666666660574f4f4f4f4f4f4d484138343d454b4f4f4f4f4f4f505a62666666666666666666645c52473c3024170b0000000001080f171e252d343b434a515960676e767d858a8a8a8a83776a5d5044372a1d110000000000000000000005111e2a36434f5b66727e89949a90878079757373777c848c96988e83776c6054483c3024170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e5962686969696969645c51453d49555f676969696969675f554a3e32261a0d010000000000000000020c141c23292d2f2f2f2f2f2f2f2f2f2f2d2a292d2f2f2f2f2f2f2f2f2f2f2d29241d150d03000000000000000000000000000000000000000000000000000000121f2c3845525e6a737575757575757576828f9b918578757575757575757575757575757884919d908477757575757575757575757573695d5044372b1e11050000000006121f2c3845515d697275767778797a7c7d776b5e52453936373838383939393f4c5865717e8b97a4b0a4978a7e7164574b3e3125180b0000000000000000000000000000000b1723303c4855616d7986929fa79b8e8276695d5144382c1f130700000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09b8e8174675b4e4134281b0e0013202c3946535f6c798693a0a0a0a09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a0a0a09e9184776a5d5144372a1e110000000000030d18232e39444f5a65707b86919ca7a69b90857a6e63584d42372c21212c38434e59646f7a85909ba6a79c91867b70655a50453a2f24190e03000000000000000000000c1926333f4c5965727e8b98a5b1a6998c8073665a4d4039434d56606a737d87909a9f968c83796f717e8b98a4b1a6998d8073675a4d4134271b0e010000000000000000000000000000000000040e18222c36404b555f69737d87919ba5a79d93887e746a60564c42382d23190f05000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5858585858585858585858585858595a5c5f62666a70777e87919aa5a69d93897f74695e53473c3024180c00000815212e3b4854616e7b8794a1a6998c7f7366594c403326190d000000000000000000000000000000000000000000000916222f3c4955626f7c8686868686868686847a71685f564c433a31281e150c030000000000000000000000000000000000000000000000000000000c1824303a454e555959595959595959595a5c5c5c5c5c5c5c5c59534a403b464f575b5c5c5c5c5c5c5c5b59595959595959595958524a41362b1f1408000000030b131a212930373e464d545c636a727980888f96958c837970665b4f4236291c1000000000000000000000020e1a26323e4a56616c77828c9699918a8581808183888e969a91877c71665b4f44382c2014080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3945525e6a7476767676766d625649404d596671767676767671665a4e4236291d110500000000000000000a141e262e34393b3c3c3c3c3c3c3c3c3b393535393b3c3c3c3c3c3c3c3c3b39352f271f150b00000000000000000000000000000000000000000000000000000013202c3946535f6c798282828282828282838e9a9487828282828282828282828282828282838f9c9387828282828282828282828282786b5e5145382b1e1205000000000613202c3946535f6c7982838485868788867a6d6154483c33302f2e2e2f3238434f5b6774818d99a6afa295897c7063564a3d3024170a0000000000000000000000000000020e1a27333f4c5864717d8996a2a3978b7e72665a4d4135281c100400000000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675b4e4134281b0e0013202c3946535f6c798693939393939386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8893939393939184776a5d5144372a1e11000000000009141f2a35404b56616b76818c97a2aba094897e73685d52473c31261b1b26313c47525d68737e8a94a0aba3988d82776c61564b40352a1f150a000000000000000000000b1824313e4a5764707d8996a3afa79b8e8275685c4f43363b444e58616b757e88929b9e948b817773808d99a6b1a4988b7e7265594c3f3326190d0000000000000000000000000000000000000006101a242f39434d57616b758089949ea8a49a90867c72685e54493f352b21170d030000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c6565656565656565656565656565656667696b6e72767b82899199a2a49c948b81776d63584d42362b1f130800000815222e3b4855616e7b8894a1a6998c807366594c4033261a0d000000000000000000000000000000000000000000000916222f3c4855616e7879797979797979797971685f564d433a31281f160c030000000000000000000000000000000000000000000000000000000008131e29333c43494c4d4d4d4d4d4d535d656969696969696969655c5247414c576167696969696969696761574d4d4d4d4d4d4d4b4741382f241a0e030000030c151d242c333a424950585f666d757c838b9299968c837a71675e554a3e33261a0e00000000000000000000000a16222e3945505b66707a848d959c96918e8c8d8f93999991887e756a60554a3e33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79838383837e7266594d414e5b67748183838383766a5e5246392d2115090000000000000006111c263038404548484848484848484848464140454848484848484848484845403931271d1207000000000000000000000000000000000000000000000000000013202c3946535f6c79868f8f8f8f8f8f8f8f949e99918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f95a098918f8f8f8f8f8f8f8f8f8f8f85786b5e5145382b1e12050000000005121f2b3844515e6a76838f9092939495897d7165594e44403d3b3b3b3c3e424a54606b7784909ca9ac9f93877a6e6154483b2f221509000000000000000000000000000005111e2a36434f5b6874808d99a5a094887b6f63564a3e3125190c0000000000000000000013202c3946535f6c798686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675b4e4134281b0e0013202c3946535f6c798686868686868686796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8686868686868684776a5d5144372a1e110000000005101b26303b46515c67727d88939ea9a4998e83786d62574c41362b1f1415202b36414c57626d78838e99a4a99e93897d73685d52473c31261b10050000000000000000000916232f3c4855626e7b8794a0ada99d9084776b5e524539323c464f59636c768089939d9d93898076828f9ba8afa296897c7063574a3e3124180b000000000000000000000000000000000000000008131d27313b454f59636d77828c96a0aaa2988e847a70655b51473d33291f150a0000000000000000000000000000000000000013202c3946535f6c798693a0acaca093867971717171717171717171717171717172737475787a7e82878d939ba3a09a928a82796f655b51463b30251a0e0300000815222e3b4855616e7b8895a2a69a8d807366594d4033261a0d000000000000000000000000000000000000000000000714202d3945515c666c6c6c6c6c6c6c6c6c6c685f564d443b31281f160d040000000000000000000000000000000000000000000000000000000000020d17212a32383d4040404040404b58646f75757575757575756e63574b44515d69737575757575757573695d504440404040403f3b362f261d13080000000a151e272f363d454c535b6269717880878e959d968d847a71685f554c43382d22160a000000000000000000000005111d28333f49545e68727b838b92979b9a999a9b99948e877e766c63594e44392d22160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3844515e6a778490908e8275695d51454c5966727f8c9090867a6e6255493d3125180c000000000000000b17222d38424a5155555555555555555555524c4b5155555555555555555555514b43392e23180c000000000000000000000000000000000000000000000000000013202c3946535f6c7986939c9c9c9c9c9c9c9da0a29d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9da1a29d9c9c9c9c9c9c9c9c9c9c9285786b5e5145382b1e12050000000003101c2935424e5b6773808c989ea0a1998d81756a5f56504c49484848484a4e545c66717c8894a0aca89c9084776b5e5246392d20130700000000000000000000000000000815212d3a46525f6b7784909ca99d9084786b5f53473a2e22150900000000000000000000131f2c3946525f6b767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797972675a4d4134271b0e00131f2c3946525f6b767979797979797979766b5f5346392d201306000000000000000000000000000814212e3a4754606d77797979797979797975695d5044372a1d11000000000b16212c37424d58636e79848f99a4a99e93887d72675b50453a2f24190e0e19242f3a45505b67727d88939ea9a59a8f84796e63584d43382d22170c0100000000000000000714212d3a46535f6c7885919eaaac9f93877a6e6155493d31343d47515a646e77818b949e9b92887e85919daaaca093877a6e6155483b2f2216090000000000000000000000000000000000000000010b151f29333d47515c66707a848e98a2aaa0968c81776d63594f453b31261c120800000000000000000000000000000000000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e80818284878a8e92989e9f9a958f88817870675d544a3f352a1f14090000000915222f3c4855626f7b8895a2a79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000005111d2935404b545b5f5f5f5f5f5f5f5f5f5f5d564e443b32291f160d0400000000000000000000000000000000000000000000000000000000000000050f1820272d313333333333404c596673808282828282827e7265584c45525f6b7882828282828282786b5e51453833333333322f2b241d140b01000006111c27303941484f565e656c747b828a9198a0968d847a71685f564d433a31271c11050000000000000000000000000c17222d38424c566069717980878b8f919292908d89837c756c645b51473c32271c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3643505c6975828f9c9285796d6155484b5764717d8a97968a7e7265594d4135281c10040000000000000f1b27333f4a545c616262626262626262625d56545d616262626262626262615d554b4034281c10040000000000000000000000000000000000000000000000000013202c3946535f6c7986909090909090909090959f9a929090909090909090909090909090909196a099929090909090909090909085786b5e5145382b1e120500000000000d1a26333f4b5764707c88949faba99e92877c7168615c585655545455575a5f656e78828d99a4afa3988c8074675b4f43362a1d110500000000000000000000000000000c1824313d4956626e7a8793a0a6998d8174685c5043372b1e120600000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6961564a3e3226190d00111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a4f43372b1e12050000000000000000000000000006131f2c3844505b656c6c6c6c6c6c6c6c6c6a63584d4135281c0f00000007121d28333e49535e69747f8a95a0aba3988d82766b60554a3f34291e130808131e29343f4a55606b76818c97a2aba1968b80756a5f54493e33281d1308000000000000000005121e2b3744505c6975828e9aa6afa2968a7d7165594d41362b353f48525c656f79828c969f9a90878894a0ada99d9084776b5f5246392d201407000000000000000000000000000000000000000000030d17212b35404a545e68727c86909aa5a89d93897f756b61574d42382e241a1006000000000000000000000000000000000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8c8d8f9193969a9d9a97938f8a847d766e665e554b42382d23180d020000000916222f3c4955626f7c8995a2a79a8d8174675a4d4134271a0e01000000000000000000000000000000000000000000010d18242e39424a5053535353535353535353514c443c322920170d04000000000000000000000000000000000000000000000000000000000000000000060e151c21242626262633404c596673808c8f8f8f8f8c7e7265584c45525f6b78858f8f8f8f8f85786b5e5145382b26262626231f19130b020000000b17232e38424b525a616870777e868d949ca0978e847b72685f564d443a31281f150b0000000000000000000000000006111b26303b444e575f676f757b808385868584817d78726b635b52493f352b20160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835414e5b6774818d9a95897d7165584c4956636f7c89959a8e8275695d5145382c201408000000000000121e2b3743505b666d6f6f6f6f6f6f6f6f6e685d5c666e6f6f6f6f6f6f6f6f6e675c5145382c1f13060000000000000000000000000000000000000000000000000013202c3946535f6c79848484848484848484848e9a9589848484848484848484848484848484848f9c93878484848484848484848484786b5e5145382b1e120500000000000a17232f3b47545f6b77838e99a4aea3988d837a726c6865636161616263666a7077808a949faaa99e92877b6f63574b3f33271a0e0200000000000000000000000000030f1b2834404d5965727e8a97a3a2968a7d7165594c4034271b0f02000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d574f44392e22160a000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a52493e33271b0f020000000000000000000000000004101c28343f4a535b5f5f5f5f5f5f5f5f5f5e5951473c3025190c0000030e18232e39444f5a65707b86919ca7a79c91867b70655a4f44392e23170c01010d18232e39444f5a65707b86919ca7a79c91867b70665b50453a2f24190e0300000000000000030f1b2834414d5966727e8a96a3afa69a8d82756a5e52473c322d36404a535d67707a848d97a19992929aa4b0a5998d8174685c4f43362a1e110500000000000000000000000000000000000000000000050f19242e38424c56606a747e89939da7a59b91877d73695e544a40362c22180e040000000000000000000000000000000013202c3946535f6c798693a0acb3a89f999898989898989898989898989898989898999a9b9d9c9592908e8b87837e78726c645d544c433930261c110700000000091623303c4956626f7c8996a2a79a8e8174675a4e4134281b0e010000000000000000000000000000000000000000000007121d2730383f444646464646464646464644403a322a20170e050000000000000000000000000000000000000000000000000000000000000000000000040b101518191a1a2633404c596673808c999c9c988c7e7265584c45525f6b7885929c9c9c9285786b5e5145382b1e1a1a1917130e0801000000000f1b28333f4a545d646b737a818990979fa0978e857b726960574d443b32281f160d0300000000000000000000000000000a141f29323c454d555d646a6f73767879797775716c676059514940362d23190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404c5966727f8c98998d8174685c504854616e7a87949e9285796d6154483c3024170b00000000000013202c3946525f6c787b7b7b7b7b7b7b7b7a6e62606d787b7b7b7b7b7b7b7b796d6054473a2e21140700000000000000000000000000000000000000000000000000131f2c3945525e6a747777777777777777777e8b9795897c7777777777777777777777777777808d9994877b7777777777777777777774695d5144372b1e1105000000000007131f2b37434f5b66727d88939da7aa9f958c847d7874716f6e6e6e6e7072767b8289929ba6aba1978c81766a5f53473b2f23170b000000000000000000000000000006121f2b3744505c6975818e9aa69f93867a6e6155493d3024180b00000000000000000000000a16212c3740484f5253535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353514d453d33281d1106000a16212c3740484f525353535353535353524f4940372c21160a0000000000000000000000000000000c17232d3841494f525353535353535353524e473f352a1f1408000009141f2a35404b56616c76828c97a2aca1968b80756a5f54483d32271c1106000006111c27323d48535e6974808b96a1aca3988d82776c61564b40352b20150a00000000000000000c1825313d4a56626e7a86929eaaaa9e92867a6f64594e443c363238414b555e68727b858f98a29e9ea3acada195897d7164584c4033271b0e02000000000000000000000000000000000000000000000008121c26303a444e58626c76818b959fa9a3998f857a70665c52483e342a20150b0100000000000000000000000000000013202c3946535f6c798693a0acb9b1a9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a6a8a1958a8684817e7b77726d67615a524b423a31271e140a00000000000a1623303c4956636f7c8996a3a89b8e8174675b4e4134281b0e0200000000000000000000000000000000000000000000000b151e262e33373939393939393939393938352f2920170e05000000000000000000000000000000000000000000000000000000000000000000000000000004090b0d0d192633404c596673808c99a6a5988c7e7265584c45525f6b7885929fa99e9285786b5e5145382b1e120d0c0a0703000000000000121e2b3744505c666e767d858c939aa0a0978e857c736960574e453b322920160d04000000000000000000000000000000030d17202a333b434b52595e63676a6b6c6c6b6865615b554e473f362e241b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323e4b5764717d8a979d9184786c605447535f6c7986929f95897d7164584c4034271b0f03000000000013202c3946535f6c7986888888888888887b6f62606d7a87888888888888877a6d6154473a2e21140700000000000000000000000000000000000000000000000000111d2a36424e5962696a6a6a6a6a6a6a6a6f7c8895988c7f736a6a6a6a6a6a6a6a6a6a6a6a717d8a96968a7d716a6a6a6a6a6a6a6a6a6862584d4135281c10030000000000030f1b27323e4a55606c76818b959ea7a89e968f8984817e7c7b7a7b7b7d7f82878c939ba4aba2998f857b7065594e42372b1f130700000000000000000000000000000916222e3b4753606c7885919da89c8f83776a5e5245392d211408000000000000000000000005101a252e373e43464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645413b342b21160c000005101a252e373e4346464646464646464646433e372e251b100500000000000000000000000000000006111c262f383e4346464646464646464645423d352d23190e030005101b26313b46515c67727d88939ea9a69b9085796e63584d42372c21160b000000000b16212c37424d58636e79848f9aa5a99e94897e73685d52473c31261b1005000000000000000915212d3a46525e6a76828d99a5aea3978c80756a60564e47423e3c3c434c566069737d87909aa3abafb3a89c9185796d6154483c3024170b000000000000000000000000000000000000000000000000000a141e28323c46505b656f79838d97a1aba1968c82786e645a50463b31271d130900000000000000000000000000000013202c3946535f6c798693a0acb5aba39e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa1a3a5a1958984817c78726c66615c564f48413930281f150c0200000000000a1723303d4a5663707d8a96a3a89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000030c141c22272b2c2c2c2c2c2c2c2c2c2c2b29241e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c596673808c99a6a5988c7e7265584c45525f6b7885929fab9e9285786b5e5145382b1e12050000000000000000000013202c3946535f6c7880888f93939393938f857c736a61574e453c332920170e040000000000000000000000000000000000050e182129323941474d53575b5d5f5f5f5e5c5955504a443d352d241b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4956636f7c8995a194887c7063574b515e6b7784919d998d8174685c5043372b1f1306000000000013202c3946535f6c7986939595959595887b6f62606d7a87949595959594877a6d6154473a2e211407000000000000000000000000000000000000000000000000000e1a26313c4750585c5d5d5d5d5d5d5d606d7986929b8e8275695d5d5d5d5d5d5d5d5d5d626e7b8794998d8073675d5d5d5d5d5d5d5d5c5750463b3024190c000000000000000a16222d39444f5a656f79838c959ca3a8a09a94908d8b8988878788898b8e93989ea5a8a19990877d73695e53483d31261a0e0200000000000000000000000000000d1925323e4a57636f7b8894a1a5988c8073675b4e42362a1d110500000000000000000000000009131c252c323739393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835302922190f0500000009131c252c32373939393939393939393937322c251c130900000000000000000000000000000000000a141d262d33373939393939393939393936312b231b110700000a16212c37424d58636e79848f9aa4aa9f94897e73685d52473c31261b100400000000040f1a25313c47525d68737e89949faaa59a8f84796e63584e43382d22160b0000000000000005111d2a36424e5965717c88949faaa89d91877c72686058524e4b4948494a4e57616b747e88929ca8b5ada2978b8074685c5044382c20140800000000000000000000000000000000000000000000000000020c16202a353f49535d67717b858f99a4a89e948a80766c62574d43392f251b1107000000000000000000000000000013202c3946535f6c798693a0acb0a4999291919191919191919191919191919192939496999c9b94908d88837e77706961584f463c32281e160d030000000000000a1724303d4a5763707d8a96a3a89b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000000020a11171b1e202020202020202020201f1c18130c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c596673808c99a0a0988c7e7265584c45525f6b7885929fa09e9285786b5e5145382b1e12050000000000000000000013202c3946535f6c798686868686868686867c736a61574e453c332a20170e0500000000000000000000000000000000000000060f1720272f363c42474b4e51525352514f4c49443f39322b231b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4854616e7a8794a0988c8073675b4f505c6976828f9c9d9084786c5f53473b2f23160a000000000013202c3946535f6c798693a0a2a2a295887b6f62606d7a8794a0a2a2a194877a6d6154473a2e211407000000000000000000000000000000000000000000000000000915202b353e464c50505050505050515d6a76838f9c9185786c5f5350505050505050535f6c7885919c8f83766a5d51505050505050504c463e342a1f14080000000000000005111c27333e48535d67717a838b92989ea3a5a09c9997969494949596989b9ea3a7a29d968f877e756b62574d42372c201509000000000000000000000000000004101c2935414e5a66737f8b98a4a195897c7064574b3f32261a0e01000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c29251f18100700000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a27211b130a010000000000000000000000000000000000020b141b22272b2c2c2c2c2c2c2c2c2c2c2a26201911090000000e1a26323e49545e6974808a95a0a0a0998e83786d62574c40352a1f140900000000000009141f2a35404b56616c77828d99a0a0a0968b80756a5f54493e33271b0f02000000000000010d1925313d4954606b77828d98a3ada3988e847a726a635e5a5756555557595c61676f77818d9aa7b4a79c91867a6f63574c4034291f160c0200000000000000000000000000000000000000000000000000040e19232d37414b555f69737d88929ca6a69c92887e73695f554b41372d23190e040000000000000000000000000013202c3946535f6c798693a0acada093888484848484848484848484848484848586888a8d90959a9d99948f89827b736a61584e44392f24190e030000000000000b1724313e4a5764707d8a97a4a89c8f8275685c4f4236291c0f030000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c596673808c939393938c7e7265584c45525f6b7885929393939285786b5e5145382b1e120500000000000000000000131f2c3946525f6b76797979797979797979746a61584f463c332a21180e05000000000000000000000000000000000000000000050e161d242b31363b3f42444546464543403d38332e272019110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46535f6c7986929f9c9083776b5f534e5b6774818d9aa094887c6f63574b3f33261a0e020000000013202c3946535f6c798693a0acafa295887b6f62606d7a8794a0adaea194877a6d6154473a2e21140700000000000000000000000000000000000000000000000000030e19232c353b40434444444444444e5b6774818d9994877b6e625549444444444444505c6975828f9b9285796c605347444444444443403b342c22180d0200000000000000000b16212c37414b555f68717980878d93979b9fa1a4a4a2a1a1a1a1a2a4a4a19e9b96918b857d756c635a50453b30251a0f0400000000000000000000000000000713202c3845515d6a76828f9ba79e9285796d6054483b2f23160a0000000000000000000000000000010910161a1e1f202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d19140d06000000000000010910161a1e1f20202020202020201f1e1b1610090100000000000000000000000000000000000000020a11161b1e2020202020202020201f1d1a150f0700000000111e2a36434f5a65707b86919393939393887c71665b50453a2f24190e03000000000000030e19242f3a45505b66717c87929393939391877b71665b4f43372b1e1205000000000000000915212c38444f5a66717c87919ba5aaa0968c847c756f6a66646362626365686d7279818a939da9b2a5988c80756b62584e453b31281e140b010000000000000000000000000000000000000000000000000007111b252f39434d57616c76808a949ea8a49a8f857b71675d53493f352a20160c0200000000000000000000000013202c3946535f6c798693a0acaca0938679777777777777777777777777777778797b7d8184898f959ca09a948d857c736a60564b40362b1f14080000000000000b1724313e4a5764717d8a97a4a99c8f8275695c4f4236291c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c596673808686868686867e7265584c45525f6b7885868686868685786b5e5145382b1e120500000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6a62584f463d342a21180f060000000000000000000000000000000000000000000000040b131920252a2f323537393939383634302c28221c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845515e6b7784919d9f93877b6f62564d5966727f8c98a4988c8073675b4f42362a1e12050000000013202c3946535f6c798693a0acaca295887b6f62606d7a8794a0adaca194877a6d6154473a2e211407000000000000000000000000000000000000000000000000000007111a232a30343637373737373f4c5865717d8a97968a7d7165584c3f37373737414d5a6673808c9894887b6f6256493d3737373736343029221a100600000000000000000005101a252f39434d565f676e757c82878b8f929597989a9a9b9b9b9a999795928f8b86807a736b635a51483e34291f14090000000000000000000000000000000a17232f3c4854616d7986929ea79b8e8275695d5144382c1f130700000000000000000000000000000000050a0e11131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d0802000000000000000000050a0e1113131313131313131313110e0a050000000000000000000000000000000000000000000000050b0f1113131313131313131313110e09040000000000121f2c3945525f6b76828686868686868681766b60554a3f34291e1308000000000000000007121d28333e4954606b76818686868686868682776c5f5346392d2013060000000000000004101b27323e49545f6a758089939da6a89e968e86807a7673716f6f6f707274787d848b939ca5aba7a79b91877d746a60574d433a30261d1309000000000000000000000000000000000000000000000000000009131d27313b45505a646e78828c96a0aaa1978d83796f655b51463c32281e140a00000000000000000000000013202c3946535f6c798693a0acaca09386796c6a6a6a6a6a6a6a6a6a6a6a6a6b6b6d6e7174787d848b939ba59e978e857c72675d52473c3025190e0200000000000b1824313e4b5764717e8b98a4a99c908376695c4f4336291c1003000000000000000000000000000000000000000000000000000000000000000002040608090a0b0b0c0c0c0b0b0a08070503010000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c58657179797979797979797064584b45515e6a7679797979797979756a5e5144382b1e1205000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5e5850463d342b22180f060000000000000000000000000000000000000000000000000001080e141a1e2326292b2c2c2c2b2a2724201c17110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505c6976828f9ca3978b7e72665a4e5864717d8a97a49c8f83776b5e52463a2e2215090000000013202c3946535f6c798693a0a2a0a095887b6f62606d7a8794a0a2a0a094877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000811181f24282a2a2a2a2a303d4956626e7b8794998d8174675b4e42352a2a323e4b5764707d8996978b7e7265594c40332a2a2a2a28241e181007000000000000000000000009131e28313b444c555d646b70767b7f8386888a8c8d8e8e8e8e8d8c8b8886837e7a756f68615951483f362c22180d020000000000000000000000000000010e1a26333f4b5864707d8995a2a3978b7e72665a4d4135281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6b7679797979797979797970655a4f44392d22170c010000000000000000010c17222d38434e59646f787979797979797979766b5f5346392d20130600000000000000000b16212d38434e59636d77818b949ca4a89f98918b8682807d7c7b7c7d7e8184898f959da5a79f9b9ba1998f867c72695f554c42382f251b120800000000000000000000000000000000000000000000000000010b151f29343e48525c66707a848e99a3a99f958b81776c62584e443a30261c1207000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5d5d5d5d5d5d5d5d5d5d5e5e5f606264686c72798189939da7a0978e84796e63584d41362a1e120600000000000b1825323e4b5865717e8b98a4a99c908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000306090c0e11131416171818191918181716151412100d0b08040100000000000000000000000000000000000000000000000000000000000000000000000b1724303d49545f686c6c6c6c6c6c6c6c685f5448424e59646b6c6c6c6c6c6c6c6b63594e4235291d1003000000000000000000000a16212c3740484f52535353535353535353524d463e342b221910060000000000000000000000000000000000000000000000000000000003090e12161a1c1e1f201f1f1d1b1814100b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424e5b6774818d9aa79b8e82766a5e5156636f7c8995a29f93877b6e62564a3e3125190d0100000013202c3946535f6c7986939f96939393887b6f62606d7a87949e96939393877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000070e14181b1d1d1d1d212d3a46535f6c7885919c8f83766a5e5145382c232f3c4855616e7a87939a8d8174685b4f4236291d1d1d1c1c1a17120c0600000000000000000000010c16212b343c434b52595f656a6f7376797c7d7f818182828181807e7c7976726e69635d564f473f362d241a100600000000000000000000000000000005111d2a36424f5b6774808c99a5a094877b6f63564a3e3125190c00000000000000000000000000000000000005090c0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0c090500000000000000000000000000040708080808080808080808070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e5a646b6c6c6c6c6c6c6c6c6c675e53483d32271c11060000000000000000000006111c27323d48535e676c6c6c6c6c6c6c6c6c6b645a4f43372b1e1205000000000000000005101b26313c47515c666f78828a929aa0a7a39c97928f8c8a898888898b8d91959aa0a7a39c958e9098a1988e847a71675e544a41372d241a100600000000000000000000000000000000000000000000000000030e18222c36404a545e68727c87919ba5a79d93897e746a60564c42382e23190f050000000000000000000013202c3946535f6c798693a0acaca09386796c5f535151515151515151515151525355585c61676f77818b96a1a9a0958b8075695e52463b2e22160a00000000000c1825323f4b5865727e8b98a5aa9d9083766a5d5043372a1d11040000000000000000000000000000000000000000000000000002070b0f1215181b1d1f212224242525252525242322201e1c1a1714110d09050000000000000000000000000000000000000000000000000000000000000000000814202c38434d565d5f5f5f5f5f5f5f5f5d564d423d48525a5f5f5f5f5f5f5f5f5e5951473d3125190d010000000000000000000005101a252e373e434646464646464646464645423c342c221910070000000000000000000000000000000000000000000000000000000000000002060a0d101112131312100e0b08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5966737f8c99a59e92867a6d615555616e7a8794a1a3978b7e72665a4d4135291d110400000013202c3946535f6c798692998d868686867b6f62606d798693988d868686867a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000060e161d22262828282b3744505d6976828f9b9286796d6054473b2e282d3946525e6b7784909c9083776a5e5145382c282828282826231e17100700000000000000000005111c28333d464e535555555a5e63676a6d6f717273747575747473716f6d6a66625d585555524d453b31261a0f030000000000000000000000000000000814212d3946525e6b7783909ca89d9084786b5f53473a2e22150900000000000000000000000000000000040b1115181a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1816110b05000000000000000000060c10131515151515151515151513100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26323d48525a5f5f5f5f5f5f5f5f5f5f5c554c42372c21160b0000000000000000000000000a15202b36414c555c5f5f5f5f5f5f5f5f5f5f5a52493e33271b0f020000000000000000000a15202b353f4a545d666f7880888f959ba0a4a39e9b989796959596979a9da1a6a29d98928b83869099a0968d83796f665c53493f362c22180d020000000000000000000000000000000000000000000000000006101a242e38424c56616b757f89939da7a59a90867c72685e544a3f352b21170d0300000000000000000013202c3946535f6c798693a0acaca09386796c5f5346444444444444444444444547494c50565d656f7985909ca7a79c91867a6f63574b3f32261a0e01000000000c1925323f4c5865727e8c98a5aa9d9084776a5d5044372a1d1104000000000000000000000000000000000000000000000004090e13171b1f2225272a2c2e2f3031323232323231302e2d2b292623201d1915110c070200000000000000000000000000000000000000000000000000000000000004101b27313b444c515353535353535353514b443b3640484e5253535353535353524e483f362b20150900000000000000000000000009131c252c3237393939393939393939393836312a221a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323e4b5864717e8a97a4a2968a7d71655953606c7986929fa79a8e82766a5d5145392d201408000000121f2c3945525f6b788592988c7f797979786d615f6c798692988b7e797979776c6053473a2d21140700000000000000000000000000000000000000000000000000000000050f1820282e323535353535414e5a6773808c9995887c6f63564a3e35353536434f5c6875818e9a9286796d6154483b353535353535332f292219100700000000000000000915212d39444f585f6262626262615b5e60626466676768686767666563605d6162626262625e574d42372b1f13060000000000000000000000000000000b1824303d4955626e7a87939fa6998d8174685c4f43372b1e1206000000000000000000000000000000060e161c21252727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272725221d160f07000000000000020a11181c2021222222222222222221201c18110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212c3640484f52535353535353535353504b433a30251a0f04000000000000000000000000040f1a25303a434b50535353535353535353524f4940372c21160a00000000000000000000030e19232e38424b545d666e767d848a8f94989c9fa1a2a3a2a2a2a3a3a19f9d9a96918c8780797e87919b9f958b82786e655b51483e34291e1307000000000000000000000000000000000000000000000000000008121c26303a454f59636d77818b959fa9a2988e847a70665b51473d33291f150b01000000000000000013202c3946535f6c798693a0acaca09386796c5f534639373737373737373838393a3c40444b535d68737f8b97a3aea3978b7f73675b4e4236291d1104000000000c1926323f4c5965727f8c99a6aa9e9184776a5d5144372a1e1104000000000000000000000000000000000000000000040a10151a1f23272b2e313436393a3c3d3e3e3f3f3f3e3e3d3b3a383533302d2925211d18130d070100000000000000000000000000000000000000000000000000000000000a152029323a4044464646464646464644403a322e363d43454646464646464645423d362d24190f04000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c29251f1810070000000000000000000000000000000000000000000000000000000000000000000001040608090b0c0c0d0d0d0d0d0c0b0a080604020000000000000000000000000000000000000000000000000000000000000000000000000000000003060809090909090909090907040000000000000000000000000000000000000000000000000000000000000000000a1723303d4956636f7c8995a2a69a8d8175695d515e6b7784919daa9e92867a6d6155493d3024180c000000121e2b3844515e6a778491998d80736c6c6c665c5e6b788591988c7f726c6c6b655b5044382b1f1206000000000000000000000000000000000000000000000000000000010c16212a32393e4142424242424b5764707d8996988b7e7266594d4242424242424d5966727e8b9895897c7063574a424242424242423f3a342b22180e03000000000000000b1824313d4a55616a6f6f6f6f6f6d665e575658595a5b5b5b5b5a59585860676e6f6f6f6f6e695f53473b2f2216090000000000000000000000000000020f1b2734404c5965717d8a96a3a2968a7d7165584c4033271b0f020000000000000000000000000000050f1820272d3133343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343433312e282119100600000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a242e363d434646464646464646464644403931281e1409000000000000000000000000000008131e2831393f4446464646464646464646433e372e251b1005000000000000000000000007121c263039424b545c646c73797e84888c8f9294969798989897969593908d8a86817b756e757f89929c9d948a80766d635a50463b2f23170b00000000000000000004080b0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d141e29333d47515b656f79838e98a2aaa0968c82776d63594f453b31271c1208000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2a2a2a2a2a2a2b2b2c2d303439414c57636f7b8794a0ada79b8f83776a5e5245392c1f1306000000000d192633404c596673808c99a6aa9e9184776b5e5144382b1e110500000000000000000000000000000000000000030910161b21262b2f33373b3e40434547484a4b4b4c4c4b4b4a49484644423f3c3935312d28231e18130d0600000000000000000000000000000000000000000000000000000000030e1720292f3538393939393939393938342f28242c323639393939393939393936322b241b12080000000000000000000000000000010910161a1e1f2020202020202020201f1d19140e06000000000000000000000000000000000000000000000000000000000000000004080b0e101214161718191a1a1a1a191918161513110e0b07040000000000000000000000000000000000000000000000000000000000000000000000040a0f131516161616161616161514100c06000000000000000000000000000000000000000000000000000000000000000915222f3b4855616e7b8794a1aa9d9185796c60545c6976828f9ca8a2968a7d7165594c4034281c0f030000101d2a3643505c6976828f9b8e8275685f5f5b545d6a7683909a8d8174685f5f5b53493f33281c0f0300000000000000000000000000000000000000000000000000000007121d28323c444a4e4f4f4f4f4f4f55616e7a87939a8e8175685c4f4f4f4f4f4f4f4f57636f7c8995988b7e7266594f4f4f4f4f4f4f4e4b453e342a1f1409000000000000000c1926333f4c5965727b7b7b7b7b787069615a524c4d4e4e4e4e4d525a626a72797b7b7b7b7b7063564a3d3024170a000000000000000000000000000006121e2b3743505c6875818d9aa69f93867a6e6155493c3024180b0000000000000000000000000000020d17212a32393d404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e39332b22180e030000000a141d262e34383b3b3b3b3b3b3b3b3b3b38342e261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c242c32363939393939393939393938342f281f160d020000000000000000000000000000020c161f272e34383939393939393939393937322c251c1309000000000000000000000000000a141e273039424a525a61676d73787c80838688898a8b8b8b8a8a888684817d7975706a646d77818a93939392897f756b62574c3f33271a0e00000000000000030a101518191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a212b353f49535d67717c86909aa4a89e93897f756b61574d43382e241a10060000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201e1e1e1e1e1e1e1f2123282f3a46535f6c7885919eabab9f93867a6d6054473b2e211508000000000d1a2633404d596673808c99a6ab9e9184776b5e5145382b1e1205000000000000000000000000000000000000070e141b21272c32373b3f43474a4d4f5254555657585858585857565453514e4c4945413d39342f2a241e18110a03000000000000000000000000000000000000000000000000000000050e171e24292b2c2c2c2c2c2c2c2c2b28241d1a21262a2c2c2c2c2c2c2c2c2c2a26211a12090000000000000000000000000000000000050a0e111313131313131313131312110d090300000000000000000000000000000000000000000000000000000000000002070c1014171a1d1f21232425262626262626252423211f1d1a1714100c070200000000000000000000000000000000000000000000000000000000000000070f151b1f22222222222222222222201c1711090100000000000000000000000000000000000000000000000000000000000714202d3a4653606c7986929faca195897c7064585b6874818e9aa7a6998d8175695c5044382c1f130700000f1c2835414e5b6774818d9a9184786b5f53504f5b6875818e9a9083776a5e524f4941372d22170b000000000000000000000000000000000000000000000000000000000b17232f3a444e565a5b5b5b5b5b5b5b5f6b7884919d9084786b5f5b5b5b5b5b5b5b5b5b606d7986929a8e8275685c5b5b5b5b5b5b5b5b5750463c3125190d010000000000000d192633404c5966738088888888827a736b645c554d4642454d555c646c747c84888888887d7063574a3d3024170a00000000000000000000000000000915222e3a47535f6c7884919da89c8f83776a5e5245392d211408000000000000000000000000000008131e29333c444a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a443d342a1f1409000006111c262f383f4548484848484848484848453f382f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000a121a21262a2c2c2c2c2c2c2c2c2c2c2b28231d160d0400000000000000000000000000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2a27211b130a0100000000000000000000000000020c151e27303941484f565c62676c707376797b7c7d7e7e7e7d7d7b7a7775716d69645f5b656e78828686868686867d74685b4f4235291c0f000000000000050e151b212426262626262626262626262626262626262626262d37414b56606a747e88929ca6a59b91877d73695f544a40362c22180e0400000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20131111111111121214171e2b3744505d6a7683909da9aea195887b6f6256493c2f231609000000000d1a2733404d596673808d9aa6ab9e9285786b5e5145382b1f120500000000000000000000000000000000020a11181f262c32383d42474b4f5356595c5e6062636465656565646463615f5d5b5855514d4945403b352f29231c150d06000000000000000000000000000000000000000000000000000000050c13181c1f20202020202020201f1c18120f151a1e1f202020202020201f1e1a150f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13181c202427292c2e2f31323233333333333231302e2c2a2724201c17130d08010000000000000000000000000000000000000000000000000000000008111920272b2e2f2f2f2f2f2f2f2f2f2c28221b130a010000000000000000000000000000000000000000000000000000000006121f2c3845515e6b7784919daaa5998c8074685c596673808c99a5a99d9185786c6054483b2f23170b00000d1a26333f4c5865717e8a9794877b6f63574b4d5966727e8b9893877a6e62564a3e372f261b1106000000000000000000000000000000000000000000000000000000000f1b2734404b56606768686868686868686875828e9a93877a6e68686868686868686868686a7783909c9184786b68686868686868686761584d42362a1d11040000000000000c1925323f4b58646f78828c95948c857d766e675f5850494f575f676e767e868e95948a81766d6155493c3023160a00000000000000000000000000000c1925313e4a56636f7b8894a0a4988c8073675b4e4236291d110500000000000000000000000000000d1924303b454e55595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59564f463c31251a0e02000b17222d38424a5154555555555555555554514a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161a1e1f2020202020202020201f1c18120b04000000000000000000000000000000000000030b12171c1e2020202020202020201f1e1b16100901000000000000000000000000000000030c151e272f363e454b51565b6064676a6c6e707171717171706f6d6b6865615d5853535c6670787979797979797973685b4f4235291c0f0000000000040e171f272c31333333333333333333333333333333333333333333333a444e58626c76808a949ea9a3998f857a70665c52483e342a20160b01000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0c0d0e111d2936434f5c697683909ca9b0a3968a7d7063574a3d3024170a000000000d1a2734404d5a6773818d9aa7ac9f9285786b5f5245382c1f1205000000000000000000000000000000040c141c232a31373d43494e53575c5f6366686b6d6e70717172727171706f6e6c6a6764615e5a55514c46403a342d261f18100800000000000000000000000000000000000000000000000000000001070c1012131313131313131312100c07040a0e11131313131313131313110e0a04000000000000000000000000000000000000000000000000000005090c0e0e0e0e0e0e0e0e0e0e0c09050000000000000000000000000000000000000000000000060d13191f24282c303336383a3c3d3e3f40404040403f3e3c3b393633302c28231e19130d06000000000000000000000000000000000000000000000000000005101a232b32373b3c3c3c3c3c3c3c3c3b39342d251c13080000000000000000000000000000000000000000000000000000000003111d2a3743505d6976838f9ca9a89c9084786b5f5864717e8a97a4aca195887c7064584b3f33271b0e02000b1724303d4956626f7b8794978b8073685c504a57636f7c8894978a7e72675b4f44382d22170c0200000000000000000000000000000000000000000000000000000000101d2a3643505c6872757575757575757575757f8b9896897d7575757575757575757575757575818d9a93877a757575757575757575736a5e5245392c1f13060000000000000a17232f3b47525d66707a838d97978f8880787169625a53596169717880889098968c82786e655b5045392d2114080000000000000000000000000004101c2835414d5a66727e8b97a4a195897c7064574b3f32261a0e010000000000000000000000000000101c2935414c57606667676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676661584d42362a1e1105000f1b27333f4a545c616161616161616161615c544a3f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e111313131313131313131312100c0701000000000000000000000000000000000000000000060b0f1213131313131313131313110e0a05000000000000000000000000000000000000030c151d242c333a40454b4f54575b5d60626364646564646362605e5c5955514d484a545e676c6c6c6c6c6c6c6c6a62574b3f33271a0e00000000010c16202931383d40404040404040404040404040404040404040404040404046505a646e78838d97a1aba1978c82786e645a50463c32271d1309000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2018181818181819191b1d212a3743505d697683909ca9b0a4978a7d7063574a3d3024170a000000000e1a2734414d5a6774818e9aa7ac9f9286796c5f5246392c1f13060000000000000000000000000000050e161e262d353c42494f545a5f63686c6f727577797b7c7d7e7e7e7e7e7d7c7a797674716d6a66615c57514c453f38312a221a120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1116191a1a1a1a1a1a1a1a1a1a1916110b0400000000000000000000000000000000000000020a11181f252a2f34383c3f424547494a4b4c4c4d4d4d4c4b4a494745423f3c38342f2a241e171009010000000000000000000000000000000000000000000000010c17222c353d4347494949494949494948453f372e241a0f04000000000000000000000000000000000000000000000000000000000f1c2835424e5b6874818e9aa0a0a094887b6f635763707c8996a0a0a0988c8074675b4f43372b1e1206000815212e3a46535f6b7784909b9084786d61564b54606c7885919b8f83776c60554a3e34291e130800000000000000000000000000000000000000000000000000000000111e2a3744515d6a7782828282828282828282828a97998c828282828282828282828282828282828c98968982828282828282828282796d6053463a2d20130700000000000007131f2b36414b545e68717b858e9899928a837b746c655d636b737b838a929a978e847a70665c53493f34281d11050000000000000000000000000007131f2c3844515d6976828e9ba79e9285796d6054483b2f23160a000000000000000000000000000000121f2c3845515d69727373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373726a5e5246392d20130700121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b4f43372b1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a21282e343a3f44484b4e515355565758585857575554524f4c4945413c424c555c5f5f5f5f5f5f5f5f5e5850453a2f23170b0000000007121d28323b43494c4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d525c66717b858f99a3a89e948a80766c62584d43392f251b10050000000013202c3946535f6c798693a0acaca09386796c5f5346392c252525252525252526272a2d323a46525f6b7884919eaab0a3968a7d7063574a3d3024170a000000000e1b2834414e5b6774818e9aa7ac9f9286796c5f5346392c20130600000000000000000000000000060e17202830383f464d545a60656b6f74787b7e82848688898a8b8b8c8b8b8a89878583817d7a76726d68635d57504a433b342c241c130a01000000000000000000000000000000000004070808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080806020000000000000000000000070f161d22252727272727272727272725221d160f060000000000000000000000000000000000030c141b232930363b4044484c4f515355575859595959595958575654524f4c4844403b352f29221b130b030000000000000000000000000000000000000000000005111d28333e474e54555555555555555555504940362c201509000000000000000000000000000000000000000000000000000000000e1a2733404d596673808c93939393938b7f73675a616e7b8793939393939084776b5f53473a2e2115080005121e2a37434f5b67737f8b9795897e72675c51505c6874808c9894887d71665b50453a3025190e02000000000000000000000000000000000000000000000000000000111e2a3744515d6a77848f8f8f8f8f8f8f8f8f8f929b9d938f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f939c9b928f8f8f8f8f8f8f8f8f86796d6053463a2d201307000000000000020e19242f39424c565f69737c8690999c958d867e766f676d757d858d959c998f857c72685e544b41372d22170c00000000000000000000000000000a16232f3b4854606d7985929ea79a8e8275695d5144382c1f130700000000000000000000000000000013202c3946535f6c7981818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181817a6d6154473a2e2114070013202c3946525f6c777b7b7b7b7b7b7b7b776c5f5246392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407080808080808080808080704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010810171d23292e33373b3f424447484a4a4b4b4b4b4a49474543403d3935303a434b505353535353535353524d463e34291e1207000000000c18232f3a444d54595959595959595959595959595959595959595959595959595959595f69737d87919ba5a69c92887e74695f554b41372d22170b0000000013202c3946535f6c798693a0acaca09386796c5f534639323232323232323232333436393d434c57626e7a8793a0acafa295897c6f6356493d3023160a000000000e1b2835414e5b6774818e9ba8aca09386796c5f5346392d201306000000000000000000000000050e182029323a424951585f656b71767b8084888b8e91939496979898989898979594928f8d8a86827d79746e68625b544d463e362e251c130a010000000000000000000000000000060c101315151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151514120f0a04000000000000000006101921282e3234343434343434343434322d2821180f06000000000000000000000000000000040d151e262d343b41474c5055585b5e60626365656666666666656462605e5b5854504b46413a342d251d150d040000000000000000000000000000000000000000000916222e3a454f59606262626262626262615b52483d3125190d000000000000000000000000000000000000000000000000000000000c1925323f4b5864717e8686868686868683776a5e606c7986868686868686867b6f6356493d3023160a00020e1a27333f4b57636e7a86919a8f84786d63584d58646f7b8792998e83776c61574c41362a1e1206000000000000000000000000000000000000000000000000000000111e2a3744515d6a7784919c9c9c9c9c9c9c9c9c9da0a59e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea0a39d9c9c9c9c9c9c9c9c9386796d6053463a2d2013070000000000000008131d27303a444d57616a747d87919a9f9790888179727880878f979f9b91877d736a60564c42392f251b110600000000000000000000000000010e1a26323f4b5764707c8995a1a3978b7e7266594d4135281c100300000000000000000000000000000013202c3946535f6c79868d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d877a6d6154473a2e2114070013202c3946535f6c798688888888888886796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10131515151515151515151513100c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12181d23272b2f3335383a3c3d3e3e3e3e3e3d3c3a393634302d292831393f44464646464646464645423c342c22170d01000000000f1c2834404b565f6566666666666666666666666666666666666666666666666666666666666b758089939ea8a49a90867b71675d53493e33281c100300000013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3f3f414345494e555e68737e8b97a3afaca094877a6e6154483b2f221509000000000f1b2835424e5b6875828e9ba8ada09386796d6053463a2d2013070000000000000000000000040e17202a323b444c545b626970767c82878c9094979a9d9fa1a3a4a4a5a5a5a4a3a2a09e9c9996928e8a857f79736d665f58504840372e251c1309000000000000000000000000020a11181c20212222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222211f1b150f07000000000000020d18222b33393e404141414141414141403e39322a21170d0200000000000000000000000000030c161f2730373f464c52585c6164686a6d6f707172737373737372706f6d6b6864615c57524c453e372f271f160d0300000000000000000000000000000000000000000c1825313e4a56616b6f6f6f6f6f6f6f6f6d64594d4135281c0f030000000000000000000000000000000000000000000000000000000a1724303d4a56636f787979797979797979756a5e5e6a767979797979797979786e6256493c3023160a00000a17232e3a46525e6975808b93938a7f74695f54535f6a76818d9393897e73685e52473b2e221509000000000000000000000000000000000000000000000000000000111e2a3744515d6a77849191919191919191919191949d9d9491919191919191919191919191919191959e9b93919191919191919186796d6053463a2d20130700000000000000010b151e28323b454f58626b757f89929ca29a938b847c828a9199a19c93897f756b61584e443a30271d1309000000000000000000000000000005111d2936424e5b6773808c98a5a094877b6f62564a3e3125190c0000000000000000000000000000000013202c3946535f6c7986939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a94877a6d6154473a2e2114070013202c3946535f6c798693959595959386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181c2021222222222222222221201c18110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12171b1f2326292b2d2f303131323231302f2e2c2a2724211d1f272e343839393939393939393836312a221910060000000000111e2b3744505c68717373737373737373737373737373737373737373737373737373737373737377828c96a1aca2978d83796f655b5044382c1f130600000013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4b4b4c4c4d4f52555a6067707a85909ba7b3a99d9184786b5f5246392d201407000000000f1c2835424f5b6875828f9ca8ada094877a6d6053473a2d20140700000000000000000000020c162029323c444d565e656d747b82888d93989ca0a4a7aaa8a5a3a2a1a1a0a1a1a2a4a6a8a8a5a29e9a95908b857e787169625a524940372e251b120800000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2b2620191108000000000008141f2a343d444a4d4d4d4d4d4d4d4d4d4d4a443c33291f1308000000000000000000000000010b151e283139414951575e63686d717477797b7d7e7f808080807f7e7d7b797774716c68635d575049413931281f150b01000000000000000000000000000000000000000d1a2633404d5966727c7c7c7c7c7c7c7c76695d5043372a1d10040000000000000000000000000000000000000000000000000000000915222e3a47525d676c6c6c6c6c6c6c6c6c6b635959646b6c6c6c6c6c6c6c6c6c675d52463a2e211508000006121e2a35414d58636e7a85868686867b7064574e5965707b86868686857a6f63564a3d3023170a000000000000000000000000000000000000000000000000000000111e2a3744515d6a778484848484848484848484848b98978b848484848484848484848484848484848c99968a848484848484848484796d6053463a2d2013070000000000000000030c162029333d46505a636d76808a939da59d968e878c949ba39e948a81776d635950463c32281e150b0100000000000000000000000000000814202d3945525e6a77838f9ca89d9084786b5f53463a2e2215090000000000000000000000000000000013202c3946535f6c7986939e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e94877a6d6154473a2e2114070013202c3946535f6c798693a0a2a2a09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b0f13171a1c1f21222324252525242423211f1d1b181411151d23282b2c2c2c2c2c2c2c2c2c29251f181007000000000000121f2c3845525f6b7880808080808080808080808080808080808080808080808080808080808080808086929faca99f958b81776c6054473b2e21150800000013202c3946535f6c798693a0acaca09386796c5f585858585858585858585858595a5c5e61656b7179828c96a1acb0a4998d8174685c5043372a1e1105000000000f1c2936424f5c6975828f9ca8ada094877a6d6154473a2e211407000000000000000000000a141e28323b444e565f6770777f868d93999ea3a8aaa6a29e9b99979594949494949697999b9ea2a6aaa6a19c969089827b746c645b524940372d241a10060000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3a37322b231a1006000000010d1925303b464f565a5a5a5a5a5a5a5a5a5a564e453b3024190d01000000000000000000000008131d27303a434b535b62696f74797d818386888a8b8c8c8d8d8d8c8b8a888684817d78746e68625b534b433a31271d1309000000000000000000000000000000000000000d192633404c5966738089898989898983776a5d5044372a1d110400000000000000000000000000000000000000000000000000000006121e2a36414c555c5f5f5f5f5f5f5f5f5f5e5951525a5f5f5f5f5f5f5f5f5f5f5c554b41352a1e12050000010d1925303c47525d68737979797979797064574b535f6a747979797979786f63564a3d3023170a000000000000000000000000000000000000000000000000000000111d2a3743505c697377777777777777777777777c8895988b7f77777777777777777777777777777d8a96968a7d7777777777777777756b5f5246392c201306000000000000000000040e17212b343e48515b646e78818b959ea7a09894969ea5a0968c82786f655b51473e342a20160d030000000000000000000000000000000b1724303c4955616e7a86939fa6998d8174685c4f43372b1e12060000000000000000000000000000000013202c3946535f6c7986929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292877a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b38342e261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0d1012141617181818181817161513110e0b08050b12171c1e20202020202020201f1d19140e0600000000000000121f2c3845525f6b78858d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e97a2aeb1a79d93887b6e6155483b2e22150800000013202c3946535f6c798693a0acaca09386796c656565656565656565656565656667686b6e71767c838b949ea8b2a99e93887c7064584c4034271b0f0200000000101c2936434f5c6975828f9ca9aea194877a6d6154473b2e21140800000000000000000007111c26303a444d5660687179828991979ea4aaa9a39e9a95928f8c8a898887878788898a8d8f92969a9ea4a9a7a19b948d867e756d645b52493f362c22170d020000000000000006111c262f383f4548484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484847433d352c22170c01000004111d2935414d57616667676767676767676660574c4135291d100400000000000000000000040f1a242f39424c555d656d747a8085898d909294969798999a9a999998979593908d8984807a736c655d554c43392f251a10050000000000000000000000000000000000000c1926323f4c5965727e8c96969696908376695c5043362a1d1003000000000000000000000000000000000000000000000000000000020e19252f3a434b50535353535353535353524e48484e52535353535353535353504a43392f24190d0200000008141f2a36414c5761696c6c6c6c6c6c685e53484d58626a6c6c6c6c6c6c675d52473a2e2215090000000000000000000000000000000000000000000000000000000f1b2834404c5761696a6a6a6a6a6a6a6a6a6a6d7986929b8e82756a6a6a6a6a6a6a6a6a6a6a6a6e7a8793998c80736a6a6a6a6a6a6a6963594e42362a1e110500000000000000000000050f19222c363f49525c666f79838c96a0a0a0a0a0a0a0988e847a70665d53493f352c22180e04000000000000000000000000000000000f1b2733404c5865717d8a96a0a0968a7d7165584c4033271b0f020000000000000000000000000000000013202c3946535f6c7985858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585857a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f4548484848484848484848453f382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090a0b0b0b0b0b0a090806040100000000060b0f12131313131313131312110d09030000000000000000121f2c3845525f6b7885929a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9aa0a9b3b9aea295887b6e6155483b2e22150800000013202c3946535f6c798693a0acaca09386797171717171717171717171717172727375777a7d82878e959da6afaba2988d82776b6054483c3024180b0000000000101d2936434f5c697683909ca9aea194887b6e6154483b2e2115080000000000000000030e19232e38424c565f68727a838b939ba2a9aba49e98928e898582807d7c7b7a7a7a7b7c7e8083868a8e93989ea4aba69f9790887f766d645b51483e33291f140a000000000000000b17222d38424a51545555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555534e473e34291d1206000006131f2c3945525e6972747474747474747472695d5145382c1f1206000000000000000000000b16212c36404b545e676f777e858b9195999c9fa1a3a1a0a09f9f9fa0a1a2a19f9c9995908b857e776f675e554b41372c21160b0000000000000000000000000000000000000c1825323f4b5865717e8b98a2a29c8f8275695c4f4236291c10030000000000000000000000000000000000000000000000000000000008131e2831393f4446464646464646464645423d3d4345464646464646464646443f3931271d130800000000030e19242f3a454f585e5f5f5f5f5f5f5c564d424650595e5f5f5f5f5f5f5c554c41362a1e12060000000000000000000000000000000000000000000000000000000c1824303b464f575c5d5d5d5d5d5d5d5d5d5e6a76838f9c9184786b5f5d5d5d5d5d5d5d5d5d5f6b7884919b8f83766a5d5d5d5d5d5d5d5951483d32261a0e02000000000000000000000007101a242d37404a545d67717a848e9393939393939390867c72685e554b41372d231a10060000000000000000000000000000000000111e2a37434f5c6874818d93939393867a6e6155493c3024170b0000000000000000000000000000000000131f2c3945525e6b757878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878766c6053473a2d2114070013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a5154555555555555555554514a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929fa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7abacacacaca295887b6e6155483b2e22150800000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7f808284868a8e93999fa7afaaa29990867b70655a4f43372c2014080000000000101d2a3643505d697683909da9aea195887b6e6155483b2e22150800000000000000000a15202a353f4a545e68717a848d959da5ada8a19a938d87827d797673716f6e6d6d6d6e6f717376797d82878d939aa1a8a9a299918980766d63594f453b30261b10050000000000000f1b27333f4a545c6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161615f5950453a2e22160a00000713202d3a4653606d798181818181818181796c5f5346392c20130600000000000000000005111c27323d48525c667079818990979ca1a49f9c9996959493929292939496989b9ea2a19c969089817970675d53483e33281d110600000000000000000000000000000000000b1824313e4b5764717e8b97a4a89b8e8275685b4f4235281c0f0200000000000000000000000000000000000000000000000000000000010c161f272e343839393939393939393939363232363939393939393939393937342e271f150c01000000000008131e29333d464d51535353535353504b443b3e474e52535353535353504b433a2f25190e0200000000000000000000000000000000000000000000000000000007131e29343d464c505151515151515151515b6774808d9993877a6e615551515151515151515c6975828e9a9285796c605351515151504d473f362b20150a0000000000000000000000000008121b252e38424b555f68727c8586868686868686867d746a60564c43392f251b120800000000000000000000000000000000000013202c3946525f6b7884868686868683766a5e5245392d2014080000000000000000000000000000000000111e2a36424e59636a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a645a4f44372b1f12060013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000f1b27333f4a545c616161616161616161615c544a3f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070a0c0e10111112121111100f0d0b08050200000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095887b6e6155483b2e22150800000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8c8d8e9093969a9ea4aaaca69f9890877e74695f54493e32271b0f030000000000111d2a3744505d6a7783909daaaea295887b6f6255483c2f2215090000000000000005101b26313c47515b66707a838d969fa7afa79e968f88817b76716d6966646261616161626365676a6d71767b82888f969ea7aba39b92897f756b61574d42382d22170c010000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6b61564b3e3226190c00000713202d3a4653606d79868e8e8e8e8e8e86796c5f5346392c2013060000000000000000000b16222d39444f5a646e78828b939ba2a49e98938f8c8a8887868686868687898b8e92969ca2a19a938b82786f655a4f44392e22160b00000000000000000000000202010000000b1724313d4a5764707d8a97a4a89b8e8174675b4e4135281b0e020000010202010000000000000000000000000000000000000000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2a26262a2c2c2c2c2c2c2c2c2c2c2b28231c150d03000000000000010c17212b343b414546464646464644403a32353c4245464646464646443f3931281e130800000000000000000000000000000000000000000000000000000000020d18222b343b404344444444444444444c5865717d8a96968a7d7164584b4444444444444d5966727f8b9894887b6f63564a44444444413c352d241a0f04000000000000000000000000000009131d263039434d56606a73797979797979797979756b62584e443a31271d130900000000000000000000000000000000000000131f2c3946525f6b767979797979797973675b4e4236291d11040000000000000000000000000000000000121f2b3844515d6871727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727271695e5246392d2013070013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b4f43372b1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090d111416191b1c1d1e1e1e1e1e1d1b191715110e0a060100000000000000000000000000000000000000000000000000121f2c3845525f6b788592939393939393939393939393939393939393939393939393939393939393939393939393939393887b6e6155483b2e22150800000013202c3946535f6c798693a0acb3a89f99989898989898989898989898989898999a9b9d9fa2a6aaa9a5a09b958e867e756b62584d43382c21160a000000000000111e2a3744515d6a7784909daaafa295887b6f6255493c2f221609000000000000000b16212d38434d58636d77828c959fa8afa69d958c857d76706a65615d5a5856555454545556585a5d61656a70767d858c959da6ada49b91877d73695e54493e33281d1207000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b73675a4d4134271a0e00000713202d3a4653606d7986939a9a9a9a9386796c5f5346392c201306000000000000000004101b27333e4a55606b76808a949da5a29a938c8783807d7b7a79797979797b7c7e82868b90979fa59d948b81766c61564a3f33271b0f0300000000000001060a0d0e0e0e0d0c0b0a1723303d4a5663707d8a96a3a79a8d8174675a4d4134271b0e0a0b0c0d0e0f0d0b0702000000000000000000000000000000000000000000030b12171c1e2020202020202020201f1e1a1a1e1f2020202020202020201e1c17120b030000000000000000050f19222a30353839393939393938342f282b31363939393939393938342e271f160c0100000000000000000000000000000000000000000000000000000000000610192229303437373737373737373c4955626e7b8794998c8073675a4e42373737373e4a5763707c8995978b7e7265594c4037373735312b231b1208000000000000000000000000000000010b141e27313b444e5861696c6c6c6c6c6c6c6c6c6b635a50463c32281f150b0100000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6961564a3e32261a0d01000000000000000000000000000000000013202c3946535f6c797f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b776c5f5246392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060c1115191d20232527292a2b2b2b2b2a29282624211e1a16120d07020000000000000000000000000000000000000000000000121f2c3845525f6b788586868686868686868686868686868686868686868686868686868686868686868686868686868686867b6e6155483b2e22150800000013202c3946535f6c798693a0acacaca9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a8a9a7a5a3a09d99948f8a837c746c635a50463b31261b1005000000000000111e2a3744515d6a7784919eaaaca296897c6f6255493c2f22160900000000000005111c27333e49545f6a747f89949ea7b1a79d948b837a736c655f5a55514e4b4948474747484a4b4e51555a5f656b737a838b949da7ada3998f857b70655b50453a2e23180c010000000013202c3946535f6c79868888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888174675a4d4134271a0e00000713202d3a4653606d798693a0a7a7a09386796c5f5346392c20130600000000000000000814202c38444f5b66727d88929ca6a2999088817b7773716f6d6c6c6c6c6d6e7072767a7f858d959ea69d93887d72675b4f44382b1f13070000000000050c1216191b1b1a191817161623303c4956636f7c8996a2a69a8d8073675a4d4034271a161718191a1b1b1a17130e0700000000000000000000000000000000000000000000060b0f1213131313131313131313110e0e1113131313131313131313120f0b0600000000000000000000000710181f25292c2c2c2c2c2c2c2b28231d20262a2c2c2c2c2c2c2c2b28231d150d04000000000000000000000000000000000000000000000000000000000000000710181e24282a2a2a2a2a2a2a2d3a46535f6c7885919c8f83766a5d5144382b2a2f3b4854606d7986929a8d8174685b4f42362a2a2825201911090000000000000000000000000000000000020c151f29323c464f585e5f5f5f5f5f5f5f5f5f5e5951483e342a20170d0300000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5d574f453a2e22160a00000000000000000000000000000000000013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798688888888888886796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12171c2125292c2f323436373838383837363533302d2a26221d18130d0600000000000000000000000000000000000000000000121f2b3845515e6a76797979797979797979797979797979797979797979797979797979797979797979797979797979797979776d6154483b2e21150800000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9e9e9c9b999794918d89847e78716a625a51483e342a1f150a00000000000000111e2b3844515e6b7784919ea0a0a096897c6f6356493c302316090000000000000a16222d38444f5a66717b86919ba5b0a99f958b82797169615a544e4945413e3d3b3a3a3b3b3d3f4245494e545a61687179828b959fa9aba1978c82776c61564b4034291d12060000000013202c3946535f6c798693959595959595959595959595959595959595959595959595959595959595959595959595959595959595958e8174675a4d4134271a0e00000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000c1824303c4854606c77838e99a4a59b90877e76706b67646261605f5f5f60616366696e747b838c96a0a49a8f83786c6054483c2f23170a00000000070f171d22262828272625242322222f3c4955626f7b8895a2a6998c807366594c403326222324252627282827241f1911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191d1f2020202020201f1c1812151a1d1f2020202020201e1c17120b03000000000000000000000000000000000000000000000000000000000000000000060d13181b1d1e1e1e1e1e1e2b3743505c6975828e9b9285796c6053473a2e222c3845515e6a7783909c9084776b5e5245392c201c19140e0700000000000000000000000000000000000000030d17202a343d464d51535353535353535353524e483f362c22180e050000000000000000000000000000000000000000000a16212c3740484f5253535353535353514d453d33281d120600000000000000000000000000000000000013202c3946535f6c7986939999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999994877a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693959595959386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a10171d23282d3135393c3e414243444545444443413f3d3a36322e29241e18110a030000000000000000000000000000000000000000101d2936424e59646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c665c5145382c20130700000013202c3946535f6c798693939393939393939393939393939393939393939393929291908e8c8a8784817d78736d67605850483f362c22180e0300000000000000121e2b3845515e6b7885919393939393897d7063564a3d3023170a0000000000040f1b27323e4a55606c77828d98a3adaca1978d837970675f574f48423d393532302f2e2e2e2f303235393d42484f575f677079838d97a2aca99e94897e73675c51453a2e23170b0000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29a8e8174675a4d4134271a0e00000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000f1b2834404c5965717c88949fa89f94897e756c655f5b585554535252535355575a5d6269717a848f9aa6a094887c7064584b3f3226190d00000006101921282e32353534333231302f2e2f3b4855616e7b8895a1a5988c7f7265594c3f322d2e2f30313233353533302a231b1209000000000000000000000000000000000000030608090a0a0a0908060300000000000000000000000000000000000000000000000000000000000000000000000002080d101213131313131312100c07090e1113131313131313120f0b0600000000000000000000000000000000000000000000000000000000000000000000000002070c0f1111111111111b2834414d5a66737f8c9894887b6f63564a3d31242936424f5b6874818d9993867a6d6154483b2f22160c0803000000000000000000000000000000000000000000050e18222b343c414546464646464646464645423d362d241a10060000000000000000000000000000000000000000000005101a252e373e43464646464646464645413b342b21170c0100000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094877a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a2a2a09386796c5f5346392c2013060202020202020202020201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141b22282e34393d4245484b4d4f5051515151514f4e4c4946423e3a352f29231c150d05000000000000000000000000000000000000000e1a26313d48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b544a3f34281c100400000013202c3946535f6c7986868686868686868686868686868686868686868686868685848382807d7b7874716c67625c554e463e362d241a10060000000000000000121f2c3845525e6b7885868686868686867d7063564a3d3024170a00000000000814202c38434f5b66727d88939fa9afa59a8f857b71675e554d453e37312d29252322212121222426292d32373e454d555e67717b85909ba5b0a59a8f84796d62564b3f33281c100400000013202c3946535f6c798693a0acaeaea9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59a8e8174675a4d4134271a0e00000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000121e2b3744505c6975818d97999c998e82776c635a534e4b49474646464647484a4d52575f68727e8a96a2a5988c8073675a4e4135281c0f0200020d18222b333a3f4141403f3e3d3c3b3a393b4854616e7a8794a1a5988b7e7265584b3f393a3b3c3d3e3f404141403b352d241b1006000000000000000000000000000003080c0f121416171717161412100c080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323e4a5763707c8995978b7e7265594c40332727333f4c5865717e8a9795897c7063574b3e3225190c000000000000000000000000000000000000000000000000061019222a3035383939393939393939393936322b241b120800000000000000000000000000000000000000000000000009131c252c323739393939393939393835302922190f050000000000000000000000000000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393877a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130f0f0f0f0f0f0f0f0f0f0e0e0c0b090704010000000000000000000000000000000000000000000000000000000000000000000000000000070f171f262d333a3f45494e5155575a5c5d5e5e5e5e5d5c5a5856524f4a46403b342e271f170f070000000000000000000000000000000000000915202b3640484e52535353535353535353535353535353535353535353535353535353535353535353535353535353535353524f4a42382e23180c00000000131f2c3946525f6b767979797979797979797979797979797979797979797979797877767573716e6c6864605b56504a433c342c241b1208000000000000000000121f2b3845515e6a767979797979797979786f63564a3d3023170a00000000000d1925303c4854606b77838e9aa5b0a99e93887e73695f554c433b332c26211c1917151414141517191d21262c333b434c555f69747e89949faaaca1958a7e73675c5044382c21150900000013202c3946535f6c798693a0acb3a89f99989898989898989898989898989898989898989898989898989898989898989898989898988e8174675a4d4134271a0e00000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000013202c3946535f6c7885888a8d8f92897d71665b5148433f3c3b3a3939393a3b3e41464d56616d7986929fa89b8f8276695c5043372a1d11040008141f2a343d454b4e4e4d4c4b4a49484746454754606d7a8794a0a4988b7e7164574b45464748494a4b4c4d4e4e4c473f362d22170c000000000000000000000000040a0f14181c1f212324242423211f1c1914100b050000000000000000000000000000000000000407080909090909080705010001050708090909090908070401000000000000000000000000000000000407080909090909080705010000000000000000000000000000000000000000000000000000000000000000000916222f3b4854616d7a86939a8d8174685b4f42362a24303d4956626f7b8894988c7f73665a4d4134281b0f020000000000000000000000000000000000000000000000000710181f25292c2c2c2c2c2c2c2c2c2c2c2a26211a120900000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c29251f181007000000000000000000000000000000000000000013202c3946535f6c7986868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867a6d6154473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201307070707070707070707070605040200000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201c1c1c1c1c1c1c1c1c1c1c1b1a19181613110e0a070200000000000000000000000000000000000000000000000000000000000000000000071019212930383e454b50555a5e616466686a6b6b6b6b6a696765625f5b56514c463f383129211910070000000000000000000000000000000000040f1a242e363d434546464646464646464646464646464646464646464646464646464646464646464646464646464646464646433f382f261c110600000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6b6a686664625f5c5854504b453f39322a221a120900000000000000000000101d2936424e59646b6c6c6c6c6c6c6c6c6c675d52473a2e2215090000000004111d2935414d5965707c88949fabafa3988d82766c61574d433a3129211b15100d0a08080708090a0d10151b2129313a434d57626c77838e99a4b0a69b8f84786c6155493d3125190d00000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8174675a4d4134271a0e00000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000131f2c3945525e6b75797b7e81838585786c6054493f3732302e2d2c2c2c2d2f31353b45515e6a7784919daa9d9184776b5e5144382b1e1105000d1925303b464f565a5b5a59585756555453525153606d798693a0a4978a7d7164575051525354555757595a5b5b5851483e33281c100400000000000000000001080f151b2024282b2e2f3030302f2e2b2825201b161009020000000000000000000000000000070c11141515151515151514110d080d11141515151515151514110c0700000000000000000000000000070c11141515151515151514110d0801000000000000000000000000000000000000000000000000000000000000000713202c3945515e6a7783909c9084776b5e5245392c212e3a47535f6c7885919b8e8275695c5043372b1e120500000000000000000000000000000000000000000000000000060e14191d1f2020202020202020201f1e1a150f08000000000000000000000000000000000000000000000000000000010910161a1e1f202020202020201f1d19140d06000000000000000000000000000000000000000000131f2c3946525f6b767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979776c6053473a2d2114070013202c3946535f6c798693a0acaca09386796c5f5346392c201414141414141414141414141312100f0c0a0704000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2828282828282828282828282827262422201d1a17130e0a0500000000000000000000000000000000000000000000000000000000000000071019222b333b424950565c61666a6d7073757677787877777574716e6b67625d57514a433b332b22191006000000000000000000000000000000000008121b242c3236393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937332d261d140a00000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5d5b5a585653504c48443f3a342e272018100800000000000000000000000e1a26313d48525a5f5f5f5f5f5f5f5f5f5f5c554c41362a1e1206000000000814212d3945515d6975818d99a4b0a99e92877b70655a50453b31281f17100904000000000000000001040910171f28313b46505b66717c88949fabaca095897d7165594d4135291d1004000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e74675a4d4134271a0e00000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000111e2a36424e59636a6d6f717476797b75695c5044382d26232120201f202123292f3844515d6a7784909daa9e9285786b5e5145382b1e120500101d2935414d58616768676665636261605f5e5d5c5f6c7986929fa3968a7d70635c5d5e5f606162636465666768635a5045392d2014070000000000000000040b131a20262b3034383a3c3d3d3d3c3a3835312c27211b140d050000000000000000000000020b12181d2022222222222222201d1913181d2022222222222222201d18120b03000000000000000000020b12181d2022222222222222201d19130c0400000000000000000000000000000000000000000000000000000000000004101d2936424f5b6874818d9a93867a6d6154483b2f232b3744505d6976828f9b9185786c5f53463a2d211408000000000000000000000000000000000000000000000000000003080d101213131313131313131313110e0a04000000000000000000000000000000000000000000000000000000000000050a0e11131313131313131312100d080200000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b655b5044382b1f12060013202c3946535f6c798693a0acaca09386796c5f5346392c21212121212121212121212120201f1d1b191613100c0804000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53463935353535353535353535353535353432312f2c2a26231f1a15100b0500000000000000000000000000000000000000000000000000000000061019222b343d454c545b61676d72767a7d808283848585848482807e7b77736e68625c554d453d342b22180e04000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b27221c140b0200000000000a16212c3740484f525353535353535353535353535353535353535353535353535251504f4d4b494643403c38332e29231c150e060000000000000000000000000915202b3640484e52535353535353535353504b433a2f25190e02000000000c1824303d4955616d7986929da9b0a4988d81756a5f54493e33291f160d0500000000000000000000000000050d161f29343f4a55606b77838e9aa6b1a5998e8275695d5145392d201408000013202c3946535f6c798693a0acaca093867971717171717171717171717171717171717171717171717171717171717171717171717171716d63584c3f33261a0d00000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000e1a26323d4851595e606265676a6c6e6c63584d4034281c17191c1f23262a2f343a414a54606c7985929eab9e9184786b5e5145382b1e120500121f2c3845515e697374737271706f6e6d6c6b6a69686b7885929fa296897c6f68696a6b6c6d6e6f7071727374746c6155483c2f23160900000000000000050e161d242b32373c404447494a4a4a494744413d38322c261f170f07000000000000000000020c141c23292d2f2f2f2f2f2f2f2d29241e24292d2f2f2f2f2f2f2f2d29231d150c0300000000000000020c141c23292d2f2f2f2f2f2f2f2d29241e160d040000000000000000000000000000000000000000000000000000000000010e1a2733404c5965717e8a9795897c7064574b3e32252835414e5a6773808c9994877b6e6255493c3023170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b53493f33281c0f030013202c3946535f6c798693a0acaca09386796c5f5346392e2e2e2e2e2e2e2e2e2e2e2e2e2d2c2b2a282523201c18140f0a0500000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346424242424242424242424242424241403f3d3b3936332f2b26211c1610090200000000000000000000000000000000000000000000000000040e18222b343d464f575e656c73787d8286898c8e9091919291908f8d8a87837e79746d665f574f463d342a20160c010000000000000000000000000000000000080f151a1e1f202020202020202020202020202020202020202020202020202020202020202020202020202020202020201e1b17110a0200000000000005101a252e373e434646464646464646464646464646464646464646464646464645454342413f3c3a3734302c27231d17110b0400000000000000000000000000040f1a242e363d4345464646464646464646443f3931281e130800000000020f1b2734404c5965717d8a96a2aeaca094887c7065594e42372c22170d04000000000000000000000000000000040e18222d38434f5b66727e8a96a2aeaa9e9286796d6155493c3024170b000013202c3946535f6c798693a0acaca09386796c65656565656565656565656565656565656565656565656565656565656565656565656565625b52473b2f23170b00000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000a15212b363f474e515356585b5d6062605a51473c30241f2225282b2f33373b40454c535c66717c8895a1a99c9083766a5d5044372a1e11040013202c3946535f6c7981807f7e7d7c7b7a7978777675747885919ea295887c737475777779797b7c7d7e7e80817d7063564a3d3023170a000000000000050e171f272f363d43484c5053555657575553514d49443e3730292119100700000000000000000a141e262e34393b3c3c3c3c3c3b39352f282f35393b3c3c3c3c3c3b39352e271e140a000000000000000a141e262e34393b3c3c3c3c3c3b39352f281f160c0100000000000000000000000000000000000000000000000000000000000b1824303d4956626f7b8894988c7f73665a4d41342826323e4b5764707d8996968a7d7164584c3f33261a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090a0a0a0a0a0a0a0a0a0a080400000000000000000000000000000407090a0a0a0a0a0a0a0a0a0a090703000000000000000a16212c3740484f525353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524f4941372d22170b000013202c3946535f6c798693a0acaca09386796c5f53463a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39383634322f2c2824201b16100a040000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f534f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4d4c4a4845423f3b37322d27211b140d060000000000000000000000000000000000000000000000010b16202a343d464f58606970777e84898e9296999b9c9e9e9e9e9d9b9997938f8a857f78716961584f463c32281d1308000000000000000000000000000000000000040a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313120f0b0600000000000000000009131c252c323739393939393939393939393939393939393939393939393939393837363432302d2b2724201c17120c060000000000000000000000000000000008121b242c32363939393939393939393938342e271f160c010000000005121e2a3743505c6875818d9aa6b2a89c9083776b5f54483c31261b1005000000000000000000000000000000000006111c27323e4a56616d7986929eaaaea296897d7165584c3f33271a0e010013202c3946535f6c798693a0acaca09386796c5f58585858585858585858585858585858585858585858585858585858585858585858585856514940352a1f130700000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000040f1a242d363d424547494c4e515355544f483f352b282b2e3134383b3f43474b50575d656e78828d99a5a6998d8174685b4f4236291c10030013202c3946535f6c79868d8c8b8a8988878685848382818084919ea295887f8181828384858687888a8a8c8c8a7d7063564a3d3023170a0000000000050e172029313941484e54585c606263636362605d59544f49423b332b2219100700000000000006111c26303840454848484848484846413a313940454848484848484845403930261c1106000000000006111c26303840454848484848484846413a31281e130800000000000000000000000000000000000000000000000000000000000815212e3a4753606c788591938e8275695c5043372b232f3c4855616e7a8793938d8074675b4e4235291c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e12151717171717171717171614100b0500000000000000000000050b1014161717171717171717171716130f0a04000000000005101a252e373e4346464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372f261b1106000013202c3946535f6c798693a0acaca09386796c5f5347474747474747474747474747474747464543413e3c3835302c27211c150f0801000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a585754524f4b47423e38322c261f1710080000000000000000000000000000000000000000000008121d27323c454f58616a727a82898f959a9ea2a5a7a5a3a3a2a3a4a6a6a39f9b96908a837b736a61584e443a2f241a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a29272623211e1b1814100b060100000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000000000814212d3a46535f6b7884919da9b0a4988c8073675b4f43372c201409000000000000000000000000000000000000000a16222d3945515d6976828e9ba7b2a5998d8174685b4f4236291d10040013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a463f372e24190e0200000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000008121b242b3135383a3d3f4244464847443e362d3134383b3e4144474b4f53575c62686f77808a949faaa195897d7165594c4033271a0e010013202c3946535f6c7986939897969594939291908f8e8d8c8c95a0a4988e8c8d8e8f909192939495969798968a7d7063564a3d3023170a00000000030d172029323b434b52595f64696c6e7070706f6c6965605a544d453d342b22190f0500000000000b17222d38424a5155555555555555524b433a424b5155555555555555514b42382e23180d01000000000b17222d38424a5155555555555555524b433a2f24190e030000000000000000000000000000000000000000000000000000000006121f2b3744505d69768286868685786c5f5246392c202d3946525f6b778486868683766a5d5144372b1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e2223242424242424242423201c17100800000000000000000810171c20232424242424242424242422201b150e07000000000009131c252c32373939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937332d251d140a00000013202c3946535f6c798693a0acaca09386796c5f54545454545454545454545454545454535351504d4b4845413c38322d27201a120b030000000000000000000013202c3946535f6c798693a0acaca09386796c686868686868686868686868686868686867676563615e5b57534e49443e373029221a12090000000000000000000000000000000000000000030e19242f39434e57616a737c858c949aa0a6a7a29e9b989796969697999ca0a5a7a19b948d857c736a60564b41362b20150a0000000000000000000000000000000000000205080a0b0c0d0d0d0d0c0a09070402000000000000000000000001040607070707070605030100000000000000000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020201f1e1d1c1b191715120f0b080400000000000000000000000000000000000000000000080f151a1e1f2020202020202020201e1c17120b030000000000000a1623303c4955626e7b8794a0acada195887c6f63574b3f33271b0f030000000000000000000000000000000000000005111d2935414d5a66727e8b98a4b0a99c9084776a5e5145382c1f13060013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3a342d251c12070000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000912192025292b2e303335383a3c3b383335393d4144474a4d5054575b5f63686d737a8189929ba6a59a8f84786d6155493d3024180b000013202c3946535f6c798693a0a4a3a2a1a09f9e9d9c9b9a99999ea7aaa09a999a9b9c9d9e9fa0a1a2a3a4a3968a7d7063564a3d3023170a000000000a141f28323b444d555d646b7075787b7d7d7d7b7975716b655e574f463d342b21170c02000000000f1b27333f4a545c616262626262615d554b414a545d616262626262615c544a3f34291e1307000000000f1b27333f4a545c616262626262615d554b41362b20140900000000000000000000000000000000000000000000000000000000030f1c2835414e5a67727979797979766b5f5246392c1f2a36434f5c68747979797979756a5d5144372b1e1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161e252a2e3030303030303030302f2d28221a120900000000000008121a22282c2f303030303030303030302f2c272019100700000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27221b130b0200000013202c3946535f6c798693a0acaca09386796c6161616161616161616161616161616161605f5e5c5a5754514d48433e38322b241d150d0500000000000000000013202c3946535f6c798693a0acaca0938679757575757575757575757575757575757575747372706d6b67635f5a554f49423b342c241b1209000000000000000000000000000000000000000a15202b36404b555f69737c868e969ea5a8a29c96928f8c8a8989898b8d90959aa0a7a69f978e857c72685d52483d31261b0f04000000000000000000000000000002070b0f1214161819191a1a1918171513110e0b0702000000000002060a0e101214141414141311100d0b0804000000000000000000000000000000000000000000050a0e11131313131313131313131313131313131313131313131313131212110f0e0c0a0805020000000000000000000000000000000000000000000000000000040a0e1113131313131313131313120f0b0600000000000000000c1925323e4b5764717d8a96a3afab9e9285796c6054473b2f23160a0000000000000000000000000000000000000000010d1925313e4a56636f7c8895a1aeac9f9386796d6054473b2e2215080013202c3946535f6c798693a0acaca09386796c5f534639323232323232323232323232323232323232323232323232323232323232323232312e29231b130a000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000000080f15191d1f212426292b2d2f33383d4146494d505356595d6064676b6f74787e858b939ba4a59c93897e73685c5045392d201408000013202c3946535f6c798693a09f9e9d9c9b9a999897969594959aa4a79d969495969798999a9b9c9d9e9fa0968a7d7063564a3d3023170a00000006111c26303a444d565f676f767c818588898a8a8885827c77706961584f463d33291e140900000000121e2b3743505b666d6f6f6f6f6f6e675d5247505c666e6f6f6f6f6f6d665c51463a2f24180d01000000121e2b3743505b666d6f6f6f6f6f6e675d52473c31251a0e03000000000000000000000000000000000000000000000000000000000d1926323e4a5661696c6c6c6c6c6b645a4f43372a1e2734404c57626a6c6c6c6c6c6b63594d4135291c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f282f363a3d3d3d3d3d3d3d3d3d3c39332c241b11060000000006111a242c33383c3d3d3d3d3d3d3d3d3d3d3b38322a22190f0400000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201e1b161009010000000013202c3946535f6c798693a0acaca09386796d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c6b696664615d59544f49433d362f271f170e05000000000000000013202c3946535f6c798693a0acaca093878282828282828282828282828282828282828281807e7c7a77736f6b66605a544d453e362d241b1209000000000000000000000000000000000004101b26313c47525d67717b858f98a0a8a69e97908b86827f7d7c7c7d7e8184898f969da6a9a0978e84796f64594e43372c20140900000000000000000000000003090e13171b1e2123242626262626252422201d1a17130e09040002080d12161a1d1f20212121201f1e1c1a1714100b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734404d596673808c99a5b2a89c8f83766a5d5144382b1f13060000000000000000000000000000000000000000000916222e3b4754606d7986939facaea195887c6f6256493d3023170a0013202c3946535f6c798693a0acaca09386796c5f5346392c252525252525252525252525252525252525252525252525252525252525252524221d18110a01000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000000004090d1012151920272e343a3f44494d5256595d606366696c7073777b80848a90969da5a39b938a81776c61564b4034281c1004000013202c3946535f6c798693939291908f8e8d8c8c8b8a898889929fa2968b8788898a8b8c8d8e8f90919293948a7d7063564a3d3023170a0000010d18232d38424c565f68717981878d919496979694928d88827b736a61584f453a30251b0f0400000013202c3946525f6c787b7b7b7b7b796f64594d53606d787b7b7b7b7b786d62574c4035291e120600000013202c3946525f6c787b7b7b7b7b796f64594d42362b1f1408000000000000000000000000000000000000000000000000000000000a16222e39444f575d5f5f5f5f5f5f5a52483e32261a232f3b4650585e5f5f5f5f5f5e5951473c3125190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d27313a41474a4a4a4a4a4a4a4a4a49443e362d23180d010000040e18222c363e44484a4a4a4a4a4a4a4a4a4a48433c342b20160a000000000000050a0e1113131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110f0a0500000000000013202c3946535f6c798693a0acaca093867a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7979777573706d6965605a554e484039312920170e050000000000000013202c3946535f6c798693a0acafa398908f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8e8d8b898683807b76716b655e5750483f372e241b1107000000000000000000000000000000000a15212c37434e59646e79838d97a1aaa59c948c857f7a7673716f6f707174787d848b949da6a9a0968b81756a5f54483d3125190d0100000000000000000001080e141a1f23272a2d2f31323333333332302f2c2a27231f1a150f090c13191e2326292b2d2e2e2e2d2c2b292624201c160f060000000000000000000000000000000000000205080a0c0e0f1010100f0e0d0c0a070401000000000000000000010406080a0a0a0a0a090706040100000000000000000000000000000000000000000003080d10121313131313110e09030000000000000000000000000000000f1c2835424e5b6874818e9aa7b3a69a8d8174675b4e4235291c100300000000000000000000000000000000000000000006131f2c3845525e6b7784919daab0a3978a7d7164584b3e3225180c0013202c3946535f6c798693a0acaca09386796c5f5346392c20181818181818181818181818181818181818181818181818181818181818181715120d070000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000000000000010a131b232b32393f454b5055595e6265696c6f7275797c8083878b90959ba1a59f99918a81786f655b50453a2f23170c00000013202c3946535f6c79868786868484838281807e7e7d7c7b84909da194887b7b7d7d7e808181828384858687887d7063564a3d3023170a000007131e29343f4a545e68717a838b92989da1a3a4a3a19e99938c857c736a60574c42372c21150a000000131f2c3945525e6a75808888888880756a5e53535f6b7681888888887e73685d51463a2e23170b000000131f2c3945525e6a75808888888880756a5e53473c3024180c0000000000000000000000000000000000000000000000000000000006111d28333d454d515353535353524f4840372c21161e29343e464d525353535353524e473f352b2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e39434c525657575757575757575550483f34291e120600010b15202a343e484f5557575757575757575757544e463c32271b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada1948a8787878787878787878787878787878787878786858482807c7975706b666059524b433b322920170e0400000000000013202c3946535f6c798693a0acb4aaa29c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a99989693908c87827d767069615a514940362d23190f050000000000000000000000000000030f1a26323d49545f6a75808b959fa9a69c938a827a746e6a666463626365686c7279828b949fa9a79d92877c7065594d4135291d11050000000000000000040c131a20262b2f33373a3c3e3f4040403f3f3d3b3936332f2b26201b14171e242a2f3336383a3a3a3a3a39373533302d2720181006000000000000000000000000000000050a0e111417191b1c1c1c1c1c1b1a181614110d0905000000000004090d1013151617171716151412100e0b07020000000000000000000000000000000000060e14191d1f202020201f1d1a150e070000000000000000000000000000101d2a3643505d6976838f9ca9b1a5988b7e7265594c4033261a0d0100000000000000000000000000000000000000000004111d2a3643505c6976828f9ca8b2a5988c7f7266594c4033261a0d0013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b090601000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000000000000a131c252d353c434a50565c61656a6e7275787b7e8285888c9093979ca1a59f9a948e8780776f665d53493e34291d120700000013202c3946535f6c787b7b79797877767574737271706f76838f9ca093867a6f70717273747575767778797a7b7b6f6356493d3023160a00000c18242f3a46515b66707a848d959da4a9adafb0b0adaaa59e978e867c72685e53483d32261b0f040000111d2a36424e59646e79848f9592867b6f64584f5a646f7a8590959085796e62574b3f33271b0f030000111d2a36424e59646e79848f9592867b6f64584c4135291d1105000000000000000000000000000000000000000000000000000000000c16212b343b4145464646464646433e372e251a1018222c353c4245464646464645423d362d23190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c28343f4b555d636363636363636363615a51463a2f23160a0009131d27323c46505a616363636363636363636360584e43382c201407000000000000000104060707070707070707070707070707070707070707070707070707070707070706060402000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acb1a69c95949494949494949494949494949494949494949392918f8c8985817c77716b645d554d443b322920160c02000000000013202c3946535f6c798693a0acb9afa8a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a5a6a4a29f9c98938e88827b736c635b52483f352b21160c010000000000000000000000000008141f2b37434e5a65707c87929ca7a89e948a81787069635d5a57565656585c61687079838d98a3aea3988d81756a5e52463a2d21150900000000000000050e161d242b31363b3f4346494a4c4c4d4d4c4b4a4845423f3b36312c261f21292f353b3f42454647474747454442403d38322a22180e03000000000000000000000000060c11161a1e21232627282929292928272523201d1915110c0601040a1015191d1f22232424242322211f1d1a17130d060000000000000000000000000000000710181f25292c2c2c2c2c2c2a262019110800000000000000000000000000111e2b3844515e6a7784919daab0a3978a7d7164574b3e3125180b00000000000000000000000000000000000000000000010f1c2835424e5b6874818e9ba7b3a69a8d8173675a4d4134271b0e0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000000000008121c252e373f474e555b61676c71767a7e8285888b8e9195989ca0a4a8a59b948f89837c756e665d544b41372d22170c01000000121e2b3744505b666e6f6e6d6c6b6a696867666564636875828e9b9f9286796c636465666768696a6b6c6d6d6f6f695f53473b2e2215090005111d2934404c57626d78828c969fa7afb5b9bcbdbcbab6b0a9a0988e857a70655a4e43372c20140800000e1a26313d47525d68737e8995988c8175695d51535d68737e8a95968a7f73675b5044372b1f130700000e1a26313d47525d68737e8995988c8175695d5145392d21140800000000000000000000000000000000000000000000000000000000050f19222930353839393939393937322c251c1309101a232a31363939393939393936322b241b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3844505c676f70707070707070706c62574b3f3226190c06101a252f39434e58626c707070707070707070706a6054483c2f23160a000000000002080d1113141414141414141414141414141414141414141414141414141414141414141312110f0c0906020000000000000000000000000000000000000000000013202c3946535f6c798693a0acb7aea6a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a0a09f9d9b9895918d88827c756e675f564d443b32281e1309000000000013202c3946535f6c798693a0acb2a79d9796969696969696969696969696969696969697989a9da1a5a8a49f99938c857d756d645a51473d33281d1308000000000000000000000000000c1824303c48535f6b76828d98a3aca1978c82786f665e57524d4b49494a4c50565e67717b86929da9a99e92867a6e62564a3d3125180c000000000000060f1720282f363c42474c4f5355575859595959585654524f4b47423d37312a2b333a41464b4f51535454545352504e4c49443c342a20150900000000000000000000030a11171c21262a2d30323435363636363533312f2c2925211d17120c0f151b2125292c2e30303030302f2d2b2927231e18110900000000000000000000000000051019222a303538393939393936312b231a1107000000000000000000000000121f2c3845525f6b7885929eabafa296897c6f6356493d3023170a00000000000000000000000000000000000000000000000e1a2734414d5a6773818d9aa6b3a79b8e8174685b4e4235281b0f0013202c3946535f6c798693a0acaca09386796c5f5346392c201306060606060606060606060606060606060606060606060606060503000000000000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000000006101a242e374049515860666d73787d82868a8e9194979b9ea1a4a8aaacada09489837d77716a635c544b42392f251b1006000000000f1b27333f4a545c616261605f5e5d5c5b5a5959585a6774818d9a9e9184786b5e5758595a5b5c5d5e5f606162625e574d42372b1f1306000915212d3945515d68737e8a949ea8b1b9c0c5c9cac9c6c1bab2aaa0968c81766b6054483c3024180c00000915202b36404b56616d78848f9b9185796d61554c57626d7984909b9084786c6054483b2f23160a00000915202b36404b56616d78848f9b9185796d6155493d3124180c00000000000000000000000000000000000000000000000000000000000710181f25292c2c2c2c2c2c2c2a26211a130a010811192025292c2c2c2c2c2c2c2a26201a1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c787d7d7d7d7d7d7d7d73665a4d4034271a0d0e18222c36414b555f6a747d7d7d7d7d7d7d7d7d7c7064574a3e3124170b00000000060d14191d2020202020202020202020202020202020202020202020202020202020202020201f1d1b1916120e0904000000000000000000000000000000000000000013202c3946535f6c798693a0acb9afa8a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a5a6a9a8a5a19d99948e87807971685f564d433a2f251b10050000000013202c3946535f6c798693a0acada1958b8989898989898989898989898989898989898a8c8e9195999ea4aaa49e978f877f766c63594f443a2f24190e02000000000000000000000004101c2834404c5864707b87939ea9a69b90857a70665d544c46413e3d3c3d40444c555f6a75818d99a09f9e968a7e7266594d4134281b0f0000000000040e182129323941474e53585c5f626465666666666563615e5b57534e48423c35353d454c52575b5e60616161605f5d5b58554e463c31261a0e020000000000000000060e151c22282d3236393c3f41424243434241403e3c3935322d28231d171920272c3135383b3c3d3d3d3d3b3a3836332f2a231b12080000000000000000000000010c17212b343c41454646464645423c352c23180e020000000000000000000000131f2c3946525f6c7986929facafa295887b6f6255493c2f22160900000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685b4f4235281c0f0013202c3946535f6c798693a0acaca09386796c5f5346392c2013131313131313131313131313131313131313131313131313131312100c0701000000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000000020d17222c364049525b636a71787e84898e92969a9ea1a4a19e9b9b9c9d9fa2a0948984807b756f6860574e453c32281d1308000000000b17222e38424b5155555453535151504f4e4d4c4d596673808c999d9084776a5d514b4d4d4e4f50515253545555534d453b31261a0e02000c1825313d4955616d7985909ba6b0bac3cbd1d5d7d5d2ccc4bcb2a89e93887c7065594d4034281c0f0300040f19242f3a45505c67737e8a96968a7d7165594d515c68737f8b9794887c7064574b3f3226190d0000040f19242f3a45505c67737e8a96968a7d7165594d4034271b0f020000000000000000000000000000000000000000000000000000000000060d14191d1f20202020201f1e1a161009010000070e14191d1f20202020201f1d1a150f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79868a8a8a8a8a8a8173675a4d4034271a0d151f2a343e48535d67717c868a8a8a8a8a8a8a82786d6256493d3023170a000000060f181f25292c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2a2825221e1a15100a0400000000000000000000000000000000000013202c3946535f6c798693a0acb2a79d9796969696969696969696969696969696969697989a9c9fa3a7a9a49f99928b837a71685f554c41372c21170b0000000013202c3946535f6c798693a0acaca093867c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d7d7f8285888d9399a0a7a9a19991887e756b61564b40352a1f140800000000000000000002040814202c3845515d6975818c98a4ada1968a7e73695e544b423b3532303030333a434d5964707c8994949392918e8275695c5043372a1e1100000000020c16202a333b444b52595e64686b6e70727373737271706d6b67635f59544d463f3e474f575d63676a6c6d6d6d6d6b6a676560584d42372b1e12060000000000000007101820272d34393e4246494b4d4e4f4f4f4f4e4d4b4845423e39342e2822232b32383d414547494a4a4a49484745423f3b342d241a0f050000000000000000000006121e29333d464d5153535353524e473e352a1f1408000000000000000000000013202c3946535f6c7986929facaea295887b6e6155483b2f22150800000000000000000000000000000000000000000000000d1926333f4c5966727f8c99a6b2a99c8f8275695c4f4236291c0f0013202c3946535f6c798693a0acaca09386796c5f5346392c202020202020202020202020202020202020202020202020202020201f1c18120b040000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000008131e29343e48525b646d747c83898f959a9ea2a4a09c9995928f8e8f909395999b93908c868079726961574e44392f24190e0300000006111c263039404548494847464544434241403f4c5865727e8b989c8f8276695c4f43404142434445454647484946423b33291f140900000f1b2834404d5965727e8a96a1adb7c2ccd5dce2e3e2ded6cec4baafa4998d8175695d5044372b1f1206000008121d28343f4a56626e7a86929a8d8175685c504b57636e7a8793988c8073675a4e4135281c0f03000008131d28343f4a56626e7a86929a8d8175685c5043372a1e110400000000000000000000000000000000000000000000000000000000000002080d1012131313131313110e0a05000000000003090d1112131313131313110e09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693979797978d8173675a4d4034271a121d27313b46505a646f79838d97979797978f857a70665c51463a2e2115080000040f1821293036393a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39383734322e2a26211b150e08000000000000000000000000000000000013202c3946535f6c798693a0acada1958b8989898989898989898989898989898989898a8b8d9093979ca1a7aaa49c958c847a71675d53493e33281d110600000013202c3946535f6c798693a0acaca09386796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f70717275787c82878e959ea6aba39a91877d72685d52473b3025190d02000000000000040a0e11121724303c4855616d7985919da9a89c9085796d62574c4239302a2523232428313c4854606d798688878685848382786b5e5145382b1e120000000009141e28323c454d555d646a6f74787b7d7e8080807f7e7c7a77736f6a655f58514946505961686e7377797a7a7a79787674716a5f53473a2e211408000000000000071019222a31383f454a4e5255585a5b5c5c5c5c5b595755514e4a453f3a332c2d353d43494e515456575757565553514f4b463f362c21160a000000000000000000000a17232f3a454f585e5f5f5f5f5e5950463b3024180c000000000000000000000013202c3946535f6c798693a0acaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f0013202c3946535f6c798693a0acaca09386796c5f5346392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28231d160d0400000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000020e1924303a45505a646d767e878e949ba0a5a19d9894908c89868282828486898d92979c97928b847b736960564b41362b201409000000000a141e272e35393c3c3b3a393837363534333e4b5764717d8a979b8e8275685b4f42353435363738393a3b3c3c3a36302921170d030000111d2a3643505c6975828e9aa6b2bec9d4dee7eef0eee8e0d6ccc1b5a99d9185786c6053473a2d21140800030e19242d363e46515d6976828e9b9184786b5f5246525e6a76838f9b8f8376695d5044372b1e110500030f1a242e373f45515d6976828e9b9184786b5f5245392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a4a49a8d8173675a4d4034271a1a242e39434d58626c76818b959fa4a49c91877d73685e544a3f35291d110500000b16202a333b414547474747474747474747474747474747474747474747474747474747474747464543413e3a36322c262019120a0200000000000000000000000000000013202c3946535f6c798693a0acaca093867c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d7e8183878b90969ca4aca79e968d83796f655a4f44392e23170c00000013202c3946535f6c798693a0acaca09386796c636363636363636363636363636363636466696c71767c848c949da7aca3998f84796e63584d41352a1e12060000000000080f151a1d1f1f2733404c5865717d8995a1ada4988c8074685c51463b30261f1f1f1f1f202c3845515e6a767c7b7a797877767572685c5044372b1e1100000005101b26303a444e575f676f757b8084878a8b8c8d8c8c8b898783807b76706a635b534d58626b737a808386878787868583817b6f6255483c2f2215090000000000061019232b343c434a50555a5e6264666869696968676664615e5a55504b453e37373f474e545a5e60626363636361605e5b5750483d32271b0f030000000000000000000d1a26333f4b5761696c6c6c6c6a62584c4034281b0f0200000000000000000000131f2c3946525f6c7986929facaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000d192633404c596673808c99a6b2a89c8f8275685c4f4236291c0f0013202c3946535f6c798693a0acaca09386796c5f534639393939393939393939393939393939393939393939393939393939393938342f281f160c02000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000007131f2a36414c57616c767f8891989fa6a29c96918c8884807d79767576777a7d81868c939b9d968e857b72675d52473c31251a0e02000000020c151d24292d2f2f2e2d2c2b2a292928303d4a5663707c89969a8d8174675a4d41342728292a2b2c2d2e2f2f2e2a251f170f05000000121f2b3845515e6b7784919daab6c2cedae5f0f9fefaf2e8ddd2c6b9ada194887b6e6255483c2f2216090008141f2b353f484f545a66727e8b9893867a6d615450545a6773808c999185786c5f5246392d201307000814202b36404950555a66727e8b9893867a6d6154473b2e21150800000000000000000000000000000000000000000000000000000000000000000000010305060708080808080706050301000000000000000000000000000000000000000000000000000000000000000000000000000001030506070808080807060402000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a222c36404b555f69747e88929da7a89e948a80756b61574c42382e23180d010005111c27323c454d52535353535353535353535353535353535353535353535353535353535353535352504d4a47423d38322b241c140c03000000000000000000000000000013202c3946535f6c798693a0acaca09386796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f70717274777a7f858b929aa2aba89f958b81766c61564a3f34281c1005000013202c3946535f6c798693a0acaca09386796c5f56565656565656565656565656565657595c60656b7279828b959faaaba0968b8074695e52463a2f23170a000000000a121a21262a2c2c2c37434f5c6874818d99a5aca094877b6f63574b40342c2c2c2c2c2c2c2c2c36424e5a656d6f6e6d6c6b6a69696760574c4034281c0f0000000b17222d37424c566069717980878c90949698999a9999979593908c87827b746d655d545f69737d858b9092949494939190887b6f6255483c2f22150900000000040e18222b353d464d555b61666a6e717375757676757472706d6a66615c565049413f49515960656a6d6f7070706f6e6c6a68625a4f43382b1f13060000000000000000000f1b2835424e5b67737979797974695c5043362a1d100400000000000000000000121f2c3945525f6b7885929fabafa295897c6f6256493c2f23160900000000000000000000000000000000000000000000000d1a2734404d5a6673808d9aa6b3a89b8e8275685b4f4235281c0f0013202c3946535f6c798693a0acaca09386796c5f534646464646464646464646464646464646464646464646464646464646464644403931281e1409000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000b17232f3b47525d68737e88919aa3a79f97918a85807c7874706d6a68696b6d71757b8289929ba0978d84796f64594d42362a1f130700000000030b12181d2022222221201f1e1d1c222f3c4955626f7b8895998c807366594c4033261c1d1d1e1f20212222211e1a140d050000000013202c3946535f6c7986929facb8c5d2deebf7fffffffaeee2d5c9bcafa396897c7063564a3d3023170a000c1824303c47515a606263707c899695887b6f62565b606264707d8a9693877a6d6154473b2e211508000c1825313c47525b616363707c899695887b6f6256493c2f231609000000000000000000000206090a0a0a0a0a0a0a0a0a0a080400000000000307090c0e1011131414151515151413110f0d0a0703000000000000000000000000000000000000000000000000000000000000000003070a0d10121314151515141412110f0c0905010004080a0a0a0a0a0a0a0a0a0a08050000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271f29333e48525c67717b86909aa4aba1968c82786e63594f453a30261c110700000915212d39444e575e606060606060606060606060606060606060606060606060606060606060605f5e5c5a57534e49433c352e261e150c030000000000000000000000000013202c3946535f6c798693a0acaca09386796c636363636363636363636363636363636465686b6e737980889099a3ada79d93887d72675c5044392d211509000013202c3946535f6c798693a0acaca09386796c5f53494949494949494949494949494a4b4d50545960687079838d98a3aea79c91867a6e63574b3f33271a0e02000008121c242c32363839393946525f6b7884909da9a99c9084776b5f53473b39393939393939393939383d48535c61636261605f5e5d5c5a564e453a2f24180c000005111d28333e49545e68727b838b92989ca0a3a5a5a3a2a2a2a29f9c98938d867f776e665d65707b868f969c9fa0a1a0a09e95887b6f6255483c2f221509000000000b16202a343e474f585f666d72777a7d808182838382817f7d7a76726d67615a534b47515b636b7176797c7d7d7d7c7b7977746b6054473b2e2115080000000000000000000f1c2835424f5b687582868684776a5d5044372a1d110400000000000000000000121f2b3845515e6b7884919eabb0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000f1b2835414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e0013202c3946535f6c798693a0acaca09386796c5f5353535353535353535353535353535353535353535353535353535353535353504b433a30251a0e030000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000030f1b2834404c57636f7a858f9aa3a69d958d867f7974706c6864615d5b5c5e61656a70778089939e9f958b80756a5e53473b2f23170a000000000000070d1114161615141312111015212e3b4854616e7a8794988b7e7265584b3f322519101112131415161615120e0902000000000013202c3946535f6c798693a0acb9c6d3dfecf9fffffffdf0e3d6cabdb0a3978a7d7063574a3d3024170a000e1b2834404d58636c6f6f6f7b8894968a7d706359646c6f6f6f7b889595887b6f6255493c2f231609000f1b2834414d59646d6f6f6f7b8794968a7d7063574a3d3124170a000000000000000001080e12151717171717171717171614100b0504080c101316181b1d1e1f20212122222121201e1c1a17130f0b0601000000000000000000000000000000000000000000000000000000060b0f13171a1c1e202121222221201f1d1b1815120d0b10141617171717171717171614110c06000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342727313b45505a646e78838d97a2aca3998f857a70665c51473d33291e140a0000000b1825313d495560696d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c6b6966635f5a544e47403830271e150b0100000000000000000000000013202c3946535f6c798693a0acaca09386796c5f56565656565656565656565656565657595b5e63686e767e87919ba6afa59a8f84786d6155493d3125190d010013202c3946535f6c798693a0acaca09386796c5f53463c3c3c3c3c3c3c3c3c3c3c3c3d3e4044484e565e67717b86919da8aea2978b7f73675b4f43372a1e12050004101a242e363d42454646464855616e7a8793a0aca6998d8174685b4f4646464646464646464646464541414a5155565554535251504f4e4a443c33291e130700000a16222e3944505b65707a848d959da3a8a7a19c999695959596989a9d9e98918981786f656b76828d97a1a7aba39c97939293887b6f6255483c2f22150900000007121d27323c465059616a71787d83878a8c8e8f908f8f8d8c8986827e78736c655d554f59636d757c8286888a8a8a898886837b6f6255483c2f2215090000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000111e2a3744515d6a7784909daab1a4978b7e7165584b3f3225190c0000000000000000000000000000000000000000000003101d2936434f5c6975828f9ba8b3a6998c8073665a4d4034271a0d0013202c3946535f6c798693a0acaca09386796c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c554c42372b1f13070000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000006121f2b3744505c6874808b96a1a99e958b837b746e68645f5c5854514e505155595e656e77818c97a39d92867b6f63574b3f33261a0e01000000000000010507090908070605030714202d3a4753606d798693978a7d7164574a3e3124180b020506070809090806020000000000000013202c3946535f6c7986929facb8c5d1deeaf6fffffff8ede1d5c8bcafa396897c706356493d3023170a00101c2936434f5c69757b7b7b7b8794978b7e71645d69767b7b7b7b889496897c706356493d3023160a00101c2936434f5c69757c7c7c7c8794978b7e7164574b3e3125180b00000000000000040c13191e2223242424242424242423201c17101014181c1f222527292b2c2d2e2e2e2e2e2d2c2b2926231f1b17120c07000000000000000000000000000000000000000000000000060c11161b1f2326292b2c2e2e2e2e2e2d2c2a2825211e19171c2023242424242424242423211d1711090100000013202c3946535f6c798693a0aca79a8d8173675a4d4034272e38434d57616c76808b959fa9a69c91877d73685e544a40352b21170d020000000d1a2633404c5966727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797875736f6a655f59524a423930271d130900000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53494949494949494949494949494a4b4c4f52575d646c757f8a949fababa095897d72665a4e4135291d11040013202c3946535f6c798693a0acaca09386796c5f5346393030303030303030303030303234383d444c555f6a75808c98a3afa79c9084776b5f53463a2d211508000a16212c3640484e52525252525764707d8a96a3afa3978a7e71655852525252525252525252525252514d463f45484948474645444342413e39322a21170c0100030f1b27333e4a56616c77828c969fa7aca39c96908c8a888888898b8e91959a9b938a81776d6f7b87939ea9ada299918b878686887b6f6255483c2f2215090000010d18232e39444e58616b737b83898e9396999b9c9c9c9b9a9896928e8a847e776f675f56606b757f878d9295969796969492887b6f6255483c2f2215090000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000101d2936434f5c6975828f9ba8b2a5998c8073665a4d4034271b0e0200000000000000000000000000000000000000000006121f2b3845515e6a7784909da9b1a4988b7e7265584c3f3226190c0013202c3946535f6c798693a0acaca09386796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c675e53473b2f2216090000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000815212e3a4753606c7884909ca8a2978d83797169635d58534f4c4845424345484d545c65707b87929fa3978c8073675b4f4236291d10040000000000000000000000000000000006131f2c3946525f6c78859296897c6f6356493d3023170a0000000000000000000000000000000000121f2b3845515e6b7784909da9b6c2cedae4eef6f8f6f0e7dcd1c5b9ada094877b6e6255483c2f22160900101c2936434f5c6976838888888b96988b7e71655d6a77848888888c96978a7d7063574a3d3024170a00101c2936434f5c6976838989898c96988b7e7165584b3e3225180b000000000000030d161e252a2e3030303030303030302f2d28221a1c2024282c2f31343637393a3a3b3b3b3b3a393735322f2c27231e18120b040000000000000000000000000000000000000000030a11171d22272b2f323537393a3b3b3b3b3a383634312e2a2522282d2f3030303030303030302d28221b130a00000013202c3946535f6c798693a0aca79a8d8173675a4d40342b36404a555f69737d88929ca7a89e948a80756b61574c42382e24190f05000000000d1a2633404d596673808787878787878787878787878787878787878787878787878787878787878684827f7b76716a635c544b42392f251b1106000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53463c3c3c3c3c3c3c3c3c3c3c3c3d3e4042464b525a636d78838e9aa5b1a69a8e82766a5e5145392c2014070013202c3946535f6c798693a0acaca09386796c5f5346392c232323232323232323232325282c323a434d58646f7b87939facaca093877b6e6256493d3024170a000e1a26323d48525a5e5f5f5f5f5f66737f8c98a5aea195887b6f625f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5850463b3c3c3b3a393938373635322e2820180f05000007131f2b37434f5b67727d89939ea8ada39a928a85807d7b7b7b7c7e8185898f959b93898075727e8b97a3afa79b91877f7a79797b7a6e6255483c2f221509000007121e2935404b55606a737d858d949a9fa3a5a6a2a09f9f9fa0a19e9a958f89817971685f66727d8791999ea2a3a4a09d9c95887b6f6255483c2f2215090000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000f1b2835414e5a6774818d9aa6b3a79b8e8175685c4f43362a1d11050000000000000000000000000000000000000000000915212e3a4753606c7986929fabafa396897d7063574a3e3124180b0013202c3946535f6c798693a0acaca0938679797979797979797979797979797979797979797979797979797979797979797979797063574a3e3124170b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000a1723303d4956626f7b8894a1a99d91867b70675f58514c47433f3c383536393c424a535e6a76838f9ba89c9083776a5e5145382c1f12060000000000000000000000000000000005121e2b3845515e6b77849195887b6f6255483c2f2216090000000000000000000000000000000000101d2a36434f5c6875818e9aa6b2bdc8d3dce4eaeceae5ded5cbc0b5a99d9185786c5f53463a2d21140700101c2936434f5c697683909595969d988c7e72655d6a7784909595979e978a7d7164574a3e3124170b00101c2936434f5c697683909696979e988c7e7265584c3f3225190c0000000000000b151f282f363a3d3d3d3d3d3d3d3d3d3c39332c24272c3034383b3e40424445474748484848474644423f3c38332e29231d160e07000000000000000000000000000000000000050d141c22282e33373b3f4244464748484847464543403d3a36312c33393c3d3d3d3d3d3d3d3d3c39342d251c1207000013202c3946535f6c798693a0aca79a8d8173675a4d4034333d48525c66717b858f9aa4aba1968c82786e63594f453b30261c120800000000000d1a2633404d596673808d949494949494949494949494949494949494949494949494949494949392918e8b87827c756e665d544b41372d22180d020000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393030303030303030303030303133363a4048515c66727d8995a1adaa9e92867a6d6155483c2f23160a0013202c3946535f6c798693a0acaca09386796c5f5346392c2016161616161616161617181b2028313c47535f6b7783909ca9afa3978a7e7165584b3f3226190c00111e2a36434f5a646b6c6c6c6c6c6c75818e9ba7ac9f9386796d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62574c4034302f2e2d2c2b2a292826221d160f060000000a16222f3b47535f6b77838f9aa5b0a59b9188807974706f6e6f707275797e838a919891877d75828e9aa7aea2968a7f756e6c6d6e6f685e52463a2d21140800000b17232f3a46515c67727c868f979fa6aba49e9a96939292929395979b9f9a938b837a71676c77838e99a3aaa9a09994919090887b6f6255483c2f2215090000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000d1a26333f4c5965727e8b98a4b1a99d9084776b5e5245392d2014080000000000000000000000000000000000000000000c1825313d4a56626f7b8894a1adada094877b6e6255483c2f2316090013202c3946535f6c798693a0acada09489868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000b1825313e4b5764717d8a97a3a6998d8175695f554d46403b3733302c292a2c3138424e5a6773808d99a69f9286796d6053473a2d2114070000000000000000000000000000000002111d2a3743505d6a76839094877a6d6154473b2e21150800000000000000000000000000000000000e1b2734404d5965717d8995a1acb6c1cad2d9dedfdedad4ccc3b9aea3988c8175685c5044372b1e120500101c2936434f5c697683909ca2a3a5988c7e72655d6a7784909da2a3a4978a7d7164574a3e3124170b00101c2936434f5c697683909ca3a4a5988c7e7265584c3f3225190c000000000006121d27313a41474a4a4a4a4a4a4a4a4a49443e362d33383c4144484a4d4f51525354545555545352504e4b48443f3a342e272019110800000000000000000000000000000000070f171f262d33393f43484b4e515254545555545352504d4a46423d373e44494a4a4a4a4a4a4a4a49453f372e24190e020013202c3946535f6c798693a0aca79a8d8173675a4d40343b454f59646e78838d97a1aba3998f857a70665c51473d33291e140a0000000000000d1a2633404d596673808d9aa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9d9b97938d8780786f665d53493f34291e13080000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c232323232323232323232324272a2f363f4a55616d7985919daaaea296897d7064574b3e3225180c0013202c3946535f6c798693a0acaca09386796c5f5346392c201309090909090909090a0c0f16202b36424f5b6774818d9aa6b2a6998d8073675a4d4134271b0e00131f2c3946525f6b767979797979797983909ca9aa9e9184797979797979797979797979797979797974685c5044382c2221201f1e1d1c1b1916110b04000000000c1925323e4b57636f7c8894a0abaa9f94897f766e68646261626365696d72787f868e978f847984909da9aa9e9286796d635f6062635e564c41362a1e12050004101c2834404b57626d78838e98a1a9aaa19a938e8a8785858586888b8e93989d958c83796f707c8894a0ababa1978e88848383857b6f6255483c2f2215090000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000b1824313e4a5763707c8995a2aeac9f93877a6e6155493d3024180c010000000000000000000000000000000000000005111d2935414d5966727e8b97a3b0aa9e9185786c5f53463a2d2114070013202c3946535f6c798693a0acb0a59b949393939393939393939393939393939393939393939393939393939393939393938b7e7164574b3e3124180b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000b1825323e4b5865717e8b98a5a4978a7e7165584d433b35302b2723201c1f242b333f4c5966727f8c99a6a194877b6e6154483b2e2215080000000000000000000000000000000003111e2a3744515d6a77849094877b6e6155483b2e22150800000000000000000000000000000000000c1824313d4955616d79848f9aa5afb8c0c8ced1d2d1cec9c2bab1a79d92877b7064584c4034281b0f0300101c2936434f5c697683909ca9afa5988c7e72655d6a7784909daaafa4978a7d7164574a3e3124170b00101c2936434f5c697683909ca9b0a5988c7e7265584c3f3225190c00000000000b17232e39434c525657575757575757575550483f373e44484d515457595c5d5f606161616161605f5d5b5854504b454039322b231a11080000000000000000000000000000071019212931383f454a4f54575b5d5f6061616161605e5c5956524d4842485055575757575757575755504940352a1f13070013202c3946535f6c798693a0aca79a8d8173675a4d4038424d57616b75808a949fa9a69c91877d73695e544a40352b21170d020000000000000d1a2633404d596673808d9aa6adadaba6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a6a8aaa7a39e98918a81786f655b50463b3024190d0200000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2016161616161616161617181a1e242e3944505d6975828e9ba7b1a5988c7f7266594d4033271a0d0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000040e1a26333f4c5965727e8b98a5b1a89b8e8275685b4f4235291c0f0013202c3946525f6c788486868686868687929eabaa9e92878686868686868686868686868686868685786c6054483c2f231713121110100f0d0a060000000000000f1b2834414d5a6673808c98a4b0a59a8e82776d645c5855555557595d61676d747c858e968b8085919eaba89b8f8276695d53535556534d443b3025190e02000714202c3844505c68737f8a95a0aaaba1988f88827d7a7978797a7c7e82878c9299958b817773808c98a4b0a59a8f857d78767678786e6155483b2f2215080000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000916222f3b4854616d7a86929fabafa2968a7d7165594d4135291d1206000000000000000000000000000000000000000a16212d3945515d6975828e9aa6b3a79b8f8276695d5044372b1e12050013202c3946535f6c798693a0acb7ada5a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988b7e7164574b3e3124180b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000b1825323e4b5865717e8b98a4a4978a7d7063574a3d312a241f1b1f23272b30363d454f5b6774818d9aa6a295887b6e6155483b2e2215080000000000000000000000000000000005121f2b3845525e6b78849195887c6f6255493c2f23160900000000000000000000000000000000000815212d3945505c68737e89939da6aeb6bdc2c5c5c5c2beb7b0a89e958b80756a5f53483c3024180c0000101c2936434f5c697683909ca9aca5988c7e72655d6a7784909daaaca4978a7d7164574a3e3124170b00101c2936434f5c697683909ca9aca5988c7e7265584c3f3225190c00000000000f1c28343f4b555d636363636363636363615a514640484f54595d606366686a6b6d6d6e6e6e6e6d6b6a6764605c57514b443c352c231a1108000000000000000000000000060f19222b333b424950565b6064676a6c6d6e6e6e6d6c6b6966625e59544e515a616363636363636363615b51473b3024170b0013202c3946535f6c798693a0aca79a8d8173675a4d40404a545e69737d87929ca6a89e948a80756b61574c42382e24190f05000000000000000d1a2633404d596673808d9aa6afaba19a98989898989898989898989898989898989898989898999b9ea3a8aaa39c938a81776d62574c41352a1e130700000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201309090909090909090a0b0e121c2834414d5a6673808c99a5b2a79a8e8174675b4e4135281b0f0013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000b1824313e4a5764717d8a97a4b0a99c8f8276695c4f4336291c1000111e2b37434f5c6874808c92929292929399a3aeaea3999392929292929292929292929292929292887c7064584b3f33271b0f0604010000000000000000000000111d2a3643505c6975828f9ba8aea295897d71665b524c4948484a4d51565c636a727b858e918788939faca69a8d8174675a4e47494947423b32291e140800000a1723303c4854606c7884909ba7afa4998f867d76716e6c6b6c6d6f72767b81878e9693897e75828f9ba8ada195897d736b696a6c6d665d5145392d2014070000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000713202c3945515e6a77838f9ca8b2a6998d8175695d51453a2e23180d02000000000000000000000000000000000006111c27323e4a55616d7985929eaab0a4988b7f73665a4e4135281c0f030013202c3946535f6c798693a0acb9b1aaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4988b7e7164574b3e3124180b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000b1824313e4a5764707d8a96a3a4978b7e7165584c40352e2926282b2f33373c41474e57616c7783909ca8a194877b6e6154483b2e221508000000000000000000000000000000000613202c3946535f6c79869296897d7063574a3d3024170a000000000000000000000000000000000004101c2834404b56616c77818b949da4acb1b5b8b9b8b6b2aca69e958c83796f64594e42372b1f14080000101c2936434f5c697683909ca0a0a0988c7e72655d6a7784909da0a0a0978a7d7164574a3e3124170b00101c2936434f5c697683909ca0a0a0988c7e7265584c3f3225190c0000000000121e2b3844505c676f70707070707070706c62574b48525a6065696d7072757778797a7b7b7b7b7a787673706c67625c554e463e352c2319100500000000000000000000040e18212b343d454d545b61676c707376787a7b7b7b7a797775726e6a655f5957626c70707070707070706d63584c4033271a0e0013202c3946535f6c798693a0aca79a8d8173675a4d4047515c66707a858f99a3aba1968c82786e63594f453b30261c120800000000000000000d1a2633404d596673808d969da5a5998f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8f92979da4aca59d93897e74695d52463b2f23170b00000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000020c1925323e4b5864717e8b97a4b1a89c8f8275695c4f4236291c100013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000a1724303d4a5763707d8a97a4b0a99c908376695c4f4336291c10000f1b27333f4c5864707c89959f9f9f9fa0a4abb5b4aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f988c8074685b4f43372b1f120600000000000000000000000000121f2b3845515e6b7784919daaab9f9286796d615549403c3b3c3d40454a51586069737c879193949aa4b0a6998c807366594c403c3d3b36302920170d0200000d1a26333f4b5864707c8995a1aca99e92887d746c65615f5f5f6063666a70767c848c9590867b84909daaaa9d9185786c615d5d5f605c544b4035291d11050000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000004101d2936424e5b6773808c98a4b0a99d9185796e62564b3f34291e140a01000000000000000000000000000000040e18222d38434f5a66727d8a96a2aeaca094887c6f63574a3e3225190d000013202c3946535f6c798693a0acb3a89f9a9999999999999999999999999999999999999999999999999999999999999999988b7e7164574b3e3124180b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000916232f3c4855616e7a87939fa6998d8174685c51473f39353334373b3f43474c52596069737d8994a0ab9f9286796c6053473a2d21140700000000000004080a0c0c0b0a0908070714212d3a4754606d7a8693978a7d7164574b3e3125180b0708090a0b0c0c0b080500000000000000000c17232f3a45505b656f78828b939aa0a5a9abacaba9a6a19b948c847a71675d52473d31261a0f030000101c2936434f5c6976839093939393938c7e72655d6a77849093939393938a7d7164574a3e3124170b00101c2936434f5c6976839093939393938c7e7265584c3f3225190c000000000013202c3946535f6c787d7d7d7d7d7d7d7d73665a4d4e59646c7175797c7f818385868788888887868583807c78736d67605850473e352b21170d020000000000000000010b16202a333d464f575f666c72787c80838587888888878684827e7a76706a635c67737d7d7d7d7d7d7d7d74685b4e4135281b0f0013202c3946535f6c798693a0aca79a8d8173675a4d454f59636e78828c97a1aba3998f857a70665c52473d33291f140a0000000000000000000d1a2633404d5966737e858c939ba4978a807e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e8082868c929aa2aba59b90857a6e63574b4034281c0f03000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000a1724313d4a5763707d8a97a4b0a99c908376695c4f4336291c100013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000b1824313e4a5764717d8a97a4b0a99c908376695c4f4336291c10000b1723303c4854606c798591989898989ba2abb6ada39b98989898989898989898989898989898989084786b5f53473b2e22160900000000000000000000000000131f2c3946525f6c7985929fabaa9d9084776a5e5145382f2e2f3134393f464e57616a75808a95a0a5acb2a6998c7f7265594c3f32302e2b251f170e050000000f1c2835424e5b6773808c99a5b1a5988d81766b625a5553525254565a5f646b727a838c958c8185929eaba89b8e8275695c50505353504a42392f24180d010000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000010d1a26323f4b57636f7c8894a0acaea2968a7e73675c51463b30261c130a0300000000000000000000000000050d16202a343f4a55606b77838e9aa6b2a89c9084786c5f53473b2f22160a000013202c3946535f6c798693a0acaea2978e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b7e7164574b3e3124180b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000714202d3946525e6a76838e9aa59c9085796e6359514a45413f4044474b4f53585d646a727b858f9aa5a79b8f83766a5e5145382b1f120600000000030a0f1417191918171615141315222e3b4855616e7b8894988b7e7265594c3f32261913141516161718181715110b0500000000000007121d28333e49535d66707881888f95999d9f9f9f9d9a959089827a71685f554b41362b201509000000101c2936434f5c697683868686868686867e72655d6a7784868686868686867d7164574a3e3124170b00101c2936434f5c697683868686868686867e7265584c3f3225190c000000000013202c3946535f6c79868a8a8a8a8a8a8173675a4d515d6a767d8185898c8e909293949495959493918f8c88847e78726a625950473d33291e1308000000000000000007121d27323c454f58616970777e83888c8f92939495949493918e8b86817b756e666875828a8a8a8a8a8a8174675a4e4134281b0e0013202c3946535f6c798693a0aca79a8d8173675a524c56616b75808a949ea8a69c91877d73695e544a40362b21170d020000000000000000000c1925323e4b57636d737a8189929b9b918b837b7371717171717171717171717171717171717173767a81889099a3aca2968b8074685c5044382c1f1307000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000a1724303d4a5763707d8a97a4b0a99c908376695c4f4336291c100013202c3946535f6c798693a0acaca09386796c5f5346392c201306010101010101010204070f1a26333f4c5865727e8b98a4b1a89c8f8275695c4f4236291c0f000713202c3844505c6975818c8c8c8c8c909aa6b2a79c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c887b6f63574a3e3125180b0000000000000000000000000013202c3946535f6c798693a0acaa9d908376695d5043362a222225282e353c454f59636e79848f9ba7b2b2a6998c7f7265594c3f3226221f1a140d0500000000111e2a3743505d6976838f9ca8ada195887c7065595049464546474a4e535960687079838d938a8b94a0ada69a8d8073675a4d444647443f3930271d1207000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000a16232f3b47535f6b77848f9ba7b2a69b8f84786d62574c42382e251c150e0804000000000000000001050a10171f28323c46505b66717c88939fabafa3978c8074685b4f43372b1f1306000013202c3946535f6c798693a0acaca093867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7164574b3e3124180b0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000005111d2a36424e5a66727d89949ea1968a80756b635c56514e4c4d5053575b5f64696f757c858d97a1aba0968a7e72665a4e4235291c1003000000050d151b202425252424232221201f232f3c4956626f7c8895998c807366594d4033271e1f2021222324252524211c170f080000000000010c17222d37414b545e666f767d84898d90929392908e8a857e7870685f564d43392f241a0f04000000101c2936424f5c687479797979797979797970645c69747979797979797979796f63574a3d3124170a00101c2936424f5c68747979797979797979797064584b3e3225180c000000000013202c3946535f6c798693979797978d8173675a4d515e6b77848d9195989b9d9ea0a0a1a2a1a1a09e9c9894908a847c746b62594f453b30251a0e03000000000000030e19242f39434e57616a737b82898f94989c9ea0a1a2a1a09f9d9a97928d8780786f6976838f979797978d8073665a4d4033271a0d0013202c3946535f6c798693a0aca79a8d81746c645c545e68727d87919ca6a89e948a80756b61574c42382e24190f05000000000000000000000a16222f3a46515b62686f778089929b9c958d857b726864646464646464646464646464646465666a6f767e87919ca7a89c9084786c6054483b2f23160a000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000001040c1825323e4b5764717d8a97a4b1a99c8f8276695c4f4336291c100013202c3946535f6c798693a0acaca09386796c5f5346392c20130d0d0d0d0d0d0e0e0f101318202b37434f5b6774818d99a6b3a79a8d8174675b4e4135281b0f0003101c2834404c5965717d7e7e7e7e7e8a97a4b0a5988c7f7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7265584b3f3225180c0000000000000000000000000013202c3946535f6c798693a0acaa9d908376695d5043372a1d16181d232b333d47515c67737e8a96a2aeb2a6998c7f7265594c3f322619120e09020000000000121f2b3845525e6b7884919eaaab9e9285796c6054483e3938393b3e42484f565e67717b859096969ca6b1a6998c7f7266594c3f393a38342e271e150b01000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000007131f2b37434f5b67737f8b96a2adaca0958a7e73695e544a40372e261f1914100c0a09080708090b0d11151b2229313a444e58626d77838e99a4b0a99e92877b6f63574b3f33271b0f03000013202c3946535f6c798693a0acaca0938679727272727272727272727272727272727272727272727272727272727272727272726c6155493d3023170a0000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000010e1a26323e4a55616c77828c96a09c91877e756d67615d5a58595c6063676b70757a80878e969fa9a3998f84796d62564a3e3226190d010000040e171f262c30323231302f2e2d2c2b2b303d4a5763707d8a969a8d8174675b4e41342a2b2c2d2e2f30313232312d2821191107000000000006101b252f39424c545d656c72787d818485868584817d79736d665e564d443b31271d1308000000000e1b2733404c57626a6c6c6c6c6c6c6c6c6c685f58626a6c6c6c6c6c6c6c6c6c675e53473b2e221609000e1b2733404c57626a6c6c6c6c6c6c6c6c6c685f54483c3023170a000000000013202c3946535f6c798693a0a4a49a8d8173675a4d515e6b7885929da1a4a7a5a3a1a09f9e9e9fa1a3a7a5a09b958e867e756b61574c41362b20140800000000000009141f2a35404b555f69737c858d949aa0a4a8a6a29f9d9c9c9c9d9ea19e98918a81786f7784909da4a4998c807366594c403326190d0013202c3946535f6c798693a0aca89b90877e766e665e66707a848f99a3aba1978c82786e63594f453b30261c1208000000000000000000000006121e2a353f4951575e656d76808a949e9f978d84796f645957575757575757575757575757585a5e646c75808a96a1ada195887c7064574b3e3225190c000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0b0b0c0c0e10141c2834404d5966727f8c98a5b2a89b8e8275685b4f4235291c0f0013202c3946535f6c798693a0acaca09386796c5f5346392c201a1a1a1a1a1a1a1a1a1b1d1f232a323c47535f6b7783909ca8b1a5988c7f7266594d4033271a0d00000c1824303d4955616b72727272727d8a97a4b0a4988b7e727272727272727272727272727272727272726c62564a3d3124180b00000000000000000000000000131f2c3946525f6c7885929fabaa9d9184776b5e5245392c231f1c1b1a212b35404b56626e7986929eaab2a6998c7f7265594c3f3226190c020000000000000013202c3946525f6c7986929facaa9d9084776a5d5144382d2c2c2e32373d444c555f69737e89949fa7aeb2a6998c7f7265594c3f322d2b28231c150c0300000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000030f1b27333f4b57626e7a85919ca7b1a69b90857a70665c52494038312a25201c19171515141516171a1d21262c333b434c565f6a747e89949faaafa4988d82766a5e53473b2f23170b00000013202c3946535f6c798693a0acaca09386796c656565656565656565656565656565656565656565656565656565656565656565625a5045392d2114080000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000a16212d3944505b66707a858e979f9990877f78726d6a676566696c6f73777b81868b9299a0a8a29a91877d72685c51453a2e22160a0000010c16202931373c3f3f3e3d3c3b3a393837363e4b5864717e8a979b8e8275685b4f42363738393a3b3c3d3e3f3f3d39332b23190f04000000000009131d27303a424b535a61676d7175777879797775716d68625b544c443b32291f150b01000000000b17232f3b4650585e5f5f5f5f5f5f5f5f5f5d5650595e5f5f5f5f5f5f5f5f5f5c554c41362b1f1206000b17232f3b4650585e5f5f5f5f5f5f5f5f5f5d564d42372c201407000000000013202c3946535f6c798693a0aca79a8d8173675a4d515e6b7885929ea29f9b999694939292929294979ba0a6a6a09890877d73695e53473c3125190d0100000000030e1a25303c47525d67717b858e979ea5aba6a09b9693918f8f8f909294989c9c938a81777784919eaba6998c7f7265594c3f3226190c0013202c3946535f6c798693a0acaca2989088807870686d77828c96a0aba3998f857a70665c52473d33291f140a000000000000000000000000020d18232d373f464c535b646e78828d98a39f968b81766b5f544b4b4b4b4b4b4b4b4b4b4b4b4b4e535a636e7984909ca5a4988c8073665a4d4134281b0f000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20181818181818181819191a1d20262e3944505c6975828e9aa7b2a6998d8073675a4d4134271b0e0013202c3946535f6c798693a0acaca09386796c5f5346392c2727272727272727272728292c2f343c444e5964707b87939facaea295897c7063574a3e3125180c00030e18222d39444f596165656565717e8b98a4b0a4978a7d71656565656565656565656565656565656565625a50453a2e21150900000000000000000000000000121e2b3845515e6b7784919daaac9f93867a6d6155493e352f2b29272626252e3a45515d6975828e9aa7b2a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0acaa9d908376695d5043362a1f2022262b323a434d57616c77838e9aa5b1b2a6998c7f7265594c3f32261f1c17120b030000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000b17222e3a46525d6974808b96a1acaca1978c82786e645b524a433c36302c28252322212121222426292d32383e454d565e68717b86909ba5b0a89d92877c7065594e42362a1f130700000013202c3946535f6c798693a0acaca09386796c5f59595959595959595959595959595959595959595959595959595959595959595650483e33281d11050000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000005111c28333e49545e69737c858e959c99918a837e797673727275787c8083888c91979da3a7a09890887f756b61564b4034291d1106000007121d28323b43484b4c4b4a49484746454443424c5965727e8c989c8f8376695d504343444546474748494a4b4b49443d352b21160b0000000000010b151e283039414950565c6165686a6c6c6c6a6865615c57514a423a322920170d04000000000007131e29343e464d52535353535353535353514b474e52535353535353535353504b433a30251a0e020007131e29343e464d52535353535353535353514b443b31261b0f03000000000013202c3946535f6c798693a0aca79a8d8173675a4d525f6b7885929a96928f8c8a888685858586888b8f959ca3aaa2998f857a6f64594d41362a1e12050000000008131f2b36424d58636e79838d97a0a9aca39c958f8a86848282828385888c90969c93897e7885929eaba5988c7e7265584c3f3225190c0013202c3946535f6c798693a0acb3aaa29a928a827a71757f89949ea8a69c91877d73695e544a40362b21170d030000000000000000000000000007111b242d343a4149525c66707b86929da79d92877c7065594e423e3e3e3e3e3e3e3e3e3e3f4248525c6874808c989997968f8275695c5043362a1d11000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c252525252525252525252627292c3138404a55616d7985919daab0a3978a7e7165584c3f3226190d0013202c3946535f6c798693a0acaca09386796c5f53463934343434343434343434343536383b40464e56606a75818c98a4b0aa9e9286796d6154483b2f2216090008141f2a343d454b4f5658585865727e8b98a5b0a4978a7d706358585858585858585858585858585858585650483e34291d110500000000000000000000000000101d2a3643505c6975828e9ba7aea295897d71655a5047403b3836343332323235414d5966727e8b98a4b1a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c7986939facaa9d9083766a5d5044372a1e15151a2128313b45505b66727d8995a1adb2a6998c7f7265594c3f322619100c0600000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000006121e2935414c57636e79858f9aa5afa89e948a80766d645c544d47413c383532302f2e2e2e2f303336393e434950575f68707a838d98a2acaca2978c81766b5f54483d31251a0e0200000013202c3946535f6c798693a0acaca09386796c5f534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a453e362c22170c000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000000b17222d38424d57606a737b848b91979b958f8a8682807e7e8185888c9094989da2a7a29c958e877e766d63594f443a2f23180c0100000c18232f3a444d5458585756555553535251504f4e5a6673808c999d9084776a5d514e4f50515253545556575858554f473d32271c10040000000000030c161e272f373e454b5055595c5e5f5f5f5e5c5955514b453f38302820170e05000000000000020d18222c353c424546464646464646464644403c424546464646464646464644403931281e13080000020d18222c353c424546464646464646464644403a32291f140a00000000000013202c3946535f6c798693a0aca79a8d8173675a4d525f6b7885928e8a8683807d7b79787878797b7e848a919aa3aba1978c8175695e52463a2e221509000000000c1824303c47535e6975808b959fa9aca39a918a847e7a7776757576787b80858b929a90867a86929faca5988c7e7265584c3f3225190c0013202c3946535f6c798693a0acb9b4aca49c948c847b7c87919ba5a89e948a80756b61574d42382e24190f0500000000000000000000000000000009121b23293037404a545f6a75818c98a4a4998d82766a5e52463a3131313131313131313236404b57636f7c888d8c8b898884776b5e5145382b1e12000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232333436393d4249525c67727d8995a1adaca094877b6f6256493d3024170b0013202c3946535f6c798693a0acaca09386796c5f5346404040404040404040404041414345484c51585f68727c87929da9b0a5998d8275695d5145382c201307000d1925303c464f575b5b5b5b5b65717e8b98a4b0a4978a7d70635b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a554d453e362c22170c01000000000000000000000000000f1b2834414d5a66727f8b97a3afa5998e82776c6259514b47444241403f3f3e3e3e4a5763707d8996a3afa6998c7f7265594c3f3226190c0000000000000000121f2c3945525f6b7885929eabaa9e9184786b5f5246392e26221f1e1c1f29343e4a55616d7885919da9b2a6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000010d1924303b46525d68737e89939ea8b0a69c928980766e665f58524d4844413f3d3b3b3a3b3c3d3f4245494e545a6169717a838c959fa9afa59a90857a6f64594e43372c2015090000000013202c3946535f6c798693a0acaca09386796c5f53463f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3a342c241a1005000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000005101b26303b454e58616a727980868b90949a96928f8d8b8b8e9194989ca0a4a4a09b96918a847c756c645b51473d33281d12070000000f1c2834404b565f646564636261605f5e5d5c5b5b5b6774818e9a9e9185786b5f5a5b5c5d5e5f6061626364656561594f44382c201407000000000000040c151d252c333a3f44494c4f51525352514f4d4945403a342d261e160e05000000000000000006101a232a313639393939393939393939383431363939393939393939393938342e271f160c0200000006101a232a31363939393939393939393938342f2820170d0300000000000013202c3946535f6c798693a0aca79a8d8173675a4d525f6b788586827d7a7673716e6d6c6b6b6c6f73788088919ca6a89d92867a6e62564a3e3125180c00000004101d2935404c58646f7b86919ca7afa49a91888078726e6b6968696a6c6f7479808891978c8186929faca5988b7e7165584b3f3225180c0013202c3946535f6c798693a0acb3aaa3a1a39e958d85848e98a3aba1978c82786e63594f453b30261c120800000000000000000000000000000000000911181e252e38424d5964707c8894a0aa9e92877b6f63564a3e322524242424242424252f3b4753606c798281807e7d7b7a756a5e5144382b1e12000000000000000013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3e3e3f3f404245494e545b646e78838f9aa6b1a89c9084786b5f53463a2e2115080013202c3946535f6c798693a0acaca09386796c5f534d4d4d4d4d4d4d4d4d4d4d4d4d4e4f5154585c6269717a848e99a3aeaa9f94897d7165594d4135291c100400101d2935414d5861676868686868717e8a97a4b0a4978a7d7068686868686868686868686868686868665f564a3f33271b100600000000000000000000000000000c1925313e4a57636f7b87939faaaa9f93887e746b635c5754514f4e4d4c4c4b4b4b4a55626f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000111e2b3844515e6a7784909da9aca093877a6e62564a4037322e2c2a2928282d3944505c6875818d9aa6b2a6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000008131e2a35404c57616c77818c96a0a9aea49b92898078716a635e5854504d4b4948484748484a4c4e51555a5f656c737b838c959ea7b0a69d93897e74695e53483d32261b0f040000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232323232323232323232323232323232323232312e29221a120800000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000000000a141f29333d464f5760676e757a808488929e9e9b9998989a9da1a4a3a09c98948f8a857f79726a635a52493f352b21160c01000000121e2b3844505c68707271706f6e6d6c6b6a696867666875828e9b9f9286796c666768696a6b6c6d6e6f6f7071726b6054483c2f23160900000000000000030b131b22282e34383d4043444646464543403d39342f29231c140d04000000000000000000000811192025292c2c2c2c2c2c2c2c2c2c2b28262a2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000000000811192025292c2c2c2c2c2c2c2c2c2c2b28241d160e050000000000000013202c3946535f6c798693a0aca79a8d8173675a4d525f6c79807a76716d6a676462605f5e5e6062676d76808a95a0aca3978b7e7266594d4134281b0f0200000814212d3945515d6974808c97a3aea89d93887e766e67625e5c5b5c5d6063686f767e889192888994a0aca5988b7e7165584b3e3225180b0013202c3946535f6c798693a0acaca19894979f9f978f8e96a0aaa3998f857a70665c52473d33291f140a00000000000000000000000000000000000000060d141c26313c4854606c7884919da9a3978b7f73665a4e4135291c1818181818181f2b3844515d697375747371706e6d6b63594e4235291d10000000000000000013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4b4b4b4b4c4c4d4f5155595f656d76808a95a0abaea2978b8073675b4f43372b1e12050013202c3946535f6c798693a0acaca09386796c5f5a5a5a5a5a5a5a5a5a5a5a5a5a5a5b5c5e6064686d747b848c96a0aaada3998e83776c6055493d3125190d0000121f2c3845515e69737575757575757d8a97a4b0a4978a7e757575757575757575757575757575757571675b4f43372b1e120600000000000000000000000000000916222e3a47535f6b76828e99a4aea59a90867d756e6863605d5c5a5959585858575757626f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000101d2936424f5c6875818e9aa6afa3968a7e72675c5249423e3b38373635353534404c5965727e8b97a4b1a6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000020d19242f3a45505b65707a848e97a1aaada49b928a827b756e6964605d5a5856555454545556585b5e61666b70777e858d959ea7b0a79e948b81776c62574c42372b20150a000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2626262626262626262626262626262626262626262626262626262624221d1710080000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000000030e18232d37414a535b636a71777d8287929eaba8a6a5a4a3a09d9a9793908c88837e79746e676059514840372d23190f0500000000131f2c3946525f6c797e7d7d7b7b7a79787776757473727683909ca093877a7273747575777778797a7b7c7d7e7d7063574a3d3024170a0000000000000000010910171d23282c30343638393939383634312d28231e18110a02000000000000000000000000070e14191d1f2020202020202020201f1c1a1d1f2020202020202020201f1c17120b0400000000000000070e14191d1f2020202020202020201f1c18120c04000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d515e6a74756f6a65615e5a58555352515253565c646e7884909ca8a79a8e8275695c5043362a1d110400000c1824313d4955616d7985919da8aea2978c81766d645c5652504f4f5153575d646c76808a9593949ba5b0a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca89b8f878d97a0a19b9a9fa8a69c92877d73695e544a40362b21170d030000000000000000000000000000000000000000020a14202b3743505c6875818e9aa7a79b8f82766a5d5144382b1f120b0b0b0b101c2935414d586168696766656362605e5951473d3125190d000000000000000013202c3946535f6c798693a0acaca09386796c5f5858585858585858585858585858595a5b5e61656a70778089929ca6b1a79c91867a6f63574b3f33271b0f020013202c3946535f6c798693a0acaca09386796c67676767676767676767676767676767696a6d7074797f868d969ea8aea59b91877c71665b4f44382c201509000013202c3946535f6c79828282828282828a97a4b0a5988c828282828282828282828282828282828282776b5f53473a2e22160a000000000000000000000000000006121e2a36424e5a66717c87929ca6aca2988f878079746f6c6a68676665656565646464636f7b8895a2afa6998c7f7265594c3f3226190c00000000000000000e1b2734404d5965727e8a96a2aea69a8f83786e645b544e4a4745444342424141414a5663707c8996a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000007131e29343e49535e68727c858f98a0a9ada49c948d86807a75706c6966646362616161626365676a6e72767c82888f979fa7afa69e958c83796f655a50463b30251a0f04000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201919191919191919191919191919191919191919191919191919191815110c06000000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000000009141f2a353f49535c656d757c83898e9299a3a9a5a19d9a9794918e8a8784807c77736e68635c564e473f362e241b12080000000000131f2c3946525f6c79868a89888786868584838281807e7e84909da194887d7e80818282838485868788898a8a7d7063574a3d3024170a00000000000000000000050c12171c202427292b2c2c2c2b2a2724211d18120d0600000000000000000000000000000003090d111213131313131313131312100e1113131313131313131313120f0c070000000000000000000003090d111213131313131313131312100c070100000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4d58626869635e5955514e4b4947454545474a525c6773808c98a5aa9d9184776b5e5145382b1f120500030f1b2834404d5965717d8a96a2ada99d91867a6f655b524a4543424244474c525a646e78838e9aa0a5adb2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d81858e98a1a8a7aba89e948a80756b61574d42382e241a0f0500000000000000000000000000000000000000000000030f1b2734404d5966727f8c98a5ab9e9285796c6053463a2d2114070404040d1925303b464f575b5c5b5958565554524e483f362b201509000000000000000013202c3946535f6c798693a0acaca09386796c6565656565656565656565656565656566686a6d71767b8289929ba4aeaaa0958b8075695e52473b2f23170b000013202c3946535f6c798693a0acaca093867973737373737373737373737373737374747577797c80858a90979fa8ada59c938980756b60554a3e33271c10040000121f2b3844515d6975818d8f8f8f8f8f929ba7b3a89d938f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877b6f63574a3e32261a0e0200000000000000000000000000020e1a26323d4954606b76808a949da6aaa199918a84807c79777574737272717171717170707b8895a2afa6998c7f7265594c3f3226190c00000000000000000c1824313d4a56626e7a86929ea9aba0958a80766d655f5a565452504f4f4e4e4e4d4d55626f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000010c17222d37424c56606a737c868e979fa7aea69f98918b86817c797673716f6e6e6d6e6f707174767a7e82878d939aa1a9aca59d948c837a70675d53493e34291e140900000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b09050100000000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000000040f1b26313c46515b656e777f878e94999ea3a29d9995918e8a8784817e7b7774706b67625d57514b443d352d241b1209000000000000131f2c3946525f6c798692969594939291908f8e8e8c8c8b8b949fa3978d8a8b8c8d8e8f90919293949596978a7d7063574a3d3024170a000000000000000000000001060b1014181b1d1e1f201f1e1d1b1815110c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4650575c5c58524d4945423f3c3a3938383a404b5764707d8996a3ac9f9286796c5f5346392c2013060005121e2b3743505c6975818d9aa6b1a5998d8175695e53494039363536373b4148525c67727d8994a0acb6b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d817c868f99a2abaea2978c82786e64594f453b30261c120800000000000000000000000000000000000000000002080c0f1825313e4b5764717d8a97a3ada194877b6e6155483c2f22161111111111141f2a343d454b4f4f4e4d4b4a484745423d362d24190f04000000000000000013202c3946535f6c798693a0acaca09386797171717171717171717171717171717272737577797d81878d949ba4adaaa1988e84796e63584d41362a1e1207000013202c3946535f6c798693a0acaca09386818181818181818181818181818181818181828486898c90969ba2a9aaa39b938a81776d63594e43382d22160b000000101c2834414d5965717d8a969c9c9c9c9ea4adb8aea59e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978b7f73675a4e42362a1e120500000000000000000000000000000a15212d38434e59646e78828b949ba2a9a39c96908c8885838281807f7e7e7e7e7d7d7d7d7d8895a2afa6998c7f7265594c3f3226190c00000000000000000915212d3a46525e6a75818c97a2aca69c91887f77706a6663605e5d5c5b5b5b5b5a5a5a626f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000006101b25303a444e58616a737c858d959da4aba9a39c97918d898582807d7c7b7a7a7b7b7c7e8083868a8e93999ea5aca8a29a938b837a71685e554b41372d22180d0200000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b08040000000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000000914202c37424d58636d76808991989fa5a29c96918d8985827e7b7875726e6b67645f5b56514c464039322b231b120900000000000000131f2c3946525f6c7986929fa2a1a09f9e9d9c9b9a999897979da6a99f989798999a9b9c9d9e9fa0a1a2a2978a7d7063574a3d3024170a000000000000000000000000000004080b0e101213131312100e0c0805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40464c4f504d47423d393532302e2c2b2c2f3c4955626f7b8895a2ada09386796d6053463a2d201307000814212d3a46535f6c7885919da9ada195897c7064584d41372e2a28292b2f36404a55606c7884909ca8b4b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d81737d879099a3ac9f92867a70675e544b42392f261d140a0100000000000000000000000000000000000000070e14181b1d23303d4956636f7c8996a2afa296897c706356493d30231d1d1d1d1d1d1d1d222b343a3f424341403e3d3c3a3936322b241b120800000000000000000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7f80818386898d92989ea5ada8a0988f867c72675d52473c3025190e02000013202c3946535f6c798693a0acaea2978f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e8e8f909295989ca1a7aaa49f98918981786f655c51473d32271c11050000000c1824313d4955616d7a86929b9b9b9b9ca1a9b3b1a79f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8f83776a5e52463a2e211509040302010000000000000000000004101b27323d48525c667079828a91979da2a6a19c989592908e8d8c8c8c8b8b8b8a8a8a8a8a8d97a3b0a6998c7f7265594c3f3226190c000000000000000005111d2935414d5964707b86909ba4ada39a9189827b76726f6d6b6a6968686767676767666f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000009141e28323c464f58616a737b838b9299a0a6aba8a29d9995918f8c8a898887878888898b8d8f92969a9fa4aaa9a49d979089817970685f564c43392f251b10060000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a191814100a03000000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c20130600000000000000000000010d1925313d48545f6a747f89929ba3a69e97908a85817c7975726f6b6865625f5b57534f4b46403b352e28201d1a161009010000000000131f2c3946525f6c7986929fa1a09f9e9d9c9b9a99989796969ca5a89e97969798999a9b9c9d9e9fa0a1a2978a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403b404343403c36312d292623211f1f28313d4956636f7c8995a2ada09386796d6053463a2d201307000a1723303c4955626e7b8794a0adaa9e9185796c6054483c30251d1c1c1f242e3944505b6773808c98a4b0b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173747e87919aa4a1968c827970665d544b41382f261c130a0000000000000000000000000000000000000811181f24282a2a2f3c4955626f7b8895a2afa4978a7d7164574a3e312a2a2a2a2a2a2a2a2a2a2a292f333636353332302f2e2c2a26211a12090000000000000000000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8d8e909295999ea3a9aba59e968e867d746a60564b40352a1f140800000013202c3946535f6c798693a0acb4a9a09b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9b9d9fa1a4a8a6a29e99938d867f776f665d534a40352b20150a000000000814212d3945515d6a76828e8e8e8e8e8f97a2aeaba0958f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e877a6e62564a3d31241811100f0e0d0c090400000000000000000a15212b36404b545e6770787f868c91969a9ea1a3a19f9d9b9a9998989898989797979696989fa9b2a6998c7f7265594c3f3226190c0000000000000000010d1925313c48535e69747e89929ba3aba39b938d87827e7c797876757575747474737373737b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000020c16202a343d464f586169717981888e949aa0a5a9a9a5a19e9b99979695949494959697999c9fa2a6aba7a39e98928c857e776f675e564d443a31271d1309000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2626262626262626262626262626262626262626262626262626262626262624201b150d050000000000000713202d3a4653606d798693a0adaca09386796c5f5346392c2013060000000000000000000005111d2935414d5965707b86919ba4a59c948c857f7975706c6965625f5c5956524f4b47433f3a3532302f2d2c2a26211b130b0200000000131f2c3946525f6c7986929695949292908f8e8d8c8b8a898a939fa3978c898a8b8c8d8e8f909192939495968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403434363634302a25211d1a171a2129313a434e5965727e8a97a4ac9f9286796c5f5346392c201306000c1925323e4b5864717d8a96a3afa89b8f8276695d5044382c20140f10131c27333f4b57636f7c8894a1adb2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d81736c757f88929ba59e948b82786f665d534a41382e251c12090000000000000000000000000000000007111a232a30343637373c4855626f7b8895a2afa4978b7e7164574b3e37373737373737373737373736322d2929282725242221201e1a150f08000000000000000000000013202c3946535f6c798693a0acb3a89f99989898989898989898989898989898989898999b9c9fa2a5aaa9a49f9a938c857c746b62584e44392f24190e0300000013202c3946535f6c798693a0acb9b1aaa6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4a4a3a19f9d9a96928d88827b746d655d544b41382e24190f040000000004111d2935414d5a66727e828282828285929eaba99c8f838282828282828282828282828282828282827e7265584b3f32251f1e1d1c1b1a1815100a03000000000000040f1a242f39424c555e666d747b81868a8e919496989a9b9c9d9e9e9e9e9e9f9f9f9fa0a0a1a7afb2a6998c7f7265594c3f3226190c0000000000000000000814202b37424d58626d7680899199a0a6a59e98938e8b8886848382828281818181818080808895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000000040e18222b343d464f575f676f767d83898f94999da1a4a8aaa8a5a4a2a1a1a1a1a2a2a4a6a8a9a6a3a09c97928d87817a746c655d554c443b32281f150b01000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393333333333333333333333333333333333333333333333333333333333333333302c261f170e0400000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000814202d3945525e6a76818d98a2a79d938a827a746e6964605d595653504d4a46433f3e424342403f3d3b3a3836322c251d140a00000000131f2c3946525f6c79868a898887868584838281807e7d7d84919ea295887c7d7e808181828484868688888a8a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403427292928241f191511171e252c333b434c555f6a76828e9aa6a99d9084776b5e5145382b1f1205000e1a2734404d596673808c99a5b2a5998c8073665a4d4135281c1003030b17232f3b4753606c7985929eabb2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173676d768089939ca69d948b81786f655c534a40372e241b12090000000000000000000000000000030e19232c353b40434444444855626f7b8895a2afa4988b7e7164574b44444444444444444444444444423e3831281e1a1817161413110e0a0400000000000000000000000013202c3946535f6c798693a0acacaca9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a9a8a6a4a19d99948e88827a736a625950463c32281d12080000000013202c3946535f6c798693a0acb3a89f999898989898989898989898989898989898989897969492908d8a86827c77716a635b534b42392f261c12070000000000010d1925313d4a56626d74757575757783909da9aa9d9084777575757575757575757575757575757575746e63574a3e312d2c2b2a29282725211b150d0400000000000008121d27303a434c545c63696f757a7e8285888a8c8d8f90909191919292929292939393959da7b2a6998c7f7265594c3f3226190c000000000000000000030f1a25313b46515b656e7780878e959a9fa4a39f9b97959391908f8f8e8e8e8e8d8d8d8c8c8f99a4b0a6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000061019222b343d454d555d646b72787e83888d9195989b9ea0a1a3a4a5a5a5a5a5a4a2a19f9d9a9793908b86817b766f69625a534b433a322920160d0300000000000000000013202c3946535f6c798693a0acaca09386796c5f534640404040404040404040404040404040404040404040404040404040404040403f3d38312920160b00000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000a1723303c4955616e7a86929ea9a1968b81787069635d5854504d4a4643403d3a3a42494e4f4e4d4b4a484745423e372f261c1106000000131f2c3946525f6c787e7d7c7b7a7978777675747372717885929ea295897c7171737375767778797a7b7c7d7e7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271d1d1b18140e141b22292f363d454d555e67717c87929eaaa69a8e8175685c4f43362a1d1004000f1c2835424e5b6874818e9aa7b0a4978a7d7164584b3f3226190c000006131f2b3844505d6976838f9ca8b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d817367646e77818a949da69d938a81776e655c524940372d241b1108000000000000000000000000000915202b353e464c505050505055626f7b8895a2afa4988b7e71645750505050505050505050505050504f4a433a30251a0f0a0908060402000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9e9d9c9a9794918d88837d777068615850473e342a20160b010000000013202c3946535f6c798693a0acaea2968d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b8b8a89888684817d7a75716b655f585149413930271d140a000000000000000915212d3a45515b63686868686875828e9ba7ab9f9285796c6868686868686868686868686868686868645c52463b3a39383736353433312c261f160d030000000000010b151e28313a424a51585e64696e7275787b7d7f8182838484848485858586868686868b96a3afa6998c7f7265594c3f3226190c0000000000000000000009141f2a343f49535c656d757d848a8f93979b9ea0a2a19f9e9d9c9b9b9b9a9a9a9a9a99999aa1aab2a6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000000000071019222b333c434b525a60676d72777c8185898c8f9193959697989898989897969492908e8b87837f7a76706a645e5750494139312820170e040000000000000000000013202c3946535f6c798693a0acaca09386796c5f534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c49433b32271d1206000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000c1825323e4b5764717d8a96a2a79b8f84796f665e57514c4844413d3a37343137424c545a5c5b5958565553524f4941382d23170c000000121e2b3744505c677071706f6e6d6c6b6a69686766656c7885929fa396897c6f65666768696a6b6c6d6e6f7071726b6054483c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a100f0c0f171e262d343a41484f575f677079838d98a4ada2968a7e7165594d4034271b0e0200101d2a3643505d6976838f9ca9afa295897c6f6356493d3023170a0000030f1c2835424e5b6774818d9aa6b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675c656f78828b949ea59c938a80776d645b52493f362d231a11080000000000000000000000000e1a26313c4750585c5d5d5d5d5d626f7b8895a2afa4988b7e71645d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b554c42372b2014070000000000000000000000000000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393939292918f8d8b8885817c77726c655e574f463e352c22180e04000000000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7c7b797774716e6a65605a544e473f372f271e150b020000000000000005111d29343f4952585b5b5b5b66737f8c98a5ada194887b6e625b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b59524a474847464544434241403d3831281f150b000000000006101921292f33383f464d53585d6266696c6e717274757677777778787878797979797b8895a2afa6998c7f7265594c3f3226190c00000000000000000000030d18232d37414a535b646b72787e83878b8f91949697999a9a9b9b9b9c9c9c9c9c9d9d9d9fa4adb2a6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000000000000071019212a323941484f555b61676c7075797c80828586888a8b8b8c8c8c8b8a89888684817e7b77736f6a655f59534c463e372f271f160e05000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5959595959595959595959595959595959595959595959595959595959595959595959544d43392e23170b000000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000d1a2633404c5966727f8c99a5a4988b7f73685d544c46413c3834312e2a27313d48545e66696866656361605e5a534a3f34281c100400000f1c2834404b565e646564636261605f5e5d5b5a595f6c7986929fa3968a7d7063595a5b5c5d5e5f60616263646561594f44382c2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d071018212830373e454c535a61697179828b959faaa79c9185796d6155493d3124180c0000111e2b3744515e6a7784909daaaea194887b6e6155483b2f2215090000000d1a2633404c5965727e8c98a5b1a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a5d666f79838c959fa59c928980766d645b51483f352c231a10070000000000000000000000111d2a36424e5962696a6a6a6a6a6a6f7b8895a2afa4988b7e716a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a665e53483c3023170b0000000000000000000000000000000000000013202c3946535f6c79868686868686868686868686868686868686868686868686868686858482817e7b7875706b66605a534c453d342c231a100600000000000013202c3946535f6c798693a0acaca093867972727272727272727272727272727272727171706e6d6a6865625d59544f49433c352d251d150c030000000000000000010c18232d3740474c4e4e4e5764707d8996a2afa3968a7d7165584e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4c4a50545554535251504f4e4d49433a31271c1105000000030e18222b333a3f42434445474d5156595d5f6264666769696a6b6b6b6b6b6b6c6c6c6f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000006111b252f384149525960676d72777b7f828587898b8c8d8e8e8e8e8f8f8f8f90909090939ba6b2a6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000070f1820272f363d444a50565b6065696c707376787a7b7d7e7e7e7f7e7e7d7c7b797775726f6b67635e59544e48423b342d251d150d0400000000000000000000000013202c3946535f6c798693a0acaca09386796c6666666666666666666666666666666666666666666666666666666666666666666666655f554b3f33271b0e020000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000d1a2633404d596673808d9aa6a295897c6f63574b423b35302c282627282c34404c59657076747371706e6c6b655b5045392c20130700000c18232f39444d54585857565554535251504f4e53606d798693a0a4978a7d7164574d4e4f515153545556575858554f473d32271c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d1019222a323a424950575d646b737a838b949da7aba1968b8074695d5145392d2115080000121f2c3845525e6b7885929eabada093867a6d6053473a2d2114070000000b1825313e4b5764717d8a97a4b0a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a545d67707a838d96a0a49b92897f766d635a51473e352c2219100700000000000000000000131f2c3945525e6a74777777777777777b8895a2afa4988b7e77777777777777777777777777777777777064584c3f3226190c00000000000000000000000000000000000000131f2c3946525f6b7679797979797979797979797979797979797979797979797979797978777674726f6c6864605b554f49423a332b221a11070000000000000013202c3946535f6c798693a0acaca09386796c6565656565656565656565656565656565646362605e5c5955514d48433e38312a231b130b030000000000000000000006111b252e363c4042424855616e7a86939faca6998d8174685c4f434242424242424242424242424249535c6161605f5e5d5d5b5b59544c43392d22160a00000008141f2a343d454b4e4f5152535455565757535557595b5c5d5d5e5e5e5e5f5f5f5f626f7b8895a2afa6998c7f7265594c3f3226190c00000000000000000000000009131d262f3840484f565c61666b6f7376787a7c7e7f808181828282828283838383848996a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000000000000000060e161d242c32393f454a4f54585c606466696b6d6f7071727272727171706e6d6b6865625f5b57524d48423d373029221b130b030000000000000000000000000013202c3946535f6c798693a0acaca093867973737373737373737373737373737373737373737373737373737373737373737373737371675c4f43362a1d11040000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000d1a2633404d596673808c99a6a295887b6f6255493e3936343332323335383d45505c68758181807e7c7b79776d6154483b2e221508000007121d28323b42484b4b4a49484746454443424754616d7a8794a0a4988b7e7164584b42434445464748494a4b4b49443d352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0f19222b343c444c545b62686f767d858c959da6ada3998f84796e63584c4035291d11050000131f2c3946525f6c7986929facac9f9286796c5f5346392d2013060000000a1723303d4a5663707c8996a3afa5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d555e68717b848e97a1a49b91887e756c635950473e342b22190f0600000000000000000013202c3946535f6c7984848484848484848996a2afa5988c8484848484848484848484848484848484807366594c403326190d00000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a69676563605c58544f4a443e37302921191008000000000000000013202c3946535f6c798693a0acaca09386796c5f5858585858585858585858585858585857565553514f4c4945413d38322d262019110a0200000000000000000000000009131c242b3033353945525e6a7783909ca8a99c9084786b5f53473c3535353535353535353537434f5b656d6e6d6c6b6a696867655e554a3e32261a0d0000010d1925303c464f575b5c5d5e6061626364635d544b4d4e4f50515151515152525255626f7c8995a2afa5988c7e7265594c3f3226190c000000000000000000000008121b242b3135383d444a50565b5f6366696c6e7071727374747575757575767676767b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000000000000000000040b131a21272e34393f44484c5054575e6364646464646565656565646362605e5c5956534f4b46423d37312b251e18100901000000000000000000000000000013202c3946535f6c798693a0acaca0938680808080808080808080808080808080808080808080808080808080808080808080808080776b5e5144382b1e11050000000713202d3a4653606d798693a0adaca09386796c5f5346392c201306000000000000000000000c1926323f4c5865727e8b98a4a3968a7d716559504a454241403f3f404244484e57616d78848e8c8b8987867a6e6155483b2f2215080000010c16202931373c3e3f3e3d3c3a393837363b4854616e7b8894a1a5988b7e7265584c3f363738393a3b3c3d3e3f3d39332b23190f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a17212b343d464e565e656c737a81888f969ea7aca49b91877d73685d52473b3024180c00000013202c3946535f6c7986939facac9f9285786c5f5246392c1f13060000000916232f3c4955626f7c8895a2afa5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4c565f69727c858f98a2a39a91877e756b625950463d342b21180f06000000000000000013202c3946535f6c798690909090909090939ba6b2a89d94909090909090909090909090909090908c807366594c403326190d000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5c5b595653504c48433e39332c251e170f0700000000000000000013202c3946535f6c798693a0acaca09386796c5f534c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4b4a48474543403d3935312c27211b150e070000000000000000000000000000010a12191f24272a36424f5b6773808c98a4aca094887c7064584c41362b282828282828282d3946525f6b777b7a79787776757470665b4e4235291c10000004101d2935414d586167696a6b6c6d6f70716f665b4f43414243444444454545454a5763707d8996a3b0a5988b7e7265584c3f3225190c00000000000000000000040f1a242d363d4244464748494a4f53575a5d5f6163656667676868686869696969696f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000000000000000000001080f161c22282e33383c4044505c676f71717171716e6760585857565553514f4d4a46433f3b36312c26201a140d060000000000000000000000000000000013202c3946535f6c798693a0acaea2978e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d84776b5e5144382b1e11050000000713202d3a4653606d798693a0a7a7a09386796c5f5346392c201306000000000000000000000b1824313e4a5763707c8995a1a5998d81766b625b55524f4d4c4c4c4d4e5054596069737e89959997968f83776b5f5246392d201407000000040e171f262b30323231302f2e2d2c2b2f3b4855626e7b8895a2a5998c7f7265594c3f332a2b2c2d2e2f313232312d282119110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a1f29333d464f58606870777e858b9299a1a8aba39a92897f756b61564b40352a1f130700000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f12050000000915222f3c4855626f7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d444d57606a737c869099a2a39990877e746b62584f463d332a21180e050000000000000013202c3946535f6c7986939d9d9d9d9d9d9fa4adb7afa69f9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d998c807366594c403326190d000000000000000000000000000000000000000a16212c3740484f525353535353535353535353535353535353535353535353535353535251504e4c4a4744403c37332d27211b140d050000000000000000000013202c3946535f6c798693a0acaca09386796c5f53463f3f3f3f3f3f3f3f3f3f3f3f3f3e3e3d3c3a383633302d2925201b16100a030000000000000000000000000000000000080e13181a26333f4b5764707c8894a0aca4988c8074695d52473d332b262322222428323d4955626e7a878786858483828176695d5043362a1d10000006121f2c3845515e6973757778797a7b7c7d786b5e52453936363738383838383f4c5865727e8b97a4b0a4978a7d7164574b3e3125180b000000000000000000000a15212b363f474e51525355565758595a595553555658595a5b5b5b5b5b5c5c5c5c626f7b8895a2afa6998c7f7265594c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000040b11171d22272c303945525f6c787d7d7d7d7d79726a635c544d48474543403d3a37332f2a25201b150f0902000000000000000000000000000000000013202c3946535f6c798693a0acb3a9a09a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9184776b5e5144382b1e11050000000713202d3a4653606d7986939a9a9a9a9386796c5f5346392c201306000000000000000000000916222f3b4854616d7985919da99e92887d746c66615e5c5a595959595b5d60656b727b858f9aa5a2968b7f73675b4f43362a1e110500000000050d141b2023252524232221201f222f3c4955626f7c8895a2a6998c807366594d4033261f2021222324252524211c170f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271c26313b454f58616a727a828990969da4aba8a199918980766d63594f453a2f24190e0200000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f12050000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d40454e58616a747d87909aa3a29990877d746a61584f453c332a20170e0500000000000013202c3946535f6c7986939a9a9a9a9a9a9ca2abb6ada49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a998c807366594c403326190d0000000000000000000000000000000000000005101a252e373e434646464646464646464646464646464646464646464646464646464645444342403d3a3734302c27221c16100902000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232323231302f2e2c2a2724211d1914100a05000000000000000000000000000000000000000003080b17232f3b47535f6c78848f9ba7a99d91857a6f64594f453d3632302e2f30333a444e5a65717e8a93929190908d8174675b4f4235291c1000000613202c3946535f6c7982848586878889867a6d6155483d34312f2f2f303238434f5b6874818d9aa6aea295897c6f63564a3d3023170a000000000000000000020e1a26323d4851595e5f606162636566676660564b4a4b4c4d4e4e4e4f4f4f4f4f56626f7c8996a2afa5988c7e7265584c3f3226190c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000060c11161b202c3946525f6c79848a8a8a8a837c756d665f575049413a34312e2a27231e19140f09040000000000000000000000000000000000000013202c3946535f6c798693a0acacacaba7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69e9184776b5e5144382b1e11050000000713202d3a4653606d79868d8d8d8d8d8d86796c5f5346392c201306000000000000000000000713202c3845515d6975818c97a2a4998f867e77726e6a68676665656667696c70767c848d97a1a59b90857a6e62574b3f33271a0e02000000000003090f1417181817161514131623303c4956636f7c8996a2a69a8d8173675a4d4034271a131415161718181715110b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403427222d38434d57616a737c848c939aa1a8aca49d968f877f766d645b51473d33281e13080000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f12050000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d403c464f58626b757e88919ba4a2998f867c736a61574e453c322920170d04000000000013202c3946535f6c79868e8e8e8e8e8e8e9099a5b1a79b928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8c807366594c403326190d000000000000000000000000000000000000000009131c252c3237393939393939393939393939393939393939393939393939393939393938363533312e2b2824201b16110b050000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c252525252525252525252525242422211f1d1b1814110d090400000000000000000000000000000000000000000000000007131f2b37434f5b67737e8a96a1ada2978b80756b61574f48423e3c3b3b3d3f444c55606b76828e9a9f9e9d95897d7164584c3f33261a0d000005121f2b3844515d6a76838f9192949596897d7165594e45403e3c3c3c3c3f434a55606c7884909ca9ac9f93867a6d6154483b2f22150900000000000000000004111e2a36424e59636a6c6d6e6f7071737471685c50443e4040414242424242424a5764707d8a96a3b0a5988b7e7265584b3f3225180c000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000060b121e2b3844515d68727b848e97958e877f787069625b534c453d362f272019120e090400000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09e9184776b5e5144382b1e11050000000b15202d3a4653606d798181818181818181796c5f5346392c2013060000000000000000000004101c2835414d5864707b86919ba4a1989089837e7a777573737272737476797c81878e969fa69d93897e74685d52463a2e22160a000000000000000003070a0c0c0b0a09080a1724303d4a5763707d8a96a3a79a8e8174675a4e4134281b0e0708090a0b0c0b08050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342728333f4a545f69737c858e969ea5aca8a19a938c847d756d645b52493f362b21170c010000000013202c3946525f6c7986929facac9f9285796c5f5246392c1f13060000000915222f3c4855626f7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d40343d475059636c768089929ca5a1988f857c736960574e443b32291f160d030000000013202c3946535f6c7981818181818181818995a2afa4988b8181818181818181818181818181818181807366594c403326190d0000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b2a282624221f1b18140f0a0500000000000000000000000000000013202c3946535f6c798693a0a0a0a09386796c5f5346392c2019191919191919191919181817161413100e0b0805010000000000000000000000000000000000000000000000000000030f1b27333f4b56626e7985909ca7a89d92877d73696159534e4b494848494c50565e67717c87939eaaa89d9185796d6155483c3024170b000003101c2935424e5b6773808c989fa0a1998d81766b6057514d4a494848494b4f545c66717c8894a0aca89c9083776b5e5245392c20130700000000000000000006131f2c3945525e6b7578797b7c7d7e7f81786b5f5246393334343535353536404d5965727e8b98a4b0a3978a7d7164574b3e3124180b000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000101c2834404c566069727b858e9798918a827b746c655e564f484039322a231c140b0100000000000000000000000000000000000000000013202c3946535f6c79869393939393939393939393939393939393939393939393939393939393939393939393939393939393939184776b5e5144382b1e1105000007121d27313a45515e6972737373737373737372695d5145382c1f120600000000000000000000000c1824303c48535e69747e89929ba3a29a948e8a86848280807f7f80818385898d9299a0a49c948b81776d62574c41352a1e120600000000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034272e3945505b66707b858e97a0a8ada59e968f88817a736b635b524940372d241a0f050000000000121f2c3845525f6b7885929eabac9f9386796c5f5346392d2013060000000916232f3c4956626f7c8995a2afa5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034343e47515a646d77808a939da6a1978e857b726960564d443b31281f150c01000000121f2c3845515d6972747474747474747b8895a2afa4988b7e74747474747474747474747474747474746e63574b3e3225190c000000000000000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020201f1e1d1c1a1815120f0c0803000000000000000000000000000000000013202c3946535f6c798693939393939386796c5f5346392c20130c0c0c0c0c0c0c0c0c0b0b0a0908060401000000000000000000000000000000000000000000000000000000000000000b17222e3a46515d68747f8a95a0aba3998f857b736b645f5a5756555556585c61687079838e99a4aea3978c8175695d5145392c2014080000000d1a26323f4b57636f7b88939faaaa9e92877c7269625c595756555556585b5f666e78838e99a5afa3978c8073675b4f42362a1d11040000000000000000000613202c3946525f6c78858687898a8b8c877a6e6255493e373432323233353a45505c6875818e9aa7aea195887c6f6256493d3023170a000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000c18242f3a444e576069737c858e979b948d857e776f686159524b443c352e261d130900000000000000000000000000000000000000000013202c3946535f6c79868686868686868686868686868686868686868686868686868686868686868686868686868686868686868684776b5e5144382b1e110500000c17232e39434c5357606667676767676767676660574c4135291c1004000000000000000000000008141f2b37424d58626d76808991989fa59f9a9693908e8d8c8c8c8c8d8f9295999ea4a099928a82796f655b50463b2f24190d0100000000000000000000000000000000000b1825313e4b5764717e8b98a4a89b8f8275685b4f4235291c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403427323e4a56616c77828d97a0a9aba39b938c857d766f686159514940372e251b1208000000000000121e2b3845515e6b7784919eaaada093877a6d6054473a2e2114070000000a1724303d4a5763707d8a96a3b0a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d40342c353f48525b656e78818b949da7a0978e847b72685f564d433a31271e1308000000101d2935414c5760666767676767676f7b8895a2afa4988b7e7167676767676767676767676767676767645c52473b2f23160a0000000000000000000000000000000000000000000000050a0e11131313131313131313131313131313131313131313131313131313131212100f0d0b090603000000000000000000000000000000000000000013202c3946535f6c798686868686868686796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404c57636e79848e99a3aba0978e857d756f6a67646261616365686c727a828b959faaa79c91867b6f64584c4034281c10040000000a16232f3b47535f6b77838e99a4aea4998e847b736d6966646262626264676b7178818a949faaa89d92877b6f63574b3f33261a0e0200000000000000000005111e2b3744505d6976828f94959698968a7e72665b504843403f3e3e3f41454c56616d7985919da9ab9f9286796d6054473b2e221508000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000007131e28323c454e57616a737c858f989e979089817a736b645d554e473f382f251a0f040000000000000000000000000000000000000000131f2c3946525f6b76797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979756a5d5144372b1e110400000f1c2834404b555e636464646464625c5a5a5a59554e453b3024190d000000000000000000000000030f1a25313c46515b656e777f878d94999da1a29f9d9b9a999999999a9c9ea1a29e9a948e88817870675d53493f34291e13070000000000000000000000000000000000000c1825323f4b5865727e8b98a0a09c8f8275695c4f4336291c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342a36434f5b66727e89949ea9aba2999189817a736c655e564f473f372e251c130900000000000000111d2a3744505d6a7683909ca9aea194887b6e6155483b2f2215090000000c1825323e4b5864717e8b97a4b1a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034272d364049535c666f78828b959ea8a0968d847a71685f554c43392f25190e0200000d1924303b454e565a5a5a5a5a5a626f7b8895a2afa4988b7e71645a5a5a5a5a5a5a5a5a5a5a5a5a5a5a58524a40352a1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6b767979797979797979766b5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b46515c67727c87919ba4a9a0978f87817b7673706f6e6e6f7174787d848c949da7a99f958b80756a5e53473c3024180c0000000007131f2b37434f5a66717d88929da6aaa0968d857e797572706f6f6f6f7173777c828a939ca6aba1978c81756a5e53473b2f23170a00000000000000000000020f1c2835414d5a66737f8b97a2a3a49a8e82776c6259534f4d4c4b4b4c4e51575e68727e8995a1ada79b8f83766a5e5145382c1f1306000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000010c17202a333c454e57616a737c868f98a19a938c847d766e676058514a41372c2115090000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b63594d4135291c10030000121f2b3844505c676f71717171716e676058514d4a443c33291e160f0800000000000000000000000009141f2a353f49535c656d757c82888d9195989a9c9e9f9fa0a09f9e9d9b9996928e89837d766e665e554b42382d23180d020000000000000000000000000000000000000c1926323f4c5965727f8c93939393908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342d3a46525f6b77838f9aa5aca29990877f777068615a534c453d352d251c130a0100000000000000101c2936424f5c6875828e9ba8afa296897c6f63564a3d3024170a0000010e1a2734404d5966737f8c99a5b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d403427242e37414a545d667079838c969fa19f968d837a71675e554b41362a1f1306000008131f29333c444a4d4d4d4d4d55626f7b8895a2afa4988b7e7164574d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4740382e24190e020000000000000000000000000000000000000000000104060708090a0a0a090806040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a4f43372a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a35404b56606b757f89929ba4a9a099928c8783807d7c7b7b7c7d8184898f969ea6a8a0978d83796e63584d42362b1f130800000000030f1b26323e4955606b76818b949da6a89f978f8a85817e7d7c7b7b7c7d8083888d949ca5aaa2998f857a6f64594e42362a1f130700000000000000000000000d1925323e4a56636f7b87929ea9ab9f94897e746b645f5c5a585858595a5d6268707a848f9aa6ada2968b7e73665a4e4235291d1004000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000050e18212a333c464f58616a747d868f99a29d968f888079726a635c53483d3126190d01000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5951473c3125190d00000013202c3946535f6c797d7d7d7d7d79716a635b544d453e372f28211a120b0400000000000000000000030e18232d37414a535b636a71777c8185898b8e9091929293939291908e8c8986827d78726b645d544c433930261b1106000000000000000000000000000000000000000d1a2633404c5966738086868686868684776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034303c4955626e7b87939faba59a90877d756d655e574f48413a332b231b130a0100000000000000000e1b2834414e5a6773808d99a6b0a4978b7e7165584b3f3226190d000004111d2a36424f5b6874818e9aa7b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271c252f38424b545e67717a848d94949494948c837970675d53473b2f2216090000020d17212a32393e404141414855626f7b8895a2afa4988b7e7164574b414141414141414141414141413f3c362f261c12080000000000000000000000000000000000000000050a0e1012141516161717161513110e0a0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18232e39444f59636d778089929aa1a8a49d98938f8c8a888888898a8d90959aa0a8a69f978e857b71675d52473c31251a0e0300000000000a16212d38444f5a646f79828c949ca3a9a19b95918e8b8a898888898a8c8f93999fa6a7a09890877d73695e53483c31251a0e0200000000000000000000000916222e3a46525e6a76818d98a2ada59a90867d75706b686665656565676a6e737a838c96a0aba79c91857a6e62564a3e3226190d01000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000060f18212a343d464f58626b747d879099a0a099928b837c756d655a4e4235291c1003000000000000000000000000000000000000000a16212c3740484f525353535353535d666b6b6b6b6b6a655e575353535353535353535353565d646a6b6b6b6b6b675f545353535353524e473f352b20140900000013202c3946535f6c79848a8a8a8a837c746d665e575049413a332b241d150e070000000000000000000007111b252f384149515960666b7175797c7f8183848586868686858482807d7a76716c67605a524b423a31271e140a00000000000000000000000000000000000000000d192633404c596571797979797979797974695c5043362a1d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034323e4b5864717d8a96a3ab9f94887e746b635b534c453e37302821191109010000000000000000000d1926333f4c5865727e8b97a4b0a6998d8073675a4e4135291c1004020915212d3945525e6a7784909ca9b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a1d263039424c555f68727b858888888888888882796f63574a3d3124170b000000060f1821282d323434343c4855626f7b8895a2afa4988b7e7164574b3e34343434343434343434343433302b241d140a00000000000000000000000000000000000000020a10161a1d1f2122232323232321201d1a17120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3740484f525353535353535353524f4840372c21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28323d47515b656e77808890979da3a8a39f9b98969595959597999ca0a5a7a29b948d857c73695f554b40352a1f140900000000000005101c27323d48525d677079828a91989ea2a6a19d9a98969595959597999b9fa4a6a19c968e867e756b61574c41362b20140900000000000000000000000006121e2a36424e5965707b86919ba4aca2988f87817b787573727171727376797e858c959ea8a99f958a8074695d52463a2e22160a00000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000000000060f18222b343d465059626b747e879093939393938e877f766a5d5144372a1e11040000000000000000000000000000000000000005101a252e373e4346464646464956626e7778787878767069625c554f48464646464c535a61676e7578787878787065584c4646464645423d362d23190e03000000121f2b3845515d68727b858e97958e867f777069625a534c443d362e272018110a0100000000000000000009131d262f373f474e545a6065696d7072747677787979797978777573706d6a65615b554f48413930281f150c0200000000000000000000000000000000000000000b1824313d495560686c6c6c6c6c6c6c6c6a62584c4034281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034333f4c5966727f8c98a5a89c8f83776c62595149423a332c251e170f0700000000000000000000000b1724313d4a56636f7c8895a1aea89b8f82766a5d5145382c20140e0f111a25313d4955616e7a86939facb2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a141e27303a434d566069737b7b7b7b7b7b7b7b7b7a7064574a3e3124180b00000000060f161d222527272f3c4855626f7b8895a2afa4988b7e7164574b3e31272727272727272727272726241f19130b02000000000000000000000000000000000000030c141b2126292c2d2f2f3030302f2e2c2a26231e19140e080100000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a252e373e4346464646464646464646433e372e251a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353f49535c656e767e858c92989ca1a4a7a5a3a2a2a2a2a3a6a7a4a09b96908a837b726a61574d43392f24190e03000000000000000b16212c36414b555e67707880868c92979a9ea1a3a4a3a2a2a2a2a3a5a3a19e9a96918b847c746b62594f453b30251a0f03000000000000000000000000020e1a25313d48545f6a747f89929ba4aaa199928c888482807e7e7e7e8082868a90969ea7a8a0978d83796e63584c4135291e120600000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000061019222b343e475059626b757e868686868686868684776a5d5144372a1e1104000000000000000000000000000000000000000009131c252c3237393939393d4a5763707d85858585817a746d67605a534d464950575e656b72798085858585807366594c403939393936322b241b110700000000101c2935414c576069727c858e97989189827b736c655d564f484039322a231c130a010000000000000000010b141d252d353c43494f54595d60636668696b6b6c6c6c6c6b6a686664615d5955504a443d362f271e160d030000000000000000000000000000000000000000000915212d38434e575d5f5f5f5f5f5f5f5f5e5950463b3024180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403433404c596673808c99a6a69a8d8174675b50473f373029221a130c050000000000000000000000000915222e3b4754606d7986929eabab9e9285796d6154483d31251d1b1b1d222c36424d5965717d8a96a2afb2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d151e28313b444e57616a6e6e6e6e6e6e6e6e6e6e695f54483c2f23160a0000000000040b1116191a222f3c4855626f7b8895a2afa4988b7e7164574b3e31241a1a1a1a1a1a1a1a1a1a1a17130e0905010000000000000000000000000000000000010b151e262d3236383a3b3c3d3d3d3c3b3936332f2a251f19120b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393937322c251c130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232d37414a535c646c737a81878c9094989a9c9e9f9f9f9f9e9c9a9794908b857f78716960574e453b31271d12070000000000000000040f1a252f39434c555e666e757b81868a8e91949698999a9a9a9a99989694918e8a858079726a625950473d33291e140900000000000000000000000000000915202c37424d58636d7781899299a0a6a39d9894908e8c8b8b8b8c8d8f92969ba1a8a59e968e857b71675c52463b3024190d0100000000000000000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000000000071019222c353e475059636c7579797979797979797975695d5044372a1d11040000000000000000000000000000000000000000010a131a21262a2c2c2c303d4956626e79828b92928c857f78726b655e5851545b62696f767d848b92928d847a7165584c3f322c2c2c2a26201a120900000000000c1824303a454e57606a737c858e989b948c857e766f686159524b433c352d251c1308000000000000000000020b131b232b32383e43484d515457595b5d5e5f5f5f5f5f5e5d5c5a5755514d49443f39332c241d150c040000000000000000000000000000000000000000000004101c27323c454c515353535353535353524e473e352a1f14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403433404c5966737f8c99a5a79a8d8174685c524940372e261d140b020000000000000000000000000006131f2c3845515d6a76838f9ba7aea195897d7165594d42372e2928282a2e343e48535e6a76828e9aa6b2b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0c161f29323c454f585e616161616161616161615e574d43372b1f13070000000000000005090c15222f3c4855626f7b8895a2afa4988b7e7164574b3e3124180e0e0e0e0e141a1d20201f1d1915110d090501000000000000000000000000000008131d2730383e4245474849494a4a494745423f3b36302b241d160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121b252f38414a525a62696f757b8084888b8e90919292929291908d8b88847f7a746d665f574e453c332a20150b0100000000000000000008131d27313a434c545c636a70757a7e8285878a8b8c8d8d8e8d8c8b8a8885827e79746e67605950473e352b21170d020000000000000000000000000000040f1b26313c46515b656e7780888f959ba0a4a4a09d9b9998989898999b9ea2a7a39f99938c847c73695f554b40352a1f130800000000000000000000000000000004080b0f1c2835424f5b6875828f9084776a5d5044372a1d110b0905000000000000000000000000000000000000000000000000000000000000000000000000071019232c353e47515a636b6c6c6c6c6c6c6c6c6c6a63584d4135281c0f03000000000000000000000000000000000000000000010910161a1e1f20212e3a46525d677079828b9497908a837d767069625c5f666c737a81888f96978e857b72685f54483c3024201f1d1a150f0800000000000008131e29333c454e57616a737c868f989e979088817a726b645c554e463f372e241a0f040000000000000000000109111920272d32383c4044474a4d4f5051525353535252514f4d4b4845413d38332e28211a130b030000000000000000000000000000000000000000000000000b15202a333a4145464646464646464645423c352c23180e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034323e4b5864717d8a97a3a99c9084786e645b524940382f261d140b0100000000000000000000000004101c2935424e5a66737f8b97a3afa5998d81756a5e53494039363435363a3f464f5a646f7b87929eaab6b2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d040d17202a333d464d5254545454545454545454524c453b31261b0f030000000000000000000915222f3c4855626f7b8895a2afa4988b7e7164574b3e3124180b000710181f252a2c2d2c2925211d1915110d09050000000000000000000000020e19242f3942494e515355565656565554524f4b47423c362f28201810070000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f20202020202020201f1e1a16100901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131d262f38404850575e646a6f74787c7e818384858686858483817e7b77736e69625c554d453c332a21180e0400000000000000000000010b15202a333c424a51585f646a6e7276787b7d7e8081818181807e7d7b7875726d68635d564e473e352c23190f050000000000000000000000000000000009141f2a353f49535c656e767d848a8f94989b9ea0a2a3a4a4a4a4a3a2a09e9b97938e88827a726a61574d43392e24190d0200000000000000000000000000030a101417191c2835424f5b6875828f9084776a5d5044372a1d191815110b04000000000000000000000000000000000000000000000000000000000000000000000007111a232c353f4851595e5f5f5f5f5f5f5f5f5f5e5951473c3025190c000000000000000000000000000000000000000000000000050a0e1113131e2a35414b555e677079828c959b958e88817a746d676a70777e858c9399988e857c726960564d43382c201413110e090400000000000000020d17212a333c454f58616a737d868f98a19a938b847d756e676058514940362c2015090000000000000000000000070e151c21272c3034383b3e404243454546464646454443413e3c3935312d28221c160f080100000000000000000000000000000000000000000000000000040e18212930353839393939393939393936312b231a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034303d4956626e7b87939faaa1958a80766d645b524a41382f261d1309000000000000000000000000000d1926323e4a57636f7b87939faba99e92867b70655b524a4542414243464a5058616b76818c97a1a6aeb2a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01050e18212b343c42464848484848484848484746413b33291f150a000000000000000000000915222f3c4855626f7b8895a2afa4988b7e7164574b3e3124180b050f19222a3136393a3935312d2925211d1915100a0300000000000000000006131f2a36414b545a5e60616263636362615e5b57524d474039322a22191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141d262e363e454c53595f64686c6f7274767878797978787674726f6b67625d57514a433b332a21180f060000000000000000000000030f1b26323c454d53565656595e6266696c6e707273737474737372706e6c6966615d57524b443d352c231a11070000000000000000000000000000000000030e18232d37414a535c646b72797e84888c8f9193959697979897969594918f8b87827d77706860574e453c32271d120700000000000000000000000000050e151b202426262835424f5b6875828f9084776a5d5044372a262624211c160f07000000000000000000000000000000000000000000000000000000000000000000000008111a232d363f474e52535353535353535353524e473f352a1f140800000000000000000000000000000000000000000000000000000205060d19242f39434c555e677079838c959e99938c867f7872747b828990979d988f867c736a60574e443b31261b1006040200000000000000000000050f18212a333d464f58616b747d879099a29d968f878079716a635b52483d3125190d000000000000000000000000040a10161b2024282c2f3133353738393939393938373634322f2c2925211c17110b0500000000000000000000000000000000000000000000000000000000060f171e24292b2c2c2c2c2c2c2c2c2c2a262019110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342d3a46525e6a76828e99a4a69c92887f766d645c534a41382f251b11060000000000000000000000000a16222e3a47535f6b76828e9aa5aea3978c81776d645c56514f4e4e5052565b626a737d889294959ca6b1a5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100060f19222a31363a3b3b3b3b3b3b3b3b3b3b3936302921170d03000000000000000000000915222f3c4855626f7b8895a2afa4988b7e7164574b3e3124180b0c17212b343c42464745413d3935312d2926211c150d0400000000000000000916222f3b47525d666a6c6e6f7070706f6d6b67635e58524b443c342b22191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c242c343b42484e53585c606366686a6b6c6c6c6c6b6a6865635f5b57524c463f38312921180f060000000000000000000000000713202c38434e575f6363636363605a5d5f626365666767676766656462626362605d59534d463e352c22180e0400000000000000000000000000000000000007111b252f38414a525a61676d73777c7f82858788898a8b8b8a8a898785827f7b77716c655e564e453c332a20150b00000000000000000000000000050e1720272c3033333335424f5b6875828f9084776a5d504437333333312d2721191006000000000000000000000000000000000000000000000000000000000000000000000008111b242d363d424546464646464646464645423d352d23190e03000000000000000000000000000000000000000000000000000000000008131d27313a434c555e67707a838c959e9e97908a837d7f868d949ba19990867d736a61574e453c32291f150a0000000000000000000000000000060f18212b343d464f59626b747d879099a0a099928a837c746d64594d4135281c0f0000000000000000000000000000050a0f14181c1f222527292a2b2c2c2c2c2c2c2b29282523201d1915100b0600000000000000000000000000000000000000000000000000000000000000050d13181c1f20202020202020201f1d1a150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342a36424e5a66717c87929ca6a49a91887f766e655c534a41372d22180d02000000000000000000000006121e2a36424e5a66727d89949faaa99e93897f766e67615e5c5b5b5c5e62676d747c868f92888a95a1aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000710181f252a2d2e2e2e2e2e2e2e2e2e2e2d2a251e170f0500000000000000000000000915222f3c4855626f7b8895a2aea4988b7e7164584b3e3225180b121d28333d464d5253514d4946423e3a36322d271f160d03000000000000000b1824313e4a57636f77797b7c7c7d7d7b7a77736f69635d564e463d342b22180f05000000000000000000000000000000000000000000000000000000000000000004070808080808080808080807040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a131a222930373c42474c505357595b5d5e5f5f5f5f5e5d5b5956534f4b46413b352e271f170f06000000000000000000000000000916232f3c48545f6a6f6f6f6f6f6b615653555758595a5a5a5c61666a6d6f6f6f6d69645e5750473e342a20150a0000000000000000000000000000000000000009131d262f3840484f565c62676b6f7376787a7b7d7d7e7e7d7d7c7a7876736f6b66605a534c443c332a21180e04000000000000000000000000010c17202931383d3f404040424f5b6875828f9084776a5d50444040403f3d39322b22180e03000000000000000000000000000000000000000000000000000000000000000000000009121b242b3236393939393939393939393936312b231b1107000000000000000000000000000000000000000000000000000000000000010b151f28313a434c555e68717a838c959ea29b958e888a91989ea39a90877e746b62584f463c332a20170d03000000000000000000000000000000060f19222b343d475059626b757e879093939393938e867f76695d5043372a1d100000000000000000000000000000000004080c101316181a1c1d1e1f2020201f1f1e1d1b191614100d09040000000000000000000000000000000000000000000000000000000000000000000002080c1012131313131313131313110e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403427323e4954606b75808a949da6a39a918980776e655c53493f342a1f14090000000000000000000000020e1a26323e4955616c77838e99a3ada59b91888078726d6a686768696b6e72787e868e978c818794a0ada5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000060e141a1e2021212121212121212121201d19130d050000000000000000000000000815222e3b4854616e7b8794a1ada5988c7e7265594c3f33261a1618222e3a454f585e605d5a56524e4a46423e3831281f150a000000000000000b1825323e4b5865717e868889898a89888683807a756e6760584f463d342a21170d020000000000000000000000000000000000000000000000000000000000060c10131515151515151515151513100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910171f252b31363b4044474a4d4f50515252525251504f4c4a47433f3a353029231c150d0500000000000000000000000000000b1724313d4a5764707b7c7c7c7c7266594c494a4b4f555c62686d72777a7c7c7b79757069615950463c32271c1105000000000000000000000000000000000000010b141d262e363d454b51565b5f6366696c6d6f7071717171706f6e6c6966635f5a554f49423a332a21180f060000000000000000000000000007131e29323b43494c4c4c4c4c4f5b6875828f9084776a5d504c4c4c4c4c49443c342a1f140900000000000000000000000000000000000000000000000000000000000000000000000009121a20262a2c2c2c2c2c2c2c2c2c2c2c2a26201911090000000000000000000000000000000000000000000000000000000000000000030d161f28313a434c565f68717a838c969fa6a09994959ca2a49a91887e756b625950463d342a21180e050000000000000000000000000000000000071019222b353e475059626c757e868686868686868684776a5d5044372a1d11000000000000000000000000000000000000000307090c0e0f111212131313131211100e0c0a070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034272d38434e59646e78828b949ca4a39b928981776e645b50463b30251a0f0300000000000000000000000a15212d39444f5b66717c87919ba5ada39a928a837e7a7775747575777a7e8389909890857a8794a1aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d010000000003090e11141515151515151515151514110d0802000000000000000000000000000714212d3a4753606d7986939faca69a8d8174675b4e42352924232429333f4b56616a6d6a66625e5a56524e49433a31271c10050000000000000b1825323e4b5865717e8b94959696969593908b868079726a61584f463c33291e140a000000000000000000000000000000000000000000000000000000020a11181c2021222222222222222221201c18110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a20262b2f34373b3e4042444545464646454442403d3a37332e2a241e18110a030000000000000000000000000000000a1724303d4a5663707c8989898175685c50494e545a60676d73787e838689898885817b736b62584e43382d22160b00000000000000000000000000000000000000020c1824303b454f565b5c5c5c5c5c5d5f616263646464646362615f5d5c5c5c5c5c5a544b41362b1f130700000000000000000000000000000c18242f3a444d545859595959595b6875828f9084776a5d595959595959554e463c31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f2020202020202020201f1d1a150f0700000000000000000000000000000000000000000000000000000000000000000000040d161f28313a434d565f68717a848d969fa0a0a0a0a0a09b92887f756c635950473e342b22180f0600000000000000000000000000000000000000071019232c353e47505a636c7579797979797979797974695c5043362a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050707070707070707070705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d40342727323d48525c667079828a929ba4a49b938a80766c62584d42372b201409000000000000000000000005101c28333e4a55606a758089939ca5aca39c958f8a86838281818284878a8f949b92887e7a8794a1aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d010000000000000205070808080808080808080807050100000000000000000000000000000006131f2c3945525e6b7884919daaa89c8f83766a5e52463b34313030343b45505b67737a76726e6a66625e5a554d43382d2115090000000000000b1825323e4b5865717e8b98a2a3a3a3a29f9c97918b847c736a61584e453a30261b110600000000000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090f141a1f23282b2e31333537383939393938373533312e2b27231e19130d0700000000000000000000000000000000000916222f3c4855616e7b87949185786d6158565a5f656c72787e848a8f93959695928c857d746a60554a3e33271c1004000000000000000000000000000000000000000f1c2834404c57616769696969696969686258575757575c646869696969696969655d53473c2f23170a0000000000000000000000000000101c2935404c565f656666666666666875828f9084776a6666666666666560584d42362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000004090e111313131313131313131313110e0904000000000000000000000000000000000000000000000000000000000000000000000000040d161f28313a444d565f68717a848d93939393939393928980766d635a51473e352c2219100600000000000000000000000000000000000000000007101a232c353e48515a636b6c6c6c6c6c6c6c6c6c6a62584c4034281b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000406070707070707070502000000000000000000000000000000000000000000000000000000040a0e1113141414141414141413120e0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d403427202b36404a545e6770788189929ba4a59c92897e74695e53483c3125190e0200000000000000000000000b16222d38434e59636d77818a939aa2a8a6a09a9692908e8e8e8f9193969b9a928980767b8894a1aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000004111d2a3743505c6975828e9ba7ab9f92867a6e62574d45403d3c3d40454d57616c7883827e7a76726e6a665f55493e3225190d0000000000000b1825323e4b5865717e8b989a9a9b9da1a5a8a39c958e857c736a60564c42382d22180d020000000000000000000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b38342e261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13171b1f222527292a2b2c2c2c2c2b2a292724221e1b17120d08020000000000000000000000000000000000000714202d3a46535f6c79859295897e73696463656b71777d838a8f959a9fa2a3a19d978f867c71665b4f44382c20140800000000000000000000000000000000000000111e2b3744505d697375757575757575746a5e524b4b56626d75757575757575756f64584b3f3225190c0000000000000000000000000000121f2b3844515d68717373737373737375828f90847773737373737373726a5e52463a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f28323b444d565f68717b84868686868686868680766d645b51483f352c23191007000000000000000000000000000000000000000000000008111a232c363f4851595e5f5f5f5f5f5f5f5f5f5e5950463b3024180c00000000000000000000000000000000000000000000000000000000000000000000000001070c101314141414141413110e0903000000000000000000000000000000000000000000000000070f151a1e202020202020202020201e1a150f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a242e38424c555e666e778089929ba5a49a90867b7064594d42362a1e1206000000000000000000000005111c27323c47515c656f78818990979ca1a5a6a29f9d9b9b9b9c9d9f9c968f8880776e7b8894a1aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000010f1b2834414d5a66727e8b97a3aea2968a7f73695f56504c4a49494c51575f68737d898e8a86827e7a7671665a4e4134281b0e0200000000000b1825323e4b5865717e8b8e8e8e8f9195999fa5a7a0978f867c72685e54493f34291e1308000000000000000000000000000000000000000000000006111c262f383f4548484848484848484848453f382f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1316181a1c1e1f1f20201f1f1e1c1a1815120f0b0601000000000000000000000000000000000000000005121e2b3844515d6a76838f9a8f857b74717072767c82888e959ba1a5a1a0a0a1a4a1988e83776c6054493d3024180c00000000000000000000000000000000000000121e2b3845515e6b7882828282828282796d6053464a5764717d828282828282807366594c403326190d000000000000000000000000000013202c3946535f6c798080808080808080828f908480808080808080807b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000010406090b0d0f10111213131313121211100e0c0a080502000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d162029323b444d565f6972797979797979797979776e655b52493f362d231a11070000000000000000000000000000000000000000000000000008111a242d363f484e52535353535353535353524e473e352a1f14080000000000000000000000000000000000000000000000000000000000000000000000040c13181d20212121212121201e1a140e060000000000000000000000000000000000000000000008111920262a2d2d2d2d2d2d2d2d2d2d2a26211a120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4134271a1c26303a434c545d656d768089939ea9a2978c81756a5e52463a2e2216090000000000000000000000000a15202b35404a535d666f777e858b9195999b9d9e9f9f9e9d9b9895908b857e766e6e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000c1925313e4a56636f7b87939faba79b90857a7168615c59575656585c6269717a858f9a96928e8a868175685b4f4235281c0f0200000000000b1825323e4b5865717e828181818285898e949ba2a9a1988e847a70665b50453b3024190e03000000000000000000000000000000000000000000000b17222d38424a5154555555555555555554514a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090c0e0f11121313131312110f0e0b090602000000000000000000000000000000000000000000000003101c2935424e5a6773808c98978e86807d7c7e82878d9399a0a49e9995939395989d9f94897d7165594d4134281c0f03000000000000000000000000000000000000121e2b3845515e6b78858f8f8f8f8f86796d6053464a5764717d8a8f8f8f8f8c807366594c403326190d0000000000000000000000000000121f2c3845515d69747f8a8c8c8c8c8c8c8d94958d8c8c8c8c8c8c8c81756a5f53463a2d201407000000000000000000000000000000000000000000000000000206090d101315181a1b1d1e1f1f2020201f1e1e1c1b191714120f0b080400000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029323b444e5760686c6c6c6c6c6c6c6c6c6b655c534940372d241b110800000000000000000000000000000000000000000000000000000008121b242d363d424546464646464646464645423c352c23180e0200000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2e2e2e2e2e2e2d2a251f181007000000000000000000000000000000000000000007111a232b3236393a3a3a3a3a3a3a3a3937322b241b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946525f6c7986929faca79a8e8174675b4e4135281b141e28313a424b535b646e77828c97a2a99e92867a6f63564a3e3225190c000000000000000000000000040f19232e38414b545d656c747a8085898c8f9192929291908e8c8884807a736c646e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000916222e3a47535f6b77828e9aa5ada1978c837a736d686563636365686d737b838c96a1a29e9a94897d7165594d4034271b0e0100000000000b1824313e4a57636f777675747475787d82899099a1aaa0968c82776d62574c41362a1f1408000000000000000000000000000000000000000000000f1b27333f4a545c616161616161616161615c544a3f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1926323f4b57636f7b88939f97918c8a898b8e93989ea59f99938d898686888c929a998d8175695d5044382b1f1306000000000000000000000000000000000000121e2b3845515e6b7885929c9c9c9386796d6053464a5764717d8a979c9c998c807366594c403326190d0000000000000000000000000000101c2935414c57636e79848f9999999999999d9e9a999999999991867a6f64594e42362a1e1205000000000000000000000000000000000000000000000004090e1216191c1f222426282a2b2c2c2c2c2c2c2b2a29272623211e1b1814100b07020000000000000000000000000000000000000000000000000000000000000000000000000000050e172029323c454e565d5f5f5f5f5f5f5f5f5f5f5b534a41372e251b1209000000000000000000000000000000000000000000000000000000000009121b242b3236393939393939393939393936312b231a110700000000000000000000000000000000000000000000000000000000000000000000020c161f282f35393a3a3a3a3a3a3936312a22190f05000000000000000000000000000000000000020d18232c353d4246474747474747474746433d362d23190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0d0a05000000000000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0d0a050000000000000000000000000000000000000004080b0c0d0d0d0d0c0a0602000000000000121f2c3845525e6b7885919eaba89c8f8275695c4f43362a1d11161f2830394149525c66707b86919da9a3978b7e73665a4d4135281c0f0200000000000000000000000007121c262f39424b535b62696f74797d8082848586858584827f7c78746e6861616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0a0a09a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a36424e5a66727d88939ea8a89e958c847d787472706f6f7174787e858d959ea8ada3998e83776c6054483c3024180c0000000000000916222f3b47525d666a69686767696c71777e878f98a2a89e94897e73685d52473c3025190e03000000000000000000000000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b4f43372b1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080b0d0f101112121211100f0d0b0805020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16232f3b47535f6b77828e99a29d999796979a9ea4a09a948e87827c79797c8188919b9185796c6053473b2e221509000000000000000000000000000000000000121e2b3845515e6b7885929ea9a09386796d6053464a5764717d8a97a4a6998c807366594c403326190d00000000000000000000000000000d1924303b46515c68737e8995a0a6a6a6a6a9aaa6a6a6a6a1968b8074695e53483c31261a0e02000000000000000000000000000000000000000000050b10151a1e2225292c2e31333536373839393939393837363432302d2a2724201c17130d080200000000000000000000000000000000000000000000000000000000000000000000000000050e17202a333c444c51535353535353535353524f4941382f251c13090000000000000000000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2c2a2620191108000000000000000000000000000000000000000000000000000000000000000000000008131e28313a404547474747474746423c342b21160b00000000000000000000000000000000000007131f2a343e474e525353535353535353534e483f352a1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1c1c1c1c1c1c1a16110b040000000000000000000000000000000000000000000000040b11161a1c1c1c1c1c1c1a16110b04000000000000000000000000000000030a10141719191919191816120d070000000000111e2b3744515d6a7783909da9aa9d9084776b5e5245392c20140d161e272f37404a545e6975818d99a6a79b8f8276695d5043372a1e1104000000000000000000000000000a141d273038414950575e63686d7073767778797878777573706c68635d57616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693939393938d8173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26323e4955606c77828c96a0a9a79e968f8984817e7d7c7c7e81848a90979fa8ada49b91877c71665b4f44382c20140800000000000006131f2a36414b545b5d5c5b5a5b5c60666d757d86909aa4a59b90857a6f63584d41362b1f140800000000000000000000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b776c5f5246392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060a0e1215181a1c1d1e1e1e1e1e1d1b1a1714110e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2b37434f5a66717c87919ba3a5a3a3a4a6a19b958f89827c76716d6d70767f899495887c6f63564a3d3124180b000000000000000000000000000000000000121e2b3845515e6b7885929eaba09386796d6053464a5764717d8a97a4a6998c807366594c403326190d000000000000000000000000000008131e2a35404b56626d78838f9aa5b0b3b3b5b5b3b3b1a69b9085796e63584d41362b2015090000000000000000000000000000000000000000050b11161c21252a2e3235383b3d40414344454646464645454442413f3c3a3734302c28231e19130e0801000000000000000000000000000000000000000000000000000000000000000000000000050e17212a323a404446464646464646464646433e372f261d130a010000000000000000000000000000000000000000000000000000000000000000080f151a1e1f2020202020202020201f1d1a150e070000000000000000000000000000000000000000000000000000000000000000000000020e1925303a434b51545454545454524d463d33281d110500000000000000000000000000000000000b1824303b4650595f60606060606060605f5951473c3024180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161c222628292929292826221c160e05000000000000000000000000000000000000000000050e161c222628292929292826221c160e0500000000000000000000000000050e151b2024262626262625221e18120a01000000101d2936424f5c6875828e9ba7ac9f93867a6d6155483c30251a1513151d252e38424d5865717d8a97a3aa9e9184786b5e5245382c1f120600000000000000000000000000020b151e262f373f464c52585c616467696b6b6c6c6b6a686663605c575255616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c79868686868686868173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38444f5a65707a858e97a0a7a8a19a95908d8b8a89898a8d90959ba1a9aaa39b928980756b60554a3e33271c1004000000000000020e19252f39424a4f51504e4e4e50545b636b747e88929da7a1968b8075695e53473c3025190d02000000000000000000000000000000000000000013202c3946535f6c798688888888888886796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d12161a1e212426282a2b2b2b2b2b29282624211e1a16110c060100000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323e4955606a757f8991989d9f9f9e9a95908a847d77716b656060646d78838f978b7e7265584c3f33261a0d000000000000000000000000000000000000121e2b3845515e6b7885929ea0a09386796d6053464a5764717d8a97a0a0998c807366594c403326190d0000000000000000000000000000020d18242f3a45505c67727d89949faab5c0c1c2c0b7aba0958a7e73685d52473b30251a0f03000000000000000000000000000000000000020910161c22272c31363a3e4145474a4c4e505152525353535251504f4d4b494643403c38342f2a251f19130c05000000000000000000000000000000000000000000000000000000000000000000000000050f1820292f35383939393939393939393937332d251d140b0100000000000000000000000000000000000000000000000000000000000000000000040a0e111313131313131313131313110e090300000000000000000000000000000000000000000000000000000000000000000000000006121e2a36414c555d6061616161615e584f44392e22160900000000000000000000000000000000000e1b2734404c58626b6d6d6d6d6d6d6d6d6b63584d4134281c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000040e1720272e32353636363635322e2720170e0400000000000000000000000000000000000000040e1720272e32353636363635322e2720170e040000000000000000000000050e1720272c303333333333322f2a231c130a0000000e1b2734414d5a6673808c98a5aea295897d7164584d41362c25211f1f1f2126303c4956626f7c8895a2ac9f9386796c5f5346392d2013060000000000000000000000000000030c141d252d343b41474c5154585a5c5e5f5f5f5e5d5c5a5754504b4855616e7b8895a2aea5988b7e7165584b3e3225180b00131f2c3946525f6b7679797979797979797266594d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333e49545e69727c858e969da3a9a6a19d9a9896969697999ca1a6aaa59f98918980776d63594e44382d22160b000000000000000008131d2730383e42444342414144495159626c76808b96a0a89d91867a6f64584d41352a1e1207000000000000000000000000000000000000000013202c3946535f6c798693959595959386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13181d22272a2e313335363738383837363533302d2a26221d18120c05000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212d38434e59636d767f878d909293918e89847e79726c66605a54535b67727e8b938d8174675a4e4135281b0f020000000000000000000000000000000000121e2b3845515e6b7885929393939386796d6053464a5764717d8a939393938c807366594c403326190d00000000000000000000000000000007121d29343f4a55616c77828e99a4afbac5c7bcb1a59a8f84786d62574c40352a1f1408000000000000000000000000000000000000050d141a21272d33383d42464a4e515456595b5c5d5e5f5f5f5f5f5e5d5c5a585553504c4844403b36302a241e171009010000000000000000000000000000000000000000000000000000000000000000000000060e171e24292b2c2c2c2c2c2c2c2c2c2c2a27221b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47525e676d6d6d6d6d6d6a61564a3e3125180c0000000000000000000000000000000000101c2936424f5c68747a7a7a7a7a7a7a7a75695d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202932393e4242424242423e39322920160b000000000000000000000000000000000000000b16202932393e4242424242423e39322920160b00000000000000000000010c17202931383d3f404040403e3b352e251c120700000c1925323e4b5764707d8995a2aea5998d8175695e52483e36312e2c2c2c2d30363e4956626f7c8995a2ada09386796d6053463a2d201307000000000000000000000000000000020b131b222930363b4044484b4e505152525252514f4d4b47443f4855616e7b8895a2aea5988b7e7165584b3e3225180b00111e2a37434f5a646b6c6c6c6c6c6c6c6c6960554a3d3125180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c37424c57606a737c848b92989da1a5a7a6a4a3a2a3a4a6a8a5a29e99948e877f776e655b51473d32271c11050000000000000000010c151e262d32363736353434383f47505a646e79848f9aa5a3978c8075695d52463b2f23170c000000000000000000000000000000000000000013202c3946535f6c798693a0a2a2a09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11181e24292e33373a3d404243444545454443413f3d3a36322d29231d17100902000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323c47515b646d757b8184868685827e78736d67615b544e484a56636f7b8686868275695c4f4336291d10030000000000000000000000000000000000121e2b3845515e6b7885868686868686796d6053464a5764717d868686868686807366594c403326190d000000000000000000000000000000010c17232e39444f5b66717c87939ea9b4bfc1b6aa9f94897d72675c51463a2f24190e020000000000000000000000000000000000080f171e252c32383e44494e52565a5d60636567696a6b6c6c6c6c6b6b6a686664625f5c5854504b46413b352f29221b130c040000000000000000000000000000000000000000000000000000000000000000000000050c13181c1f202020202020202020201e1b16100901000000000000000000000000000000000000000000000000000000000000000000000000000000000406080808080808080808070501000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d4956636f797a7a7a7a7a7266594d4033271a0d0000000000000000000000000000000000101c2936434f5c69768387878787878784776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000000000000006111d27323b444a4e4f4f4f4f4e4a443b32271d1106000000000000000000000000000000000006111d27323b444a4e4f4f4f4f4e4a443b32271d110600000000000000000007131e29323b43494c4c4c4c4c4b463f372e23180d02000a16232f3c4854616d7986929eaaa99d91867a6f64595048413d3a3938393a3d4147505a66727e8a97a4ac9f9386796c5f5346392d20130600000000000000000000000000000000010911181e252a3034383c3f414344454646454443413e3b383b4855616e7b8895a2aea5988b7e7165584b3e3225180b000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d574e44392d211509000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303b454f58616a727981878c9195989b9d9e9f9f9f9e9d9b9996928e89837c756d655c534940352b20160b00000000000000000000030c141c2226292a2a2828282d353e48525d67727d89949fa89d91867a6e63574b4034281c10050000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141c23292f353a3f4346494c4e505151515151504e4c4946423e39342e28221b140c0400000000000000000000000000000000000000000000000000000000000000000000000000000a15202b353f49525b636a70747779797875726d68625c565049433d4754606c777979797974685c4f4336291d10030000000000000000000000000000000000121e2b3844515e6a7579797979797979766b5f53464a57636f79797979797979797165584c3f3326190c0000000000000000000000000000000006111c28333e4954606b76818d98a3aeb9bbb0a4998e83776c61564b3f34291e1307000000000000000000000000000000000109121a212930373d444a4f555a5e62666a6d6f7274757778797979797877767573716e6b6864605c57524c47413a332c251e160e05000000000000000000000000000000000000000000000000000000000000000000000001070c101213131313131313131313110f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000060c101314151515151515151413110d080200000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d878787878173675a4d4034271a0d0100000000000000000000000000000000101c2936434f5c69768390949494949084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000000000000000000a16222e39444d555b5c5c5c5c5b554d44392e22160a00000000000000000000000000000000000a16222e39444d555b5c5c5c5c5b554d44392e22160a0000000000000000000c18242f3a444d5458595959595751493f352a1e1206000713202c3845515d6975818d99a5aea2978b80766b6259524d494745454547494d5259626c76828e9aa6aa9d9184786b5e5245382c1f1206000000000000000000000000000000000000060d13191f24282c303235363838393938373634322f2e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000a16212c3740484f525353535353535353514c453c32271c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333d464f5860686f757b8185898c8e909192929292918f8d8a86827d77716a635b534a41372e24190f040000000000000000000000020a11161a1d1e1d1c1b1c232c36404b56616c77838f9aa6a2978b7f73685c5044392d2115090000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262d343a40464b4f5356595b5c5d5e5e5e5d5c5a5855524e4a453f3a332d251e160e0500000000000000000000000000000000000000000000000000000000000000000000000000040f19232d37404951595f64686b6c6c6b6966615c57514b453e383844505b656b6c6c6c6c6a62584c4034271b0e020000000000000000000000000000000000101d2935424e59636b6c6c6c6c6c6c6c6b645a4f4347535e676c6c6c6c6c6c6c6c685f54493d3024170b00000000000000000000000000000000000b16222d38434e5a65707b87929da8b3b5a99e93887d71665b5045392e23180d01000000000000000000000000000000020a131b242b333a42484f555b60656a6e7276797c7e818284858686868685848382807d7b7874716c68635e58524c453e372f2820170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f212121212121212121201d19130c04000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a94948d8174675a4d4134271a0e0100000000000000000000000000000000101c2936434f5c697683909ca0a09d9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000000000000000000d1a26333f4a555f6769696969675f554a3f33261a0d01000000000000000000000000000000000d1a26333f4a555f6769696969675f554a3f33261a0d010000000000000000101c2935404c565f6566666666635b51463b2f22160a0004101c2935414d5965717d88949faaa89d92877d746b645e5956535252525355595d646b747d88939faaa69a8e8275695c5043372a1e11040000000000000000000000000000000000000002080e13181c202326282a2b2c2c2c2c2b292725222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0005101a252e373e4346464646464646464645413b332a20160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17212b343d464e565d646a7075797c80828485868686858482807d7a76716c666059514941382f251c12080000000000000000000000000000050a0e1011100f0e111a242f3a45505b66727d8995a1a79c9084786d6155493d32261a0e0200000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212931383f464c51565b5f626567696a6b6b6b6a696765625e5a56514b453e37302820170f060000000000000000000000000000000000000000000000000000000000000000000000000007111b252e373f474e54585c5e5f5f5f5d5955504b45403a332d333f49535b5f5f5f5f5f5e5950463b3024180c0000000000000000000000000000000000000d1925313d4751595e5f5f5f5f5f5f5f5f5a52493e414c555c5f5f5f5f5f5f5f5f5d564d43382c201408000000000000000000000000000000000005101b27323d48535f6a75808c97a2adafa3988d82766b60554a3e33281d1206000000000000000000000000000000010b141c252d353d454c535a60666c71767a7e8286898b8d8f9091929393929291908e8c8a8784817d78746e69635d575049413a322921180f060000000000000000000000000000000005090c0e0e0e0e0e0e0e0e0e0e0d0a07020000000000000000000000000000000000000000000000000000000000000001060a0c0e0e0e0e0e0e0e0e0e0e0c09050000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2d29241e160e050000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979a8e8174675a4d4134271b0e0100000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424e5b67717575757571675b4e4235291c0f03000000000000000000000000000000000f1c2935424e5b67717575757571675b4e4235291c0f030000000000000000121f2b3844515d6871737373736d63574b3e3225180c00000c1925313d4954606c77838e99a3aea4998f867d756f696562605f5f5f606265696f757d868f9aa4aca1968a7e7266594d4134281b0f0200000000000000000000000000000000000000000002070c101417191b1d1e1f1f1f1f1e1d1b19222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000009131c252c32373939393939393939393835302921180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b343c444c52595f64696d707375777879797978777673716e6a65605b554e473f372f261d130a000000000000000000000000000000000000000000000008121d28333e4a55616d7884909ca8a195897d72665a4e42362a1f130700000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a333b424a51575d62676b6f72747677777877777574716e6a66615c565049423a322921180e050000000000000000000000000000000000000000000000000000000000000000000000000009131c252d353c42484c4f52535352504d4945403a342e28222d3741494f5253535353524e473e342a1f13070000000000000000000000000000000000000915202b363f484e5253535353535353524f4940373a434b505353535353535353514c443b31271b10040000000000000000000000000000000000000a15212c37424d59646f7a85919ca7a89d92877b70655a4f44382d22170c000000000000000000000000000000000a131d262e373f474f575e656b71777d82878b8f9295989a9c9d9e9f9fa09f9f9e9c9b999694908d8984807a746e68615a534b443b332a21180f0600000000000000000000000000040b1115191a1a1a1a1a1a1a1a1a1a1917130d070000000000000000000000000000000000000000000000000000000000060c1216191a1a1a1a1a1a1a1a1a1a1916110b050000000000000a141d262d34383a3b3b3b3b3b3b3b3b3935302820170e0400000000000000000000000000000000000000000000000000000000000000000b1824313e4a5764717d8a979b8e8174675b4e4134281b0e0100000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768282828276695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768282828276695c4f4336291c1003000000000000000013202c3946535f6c79808080807366594c403326190d00000814202c38444f5b66717c87929ca6aba1988f87817a75716f6d6c6b6b6d6e71757a80878f98a1aba59a9084796d6156493d3125180c0000000000000000000000000000000000000000000000000004070a0d0f10121213131211100e15222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000010a131a21262a2c2c2c2c2c2c2c2c2c2c29241e170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a323a41484e53585d606466686a6b6c6c6c6b6a696764615e59554f49433c352d251d140b010000000000000000000000000000000000000000000000010c17222d3945505c6874808b97a3a69a8e82766a5f53473b2f23170b00000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18212a333c454d545b62686e73777b7e8182848485848482817e7a77726d67615b534c443b332a20170d03000000000000000000000000000000000000000000000000000000000000000000000000010a131b232b31373c40434546464543413d39342f29231d1b262f373e43464646464645423c352c22180d02000000000000000000000000000000000000040f19242d363d42454646464646464646433e372e31394044464646464646464644403a322920150a00000000000000000000000000000000000000040f1a26313c47525e6974808b96a1a2978c81756a5f54493d32271c110500000000000000000000000000000009121c252f3840495159616870767d83888e92979b9ea1a4a6a8a9a8a7a6a6a6a7a8a9a7a5a3a09d9995908b86807a736c655d554d453c332a21180e040000000000000000000000060e161c21252727272727272727272726231e1811090000000000000000000000000000000000000000000000000000000810171d22262727272727272727272725221d160f070000000005111b262f383f4447484848484848484745413a322920160c03000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8b989b8e8174685b4e4135281b0f0200000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976838f8f8376695c4f4336291c100300000000000000000000000000000000101c2936434f5c6976838f8f8376695c4f4336291c1003000000000000000013202c3946535f6c79868c8c807366594c403326190d000004101c27333e4a55606b75808a949da5aaa199928c86817e7b79787878797b7d81868b9299a1aaa59c93897e73685c5145392d21150900000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000010910161a1e1f20202020202020201f1c19130d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820282f363c42484c5154575a5c5d5e5f5f5f5f5e5c5a5855514d49443e38322b231b130b020000000000000000000000000000000000000000000000000005111c2834404b57636f7b8793a0aa9f93877b6f63574b3f34281c1004000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202a333c454e575e666d73797e83878b8d8f90919291908f8d8a87837e78736c655e564d453c32291f150b010000000000000000000000000000000000000000000000000000000000000000000000000109111920262b303436383939393734312d28231e1812141d252d333739393939393936312b231a1106000000000000000000000000000000000000000008121b242b323639393939393939393937322c25272e3438393939393939393938352f2920170e0300000000000000000000000000000000000000000914202b36414c58636e7984909b9c91867b6f64594e43372c21160b00000000000000000000000000000006111b242e37414a525b636b737a81888e94999ea3a7aba7a3a19e9c9b9a9a999a9a9b9d9fa1a4a7a9a5a19c97918b857e776f675f574e453c332a20160c02000000000000000000050f1820272d3134343434343434343434332f2a231b12090000000000000000000000000000000000000000000000000007111a22292e3234343434343434343434322e28211910060000000b16222d38414a50545454545454545454524c443b32281e150b010000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8e8275685b4e4235281b0f0200000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000b16222d38434e59646e78828b949ca3aaa49d97928e8a888685858586888a8d92979da3aaa39b938a81776c62574b4034291d110500000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000050a0e1113131313131313131312100d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161e252b31373c4044484b4d4f51525253525251504e4b4945413d38332d272019110901000000000000000000000000000000000000000000000000000006121e2a36424e5965717d8995a1ada3978c8074685c5044382c201409000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000009131e28323c454e57606870787e858a8f93979a9c9d9e9e9e9d9c9996938f8a847e776f685f574e443b31271d13080000000000000000000000000000000000000000000000000000000000000000000000000000070e151b2024272a2c2c2c2c2a2825211d17120c070b131b22272a2c2c2c2c2c2c2a25201911080000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2a27211b1d23282b2c2c2c2c2c2c2c2c2b29241e170e05000000000000000000000000000000000000000000030e1925303b46515d68737e8a95968b8074695e53483d31261b10050000000000000000000000000000040e18232d364049535c646d757d858c93999fa5aaa8a39f9b979492908e8d8d8c8d8d8e909295989b9fa4a9a8a29c968f888179716960574e453c32281e140a0000000000000000020d17212a32393e404141414141414141413f3b352d241b11060000000000000000000000000000000000000000000000040f19232c343a3e414141414141414141403e39332b22180d0200000f1b27333e49535b6061616161616161615d564d433a30271d13090000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989b8f8275685b4f4235281c0f0200000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104050607070707060503010000000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000005111c27323d47525c666f78818a91989fa4a8a29e9a9794939292929394969a9da2a8a49f98918981786f655b50453a2f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c131a20262b3034383b3e41434445464646454443413f3c3935312c27221c150e07000000000000000000000000000000000000000000000000000000000b17232f3b46525e6a76828e99a5b1a89c9084786c6055493d3125190d010000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000005101a25303a444e57616a727a828990969ba0a3a6a6a4a3a3a3a4a6a6a39f9a958f898179716960564d43392f241a0f04000000000000000000000000000000000000000000000000000000000000000000000000000003090f14181b1d1f20201f1e1c1915110c070100010910161b1e20202020201f1d1a140e07000000000000000000000000000000000000000000000000080f151a1e1f202020202020201f1e1b161012171c1f20202020202020201f1c18130c05000000000000000000000000000000000000000000000008131f2a35404b57626d78848f90857a6e63584d42362b20150a0000000000000000000000000000000b15202a343e48525b656e767f878f969ea4aba9a39d98938e8b888583828180808081828385888b8f93989da3a9a7a19a938b837b726a61574e443a30261c11060000000000000008131e29333c444a4d4d4d4d4d4d4d4d4d4d4b463f362d22170c00000000000000000000000000000000000000000000000a15202b353e454b4d4d4d4d4d4d4d4d4d4d4a443d342a1f14080000111e2b37434f5b656d6e6e6e6e6e6e6e6e685f564c42392f251b110700000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c989c8f8275685b4f4235291c0f0200000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11101213131414131311100d0b07040000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000b16202b36404a545d666f7880878d93999da1a4a6a3a1a09f9e9f9fa1a3a6a4a19d99938d8780776f665d53493e34291e12070000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aca5988b7e7165584b3e3225180b00000000000000000508090a0a0a0a0a0a0a0a09080501000000000000000000000000000206080a0a0a0a0a0a0a0a0a09070400000000000000000000000000000000000000000000000001080f151a1f24282c2f32343637383939393938363532302d2925211c16110a040000000000000000000000000000000000000000000000000000000004101c28333f4b57636f7a86929eaab6aca195897d7165594d4135291e12060000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c37414c566069737c848c949ba1a7a5a19d9a98969696989a9da1a6a6a19a938b837b72685f554b41362c21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0e1112131312110f0c0905000000000000050a0f11131313131313110d09030000000000000000000000000000000000000000000000000000040a0e11131313131313131313110e0a05070c0f12131313131313131312100c0701000000000000000000000000000000000000000000000000020d19242f3a45515c67727d898a7f73685d52473c30251a0f04000000000000000000000000000007121d27323c46505a646d7780899199a1a8ada59e98928c87837e7b78767574737373747577797c7f83878c92989ea5aca59d958d857c736960564c42382d23180d030000000000000c1824303b454e555a5a5a5a5a5a5a5a5a5a5751493f34281d1105000000000000000000000000000000000000000000030f1b26323d4750565a5a5a5a5a5a5a5a5a5a564f463b3025190d010013202c3946525f6c777b7b7b7b7b7b7b7a71685e544b41372d23190f05000000000000000000000000000000000000000000000000000000000c1926323f4c5865727e8c989c8f8275695c4f4236291c0f0300000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1b1d1e1f202020201f1e1c1a1714100c07020000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000040f19242e38424b545d666e757c82888d9195989a9c9e9f9fa09f9f9e9c9a9895918d88827c756d655d544b41372d22170c010000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a0a0a0988b7e7165584b3e3225180b000000000000060c11141617171717171717171614110c070000000000000000000002080e12151617171717171717171614100b0500000000000000000000000000000000000000000000000003090f14181c20232527292b2c2c2c2c2c2b2a282623201d1915100b050000000000000000000000000000000000000000000000000000000000000915202c3844505c6773808b97a3afb7b1a5998d82756a5e52463a2e22160a0000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333e48535d68727b858e969ea6a7a09a95918d8b8a8a8a8b8d91959aa0a7a59d958d847a71675d52483d32271c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a56616c778284796d62574c41352a1f14090000000000000000000000000000020d18232e39434e58626c768089929ba3ababa39b948d86817b76726f6c6a686766666667686a6c6f73777b81868d949ba3aba79f978e857b72685e54493f342a1f1409000000000000101c2935414c576066676767676767676767635b5045392d21160a00000000000000000000000000000000000000000008141f2b37434e59616767676767676767676661574d4135291d110400131f2c3945525e6b757f888888888888837a70665d53493f352b21170c020000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c999c8f8276695c4f4336291c100300000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a2527292b2c2d2d2d2d2c2b292623201c18130d0701000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000008121c263039424b545c636a71777c8185888b8e9091929293939291908e8b8985817c77716a635c534b42392f251b1006000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8893939393938b7e7165584b3e3225180b00000000010a11181d2123232323232323232323211d18110a0200000000000000040c13191e2123232323232323232322201c160f080000000000000000000000000000000000000000000000000003080c101316191b1d1e1f1f201f1f1e1d1b191714110d090400000000000000000000000000000000000000000000000000000000000000020e1925313d4955606c7884909ca8adaaabaa9e92867a6e62564a3f33271b0f0300000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e39444f5a656f79848d97a0a8a49c958f8984817e7d7d7d7e8184898f959da5a79f968c83796f645a4f44392e23170c0000000000000000000000000000000000000000000000000000000306070707070707070707070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010304050607070707060504030100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e39444f5b66717c7e72675c51463a2f24190e02000000000000000000000000000008141f2a35404a55606a747e88929ba4adaaa1999189827b756f6a66625f5d5b5a59595a5a5c5d6063666b70757b82899199a1aaa9a0978d847a70665b51463b31261a0f040000000000121f2b3844515d69727474747474747474746c61564a3e32261a0e0300000000000000000000000000000000000000000c1824303c48545f6b73747474747474747472695e5245392c1f130600111e2a36424e59636d77818a949494948c82786f655b51473d33291e14090000000000000000000000000000000000000000000000000000000d192633404c596673808c999c908376695c4f4336291d100300000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372e31343638393a3a3a3a39373533302c28231e18120c050000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000a141e273039424a52595f666b7075797c7e81838485868686858483817f7c7975706b665f59514a413930271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b868686868686867e7165584b3e3225180b000000010a131b23292d2f3030303030303030302d29231c140b010000000000040d161e252a2e3030303030303030302f2c27211a110800000000000000000000000000000000000000000000000000000004070a0c0e1011121313131212100f0d0a08040100000000000000000000000000000000000000000000000000000000000000000006121e2a36424d5965717d8995a0a9a19d9fa5a2968b7e73675b4f43372b1f140800000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201309090909090909090909090909090909090909090909090908070401000000000000000000000006121d29343f4b56616c76818b969fa9a49b928b837d7874727070707274787d848b939ba4a89f958b81766b60554a3f34281d1106000000000000000000000000000000000000000000000000060b0f1214141414141414141414120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090b0d0f111213131414131312110f0d0b0906020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d28333e4955606b76776c61564b4034291e13080000000000000000000000000000030e1925303b46515c67717c86909aa4adaba1988f877f77706a645f5a5653514f4d4d4d4d4e4f5153575a5f646a70777f878f98a1aba99f968c82776d62584d42372c21150a0000000000131f2c3946525f6c7981818181818181817e72665a4e42372b1f13070000000000000000000000000000000000000005111d2935404c5864707c8181818181818181796d6053463a2d201307000e1a26323d48515b656e78828c96a09e948a81776d63594f453a30261b110600000000000000000000000000000000000000000000000000000d192633404c596673808c999d908376695d5043362a1d100300000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044373a3d40424446464747464544423f3c38342f2a241d160f0700000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000020c151e27303840474e545a6064696c6f72747677787979797978767572706c6964605a544e47403830271e150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616d7779797979797979797064574b3e3125180b00000008121c252d34393c3d3d3d3d3d3d3d3d3c39342e261d130900000000010b161f2830363a3d3d3d3d3d3d3d3d3d3c38332c231a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a46525e6a76828d99a5a19791939ca69b8f83776b5f54483c3024180c00000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20151515151515151515151515151515151515151515151515151514110c07000000000000000000000b17222e3a45515c67727d88939da7a59b92898079726c686564636365686d72798189929ca6a79d92887d72675c5045392e22170b00000000000000000000000000000000000000000000020a11171c1f202020202020202020201f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000002070b0f1215181a1c1d1f2020202020201f1e1c1a1815120f0b070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38434f5a646b6b655b50453a2e23180d02000000000000000000000000000008141f2b36414d58636e78838e98a2acaca2998f867d756d655f58534e4a47444241404040414244474a4e53595f656d757d868f99a2aca89e94897f74695e53483d32261b100400000000121e2b3844505d6874808c8e8e8e8e8e8e83776b5f53473b2f24180c000000000000000000000000000000000000000a16212d3945515d6975818c8e8e8e8e8e8d8175695d5145382c1f1306000a15212b363f49535c66707a848e99a39c93897f756b61564c42372d22180d02000000000000000000000000000000000000000000000000000d1a2633404d596673808d9a9d9083766a5d5043372a1d100400000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d504442464a4d4f51525353535352504e4c4844403b352f2821191109000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000030c151e262e353c43494f54585c60636668696b6c6c6c6c6c6b6a686663605d58544f49433c352e261e150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3845515c666c6c6c6c6c6c6c6c6c685e53483c2f23160a0000030f1a242e373f45494a4a4a4a4a4a4a4a49453f382f251a0f0400000007121d27313a4146494a4a4a4a4a4a4a4a48443d352c22170c01000000000000000407080808080808080807050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333f4b57636e7a86929ea89c90858a96a2a094887c7064584c4034291d1105000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c222222222222222222222222222222222222222222222222222222201d18120b030000000000000004101c27333f4b56626d78848f9aa4a99e948980766e67615c59575657595c61676f77808a949ea9a4998e83786d61564a3f33271c10040000000000000000000000000000000000000000020c141c23282b2d2d2d2d2d2d2d2d2d2d2b27221c140b020000000000000000000000000000000000000000000000000000000000000000000004090e13171b1e222427282a2b2c2d2d2d2d2c2b2a292724211e1b17130e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27323d48525a5f5f5b53493f33281d12070000000000000000000000000000010d1925303c47535e69747f8a959faaafa49a90877d746b635b544d47423e3a3735343333333436383b3e42474d545b636b747d87909ba5afa59b90867b70655a4e43372c20150900000000101c2834404c58646f7b87939a9a9a9a93877b6f64584c4034281c11050000000000000000000000000000000000020e1a26323e4a56616d7985919a9a9a9a94887c7064584d4135291d100400040f1a242d37414a545e68727c87919ba59b91877d72685e54493f34291f1409000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9a9d9084776a5d5044372a1d110400000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d50494e5256595c5e5f606060605f5d5b5854504b46403a332b231b12090000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000030c141c242b32383e43484c505457595b5d5e5f5f5f5f5f5e5d5b595754504c48433e38312b231c140c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28343f4a545b5f5f5f5f5f5f5f5f5f5c564d42372b1f130700000814202b3640495155565656565656565655514a41372c2115090000000c18232f39434c52565656565656565656544f473e34291d12060000000000060c1013151515151515151514110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c3844505c67737f8b97a3a4988c8086929ea4988c8175695d5145392d211509000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d29231d150c030000000000000814202c3844505b67737e8a95a0aba2978c82776e655c55504c4a4a4a4c50565d656e78828d98a3aba095897e72675b5044382c20140800000000000000000000000000000000000000000a141e262e34383a3a3a3a3a3a3a3a3a3a38332d261d140a000000000000000000000000000000000000000000000000000000000000000003090f151a1f23272b2e3133353738393a3a3a3a3938373533312e2b27231e1a140f090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3640484f52524f4941372d22170c01000000000000000000000000000006121e2a35414d58646f7a86919ca6b1a89d93887e756b62595149423c36322e2b292727262728292b2e32373c42495159626b757e89939ea8ada2978c81766b5f54493d31261a0e020000000c18242f3b47535f6b76828e9aa6a7a4988c8074685c5145392d211509000000000000000000000000000000000007131f2b37424e5a66727e8a96a2a7a79b8f83776b5f54483c3024180d00000008121b252f39424c56606b757f8a949ea3998f847a70655b50463b30261b10050000000000000000000000000000000000000000000000000d1a2734404d5a6773818d9a9d9184776a5d5144372a1e110400000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d50555a5e6266686a6c6d6d6d6c6b6a6764615c57514b443d352d241b120900000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000020a121920272d32373c4044474a4d4f5051525353535251504f4d4a4744403c37322d262019120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e38424a4f525353535353535353504b443b30261a0f0300000c1825313c48525b616363636363636363625c53483d3125190d010004101c2834404b555e626363636363636363605950453a2e221609000000020a11181c202122222222222222201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925313d4954606c7884909ca7a094887c818d99a59d9185796d61554a3e32261a0e020000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53463c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b39352e271e140a0000000000000c1824303c4854606c78848f9ba6a89c91867b70665c534b44403d3d3d40444b535c66707b86919da8a69a8f84786c6054483c3024180c0000000000000000000000000000000000000006111c2630383f4447474747474747474746443f382f261c1106000000000000000000000000000000000000000000000000000000000000070e141b20262b2f33373a3d40424345464647474646454442403d3a37332f2a25201a140d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a242e363d434646433e372f261b11060000000000000000000000000000000b17232e3a46525e6975808c97a2adaca1968b81766c635950473f38312b26221e1c1b1a1a1a1b1d1f22262b31383f475059636d77818c97a2ada99e93877c7065594e42362a1f130700000007131f2b37424e5a66727d8995a1ada89c9185796d6155493d32261a0e02000000000000000000000000000000000c18232f3b47535f6b77838e9aa6aea2968a7e72675b4f43372b2014080000000009131d27303a444f59636d78828d97a2a0968c82776d62574d42372c21160b0000000000000000000000000000000000000000000000000e1a2734414d5a6774818e9a9e9184776a5d5144372b1e110400000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5a60666a6e72757778797a7a79787674716d68635d564f473f372e241b1107000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000070e151b21272c3034383b3e404243454546464646454442403e3b3834302c27211b150e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f4346464646464646464644403a32291f14090000000f1b2834414d59646d70707070707070706d655a4e4235291c0f030006131f2c3845515c676f70707070707070706b62564a3e3225180c0000020b141c23282c2e2e2e2e2e2e2e2e2d29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a36414d5965717d8994a0a89c9084787d8995a1a1968a7e72665a4e42362a1e13070000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5348484848484848484848484848484848484848484848484848484848484845403930261c11060000000004101c2834404d5965717d8994a0aca3978b8074695e544a4139343130313439414a545f6a75808c97a3aba094897d7165594d4135281c10040000000000000000000000000000000000000c17232e38424a5053535353535353535353504941382d22170b00000000000000000000000000000000000000000000000000000000020a11191f262c31363b3f43474a4c4e505152535353535352504e4c4a47433f3b36312b251f1811090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c242c3236393937332d251d140a000000000000000000000000000000030f1b27333f4b57636e7a86919da8b1a69a8f847a6f655a51473e352d261f1a1612100e0d0d0d0e1012161a20262d353e47515b65707a85909ca7afa4998d82766a5e53473b2f23170b000000020e1a26323d4955616d7884909ca8ada195897d72665a4e42362a1f130700000000000000000000000000000004101c2834404c58636f7b87939faba99d9185796e62564a3e32271b0f0300000000010b151f29333d47515c66707b86909ba69e93897e74695e54493e33281d120700000000000000000000000000000000000000000000000e1b2834414e5a6774818e9a9e9184776b5e5144382b1e110500000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5e656b71767b7e818485868787868583807d78746e686159514940372d23190f050000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000000040a10161b2024282b2f3133353738393939393938373534312f2c2824201b16100a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333739393939393939393938342f2820170d02000000101c2936434f5c69757d7d7d7d7d7d7d7d766a5d5043372a1d1004000714202d3a4753606d797d7d7d7d7d7d7d7d7366594d4033261a0d00000a141d262e34383b3b3b3b3b3b3b3b39352f281f160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a46525e6a76828d99a5a4988c80747985919da69a8e82766a5f53473b2f23170b0000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f55555555555555555555555555555555555555555555555555555555555555514b42382e23170b000000000713202c3844515d6975818d99a5aa9e92867a6f63584d42382f28242324282f38434d58646f7b87929eaaa5998d8175695d5145382c201407000000000000000000000000000000000004101c28343f4a545c606060606060606060605b53493f33271b0f030000000000000000000000000000000000000000000000000000040c141c232a31373d42474b4f5356595b5d5e5f606060605f5e5d5b5956534f4b47423c363029231b130b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a121a21262a2c2c2a27221b130b0200000000000000000000000000000007131f2b37434f5b67737f8b97a2aeaba095897e73685d53493f352c231b140e090603000000000003060a0e141b232c353f49535e69747f8a96a1adaa9e92877b6f63574b3f33271b0f030000000915212d3944505c6874808b97a3afa69a8e82766a5f53473b2f23170b0000000000000000000000000000000915212d3944505c6874808c98a4afa4988c8175695d51453a2e22160a000000000000030d17212b353f4a545f69747f8a949fa59b90867b70655a4f44392e23180d01000000000000000000000000000000000000000000000e1b2834414e5b6774818e9b9e9184786b5e5145382b1e120500000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a6870767d82878b8e909293949393918f8d89857f79726b635b52493f352b21160c0100000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000000000050a0f14181c1f222527292a2b2c2c2c2c2c2b2a292725221f1c18140f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22272b2c2c2c2c2c2c2c2c2c2b28231d160e0500000000101c2936434f5c6976838a8a8a8a8a8a84776a5d5044372a1d1104000714202d3a4753606d7a878a8a8a8a8a8a807366594d4033261a0d0006111c262f383f45484848484848484846413a31281e1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333f4b57636e7a86929eaaa094887c7074818d99a59f93877b6f63574b3f34281c100400000000000000000000000013202c3946535f6c798693a0acaca09386796c62626262626262626262626262626262626262626262626262626262626262615c544a3f34281c0f030000000a17232f3c4854606d7985919da9a69a8e82766a5e52473b30261d1817181d26313c47535e6a76828e9aa6a99d9185796d6154483c3023170b000000000000000000000000000000000006131f2c3845505c666c6d6d6d6d6d6d6d6d6c655b5044382b1f120600000000000000000000000000000000000000000000000000040d161e262e353c42484e53585c5f626567696b6c6d6d6d6d6c6b696865625f5b57524d48423b342d251d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161a1e1f201e1b16100901000000000000000000000000000000000a16232f3b47535f6c7884909ba7b2a69b8f84786d61564c41372d231a110a030000000000000000000000030a111a232d37424c57636e7985919ca8afa3978c8074685c4f43372b1f130600000005101c2834404b57636f7b87929eaaaa9f93877b6f63574b4034281c100400000000000000000000000000020e1a25313d4955616d7985919ca8ab9f94887c7064584c4135291d110500000000000000050f19232e38434d58626d78838e99a4a2978c82776c61564b4034291e1307000000000000000000000000000000000000000000000f1b2835424e5b6875818e9b9e9285786b5e5145382b1e120500000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a727a81888e93979a9d9ea0a0a09f9e9c9995908b847d756d645b51473d33281d120700000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000000000000003080c0f1316181a1c1d1e1f2020201f1f1e1c1a181613100c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1e2020202020202020201f1c18120c040000000000101c2936434f5c69768390969696969084776a5d5044372a1d1104000714202d3a4753606d7a8794969696968d807366594d4033261a0d000b17222d38424a515455555555555555524c433a30251a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c3844505c67737f8b97a3a89c9084786c707c8894a0a3978b8074685c5044382c20140900000000000000000000000013202c3946535f6c798693a0acaca09386796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d665c5044382b1f12050000000d1a26323f4b5764707c8995a1ada2968a7e7165594d41362a1f140b0a0b151f2b36424e5a66727e8a96a3aea195897d7064584b3f33261a0e01000000000000000000000000000000000814212e3b4754606d787a7a7a7a7a7a7a7a776c6053463a2d201407000000000000000000000000000000000000000000000000040d161f2830383f474d54595f63686c6f7274767779797a7a7979787674726f6b67635e59534d463f372f271f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e111313110f0a050000000000000000000000000000000000010d1a26323f4b57636f7c8894a0acaea2968a7e72675b50453a2f251b110800000000000000000000000000000008111b25303b46515d6874808c98a4b0a89c9084786c5f53473b2f22160a000000000c17232f3b47525e6a76828e99a5afa3978c8074685c5044382d21150a0a0a0a0a0a0a0a0a0a0a0a0a0a0a121e2a36424e5a65717d8995a1ada69b8f83776b5f54483c3024180d01000000000000000007111c26313b46515c66717c88939ea99e93887d72675c51463a2f24180d010000000000000000000000000000000000000000000f1b2835424e5b6875828e9b9f9285786b5f5245382c1f120500000000000000000000000000000000101c2936434f5c697683909ca9aa9d908477727b848c93999f9d9b9a9a9a9a9c9fa2a7a5a19c968f877f766d63594f443a2f24190e02000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000000000000000000000306090c0e0f111212131313131211100e0c0907030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213131313131313131312100c0701000000000000101c2936434f5c697683909ca3a39d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0a3a39a8d807366594d4033261a0d000f1b27333f4a545c61616161616161615d564c41362c21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925313d4854606c7884909ca7a4988c8073676c7884909ca89c9084786c6054493d3125190d01000000000000000000000013202c3946535f6c798693a0acaca093867b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786c605346392d201307000003101c2935424e5b6773808c98a5ac9f93877a6e6255493d3125190e0200030e1a25313d4956626e7a87939faca5998c8074675b4f4236291d1004000000000000000000000000000000000815212e3b4854616e7b87878787878787877a6d6053473a2d2014070000000000000000000000000000000000000000000000020c161f28313a424a51585f656a6f74787b7e8183848586868786868483817e7b78736f6a645e575049413931281f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2936424e5b6773808c98a4b0a99d9185796d62564a3f34291e1309000000000000000000000000000000000009141e2a35404c58636f7b8794a0acaca094887c6f63574a3e3225190d0000000007131e2a36424e5965717d8995a0aca89c9084786d6155493d31251917171717171717171717171717171717232f3b47525e6a76828e9aa6ada2968a7e72665b4f43372b1f1408000000000000000000000a151f2a343f4a55606b76818d98a3a59a8f84786d62574c4035291e12070000000000000000000000000000000000000000000f1c2835424f5b6875828f9c9f9285786b5f5245392c1f120600000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084777b848d969d9894918f8d8d8d8e8f92969ba1a8a7a09991887e756b61564b40352a1f1308000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00121e2b37434f5b666d6e6e6e6e6e6e6e685e53483d32281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a36414d5965717d8994a0aca094887b6f636874808c98a4a195897d7165594d4135291e1206000000000000000000000013202c3946535f6c798693a0acada1958b888888888888888888888888888888888888888888888888888888888888888886796d6053463a2d201307000006121f2b3844515d6a76838f9ca8a99c9084776b5e5246392d2115090000000915212d3a46525e6b7784909ca9a89c9083776a5e5145382c1f1306000000000000000000000000000000000815212e3b4854616e7b88949494949494877a6d6053473a2d20140700000000000000000000000000000000000000000000000a141e28313a434c545c636a70767b8084888b8d8f91929393939392918f8d8b8784807b756f69625b534b433a31281e140a00000000000000000000000000040708090909090909090909090909090909090909090909090909090909090909090909090909090909090909080704000000000000000000000713202c3845515e6a76838f9ca8b2a6998d8175695d5145392e22170c010000000000000000000000000000000000020d18242f3b47535f6b7784909ca8b0a4988b7f73665a4e4135281c0f03000000020e1a25313d4955606c7884909ca7ada195897d7165594e42362a232323232323232323232323232323232328333f4b57636f7b87929eaaa99d9185796d62564a3e32271b0f0300000000000000000000030d18232e39444f5a65707b87929da9a0958a7e73685d51463a2f23180c0000000000000000000000000000000000000000000f1c2936424f5c6875828f9c9f9286796c5f5246392c1f130600000000000000000000000000000000101c2936434f5c697683909ca9aa9d908378838d9697918c8884828180808183868a8f969da5aba39a91877d72685d52473b3024190d010000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0d0f0e0c09050000000000000000000001060a0d0e0e0d0a06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0013202c3946525f6c777b7b7b7b7b7b7a6f645a4f44392e23190e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a46525e6a75818d99a5a89b9083776b5f636f7b8894a0a5998d81756a5e52463a2e22160a000000000000000000000013202c3946535f6c798693a0acb1a69d96959595959595959595959595959595959595959595959595959595959595959386796d6053463a2d20130700000814212e3a4753606c7985929eaba69a8d8174685b4f42362a1d110500000005111e2a36434f5b6874818d9aa6ab9f9286796d6054473b2e221509000000000000000000000000000000000815212e3b4854616e7b8894a0a0a0a094877a6d6053473a2d2014070000000000000000000000000000000000000000000007111c26303a434d555e666d747b81878c9094979a9c9e9fa0a0a0a09f9e9c9a9794908b86817a746d655d554c433a30261c120700000000000000000000070c1114151515151515151515151515151515151515151515151515151515151515151515151515151515151515151513100b0500000000000000000916222f3b4854616d7986929fabafa2968a7d7165594d4135291d11060000000000000000000000000000000000000007131f2b37434f5b6774808c99a5b2a79b8f8276695d5044372b1e1205000000000915212c3844505c67737f8b97a3aea59a8e82766a5e52463b303030303030303030303030303030303030303844505c6873808b97a3afa4988c8175695d5145392e22160a00000000000000000000000007111c27323d48535f6a75818c98a3a69b9085796e62574b4034281d110500000000000000000000000000000000000000000f1c2936424f5c6975828f9c9f9286796c5f5346392c20130600000000000000000000000000000000101c2936434f5c697683909ca9a99c90837f8a94948d86807b787574737374767a7e848b939ca5aca3998f84796e63584c41352a1e12060000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e13171a1b1b1915110b0300000000000000050c1216191b1b1a16120d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00131f2c3945525e6b7681888888888881766b60564b40352a1f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27333f4b57636e7a86929eaaa3978b7f73675b5f6b7784909ca89e92867a6e62564a3f33271b0f030000000000000000000013202c3946535f6c798693a0acb8afa7a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a09386796d6053463a2d20130700000a1623303c4955626f7b8894a1ada4988b7e7265594c4033271a0e01000000020e1a2733404c5965727e8b98a4aea195887c6f6356493d3024170b000000000000000000000000000000000815212e3b4854616e7b8894a1adada094877a6d6053473a2d201407000000000000000000000000000000000000000000030e19232e38424c555f6770787f868d92989ca0a3a6a9aaa9a8a8a8a8a9aaa9a6a3a09c97928c867e776f675e554c42382e24190f0400000000000000020b12181d2022222222222222222222222222222222222222222222222222222222222222222222222222222222222222221f1c171009010000000000000b1824313d4a5763707c8995a2aeac9f93877a6e6155493d3024180c0100000000000000000000000000000000000000020e1b27333f4b5864717d8a96a3afaa9e9185786c5f53463a2d2114070000000004101c28333f4b57636e7a86929ea9aa9e92867a6f63574b3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4954606c7884909ca8ab9f93887c7064584c4035291d1105000000000000000000000000000b16212c37424e5964707b87929eaaa1968a7f73685c5145392d22160a0000000000000000000000000000000000000000101c2936434f5c6976838f9ca09386796c5f5346392c20130600000000000000000000000000000000101c2936434f5c697683909ca9a89b8f828590948a827b756f6c69676666686a6e7379818a939da8aba0968b8074695d52463a2e22170a0000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000001060b10151a1f2427282825211c150e050000000000070f171d2226282826221e19140f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00111d2a36424e59646f7a858f959592887d72675c51473c31261b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202c3844505b67737f8b97a3ab9f93877b6f63575b6773808b97a4a2968b7e73675b4f43372b1f14080000000000000000000013202c3946535f6c798693a0acb9b1aaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a09386796d6053463a2d20130700000c1825313e4b5764717d8a96a3afa296897c7063574a3e3124180b00000000000b1824313d4a5763707c8996a2afa4978b7e7165584b3f3226190c000000000000000000000000000000000815212e3b4854616e7b8894a1aeada094877a6d6053473a2d20140700000000000000000000000000000000000000000009141f2a353f4a545e677179828a91989ea3a8aca7a4a19e9d9c9b9b9c9d9ea1a4a7aca8a39d979089817970675e544a40352b20150a000000000000020c141c23292d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2c28221b130a0000000000000d1a26333f4c5965727e8b98a4b1a99d9084776b5e5245392d2014080000000000000000000000000000000000000000000b1723303c4855616e7a8794a0adada094877b6e6255483c2f23160900000000000b17232f3a46525e6a75818d99a5afa3978b7f73675c504a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4d5965717d8995a0aca69a8f83776b5f53483c3024180c0100000000000000000000000000040f1b26313c48535f6a76828d99a5a79b9084796d61564a3e32261b0f0300000000000000000000000000000000000000101d293643505c697683909ca09386796d6053463a2d20130700000000000000000000000000000000101c2936434f5c697683909ca9a99c91888b958b81787069645f5c5a595a5b5e62686f78818b96a1aca79c91857a6e62574b3f33271b0e0200000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000003080d12171c21262b30333534322d271f170e0400000006101921282e323535322e2925201b16110c070200000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000e1a26323d48525d68737e89939e998e84796e63584d43382d22170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925313d4854606c7884909ba7a79b8f83776b5f5357636f7b87939fa79b8f83776b5f54483c3024180c0000000000000000000013202c3946535f6c798693a0acb3a89f9a999999999999999999999999999999999999999999999999999999999999999386796d6053463a2d20130700000d1a2633404c5966727f8c98a5ada194877b6e6155483c2f22160900000000000916222f3b4855616e7b8794a1ada6998c8073665a4d4134271b0e010000000000000000000000000000000815212e3b4854616e7b8894a1a4a4a094877a6d6053473a2d2014070000000000000000000000000000000000000000030e1a25313c47515c667079838b949ba3a9aca5a09b979492908f8f8f8f909294989ba0a6aca8a29b938b82796f665c52473c32271c100500000000000a141e262e34393b3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b38332d251c120800000000000f1b2835414e5a6774818d9aa6b3a79b8e8275685c4f43362a1d11050000000000000000000000000000000000000000000814202d3946535f6c7885919eabafa396897d7063574a3e3124180b000000000006121e2a36414d5965717c8894a0aca79c9084786c6056565656565656565656565656565656565656565656565e6a75828d99a5ada2968a7e72665a4f43372b1f14080000000000000000000000000000000914202b37424e5965717c8894a0aca1958a7e72665b4f43372b1f130700000000000000000000000000000000000000101d2a3643505d697683909da09386796d6053473a2d20140700000000000000000000000000000000101c2936434f5c697683909ca9ada29a95968e83796f665f5853504e4d4d4e51565d666f79848f9aa6ada2968b7f73675b4f43372b1e120600000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000050a0f14191e23282d31363b4041413e38312920160b0000020d18222b333a3f41413f3a35302b26221d18130e09040000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000915202b36414c57616c77828d97a0958a80756a5f54493e34291e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a35414d5965717c8894a0aca2968a7e72665a4e535f6b77838f9ba7a094887c7064584c4034291d110500000000000000000013202c3946535f6c798693a0acaea2978e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c86796d6053463a2d20130700000e1b2835414e5b6774818d9aa7ac9f9386796d6053473a2d21140700000000000714202d3a4653606c7986929faca79b8e8275685b4f4235291c0f030000000000000000000000000000000815212e3b4854616e7b88949898989894877a6d6053473a2d201407000000000000000000000000000000000000000008141f2b36424d58636d78828c959da6ada8a19a948f8b888584828282828485888b8f949aa1a8aca59d948b82786e63594e43382d22160b0000000006111c26303840454848484848484848484848484848484848484848484848484848484848484848484848484848484848484848443e372e24190e0300000000101d2936434f5c6975828f9ba8b2a5998c8073665a4d4034271b0e0200000000000000000000000000000000000000000005121e2b3744515d6a7683909ca9b1a4988b7e7265584c3f3226190c0000000000020d1925313d4854606c78848f9ba7aca094897d71656363636363636363636363636363636363636363636363636e7a86929eaaa99d9185796d62564a3e32261b0f03000000000000000000000000000000030f1a26313d4854606c77838f9ba7a69a8f83776b5f53473b2f23170b00000000000000000000000000000000000000111d2a3744505d6a7683909da094877a6d6053473a2d20140700000000000000000000000000000000101c2936434f5c697683909ca9b4aba59f93887c72675d544d474341404042454c545d68737e8a95a1ada79b8f84776b5f53473b2e22160900000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000002070c11161b20252a2e33383d42474c4e4d4a433b32271d11060008141f2a343d454b4e4e4b46413c37322d28231f1a15100b06010000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00040f1a252f3a45505b65707b86919c9c91867b71665b50453a30251a0f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a46525e6a75818d99a5a99d92867a6e62564a4f5b67737f8b97a3a4988c8175695d5145392d21150900000000000000000013202c3946535f6c798693a0acaca093867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6053463a2d2013070000101c2936424f5c6975828f9ba8ab9e9285786b5f5245392c1f1206000000000006121f2c3845525e6b7884919eaba99c908376695d5043372a1d11040000000000000000000000000000000815212e3b4854616e7b888b8b8b8b8b8b877a6d6053473a2d20140700000000000000000000000000000000000000000c1824303c47535e69747f8a949ea7afa69e968f89847f7b79777575757577797b7f84898f969ea6afa69d948a80756a6055493e33271c10040000000b17222d38424a515555555555555555555555555555555555555555555555555555555555555555555555555555555555555554504940362b20140800000000111e2a3744515d6a7783909da9b1a4978b7e7165584b3f3225190c0000000000000000000000000000000000000000000002101c2936424f5c6875828e9ba8b3a6998c8073665a4d4034271a0d0000000000000814202c38444f5b67737e8a96a2aea5998d817570707070707070707070707070707070707070707070707070737f8b97a2aea4988c8175695d5145392d22160a00000000000000000000000000000000000915202c38434f5b67737f8b97a3ab9f93887b7064584c4034271b0f03000000000000000000000000000000000000111d2a3744505d6a7784909da094877a6d6154473a2e21140700000000000000000000000000000000101c2936434f5c697683909ca9b6b2a59a8e82766b60554b423c37343334353a424c56616d7985919da9aca094887b6f63564a3e3125190c00000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000000000000000000000000000000000000000000000000000000004090e13181d22272b30353a3f44494e53585b5a554d44392e22160a000d1925303b464f565a5b57524d48433e39342f2a25201c17120d0803000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000008131e29333e49545f69747f8a95a0988d82776c62574c41362c21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000004101b27333f4b57626e7a86929eaaa5998d8175695d51454a57636f7b87939fa99d9185796d6155493e32261a0e02000000000000000013202c3946535f6c798693a0acaca0938679727272727272727272727272727272727272727272727272727272727272727271685d5145382c1f13060000111d2a3743505d6a7683909da9aa9d9084776a5d5144372b1e1105000000000004111e2a3744515d6a7784909daaaa9d9184776b5e5144382b1e12050000000000000000000000000000000815212e3b4754616e7a7e7e7e7e7e7e7e7e796d6053473a2d2014070000000000000000000000000000000000000004101d2935414d58646f7b86919ca6afa79d948c847d78736f6c6a696868696a6c6f73787e848c949da6afa69c91877c71665b4f44382c2115090000000f1b27333f4a545c61626262626262626262626262626262626262626262626262626262626262626262626262626262626262605a52473c3125190c00000000121f2b3845515e6b7884919eabb0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000e1b2834414e5a6774818d9aa7b4a79a8e8174675b4e4134281b0e000000000000040f1b27333f4a56626e7a86919da9aa9e92867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d848f9ba7ab9f93877b7064584c4035291d11050000000000000000000000000000000000040f1b27333f4a56626e7a86939faba4988c8074685c5044382b1f1307000000000000000000000000000000000000111e2a3744515d6a7784919da194877a6d6154473b2e21140800000000000000000000000000000000101c2936434f5c697683909ca9b6aea195897d71655a4f4439312b28272729303a45505c6874818c99a5b0a4978b7e72665a4d4134281b0f02000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000000000000000000000000000000000000000000000000001060b10151a1f23282d32373c41464b50555a5f6468665f554a3f33261a0e00101d2935414d58616767625d59544f4a45403b36312c27221d18140f0a0500000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000010c17222d37424d58636e78838e999f94897e73685e53483d32271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000814202c38444f5b67737f8b97a2aca094897c7165594d4146525e6a77838f9ba7a1968a7e72665a4e42362a1e1307000000000000000013202c3946535f6c798693a0acaca09386796c65656565656565656565656565656565656565656565656565656565656565655f564c4135291d10040000121e2b3844515e6b7784919eaaa99c908376695d5043362a1d1004000000000000101d293643505c6976838f9ca9ab9e9285786b5f5245392c1f12060000000000000000000000000000000714202d3946525e6970717171717171717170685d5145382c1f1306000000000000000000000000000000000000000814202d3945515d6975818c97a2ada99f958b827a736c6763605d5c5b5b5c5d6063676c737a828a949da7aea3988e82776c6055493d3125190d010000121e2b3743505b666d6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6c64594d4134281b0f00000000121f2c3945525f6b7885929fabafa295897c6f6256493c2f23160900000000000000000000000000000000000000000000000d1a2733404d596673808d99a6b3a89b8e8275685b4f4235281c0f000000000000000b16222e3a46525d6975818d98a4aea2978d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b94a0aca69a8f83776b5f53473c3024180c000000000000000000000000000000000000000b16222e3a46525e6a76828e9ba7a89c9084786c6054473b2f23170a000000000000000000000000000000000000111e2b3744515e6a7784919ea194887b6e6154483b2e21150800000000000000000000000000000000101c2936434f5c697683909ca9b6aa9e9285796d6155493d32271f1b1a1a1e2834404c5864707d8995a2aea79b8e8275695c5043372a1e1105000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000000000000000000000000000000000000003080d12171c20252a2f34393e43484d52575c61656a6f7471675b4f4236291c1000121f2c3845515e6973736e69645f5a55514c47423d38332e29241f1a15100c070200000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000005101b26313c46515c67727c87929d9a90857a6f64594f44392e23190e0300000000000000000000000000000000000000000000000000000000000000000000000000010d1925313d4854606c78848f9ba7a89c9084786c6054483c424e5a66727e8b97a3a69a8e82766a5f53473b2f23170b000000000000000013202c3946535f6c798693a0acaca09386796c5f59595959595959595959595959595959595959595959595959595959595958544d443a3024180d000000121f2c3845525f6b7885929eaba89c8f8275695c4f4236291c10030000000000000f1c2935424f5b6875828f9ba8ac9f9286796c5f5346392d20130600000000000000000000000000000005111d2a36414c575f646464646464646464645f564c4135291d1004000000000000000000000000000000000000000b1724303c4955616d7985919da9aea2988d83797068615b5753514f4f4f4f5153575b61687078828b95a0abaa9f94887d7165594e4236291d1105000013202c3946525f6c787b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b75695c5043362a1d100000000013202c3946525f6c7986929facaea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000d192633404c596673808c99a6b2a89c8f8275685c4f4236291c0f0000000000000006121d2935414d5864707c88949faba89f98969696969696969696969696969696969696969696969696969696979da6ada1968a7e72665a4f43372b1f13080000000000000000000000000000000000000006121e2a36424e5a66727e8b97a3ada194887c7064574b3f33261a0e010000000000000000000000000000000000111e2b3844515e6b7784919ea194887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c697683909ca9b4a79b8e8275695d5145382d21160f0d0d1824303c4854616d7a86939facaa9e9185786b5f5246392d201307000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000000000000000000000000000000000050a0f14181d22272c31363b40454a4f54595d62676c71767b8076695d5043362a1d100013202c3946535f6c797f7a75706b66615c57524e49443f3a35302b26211c17120d09040000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000a141f2a35404a55606b76818b96a1968c81766b60554b40352a1f140a0000000000000000000000000000000000000000000000000000000000000000000000000006121e2935414d5965717c8894a0aca3978b8073675c5044383e4a56626e7a86939fab9f93877b6f63574b3f34281c10040000000000000013202c3946535f6c798693a0acaca09386796c5f534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c49433b32291e1308000000131f2c3946525f6c7986929faca89b8e8275685b4f4235281c0f020000000000000f1b2835424e5b6875818e9ba8ada09386796d6053473a2d201407000000000000000000000000000000010d1925303b454d5457575757575757575757534d443a2f24180d00000000000000000000000000000000000000000d1a26333f4c5865717d8a96a2aea89d91867b71675e56504b47444342424344474b50565e666f79848e99a4b0a5998e82766a5e5246392d211508000013202c3946535f6c7986888888888888888888888888888888888888888888888888888888888888888888888888888888888376695d5043362a1d100000000013202c3946535f6c798693a0acaea295887b6e6155483b2e22150800000000000000000000000000000000000000000000000c1926323f4c5965727f8c99a6b2a99c8f8275695c4f4236291c0f00000000000000010d1924303c48545f6b77838f9ba6b1a9a4a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a8afa99d9185796d61564a3e32261a0f0300000000000000000000000000000000000000010d1926323e4a56626f7b8793a0aca4988c8073675b4e4236291d11040000000000000000000000000000000000121e2b3845515e6b7885919ea295887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c697683909ca9b1a5988c7f73665a4d4135281c1004000714202c3945525e6b7784909daaaca093877a6e6154483b2f221509000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000000000000000000000000000002070c11151a1f24292e33383d42474c51565a5f64696e73787d82878376695d5043362a1d100013202c3946535f6c798686817c77726d68635e59544f4a46413c37322d28231e19140f0a06010000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000030e18232e39444e59646f7a858f9a9d92887d72675c51463c31261b10060000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a46525e6975818d99a5aa9f93877b6f63574b3f333a46525e6a76828e9aa6a3978b8074685c5044382c2014080000000000000013202c3946535f6c798693a0acaca09386796c5f53463f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3c38312920170c0200000013202c3946535f6c7986939faca89b8e8275685b4e4235281b0f020000000000000e1b2834414e5b6774818e9ba7ada094877a6d6053473a2d211407000000000000000000000000000000000915202c36404950555555555555555555544e473e33281e130700000000000000000000000000000000000000000f1c2935424e5b6774818d99a6b0a4988c8075695f554c453f3b3836353536383b3f454c545d67727d88939faaaa9e92867a6e6256493d3124180b000013202c3946535f6c7986939595959595959595959595959595959595959595959595959595959595959595959595959595908376695d5043362a1d100000000013202c3946535f6c7986929facaea295887b6e6155483b2f22150800000000000000000000000000000000000000000000000d192633404c5966727f8c99a6b2a89c8f8275695c4f4236291c0f00000000000000000814202b37434f5b66727e8a96a2adb4b1a9a29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa1a7afb3b0a4988c8074695d5145392d22160a0000000000000000000000000000000000000000000916222e3a46535f6b7784909ca9a89c8f83776a5e5245392d2014070000000000000000000000000000000000121f2b3845515e6b7885929ea295887b6f6255483c2f22150900000000000000000000000000000000101c2936434f5c697683909ca9afa396897d7064574b3e3225190c000004111d2a36434f5c6975828f9ba8afa295897c6f63564a3d3024170a000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000000000000000000000000000000004090e12171c21262b30353a3f44494e52575c61666b70757a7f84898e908376695d5043362a1d100013202c3946535f6c7986928d88837e79746f6a65605b56514c48433e39342f2a25201b16110c0703000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000007121c27323d48525d68737e89939e998e83786e63584d42382d22170c0100000000000000000000000000000000000000000000000000000000000000000000040f1b27333f4b56626e7a86929ea9a69a8e82766a5e53473b2f36424e5a66727e8a96a2a89c9084786c6054493d3125190d0100000000000013202c3946535f6c798693a0acaca09386796c5f53463932323232323232323232323232323232323232323232323232323232302c2720170e050000000013202c3946535f6c798693a0aca89b8e8174675b4e4134281b0e020000000000000e1a2734414d5a6774818e9aa7aea194877a6d6154473a2e211407000000000000000000000000000000000d1925313d48525b61626262626262626260594f453a2e2216090000000000000000000000000000000000000000111e2a3744505d6a76838f9ca8ada094887b6f64584d433a332e2b292828292b2e333a424b56606b76828e9aa6afa3968a7e7265594c4034271b0e020013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29d908376695d5043362a1d1000000000131f2c3946525f6c7986929facafa295887b6f6255493c2f22160900000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685b4f4235281c0f0000000000000000030f1b27323e4a56626d7985919da9b4aba0979292929292929292929292929292929292929292929292959ea8b4ab9f93877b7064584c4035291d110500000000000000000000000000000000000000000006121e2a37434f5b6874818d99a6ab9f93867a6d6155483c2f23160a0000000000000000000000000000000001121f2c3845525f6b7885929fa295887b6f6255493c2f22160900000000000000000000000000000000101c2936434f5c697683909ca9aea194887b6e6255483c2f23160a0000010e1b2834414e5a6773818d9aa6b0a4978a7e7164584b3e3225180c000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000000000000000000000000001060a0f14191e23282d32373c41464b4f54595e63686d72777c81868b909599908376695d5043362a1d100013202c3946535f6c79869398938e8a85807b76716c67625d58534e4944403b36312c27221d18130e090400000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000b16202b36414c57616c77828d97a0958a80746a5f54493e33291e1308000000000000000000000000000000000000000000000000000000000000000000000814202c38434f5b67737f8b96a2ada1968a7e72665a4e42362a323e4a56626e7a86929eaaa195897d7165594d4135291e120600000000000013202c3946535f6c798693a0acaca09386796c5f5346392c26262626262626262626262626262626262626262626262626262524201b150e05000000000013202c3946535f6c798693a0aca89b8e8174675b4e4134281b0e010000000000000e1a2734414d5a6774818e9aa7aea194877a6d6154473a2e211407000000000000000000000000000000000f1c2835414d59646d6f6f6f6f6f6f6f6f6b61564a3e3225190c0000000000000000000000000000000000000000121f2c3845525e6b7884919eaaaa9d9184786b5f53473c3128221f1d1c1c1d1f2228303a444f5a66717d8a96a2a5a49a8d8175685c4f43362a1d11040013202c3946535f6c7986939e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d908376695d5043362a1d1000000000121f2c3845525f6b7885929eabafa296897c6f6356493d3023170a00000000000000000000000000000000000000000000000e1b2734414d5a6774818d9aa7b3a79b8e8174685b4e4235281b0f0000000000000000000a16222e3945515d6974808c98a4afa79b8f86868686868686868686868686868686868686868686868c98a4b1a69a8e83776b5f53473c3024180c00000000000000000000000000000000000000000000020e1b2733404c5865717e8a97a3afa296897d7064574b3e3225190c0000000000000000000000000000000004131f2c3945525f6c7885929fa296897c6f6255493c2f22160900000000000000000000000000000000101c2936434f5c697683909ca9aca09386796d6053473a2d2114070000000d1926333f4c5965727f8c98a5b2a5988c7f7266594c3f3326190d000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000000000000003070c11161b20252a2f34393e43484c51565b60656a6f74797e83888d92969ba09d908376695d5043362a1d100013202c3946535f6c798693a09f9a95908b87827d78736e69645f5a55504b46413d38332e29241f1a15100b060100000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000040f1a252f3a45505b65707b86919c9c91867b70665b50453a2f251a0f040000000000000000000000000000000000000000000000000000000000000000010d1925313c4854606c78848f9ba7a99d9185796d6155493d32262d3946525e6a76828e9aa6a5998d8175695e52463a2e22160a00000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2019191919191919191919191919191919191919191919191919191714100a0300000000000013202c3946535f6c798693a0aca89b8e8174675b4e4134281b0e010000000000000e1a2734414d5a6774818e9aa7aea194877a6d6154473a2e21140700000000000000000000000000000000101d2a3743505d69767c7c7c7c7c7c7c7c73665a4d4033271a0d010000000000000000000000000000000000000013202c3946525f6c7986929faca89c8f8276695c5043372b1f1712100f0f1012171e28323d4955616d7a8692999998979084776b5e5245382c1f13060013202c3946535f6c7986929292929292929292929292929292929292929292929292929292929292929292929292929292908376695d5043362a1d1000000000111e2b3844515e6a7784919daab0a3978a7d7164574b3e3125180b00000000000000000000000000000000000000000000020f1c2935424f5b6875828e9ba8b3a69a8d8173675a4d4134271b0e00000000000000000005111d2935404c5864707b87939faba79b8f83797979797979797979797979797979797979797979808c98a4ada1968a7e72665a4e43372b1f130700000000000000000000000000000000000000000000000b1724303d4955626e7b8794a0ada5998c8073665a4d4134281b0f0200000000000000000000000000000006131f2c3946525f6c7986929fa296897c6f6356493c3023160900000000000000000000000000000000101c2936434f5c697683909ca9ab9f9285786c5f5245392c1f13060000000b1825323e4b5864717e8b98a4b1a69a8d8073675a4d4034271a0e000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000000000004090e13181d22272c31363b4044494e53585d62676c71767b80858a8e93989da2a49f9a908376695d5043362a1d100013202c3946535f6c7986939ba0a5a19c97928d88847e7a75706b66615c57524d48433e3935302b26211c17120d08030000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000008131e29333e49545f69747f8a95a0988d82776c61574c41362b21160b000000000000000000000000000000000000000000000000000000000000000006121e2935414d5965707c8894a0aca4988c8175695d5145392d212935414d5966727e8a96a2aa9e92867a6e62564a3f33271b0f03000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b0804000000000000000013202c3946535f6c798693a0aca89b8e8275685b4e4235281b0f020000000000000e1b2834414e5b6774818e9aa7ada094877a6d6054473a2e21140700000000000000000000000000000000101d2a3643505d6976838989898989898174675a4e4135281c10060000000000000000000000000000000000000013202c3946535f6c798693a0aca89b8e8275685b4e4235281c0f0603000003060c16212d3945515e6a77838e8d8c8b8a8986796d6053473a2d2114070013202c3946535f6c7985858585858585858585858585858585858585858585858585858585858585858585858585858585858376695d5043362a1d1000000000101d2a3743505d6976838f9ca9b1a5988b7e7265594c4033261a0d0100000000000000000000000000000000000000000005111e2a3744505d697683909ca9b2a5988c7f7266594c4033261a0d000000000000000000010c1824303c47535f6b77838e9aa6ab9f93877b706c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7884909ca8a89d9185796d61564a3e32261a0f0300000000000000000000000000000000000000000000000814212d3a46535f6c7885919eaba89b8f8275695c5043372a1e11040000000000000000000000000000000613202c3946535f6c7986939fa396897c6f6356493c3023160a00000000000000000000000000000000101c2936434f5c697683909ca9ab9e9184776b5e5145382b1e12050000000b1724313e4a5764707d8a97a4b0a79a8e8174675b4e4134281b0e000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000000000000000000001060b10151a1f24292e33383d41464b50555a5f64696e73787d82878b90959a9fa4a29d98938e898376695d5043362a1d100013202c3946535f6c79858a8f94999ea3a39e99948f8a85817b76726d68635e59544f4a45403b36322d28231e19140f0a05000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000010c17222d37424d58636d78838e999e94897e73685d53483d32271c1207000000000000000000000000000000000000000000000000000000000000000b16222e3a46525d6975818d99a5aca094887c7064584c4034291d25313d4955616d7a86929eaaa2968b7e73675b4f43372b1f1308000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca89b8e8275685b4f4235281c0f020000000000000e1b2835414e5b6874818e9ba8ada093867a6d6053473a2d20140700000000000000000000000000000000101c2936424f5c6875828e969696968f8276695d5044382d22180f0700000000000000000000000000000000000013202c3946535f6c7986929faca89b8e8275685b4e4235281c0f02000000000005101d2936424f5b68758181807f7e7d7d7c786d6054473a2d21140700131f2c3945525e6b7578787878787878787878787878787878787878787878787878787878787878787878787878787878787873685c4f4336291d10000000000f1c2935424f5b6874818e9ba7b3a69a8d8174675b4e4235291c10030000000000000000000000000000000000000000000714202d3946525f6b7885919eaab0a3978a7d7164584b3e3225180c0000000000000000000008131f2b37434e5a66727e8995a1ada4988c8074685f5f5f5f5f5f5f5f5f5f5f5f5f5f5f65717d8995a1ada4988c8074685d5145392d21160a00000000000000000000000000000000000000000000000005121e2b3744505d6976838f9ca8aa9d9184786b5f5245392c20130600000000000004080b0c0c0b0a09080713202d3946535f6c798693a0a3968a7d7063564a3d3023170a08090a0b0c0c0b080500000000000000101c2936434f5c697683909ca9aa9e9184776a5d5144372b1e11040000000a1723303d4a5663707d8a96a3b0a89b8e8275685b4e4235281b0f000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000000003080d12171c21262b30353a3e43484d52575c61666b70757a7e84898d92979ca1a5a09b96918c87827d7872675b4f4236291c1000131f2c3945525e6a74797e84898e93989da2a5a09b96918c87827d78736f6a65605b56514c47423d38332f2a25201b16110c0702000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000000005101b26313b46515c67727c87929d9a8f857a6f64594e44392e23180e030000000000000000000000000000000000000000000000000000000000030f1b27333f4a56626e7a86929ea9a79b8f83776b5f54483c302418212d3945515d6975828e9aa6a79b8f83776b5f54483c3024180c000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eaba89c8f8275695c4f4236291c0f030000000000000f1c2835424f5b6875828e9ba8aca09386796c605346392d201307000000000000000000000000000000000e1b2834414e5a6773808c99a2a29e9185796c6155493e342a211911090200000000000000000000000000000000121f2c3945525f6b7885929eaba89c8f8276695c5043372a1e13080000000000010e1a2734404d596570757473727171706f6d665c5145382c1f130600111e2a36424e59636a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6961574c4034271b0e000000000e1a2734404d5a6673808c99a5b2a89c8f83766a5d5144382b1f13060000000000000000000000000000000000000000000b1723303c4855616e7a8793a0acaea195887c6f6256493d3023170a00000000000000000000030f1a26323e4a55616d7985919ca8a89d9185796d61555252525252525252525252525e6a76828e99a5ab9f93877b7064584c4034291d1105000000000000000000000000000000000000000000000000030f1c2835424e5b6774818d9aa6aca093867a6d6054473b2e21150800000000030a1014171919181716151413202d3a4653606d798693a0a3968a7d7063574a3d302417141516161718181715110b050000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1e11040000000a1623303d4956636f7c8996a3b0a89b8f8275685b4f4235281c0f000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000000000000050a0f14191e23282d32373b40454a4f54595e63686d72767b81858a8f94999ea3a49f9a95908b86817b76726d6760564b3f33271a0e00111d2a36424e5962696e73787d82878c91969ba0a5a29d98938e8984807a75706c67625d58534e49443f3a35302b27221d18130e090400000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000009141f2a35404a55606b76818b96a1968b81766b60554a40352a1f140900000000000000000000000000000000000000000000000000000000000814202c38434f5b67737e8b96a2aea3978b7f73675b4f43372b1f141d2935414d5965717d8996a2aba094887c7064584c4034291d11050000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7784919eaaa99c908376695c5043362a1d1003000000000000101c2936434f5c6975828f9ca8ab9f9285786c5f5246392c1f1306000000000000000000000000000000000d1926323f4b5864717d8a96a2ada195897d71665b50463c332b231b130c04000000000000000000000000000000111e2b3744515d6a7783909ca9aa9d9184786b5f53473b2f241a110801000000000c1825313d49545e656867666665646362615c544b4034281c1004000e1a26323d4851595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5d584f453b2f23170b000000000c1925323e4b5864717d8a96a3afab9e9285796c6054473b2f23160a0000000000000000000000000000000000000000030f1b27333f4b5864707d8996a2afac9f9386796d6054473b2e22150800000000000000000000000a16212d3945515c6874808c97a3ada195897d72665a4e4646464646464646464b57636e7a86929eaaa69a8e83776b5f53473b3024180c00000000000000000000000000000000000000000000000000000d1a2633404c5965727e8b98a5aea195887b6f6256493c3023160a000000050d151b20242525242323222120202d3a4753606d7a8693a0a4978a7d7063574a3d30241f2021222324252524211c160f0700000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1e1104000000091623303c4956636f7c8996a3b0a89c8f8275685b4f4235281c0f000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000000000060c11161b20252a2f33383d42474c51565b60656a6f74787d82878c91969ba0a5a29d98938e89847f7a75706b66615c564e443a2e23170b000d1a25313c4750585d62676c71767b80858a8f94999ea3a49f9a95908b86817c77726d69645f5a55504b46413c37322d28241f1a15100b050000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000000000030e18232e39444e59646f7a858f9a9d92877c72675c51463b31261b1005000000000000000000000000000000000000000000000000000000010d1925303c4854606c77838f9ba7aa9e92867a6e62564b3f33271b0f1925313d4955616d7985919da9a4988c8175695d5145392d2115090000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b090500000000000000111e2a3744505d6a7784909daaaa9d9084776a5d5144372a1e1104000000000002111d2a3743505d697683909ca9aa9e9184776b5e5145382b1f1205000000000000000000000000000000000a1723303c4955616e7a86929ea9a5998e82776c62584e453d342d251e160f070000000000000000000000000000101c2936424f5b6874818d9aa6aca093877b6f63574c41362c231a130b030000000814202c37424c54595b5b5a595857565555514b42392e23180c00000a15212b363f474e51515151515151515151515151515151565e62626262626262615c54515151515151515151515151515151514c463d34291e1307000000000a1723303c4955626e7b8794a0adada195887c6f63574b3f33271b0f040000000000000000000000000000000000000008131f2b37434f5b6774808c99a5b2a99c9084776a5e5145382c1f1306000000000000000000000005111d2834404c58636f7b87939eaaa69a8e82766a5e53473b393939393939444f5b67737f8b97a3ada1958a7e72665a4e43372b1f130700000000000000000000000000000000000000000000000000000b1824313e4a5764707d8a96a3b0a3978a7d7064574b3e3124180b0000050e171f262c30323231302f2e2d2c2b2d3a4753606d7a8794a0a4978a7d7164574a3e312b2c2d2e2f30313232302d2821191007000000101c2936434f5c697683909ca9aa9e9184776a5d5144372b1e11040000000a1623303d4956636f7c8996a3b0a89c8f8275685b4f4235281c0f000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000000020a11181d22272c30353a3f44494e53585d62676c71757a8084898e93989da2a5a09b96918c87827d78736e69645f5a55504b443c33281d1206000914202b353e464c51565b60656a6f74797e84898d92989da2a6a19c97928d88837e79746f6a65615c57524d48433e39342f2a25211c16100900000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000007121c27323d48525d68737e89939e998e83786e63584d42372d22170c01000000000000000000000000000000000000000000000000000006121d2935414d5965707c8894a0aca5998e82766a5e52463a2e22160a15212d3945515d6975818d99a5a99d9185796d6155493e32261a0e0200000013202c3946535f6c798693a0acaca09386796c5f5346392c201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1815100b040000000000101d2936434f5c6976828f9ca8ab9e9184786b5e5245382b1f1205000000000005121e2b3844515e6b7784919daaa99d9083776a5d5044372a1e1104000000000000000000000000000000000814202d3945515d6975818d98a4aa9f94897e746a60574e463f3730282019110a020000000000000000000000000e1a2733404c5965717d8a96a2aea3978b8074685d52483e352c241d150e06000004101b26303a42494d4e4e4d4c4b4b4a494845403930271d12070000040f1a242d363d42444545454545454545454545454546525e686e6f6f6f6f6f6f6e665b50454545454545454545454545454544413b342b22170d02000000000814212d3a46535f6c7884919da9b0a4988c8073675b4f43372c20150a000000000000000000000000000000000000030e1924303c47535f6b7784909ca8b2a6998d8174685b4f4236291d10040000000000000000000000000c18232f3b47535f6a76828e9aa5aa9e93877b6f63574b3f332c2c2c303c4854606c7884909ba7a89c9185796d61554a3e32261a0e0300000000000000000000000000000000000000000000000000000a1623303c4955626f7b8895a2aea5988b7e7265594c3f3226190c00010c16202931383c3f3f3e3d3c3b3a3938373a4754616d7a8794a1a4978a7d7164574b3e3738393a3b3c3d3e3f3f3d39332b23190f040000101c2936434f5c697683909ca9ab9e9184776b5e5145382b1e12050000000a1723303d4a5663707d8a96a3b0a89b8e8275685b4e4235281c0f000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0000020b141c23282d32373c41464b50555a5f64696d72777c81868b90959a9fa4a49f9a95908b86817b76716c67625d58534e49443f3a332a21170c0100030e19232c343b40464b50555a5f64696e73787d82878c91969ba0a5a39e99948f8a85807b76716c67625e59544f4a45403b36312c27211a1209000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000000000b16202b36414c57616c77828d97a0958a7f74695f54493e33291e130800000000000000000000000000000000000000000000000000000a16222e3a46525d6975818d99a5ada195897d7165594d41362a1e1206101c2935414d5965717d8995a1ada1968a7e72665a4e42362a1e130700000013202c3946535f6c798693a0acaca09386796c5f5346392c2626262626262626262626262626262626262626262626262626262624211c160e06000000000f1c2835424e5b6874818e9aa7ac9f9286796c5f5346392d20130700000000000613202c3946525f6c7885929eaba89b8f8275695c4f4336291c10030000000000000000000000000000000004111d2935414d5965707c87929da8a59a90867c726960585149413a322b231c140c0400000000000000000000000b1824303d4955616d7985919da8a89c91857a6f645a50473e362f2720181109020009141e2830373d414241403f3f3e3d3c3b39352e271e150b0000000008121b242b3135383838383838383838383838383b4855626e7a7c7c7c7c7c7c786c5f5346393838383838383838383838383735302a22191006000000000005121e2b3743505c6875818d9aa6b2a89c9084776b6054483d31261b110700000000000000000000000000000000010a151f2a35414c5864707c8894a0acaea296897d7165584c3f33271a0e0100000000000000000000000007131f2a36424e5a65717d8995a1aca3978b8074685c5044382c202935414d5965717c8894a0aca4988c8074685d5145392d21160a0000000000000000000000000000000000000000000000000000000815212e3b4754616d7a8794a0ada6998d8073665a4d4034271a0e0007131e28323b43484b4c4b4a494847464544434754616e7a8794a1a4988b7e7164574b43434445464748494a4b4b49443d352b21160a0000101c2936434f5c697683909ca9ab9e9285786b5f5245392c1f13060000000b1724313e4a5764707d8a97a4b0a79b8e8174675b4e4135281b0e000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d00000a141d262e34393e43484d52575c61666a6f74797e83888d92979ca1a6a29d98938e89847f7a75706b66615c57524d48433e39342e2821180f0500000007111a222a30353a3f44494e53585d62676c71767b80858a8f94999ea3a4a09b96918c87827d78736e69645f5b56514c47423d38332c241b12080000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000000040f1a242f3a45505b65707b86919c9c91867b70655b50453a2f241a0f04000000000000000000000000000000000000000000000000030f1b27333f4a56626e7a86929da9a89c9084786d6155493d3125190d010c1824303c4955616d7985919da9a69a8e82766a5e53473b2f23170b00000013202c3946535f6c798693a0acaca09386796c5f5346393333333333333333333333333333333333333333333333333333333333312d2720180f050000000e1a2734404d5a6673808c99a6ada094877a6e6154483b2e22150800000000000815212e3a4754606d7a8693a0aca69a8d8174675a4e4134281b0e0200000000000000000000000000000000010d1925313c48545f6b76818b96a0aaa2988e847b736a625b534c443d352d261e160e05000000000000000000000814212d3945515d6975808c97a2ada2968b81766c625950484039312a221b140c04020c161e262c3134353434333231302f2f2d29231d150c0300000000000912192025292b2b2b2b2b2b2b2b2b2b2b2b2f3c4855626f7b888989898986796c5f5346392c2b2b2b2b2b2b2b2b2b2b2b2b28241f181007000000000000020f1b2834404d5965717d8a96a2aeaca094887c7065594e43382d23190f0600000000000000000000000000000109131c26313c47525d6975818c98a4b0aa9e9286796d6155493c3024170b00000000000000000000000000020e1a26313d4955616c7884909ca8a89c9084786c6054493d31252e3a46515d6975818d99a5ab9f93877b6f64584c4034281d11050000000000000000000000000000000000000000000000000000000713202d3a4653606c7986939faca79a8e8174675b4e4135281b0e000c18242f3a444d54585857565554535251504f4f54616e7b8894a1a4988b7e7165584e4f50515253545556575858554f473d32271b0f0300101c2936434f5c697683909ca9aca09386796d6053473a2d2114070000000c1825323e4b5864717e8b98a4b1a79a8d8174675a4d4134271b0e000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d0006111c262f383f454a4f54595e63676c71767b80858a8f94999ea3a5a09b96918c87827d78736e69645f5a55504b46413c37322d28231d170f0600000000000811181f24292e33383d42474c51565b60656a6f74797e83888d92979ca1a6a29d98938e89847f7a75706b66615c58534e49443e362d24190e0300101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000000000008131e29333e49545f69747f8a95a0978d82776c61564c41362b20160b0000000000000000000000000000000000000000000000000814202c37434f5b67737e8a96a2aea4988c8074685c5044382c211509000814202c3844505c6975818d99a5ab9f93877b6f63574b3f33281c1004000013202c3946535f6c798693a0acaca09386796c5f53464040404040404040404040404040404040404040404040404040404040403d38322a21170d0200000c1925323f4b5865717e8b97a4aea295887c6f6356493d3023170a00000000000a1623303c4955626f7b8895a1aea5988b7e7265594c4033261a0d0000000000000000000000000000000000000814202c37434e59646f7a848e98a1a9a0968d857c746d655e564e473f38302820170f0600000000000000000005111d2935414c58646f7a86919ba6a89d92887e746b625a524b433c342d251e160e06040c141b212527282827262524242322201d18120b0300000000000000080f15191d1e1e1e1e1e1e1e1e1e1e1e222f3c4855626f7b889596969386796c5f5346392c201e1e1e1e1e1e1e1e1e1e1e1c18130d0600000000000000000c1824303d4955616d7985919da9b0a4998d81766a5f54493f342b21181009030000000000000000000000050b131b252e38434d58636e7a85919da9b1a5998d8275695d5145392d20140800000000000000000000000000000915212d3844505c6873808b97a3aca095897d7165594d41352a323e4a56626e7a86929da9a69a8e82766b5f53473b3024180c0000000000000000000000000000000000000000000000000000000006121f2c3945525f6b7885929eaba89b8f8275685b4f4235291c0f00101c2834404c565f656564636261605f5e5d5c5b5a616e7b8895a1a5988b7e71655a5b5c5d5e5f6061626364656561594e43382c20130700101c2936434f5c697683909ca9ada194877b6e6155483b2f2216090000000d1a26333f4c5966727f8c98a5b2a6998c807366594d4033261a0d000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000b17222d38424a51565b5f64696e73787d82878c91969ba0a5a49f9a95908b86817b76716c67625d58534e49443f3a35302b26211c17120c0500000000000000060d13181d22272c31363b40454a4f545a5f64696e73787d82878c91969ba0a5a39e9a95908b86817c77726d68635e59544f483f352b20140800101c2936434f5c697683909ca9aa9d9184776a5e5144372b1e1105000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000000000000000010c17222d37424d58636d78838e999e93897e73685d52483d32271c110700000000000000000000000000000000000000000000010d1924303c4854606c77838f9ba7ab9f93877b6f63584c4034281c10040004101c2834404c5864717c8995a1ada3978b8074685c5044382c201408000013202c3946535f6c798693a0acaca09386796c5f534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c49443c33291e130800000b1724303d4a56636f7c8995a2aea4978a7e7164584b3f3226190d00000000000c1925323e4b5764717d8a96a3afa396897d7064574a3e3125180b000000000000000000000000000000000000040f1b26323d48535d68727c868f98a0a89f978e867e776f6860595149423a322921180f060000000000000000010d1824303c47535e69747f89949ea7a49a90877d746c645d554d463f3730282018100802091015181b1b1b1a19181817161514110c070000000000000000000004090d101212121212121212121215222f3c4855626f7b8895a2a09386796c5f5346392c201312121212121212121211100c08020000000000000000000814212d3945515d6975818d98a4b0a99e92877c71665b51463d332a221b140f0a0705030202020305080c10161d252d37404a545f6a75808b97a2aeaca095897d7165594d4135291d1004000000000000000000000000000004101c28343f4b57636f7a86929eaaa5998d82756a5e52463a2e37434f5b67727e8a96a2ada1958a7e72665a4e42372b1f13070000000000000000000000000000000000000000000000000000000004121e2b3845515e6b7784919eaba99c8f8276695c4f4336291c1000121f2b3844515d68717271706f6e6d6c6b6a696867666e7b8895a2a5988c7e72666768696a6b6b6d6d6f6f7071716b6054483b2f22160900101c2936434f5c697683909ca9afa296897c7063574a3d3124180b0000010f1b2834414e5a6774818d9aa6b1a4988b7e7265584c3f3225190c000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938c807366594c403326190d000f1b27333f4a545c61666b70757a7f84898e93989da2a6a29d98938e89847f7a75706b66615c57524d48433e39342f29251f1a15100b060100000000000000000002080d12171c21262b30353a3f44494e53585d62676c71767b80858a8f94999ea3a5a09b96928d88837e79746f6a65605a51473c3025180c00101c2936434f5c697683909ca9ab9e9285786b5f5245392c201306000714212d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000000000005101b26313b46515c67727c87929d9a8f857a6f64594e44392e23180d0300000000000000000000000000000000000000000006121d2935414d5964707c8894a0aca69b8f83776b5f53473b2f23170c0000000c1824303c4854606c7885919da9a89c9084786c6054493d3125190d010013202c3946535f6c798693a0acaca09386796c5f5959595959595959595959595959595959595959595959595959595959595959554e453b3024190d01000915222e3b4854616d7a86939faca6998c8073675a4e4135281c1003000000030f1b2834414d5a6673808c99a5ada094877b6e6155483c2f231609000000000000000000000000000000000000000a15202b36414c56606a737d868e969ea6a0989089817a726a635b534c443b332a21180f06000000000000000008141f2b36414d58626d78828c959ea7a2998f877e766e675f585049413a322a221a12090004090c0e0f0e0d0d0c0b0a09080704010000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c2013060000000000000000000000000000000000000000000004111d2935414d5964707c88939faaafa4988d82776d62584f453c342c25201b171311100f0f0f101214181c21282f373f49525c66717b86919ca8b1a69b8f84786c6155493d3125190d000000000000000000000000000000000b17232f3b46525e6a76828d99a5aa9e92867a6e62564b3f333c48535f6b77838f9ba7a89c9185796d61554a3e32261a0e020000000000000000000000000000000000000000000000000000000001111e2a3744515d6a7784919daaa99c908376695d5043362a1d100013202c3946535f6c797e7d7c7b7b7979787776757473727b8895a2a5988c7e7272737475767778797a7b7c7d7e7c7063564a3d3023170a00101c2936434f5c697683909ca9b1a4988b7e7265594c4034271b0f030004111d2a3643505c6975828f9ba8afa3968a7d7064574a3e3124180b000000000000010507101c2936434f5c69768390908376695c4f4336291c100705010000000000000000000000010507101c2936434f5c69768390908376695c4f4336291c1007050100000000000013202c3946535f6c7986938c807366594c403326190d00121e2b37434f5b666d72777c81868b90959a9ea3a5a09b96918c87827d78736e69645f5a55504b46413c37322d28231e19140f0a05000000000000000000000000000001060b10151a1f24292e33383d42474c51565b60656a6f74797e83888d92979ca1a6a29d98948f8a85807b76716c63594d4134281b0f00101c2936434f5c697683909ca9aca093867a6d6154473b2f22160a000714212e3a4754616d7a8794a1aea69a8d807366594d4033261a0d000000000000000000000000000009141f2a35404a55606b75818b96a1968b81756b60554a3f352a1f14090000000000000000000000000000000000000000000a16222e3a46515d6975818d99a4aca2968a7e72665a4e43372b1f13070000000814202c3844505c6874818c98a5aca095897d7165594d4135291d12060013202c3946535f6c798693a0acaca09386796c66666666666666666666666666666666666666666666666666666666666666666560574c4135291d1004000713202c3945525e6b7784909da9a89b8f8276695d5144382c1f130700000006121f2b3744505c6975828e9ba7aa9e9185786c5f53463a2d20140700000000000000000000000000000000000000040f1a252f3a444e58616b747c848c949ca3a29b938b847c756d655d554d453c332a21180e0400000000000000030e1a25303b46515b66707a838c959da6a19990888079716a625b534c443c342c241b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000c1824303c48545f6b76828d99a4afaa9f94897e746a61574e463e37312b2723201e1c1c1b1c1d1e2124282d33394149515b646e78828d98a3aeaba0958a7e73675c5044382c2015090000000000000000000000000000000007121e2a36424d5965717d8994a0aca2978b7f73675b4f4337404c5864707c88949faba3988c8074685c5145392d21150a000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7784909daaaa9d9083766a5d5043372a1d100013202c3946535f6c79868a89888786858484828281807e7d8895a2a6998c7f7e7f818182838485868788898a8a7d7063564a3d3023170a00101c2936434f5c697683909ca9b3a79a8e8175685c5043372b1f1308040814202d3945525e6b7784919daaaea194887b6e6255493c2f2316090000000000070d1114161c2936434f5c69768390908376695c4f4336291c1614110d07000000000000000000070d1114161c2936434f5c69768390908376695c4f4336291c1614110d07000000000013202c3946535f6c7986938c807366594c403326190d0013202c3946525f6c777e83888d92979ba0a5a49f9a948f8a85817b76716c67625d58534e49443f3a35302b26211c17120d08030000000000000000000000000000000000000004090e13181d22272c31363b40454a4f54595e63686d73787d82878c91969ba0a5a49f9a95918c87827d75695c5043362a1d1000101c2936434f5c697683909ca9aea295897c6f63574a3e32261a0f060815222e3b4854616e7b8894a1aea69a8d807366594d4033261a0d0000000000000000000000000000030e18232e39444e59646f7a858f9a9d92877c71675c51463b31261b100500000000000000000000000000000000000000000f1b27333f4a56626e7a86919da0a09d92867a6e62564a3e32261a0e0200000004101c2834404c5864707c8894a0a0a0998d8175695e52463a2e22160a0013202c3946535f6c798693a0acaca093867973737373737373737373737373737373737373737373737373737373737373737372695d5145382c1f13060004111d2a36434f5c6875818e9aa6aa9e9285796c6054483b2f23170b0000000b17232f3b47535f6c7885919eaaa79b8e8275695c5044372b1e1205000000000000000000000000000000000000000008131e28323c464f59626a727a828a9299a1a59d968e877f776f675f574e453c332a20160b010000000000000008141f2a353f4a545e68717a838b949ca4a29a928b837b746d655e564e463e362d241b12080000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000814202c37434f5a65717c87929da8b0a59b90867c736960585049423c37332f2d2b29282829292b2d3034383e444b535b636d76808a949fa9afa59a8f84786d62564b3f33281c100400000000000000000000000000000000020e1925313d4954606c78848f9ba7a79b8f83776c6054483c45515d6974818c98a4ab9f93877b6f63584c4034281d1105000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daaaa9d9084776a5d5044372a1d110013202c3946535f6c798693969594939291908f8e8d8c8b8a8e98a4a79b908a8b8c8d8e8f90919293949596968a7d7063564a3d3023170a00101c2936434f5c697683909ca9b6a99d9084786c5f53473b3024191211111824303c4955616e7a87939facab9f9286796c6053473a2e211408000000030b12181d2022222936434f5c69768390908376695c4f4336292222201d18120b030000000000030b12181d2022222936434f5c69768390908376695c4f4336292222201d18120b0300000013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c79868f94989da2a7a29d98938e89847e7a75706b66615c57524d48423d39332e29241f1a15100b0601000000000000000000000000000000000000000000000003080d12171c21262b30353a3f44494e53585d62676c71767b80858a8f94999ea3a6a19c97928d8376695d5043362a1d1000101c2936434f5c697683909ca9b1a4988b7f73665a4e42372c2118121116232f3c4955626f7b8895a2aea6998c807366594c403326190d00000000000000000000000000000007121c27323d48525d68737e89939e998e83786d63584d42372c22170c0100000000000000000000000000000000000000111e2a37434f5b67737e8a93939393938d8175695d5145392e22160a00000000000b1824303c4854606c7884909393939392867a6e62564a3e3225190c0013202c3946535f6c798693a0acaca0938680808080808080808080808080808080808080808080808080808080808080808080796d6053463a2d20130700010e1b2734404d5965727e8a97a3ada195887c7064584b3f34281d120a0809111c27333f4b57636f7b8894a1ada4978b7e72665a4d4134281b0f030000000000000000000000000000000000000000010c16202a343d4750586068707880878f969ea5a09891898179716960574e453c32281d130800000000000000020d18232d38424c565f687179828a929aa1a49c958d867e776f68605850483f362d241a100600000000000000000000000000000000000000000000000000000000000101010101010101010915222f3c4855626f7b8895a2a09386796c5f5346392c2013060101010101010101010000000000000000000000000000030f1b26323d4954606b76818c96a1abaca2988e857b726a625a534d48433f3c39373635353536383a3c4044494f565d656d757f88929ca6b0a89e93887d72675c51453a2e23170b0000000000000000000000000000000000000915202c3844505b67737f8b96a2aca094887c7064584d414a55616d7985919da9a69a8e82766b5f53473b2f24180c00000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7784909daaaa9d9084776a5d5044372a1d110013202c3946535f6c798693a0a2a1a09f9e9d9c9b9a99989799a0a9aca29a9798999a9b9c9d9e9ea0a0a1a2968a7d7063564a3d3023170a00101c2936434f5c697683909ca9b6aca094887c7064584c41362b221f1e1e202a35414c5865717d8a96a2afa99c9083776a5e5145382b1f12060000020c151d24292d2f2f2f36434f5c69768390908376695c4f43362f2f2f2d29241d150c02000000020c151d24292d2f2f2f36434f5c69768390908376695c4f43362f2f2f2d29241d150c02000013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c7986939fa4a5a09b96918c87827d78736e69645f5a55504b46413c37322d28231e19140f0a050000000000000000000000000000000000000000000000000000000001060b10151a1f24292e33383d42474c51565b60656a6f74797e83888d92979ca1a7a39d908376695d5043362a1d1000101c2936434f5c697683909ca9b4a79b8f83776b5f53483d332a231f1e1e25313e4a5764707d8a96a3b0a5988c7e7265594c3f3226190c000000000000000000000000000000000b16202b36414c56616c77828d979f958a7f74695e54493e33281e13080000000000000000000000000000000000000013202c3946525f6b7783868686868686867c7165594d4135291d1105000000000007131f2b3844505c687480868686868686867e73665a4d4134271a0e0013202c3946535f6c798693a0acaea2978e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d86796d6053463a2d20130700000c1824313d4956626e7b87939faba4988c8074685c5044392e231b16151619222d38444f5b6773808b98a4aca094877b6f63564a3e3125190c00000000000000000000000000000000000000000000040f18222b353e464e575e666e757d848c939ba2a39b938b837b726a60574d44392f241a0f040000000000000007111c26303a444d565f67707880888f979ea69f989089817a726a625a51483f362c22180e0300000000000000000000000000000000000000000000000000060a0d0e0e0e0e0e0e0e0e0e0e15222f3c4855626f7b8895a2a09386796c5f5346392c20130e0e0e0e0e0e0e0e0e0e0c09050000000000000000000000000a16212c38434e59646f7a858f99a3adaaa0978e857c746c655e59534f4b48464443424242434446494c50555a61676f767f88919aa4aeaaa0968c81766c61564b3f34291d120600000000000000000000000000000000000004101c27333f4b57626e7a86929da9a4998d8175695d51454e5a66727e8a96a1ada195897d72665a4e42372b1f130700000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7784909daaaa9d908376695d5043372a1d100013202c3946535f6c798693a0a1a09f9e9d9c9b9a99989796989fa9aca199969698989a9b9c9d9e9fa0a1a2968a7d7063564a3d3023170a00101c2936434f5c697683909ca9b6b0a4988c8074695d52473d342e2c2a2b2c323b46515d6975818d99a5b2a5998d8174675b4f4236291d100400000a141e272e35393c3c3c3c434f5c69768390908376695c4f433c3c3c3c39352e271e140a0000000a141e272e35393c3c3c3c434f5c69768390908376695c4f433c3c3c3c39352e271e140a000013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c798693a0a39a948f8a85817b76716c67625d58534e49443f3a35302b26211c17120d080300000000000000000000000000000000000000000000000000000000000000000004090e13181d22272c31363b40454a4f54595e63686d72777c82878c91969ca69d908376695d5043362a1d1000101c2936434f5c697683909ca9b6ab9f93877b70655a4f453c342e2b2a2b2c34414d5966727f8b98a5b0a4978a7e7164584b3e3125180b00000000000000000000000000000000040f1a242f3a45505b65707b86919b9b91867b70655a50453a2f24190f04000000000000000000000000000000000000131f2c3946525f6b767979797979797979776c6054483c3024190d010000000000030f1b27333f4c58647079797979797979797972665a4d4034271a0e0013202c3946535f6c798693a0acb3a9a09a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9386796d6053463a2d20130700000915212e3a46525f6b77838f9ba7a89c9084786d61564a40352d26232222252b343f4955606c7884909ca8a89c9084776b5f53473a2e2215090000000000000000000000000000000000000000000000061019232c343d454d545c646b737a82899198a0a59d958d857c72695f554b41362b20150a00000000000000000a141e28323b444d555e666e767d858d949ca3a29b938b847c746c635a51483e342a1f150a0000000000000000000000000000000000000000000000050c1116191b1b1b1b1b1b1b1b1b1b1b222f3c4855626f7b8895a2a09386796c5f5346392c201b1b1b1b1b1b1b1b1b1b1a1815100a030000000000000000000004101b27323d48535e68737d87919ba4aea9a0978e867e76706a645f5b575452504f4f4e4f50515355585c61666c72798189919aa3acaba2988e847a6f655a4f44392e23180c01000000000000000000000000000000000000000b17232e3a46525e6975818d99a4a99d9185796e62564a535f6b76828e9aa6a89c9185796d6155493e32261a0e0200000000000000000000000000000000000000000000000000000000000002111e2b3744515d6a7784919eaaa99c908376695d5043362a1d100013202c3946535f6c7986939694939291908f8e8d8c8b8a898d98a4a79a8f898a8b8c8d8e8f909192939495968a7d7063564a3d3023170a00101c2936434f5c697683909ca9b6b4a89d91857a6e63594f463f3b383737393d444d58636e7985919da9aea295897d7164584c3f33261a0e010006111c263039404548494949494f5c69768390908376695c4f494949494845403930261c11060006111c263039404548494949494f5c69768390908376695c4f494949494845403930261c11060013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c798693a09e9289847e7a75706b66615c56514c47423d38332e29241f1a15100b06010000000000000000000000000000000000000000000000000000000000000000000000000002070c11161c21262b30353a3f44494e53585d62676c71767b80858a95a19d908376695d5043362a1d1000101c2936434f5c697683909ca9b4aca4988d81766b61574e463f3b383738393c45515d6975828e9aa7afa295897c7063564a3d3024170a000000000000000000000000000000000008131e29333e49545f69747f8a959f978c82776c61564b41362b20150b000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6b655b4f44382c201408000000000000000b17232f3b47535e676c6c6c6c6c6c6c6c6c6960564a3e3225190c0013202c3946535f6c798693a0acacacaba7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a09386796d6053463a2d201307000005121e2a36424f5b67737f8b97a3aca195897d72675c51473e37322f2e2f31363d46505b66717d8894a0aca3978b8073675b4f43372b1e120600000000000000000000000000000000010102030201000007101a222b333b424a5259616870777f878e97a0a79f968e857b71675d52483d32261b100400000000000000020c162029323b434c545c646c737b828a9199a0a59d968e867e756c635a50463c31261c1105000000000000000000000000000000000000000000070f161d22262728282828282828282828282f3c4855626f7b8895a2a09386796c5f5346392c28282828282828282828282725211c150d05000000000000000000000a15202c36414c57616b758089929ca5ada9a0989088817b75706b6764615f5d5c5b5b5b5c5e5f6265686d71777d848b929ba3acaba29990867c72685e53493e33281d1206000000000000000000000000000000000000000006121e2935414d5965707c8894a0aba2968a7e72665a4f57636f7b87939faba3988c8074685c5045392d21150a0000000000000000000000000000000000000000000000000000000000000004121e2b3845515e6b7784919eaba99c8f8275695c4f4336291c100013202c3946535f6c79868a898887868584828281807e7d7c8996a2a6998c807d7e7f8081828384858687888a8a7d7063564a3d3023170a00101c2936434f5c697683909ca9b3aaa29f968b80756b6158504b4745444445494e565f69747f8a96a2aea99d9185796d6155483c3023170b00000b17222e38424b515555555555555c69768390908376695c555555555555514b42382e22170b000b17222e38424b515555555555555c69768390908376695c555555555555514b42382e22170b0013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c798693a09d9085807a75706b66615c57524d48433e39342f2a25201b16110c070200000000000000000000000000000000000000000000000000000000000000000000000000000004090e13181d22272c31363b40454a4f54595e63686d72777c818793a09d908376695d5043362a1d1000101c2936434f5c697683909ca9ada29b9893887d73696057504b4745444446484d57626d7985919daaaca093877a6e6154483b2f2215090000000000000000000000000000000000010c17222d37424d58636d78838e999e93887d73685d52473d32271c110600000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a53493e33271b10040000000000000007131f2b37424c555c5f5f5f5f5f5f5f5f5f5d574e44392d2216090013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09386796d6053463a2d2013070000020e1a26323e4b57636e7a86929ea9a69a8f83786e63595049423e3c3b3c3e41474f58626d77838e99a5a99e92877b6f63574b3f33271b0e020000000000000000010508090a0b0c0c0d0e0f0f0f0d0a05000710192129313840484f565e656d747c858e97a0a8a0978d83796f64594e43382c2115090000000000000000040e172029313a424a525a6169707880878f969fa7a09890877e756b62584d43382d22170b000000000000000000000000000000000000000006101921282e32343434343434343434343434343c4855626f7b8895a2a09386796c5f53463934343434343434343434343434312d271f170d04000000000000000000040f1a25303a454f59636d77818a939ba3abaaa29a938c86817b7773706e6b6a69686868696a6c6e7174787d82888f959da4aca9a19990877e746a60564c41372c21160b000000000000000000000000000000000000000000010d1925313c4854606b77838f9ba7a69b8f83776b5f535c6874808c98a3aa9f93877b6f63584c4034281c11050000000000000000000000000000000000000000000000000000000000000006131f2c3945525f6c7885929faba89b8e8275685b4f4235281c0f0013202c3946535f6c797e7d7c7b7a7978777675747371707d8a96a3a79a8d817471727374757677797a7b7c7d7e7c7063564a3d3023170a00101c2936434f5c697683909ca9ada298929392877d736a625b57535251515255596068717b86919ca7b0a4998d8175695d5145392c20140800000f1b27333f4a545c616262626262626976839090837669626262626262615c544a3f33271b0f000f1b27333f4a545c616262626262626976839090837669626262626262615c544a3f33271b0f0013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c798693a0a197908b86817c77726d68635e59544f4a45403b36312c27221d18130e09040000000000000000000000000000000000000000000000000000000000000000000000050a0f14191e23282d32373c41464b50555a5f64696e73787d82878c9199a49d908376695d5043362a1d1000101c2936434f5c697683909ca9a79b908b908f857b7269625c57535151515254585f69737e8a95a1ada99d9184786b5f5246392d20140700000000000000000000000000000000000005101b26313b46515c67717c87929d9a8f84796f64594e43392e23180d02000000000000000000000000000000000a16212c3740484f525353535353535353524f4941372d22160b0000000000000000030e1a25303a434b50535353535353535353514c453c32281d11050013202c3946535f6c79869393939393939393939393939393939393939393939393939393939393939393939393939393939386796d6053463a2d2013070000000a16222e3a46525e6a75818d98a3aba0958a80756b625a544e4b4948484a4d5259616a747e89949faaa4988d81766a5e52473b2f23170b0000000000000000070d111416171818191a1b1c1c1c1916110b04070f171f262e363d454c535b636a737c858e98a2a99f958b81766b6054493d32261a0e020000000000000000050e171f283038404850575f666e757d858c959ea7a29990877d74695f544a3e33281c1105000000000000000000000000000000000000020d18222b33393e41414141414141414141414141414855626f7b8895a2a09386796c5f534641414141414141414141414141403d3831291f150b0000000000000000000009131e29333d48515b656e778189929aa1a9aca59e97928c8883807d7a7877757575757677797b7d8185898e949aa0a7ada69f978f877e756b62584e443a30251b1005000000000000000000000000000000000000000000000814202c37434f5b67737e8a96a2ab9f93877b6f6458616d7884909ca8a69a8e82766a5f53473b2f23180c00000000000000000000000000000000000000000000000000000000000000000714202d3a4653606d798693a0aca79a8e8174675b4e4134281b0e00121f2b3844515d687071706f6e6d6c6b6a6968676665717e8b97a4a89b8e817568666768696a6b6c6d6e6f7071716b6054483b2f22160900101c2936434f5c697683909ca9a99d918689948f857c746d6763605e5d5d5f61656b727a838d97a2ada99e93887c7065594d4135291c10040000121e2b3744505b666e6f6f6f6f6f6f6f7683909083766f6f6f6f6f6f6f6e665b5044372b1e1200121e2b3744505b666e6f6f6f6f6f6f6f7683909083766f6f6f6f6f6f6f6e665b5044372b1e120013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c798693a0a8a19c97928d88837e79746f6a65605b56514c47423d38332e29241f1a15100b0601000000000000000000000000000000000000000000000000000000000002070c11161b20252a2f34393e43484d52575c61666b70757a7f84898e93989da3a79d908376695d5043362a1d1000101c2936434f5c697683909ca9a5998c7f89948d847b746d6763605e5d5e5f61646a717a85909ba6b1a5998d8175685c5043372a1e11050000000000000000000000000000000000000009141f2a353f4a55606b75818b96a1968b80756b60554a3f342a1f14090000000000000000000000000000000005101a252e373e4346464646464646464646433e372f251b100500000000000000000009141e283139404446464646464646464645413b332a21160b000013202c3946535f6c79868686868686868686868686868686868686868686868686868686868686868686868686868686868686796d6053463a2d20130700000006121e2a36414d5964707b87929da8a69c91877d746c655f5a5755555557595e646b737c86909ba5a89d92877c7065594d42362a1e1206000000000000030b12181d212323242526272828292826221c150e05050d151c242b333a42495159616a737c86919ba6a79d92877c71655a4e42362a1e1206000000000000000000050d161e262e363e454d545c636b727a838c959ea8a29990867b71665b5044392d22160a00000000000000000000000000000000000008141f29343d444a4d4e4e4e4e4e4e4e4e4e4e4e4e4e4e55626f7b8895a2a09386796c5f534e4e4e4e4e4e4e4e4e4e4e4e4e4e4d49433b31271c1106000000000000000000020c17212b364049535c656e7780888f979ea4aba9a39d9894908c8987858382828282828485878a8d91959a9fa5aba8a29c948d857d756c635950463d32281e14090000000000000000000000000000000000000000000000030f1b27333f4a56626e7985919da9a4988c8074685c65717d8995a1ada195897d72665a4e42362b1f130700000000000000000000000000000000000000000000000000000000000000000815222e3b4854616e7a8794a1ada6998c8073665a4d4033271a0d00101c2834404b565f6465646362615f5e5d5c5b5a5965727f8c98a5a89c8f8275695c5a5b5c5d5e5f60616263646561594e43382c20130700101c2936434f5c697683909ca9a99c8f82838e978e867e78736f6d6b6a6a6b6d71767c848c959fa9ada3988d82766b6054483c3024180c00000013202c3946535f6c787c7c7c7c7c7c7c7c839090837c7c7c7c7c7c7c7c786c5f5346392c20130013202c3946535f6c787c7c7c7c7c7c7c7c839090837c7c7c7c7c7c7c7c786c5f5346392c20130013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c798692979ca1a6a39e99948f8a85807b76716c67625d58534e49443f3a35302b26211c17120d08030000000000000000000000000000000000000000000000000004090e13181d22272c31363b40454a4f54595e63686d72777c81868b90959a9fa4a5a09b96908376695d5043362a1d1000101d2a3643505d697683909da9a5988c7e828d968d857e78736f6c6b6a6b6b6d70757b838d97a1acaca095897d7165594c4034271b0f0200000000000000000000000000000000000000030d18232e39444e59646f7a858f9a9d92877c71665c51463b30261b10050000000000000000000000000000000009131c252c32373939393939393939393937332d251d130900000000000000000000020c161f282f34383939393939393939393835302921180f040000131f2c3946525f6b76797979797979797979797979797979797979797979797979797979797979797979797979797979797979766b5f5346392d201306000000010d1925313c48535f6a75818b96a1aba39990877e77706b676462616263666a6f757d858e98a2aba1968c81766a5f54483d31251a0e020000000000020c151d24292d2f303132333334353635322d2720170e04030a121a212830373f474f57616a747f8a95a0aba4998d82766a5f53473b2e22160a00000000000000000000040c141c242c333b424a525961697179838c96a0aaa2978d82776c61554a3e32261a0e0200000000000000000000000000000000000d1925303b454f565a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b626f7b8895a2a09386796c5f5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b59554d43392e22160a00000000000000000000050f1a242e37414a535c656d767e858c93999fa5aaa9a4a09c98969391908f8e8e8f8f90929496999da1a5aaa8a39d97918a837b736b625a51473e342b21170c020000000000000000000000000000000000000000000000000a16222e3a45515d6975818c98a4a89c9084786c606a76828e9aa6a89c9085796d6155493d32261a0e0200000000000000000000000000000000000000000000000000000000000000000a1623303c4956626f7c8895a2aea5988b7e7265584c3f3226190c000c18242f3a444d54585857565554535251504f4d5a6673808d99a6a99d9083766a5d504e4f505152535556575858554f473d32271b0f0300101d2936434f5c697683909ca9a89c8f827d8892989089847f7b79787777787a7d82878e969ea7aea59b91867b70655a4f43372c20140800000013202c3946535f6c798689898989898989899292898989898989898986796c5f5346392c20130013202c3946535f6c798689898989898989899292898989898989898986796c5f5346392c20130013202c3946535f6c7986938c807366594c403326190d0013202c3946535f6c7982878b90959a9fa4a49f9a95908b86827c77726d68635e59544f4a45403b36312c27221d18130e0904000000000000000000000000000000000000000000050a0f14191f23282d32383c42474b51555b6064696e73787d83888d92979ca1a6a39e99948f8a858176695d5043362a1d1000101d2a3643505d697683909daaa5988b7e7b8690979089847f7b79777777787a7d81868d959fa8afa59a8f84786c6155493c3024180b00000000000000000000000000000000000000000007121c27323d48525d68737e89939e998e83786d62584d42372c21170c01000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a27211b130b010000000000000000000000040d161d23282b2c2c2c2c2c2c2c2c2c2c29241f170f06000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372b1e1205000000000914202b37424e59646f7a858f99a3aba2999088827b7773706f6e6f7072767a80878f97a0aaa3998f857a6f64594e43372c2015090000000000000a141e272e35393c3d3e3e3f40414242423e39312920150b0000080f171e262d353d454f58636d78848f9aa6aa9e93877b6f63574b3e3225190d0000000000000000000000020a121a2229313840474f575f67717a848e99a4a99f94897d72665a4f43372b1e12060000000000000000000000000000000000101d2935414d576167676767676767676767676767676767676f7b8895a2a09386796c67676767676767676767676767676767665f554a3f33261a0e000000000000000000000008121c252f38414a535c646c737a82888e94999ea2a6aaa8a5a2a09e9d9c9b9b9b9c9d9ea0a3a6a9a9a5a19c97928c867f787169615950483f352c22190f050000000000000000000000000000000000000000000000000006111d2935414c5864707c88939faba195897d71656e7a86929eaaa3978c8074685c5045392d2115090000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5764717d8a97a3b0a3968a7d7064574a3e3124180b0007121d28323b42484b4b4a49484746454443424e5b6774818e9aa7aa9e9184776b5e5145434445464748494a4b4b49443d352b21160a0000101d2a3643505d697683909da9a89b8e8276808b949b948f8b88868484848586898d9299a0a8aca49c93897f746a5f54493d32271b0f0300000013202c3946535f6c798693969494949494949494949494949494969386796c5f5346392c20130013202c3946535f6c798693949494949494949999949494949494949386796c5f5346392c20130013202c3946535f6c7986938c807366594c403326190d00121f2b3844515d6871767b80858a8f93989da2a6a19c97928d88837e79746f6a65605b56514c47423d38332e29241f1a15100b060100000000000000000000000000000002070c11161b20252a2f34393e43484d52575c61666b70757a8084898e93989da2a6a19c97928d88847e7a756f665a4e4235291c0f00101d2a3743505d6a7683909daaa4988b7e747e88929b958f8b88868484848587898d91989fa8afa79d93897e73675c5044382c201408000000000000000000000000000000000000000000000b16202b36414c56616c77828d979f948a7f74695e53493e33281d130800000000000000000000000000000000010910161a1e1f2020202020202020201e1b1610090100000000000000000000000000040b12181c1f2020202020202020201f1d19130d06000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52493e33271b0f0200000000030f1a26313c48535d68737d87919aa3aba29a938d8783807d7b7b7b7c7e82868c9299a1a9a39a91877d73685e53483d31261b0f04000000000006111c2630394046494a4a4b4c4d4e4f4f4e4a433b31271c11050000050c141b232b333d46515c67727e8a96a2aea3978b7f73665a4e4135281c0f030000000000000000000000000810171f262e353d454d555f68727c87929da9a59a8e83776b5f53473b2e2216090000000000000000000000000000000000121f2c3845515d697274747474747474747474747474747474747b8895a2a0938679747474747474747474747474747474747471675b4f4236291c100000000000000000000000000a131d262f38414a525a616970767d83888d92969a9ea1a3a5a7a8a9a8a8a8a8a9a9a8a7a5a29f9c9995908c86817b746d665f574f473e362d231a10070000000000000000000000000000000000000000000000000000010d1824303c48535f6b77838f9aa6a5998d817569727e8a97a3aa9f93877b6f63574c4034281c10050000000000000000000000000000000000000000000000000000000000000000000d1a2733404c5966727f8c98a5aea195887b6f6255493c2f23160a00010c16202931373c3e3f3d3c3b3a39383736424f5b6875828e9ba8ab9f9285786c5f5245393738393a3b3c3d3e3f3d39332b23190f040000111d2a3744505d6a7683909daaa79a8e817478828c959d9b979592919190919396999ea4aaa8a19a928a81776d63584e43382c21160a0000000013202c3946535f6c7986938d87878787878787878787878787878d9386796c5f5346392c20130013202c3946535f6c798687878787878787889191888787878787878786796c5f5346392c20130013202c3946535f6c7986938c807366594c403326190d00101c2834404c565f656a6f74797e83888d92979ba0a5a39e99948f8a85807b76716c67625d58534e49443f3a35302b26211c17120d0803000000000000000000000004090e13181d22272c31363b40454a4f54595e63686d72777c81868b90959a9fa4a49f9a95908c87827d78736e69645d54493e3226190d00111d2a3744505d6a7784909daaa4978a7d71768089929a9b979492919191929395999da3a9aaa49d958c82776c61564b3f34281c100400000000000000000000000000000000000000000000040f1a242f3a45505b65707b86919b9b90867b70655a4f453a2f24190e040000000000000000000000000000000000050a0e1113131313131313131313110f0a050000000000000000000000000000000001070c101213131313131313131312100d080200000000000a16212c3740484f52535353535353535353535353535353535353535353535353535353535353535353535353535353535353524f4940372c21160a0000000000000915202b36414c56616b757f889199a1a8a59e98938f8c8a888888898b8e92979da3a9a29a91897f756b61574c41362b20150a0000000000000b17222e38424b5155565758595a5a5b5c5a554d43392d22160a00000002091119212b353f4a56616d7986929eaba79b8f8276695d5044372a1e110500000000000000000000000000060d151c242b333b434d56606b75818c98a4ab9f93877b6f63574a3e3125180c000000000000000000000000000000000013202c3946535f6c798181818181818181818181818181818181818995a2a0938681818181818181818181818181818181818176695d5043362a1d10000000000000000000000000010b141d262f38404850575e656b72777d82868a8e919497999a9c9d9e9e9e9e9d9d9b9a989693908d8984807b756f69635c554d453d352c241b11080000000000000000000000000000000000000000000000000000000008141f2b37434f5a66727e8a96a1a99d9185796d76838f9ba7a69a8e82766a5f53473b2f23180c00000000000000000000000000000000000000000000000000000000000000000003101c2935424e5b6874818d9aa7ac9f9386796d6054473a2e2115080000040e171f262c30323231302f2e2d2c2b3643505c6976838f9ca9aca09386796d6053463a2d2b2c2d2e2f313232302d2821191007000000111e2a3744515d6a7784909da2a29a8d8073707a838b92999ea19f9e9d9d9ea0a2a5a8a5a19c96908980786e655b51473c31261b10040000000013202c3946535f6c7986938b7e7a7a7a7a7a7a7a7a7a7a7a7a7e8b9386796c5f5346392c20130013202c3946525f6b777a7a7a7a7a7a7a7a839090837a7a7a7a7a7a7a7a776b5f5246392c20130013202c3946535f6c7986938c807366594c403326190d000c18242f3a444d54595e63686d72777c81868b90959a9fa3a5a09b96918c87827c77736d69635e5a54504a45403b36312c27221d18130e080200000000000000030a10151a1f24292e33383d42474c51565b60656a6f74797e83888d92979ca1a6a29d98948f8a85807b76716c67625d58534b42382d21160a00111e2b3744515d6a7784919ea2a2968a7d706d7680888f969ca19f9e9e9e9ea0a2a5a9a6a39f99938b837970655b50453a2e23170b00000000000000000000000000000000000000000000000008131e29333e49545f69747f8a959f978c82776c61564b40362b20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372e251b1005000000000000030f1a252f3a454f59636d767f878f979da3a9a49f9b989695959596989a9ea3a8a49e9790887f766d63594f453a30251a0f040000000000000f1b27333f4a545c626364656566676869665f554a3e32261a0d0100000000070f19232e3945515d6a76838f9ca8aa9e9185786b5f5245392c1f13060000000000000000000000000000030a12192129313a444e5964707b8793a0aca4978b7e7266594d4034271b0e010000000000000000000000000000000013202c3946535f6c79868e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e919aa5a3988f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8376695d5043362a1d1000000000000000000000000000020b141d262e363e454c535a60666c71767a7e8285888a8c8e8f909191919191908f8d8b898784817c78746f6a645e58514a433b332b231a12090000000000000000000000000000000000000000000000000000000000030f1b26323e4a56616d7985919ca8a295897d717a87939faba195897d71665a4e42362a1f130700000000000000000000000000000000000000000000000000000000000000000006121f2b3844515d6a7683909ca9aa9d9184776b5e5245392c1f1306000000050d141b2023252524232221201f2b3744515d6a7784909daaada094877a6d6154473b2e212021222324252524211c160f0700000000121e2b3844515e6b778491969696968c7f7368707981878d93979a9c9e9fa0a09f9e9c9995918b857e766e665d53493f352a20150a000000000013202c3946535f6c7986938b7e716d6d6d6d6d6d6d6d6d6d717e8b9386796c5f5346392c201300111e2a37434f5a656c6d6d6d6d6d6d6d7683909083766d6d6d6d6d6d6d6c655a4f43372a1e110013202c3946535f6c7986938c807366594c403326190d0007131e28323b43494e52575c61666b70757a7f84898e93989da2a6a19c97928d88837e79746f6a65605b56514c47423d38332e29241f1a130c030000000000050d151b20252a2f34393e43484d52575c61666b70757a80858a8e94999ea3a5a09c97928d88837e79746f6a65605b56514c47413930261b100500121e2b3845515e6b77849195959595897c6f646d767e858b9095989b9d9f9f9f9f9e9c9a97938e88817970675e54493f34281d1206000000000000000000000000000000000000000000000000010c17222d37424d58636d78838e999e93887d73685d52473c32271c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090b0d0e0e0f0f0e0d0c0a080603000000000000000000000000000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937322c251c1309000000000000000008131e28333d47515b646d757d858c92989da1a4a7a5a3a2a2a2a2a4a7a5a29d99938c857e766d645b51473d33291e130800000000000000121e2b3744505b666e707171727374757571665a4e4235281c0f03000000000007111d2935424e5b6774818e9aa7aca09386796d6053473a2d20140700000000000000000000000000000000070f171f28323d48535f6b7783909ca2a29a8e8275685c4f4236291c10030000000000000000000000000000000013202c3946535f6c7986939b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ca2abaaa19c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b908376695d5043362a1d100000000000000000000000000000020b141c242c343b42494f555b60656a6e7275787b7d8081828384848584848382817e7d7a7774706c68635e59534d464038312922191108000000000000000000000000000000000000000000000000000000000000000a16222d3945515d6874808c98a3a69a8d81757e8b97a3a89c9084786d6155493d32261a0e020000000000000000000000000000000000000000000000000000000000000000000815212e3a4753606c7985929eaba79b8e8275695c5043362a1d110400000000030a0f1417181817161514131f2c3845525e6b7885919eabaea195887b6e6255483c2f22151415161718181715110b050000000000131f2c3945525f6b78858989898989897e7165676f767c82878a8d909192939392918f8c8985807a736c655c544a41372d23190e03000000000013202c3946535f6c7986938b7e7165606060606060606065717e8b9386796c5f5346392c2013000f1b27333e49535b606060606060606976839090837669606060606060605b53493e33271b0f0013202c3946535f6c7986938c807366594c403326190d00010c16202931383d42474c51565b5f64696e73787d82878c91969ba0a5a39e99948f8a85807b76716c67625d58534e49443f3a35302b251e150c02000000050e171f262c31363b40454a4f54595e63686d72777c81868b90959a9fa4a39f9a95908b86817c77726d68635e59544f4b46413c362f271e140a0000131f2c3946525f6c78858888888888887b6f62646c737a8085898c8f919292939291908d8a87827c766f675e554c42382d22170c010000000000000000000000000000000000000000000000000005101b26313b46515c67717c87929d9a8f84796e64594e43382e23180d020000000000000000000000000000000004080b0c0c0b0804000000000000000000000000000000000105090d10131517191a1b1b1b1b1a191715120f0b07020000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27211b130a010000000000000000010c17212b353f49525b636b737a81878c9195989b9d9e9f9f9f9e9d9b9995928d88827b746c645b52493f362c21170c020000000000000013202c3946535f6c787c7d7e7f8081828276695d5044372b1e12060000000000000d1a2734404d5a6773808d9aa6ada194877a6d6154473a2e2114070000000000000000000000000000000000050d16202b37434f5b6874818d959595959083776a5d5044372a1e11040000000000000000000000000000000013202c3946535f6c798693a0a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7abb3b1aaa6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69d908376695d5043362a1d10000000000000000000000000000000020a121a222930373e444a4f54595e6266696c6f7173747677777778777776757472706e6b6864605c57524d47423b352e271f181007000000000000000000000000000000000000000000000000000000000000000005111d2934404c58646f7b87939faa9d918579828e9ba7a3978c8074685c5044392d211509000000000000000000000000000000000000000000000000000000000000000000000b1824313d4956626f7b8894a1ada5988c7f73665a4d4134281b0f0200000000000003070a0c0c0b0a090813202c3946535f6c7986929facafa296897c6f6356493d3023160a08090a0b0c0b08050000000000000013202c3946535f6c787c7c7c7c7c7c7c7b70635d646b71767a7e818385868686868482807d79746f69625a534a42382f251b110700000000000013202c3946535f6c7986938b7e7165585353535353535865717e8b9386796c5f5346392c2013000a16212d3741494f5353535353535c69768390908376695c5353535353534f4941372d21160a0013202c3946535f6c7986938c807366594c403326190d0000050e171f262c31363b40454a4f54595e63676c71767b80858a8f94999ea3a5a09b96918c87827d78736e69645f5a55504b46413c362f271e140a0000010c16202931383d42474c51565b60656a6f74797e83888d92979ca1a6a29d98938e89847f7a75706b66615c57524e49443f3a35302b251e150c02000013202c3946525f6c777b7b7b7b7b7b7b796d615a61686e74787c808284858686868483817e7b76716b645d554c433a30261b110600000000000000000000000000000000000000000000000000000009141f2a353f4a55606b75818b96a1968b80756a60554a3f34291f14090000000000000000000000000000030a10141719191815100a0400000000000000000000000105090d1115191c1f2224262728282828272524211f1b17130e090300000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1e1b1610090100000000000000000000050f19232d374049515a61696f767b8185898c8e909192929292908f8c8986817c767069625a524940372d241a0f050000000000000000131f2c3945525f6b78858a8b8c8d8d8e85786c5f53473a2e23170e0704030304060e1a2734404d5a6773818d9aa6aea194877a6d6154473a2e211407000000000000000000000000000000000000040f1a2733404c5966727f88888888888884776b5e5145382b1e12050000000000000000000000000000000013202c3946535f6c798693999999999999999999999999999999999aa1aaa89f9a99999999999999999999999999999999908376695d5043362a1d1000000000000000000000000000000000000810171f262c36414b545b5e5e5e5e5e5f62646668696a6a6b6b6b6a6a69676663615e5e5e5e5e5e5c554c42372b231c150d06000000000000000000000000000000000000000000000000000000000000000000000c1824303b47535f6b76828e9aa6a195897d86929faa9e93877b6f63574c4034281c1005000000000000000000000000000000000000000000000000000000000000000000020f1b2734404c5965727e8b97a3aea295897c7064574b3e3225190c0000000000000000000000000000000714212d3a4753606d7a8693a0adb0a3978a7d7064574a3d3124170b000000000000000000000000000000121e2b3744505b666e6f6f6f6f6f6f6f6f695f545960656a6e7274767879797979787673706d68635d57504941382f261d13090000000000000013202c3946535f6c7986938b7e7165584b474747474b5865717e8b9386796c5f5346392c20130005101b252f373e4446474747474f5c69768390908376695c4f4747474746443e372f251b10050013202c3946535f6c7986938c807366594c403326190d000000050d151b20252a2f34393e43484d52575c61666b6f74797e83888d92979ca1a6a29c97928d89847e79746f6a65605b56514c47413930261b10050007131e28323b43494e53585d62676c71767b80858a8f94999ea3a5a09b96918c87827d78736e69645f5b56514c47423d38332e29241f1a130c03000000121e2b37434f5b666d6e6e6e6e6e6e6e6d675c51575d63686c7073767778797979787674726e6a66605a534b433a31281e140a00000000000000000000000000000000000000000000000000000000030d18232e39444e59646f7a848f9a9c92877c71665b51463b30251b1005000000000000000000000000050e151b2024262624211c150e07010000000000000105090d1116191d2125292c2e313234353535343332302e2b27231f1a140e080100000000000000000000050a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110e0a050000000000000000000000000007111b242e373f484f575e646a7074797c7f828385868686858482807d7975706b655e57504840372e251b1208000000000000000000111e2a3744505d6976828f9898999a94877b6f63574b3f34292018141110101113171f2a36424f5b6874818e9ba7ada094877a6d6154473a2e211407000000000000000000000000000000000000000c1825323f4b5865717b7b7b7b7b7b7b7b766a5e5145382b1e12050000000000000000000000000000000013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8f99a4a2978e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8376695d5043362a1d10000000000000000000000000000000000000060d16222f3b47535d666b6b6b6b6b6a645e595b5c5d5e5e5e5e5d5d5c5b595d646a6b6b6b6b6b675e53483c2f23160a03000000000000000000000000000000000000000000000000000000000000000000000007131f2b37424e5a66727d8995a1a5998d818a96a3a59a8e82766a5e53473b2f23170c0000000000000000000000000000000000000000000000000000000000000000000006121f2b3743505c6875818d9aa6ab9f9286796d6154483b2f23160a0000000000000000000000000000000815222e3b4855616e7b8894a1acaca4988b7e7165584b3e3225180c0000000000000000000000000000000f1b27333f4a545c6162626262626262625e574d4e545a5e6265686a6b6c6c6c6c6b696764615c58524c453e372f261d140b010000000000000013202c3946535f6c7986938b7e7165584b3e3a3a3e4b5865717e8b9386796c5f5346392c2013000009131d252d33373a3a3a3a434f5c69768390908376695c4f433a3a3a3a37332d251d1309000013202c3946535f6c7986938c807366594c403326190d00000000030a10151a1f23282d32373c41464b50555a5f64696e73777c81868b90959a9fa4a39e99948f8a85807b76716c67625d58534b42382d21160a000c18242f3a444d54595e63686d72777c81868b90959a9fa4a39e99948f8a85807b76716c67635e59544f4a45403b36312c27221d18140e0802000000000f1b27333f4a545c6161616161616161615d554b4c52575c606467696b6c6c6c6c6b6a6865625e5a554f48413931281f160c02000000000000000000000000000000000000000000000000000000000007121c27323d48525d68737e89939e988e83786d62574d42372c21160c0100000000000000000000050e1720272c303333312d272019120c07050405070a0d1115191d22262a2d3135383b3d3f4141424241403f3d3a37342f2a252019130c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121c252d363e454c53595f64686c707375777879797978777573706d69655f5a544d463e362e251c1309000000000000000000000f1c2835414e5a6773808c98a5a6a3978b7f73675c50453b322a24201e1d1c1d1f2328313b46525e6a7783909ca9ac9f9286796c605346392d201307000000000000000000000000000000000000000a1724303c495560696e6e6e6e6e6e6e6e6d655a4e4236291d10040000000000000000000000000000000013202c3946535f6c797f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8895a2a093867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f76695d5043362a1d10000000000000000000000000000000000000000b1724313d4a57636f7878787878766f69625b5550515151515150535a61686f7678787878787064574b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000020e1a26323e4955616d7884909ca89d928c909ba6a195897d71655a4e42362a1f1307000000000000000000000000000000000000000000000000000000000000000000000a16222e3b47535f6c7884919da9a79b8f83766a5e5145382c2013070000000000000000000000000000000916232f3c4955626f7b8895a0a0a0a0988c7f7265594c3f3326190d0000000000000000000000000000000b17222e38424b51555555555555555555534d4543494e5256595b5d5e5f5f5f5f5e5d5b5854504c47413b342d251d140b02000000000000000013202c3946535f6c7986938b7e7165584b3e3d3d3e4b5865717e8b9386796c5f5346392c201300000b151f282f363a3d3d3d3d434f5c69768390908376695c4f43362d2d2d2b27221b130b01000013202c3946535f6c7986938c807366594c403326190d00000000000004090e13181d22272b30353a3f44494e53585d62676c71767a8084898e93989da2a5a09b96918c87827d78736e69645d54493e3226190d00101c2834404c565f656a6f74797e83888d92979ca1a6a19c97928d88837e79746f6b66615c57524d48433e39342f2a25201c17120d08030000000000000b17222d38424a51545555555555555554514b4341464c5054575a5c5e5f5f5f5f5e5d5b5956524e49443d372f271f160d04000000000000000000000000000000000000000000000000000000000000000b16202b36414c56616c77828d979f948a7e74695e53483e33281d1208000000000000000000010c17202931383d3f3f3d38322a241d181411111214171a1d21252a2e32363a3d4144474a4c4d4e4e4e4e4d4b494743403b36312b241e1710080000000000000000000000000000000000000000000000000000000003060707070707070707050300000000000000000000000000000000000000000000000000000000000000000000000a131b242c333b42484e53585c606366686a6b6c6c6c6b6a696764615d59544e48423b342c241c130a01000000000000000000000d1926323f4b5764707c8995a1ada79b8f84786d62574d443b35302c2a29292a2c2f333a434d57636e7a87939fabaa9d9184776b5e5245382c1f1206000000000000000000000000000000000000000814202c38434e575e6161616161616161605b53493d32261a0e0100000000000000000000000000000000121f2b3844515d687172727272727272727272727272727272727b8895a2a093867972727272727272727272727272727272726f665a4e4235291c0f000000000000000000000000000000000000000b1824313e4b5764717e85858585817a736d666059534c464a50575e656c737981858585857e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000915212d3944505c6874808b97a3a49c999ba2a89c9084786d6155493d31261a0e02000000000000000000000000000000000000000000000000000000000000000000020e1a26323e4b57636f7b8894a0aca4988b7f73675a4e4235291d10040000000000000000000000000000000a1724303d4a5663707d899393939393938d8073675a4d4034271a0e01000000000000000000000000000006111c263039404548494949494949494947423b383d4246494c4f50525353535252504e4b4844403b363029221b130b0200000000000000000013202c3946535f6c7986938b7e7165584b4a4a4a4a4b5865717e8b9386796c5f5346392c20130006121d27313a41474a4a4a4a4a4f5c69768390908376695c4f43362920201f1b1610090100000013202c3946535f6c7986938c807366594c403326190d000000000000000002070c11161b20252a2f33383d42474c51565b60656a6f74797d83888c91969ba0a5a29d98938e89847e7a756f665a4e4235291c0f00121f2b3844515d6871767b80858a8f94999ea3a49f9a95908b86817c77736e69645f5a55504b46413c37322d28241f1a15100b0601000000000000000006111c262f383f45484848484848484848454039353b4044484b4e50515253535252504f4c4a46423d38322c251d150d040000000000000000000000000000000000000000000000000000000000000000040f1a242f3a45505a65707b86919b9b90857a70655a4f443a2f24190e03000000000000000007131e29323b43494c4c49433c352f2924201e1e1f202326292d31363a3e42464a4d515456585a5b5b5b5a59585653504c47423c362f28211a110800000000000000000000000000000000000000000000000000060c10121414141414141414120f0b050000000000000000000000000000000000000000000000000000000000000000000109121a222930373d42484c5054575a5c5d5e5f5f5f5f5e5c5a5855514d48433d373129221a120a0100000000000000000000000a16232f3b4854606c7985919da8aca095897e73695f564d46403c3937363637383b3f454c555e6974808b97a3afa79a8e8275695c5043362a1d11040000000000000000000000000000000000000006121d27323c454d53555555555555555554504941372c21150a0000000000000000000000000000000000101c2834404c565f65656565656565656565656565656565656f7b8895a2a09386796c65656565656565656565656565656565645d54493e3226190d000000000000000000000000000000000000000b1724313e4a57636f79838c92928c857e78716b645e5751545b626970777d848b92928d837a7064584b3e3225180c0000000000000000000000000000000000000000000000000000000000000000000000000005101c2834404b57636f7b87929ea7a7a6a7a7a3978b8074685c5044392d2115090000000000000000000000000000000000000000000000000000000000000000000007121e2a36424e5b67737f8b97a4aca094887b6f63574b3e3226190d010000000000000000000000000000000b1824313e4b5764717d86868686868686868174675b4e4135281b0e020000000000000000000000000000000a141e272e35393c3c3c3c3c3c3c3c3c3a36312c31363a3d40424445464646464543413f3c38342f2a241e171009010000000000000000000013202c3946535f6c7986938b7e7165585757575757575865717e8b9386796c5f5346392c2013000b17232e39434c525657575757575c69768390908376695c4f4336291c14120f0b05000000000013202c3946535f6c7986938c807366594c403326190d0000000000000000000000050a0f14191e23282d32373b40454a4f54595e63686d72777c81868b9094999ea3a39e99948f8a858176695d5043362a1d100013202c3946535f6c7982878c91969ba0a5a29d98938e8985807a76716c67625d58534e49443f3a35302b27221d18130e09040000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b39352f2a2f34383c3f41434545464646454442403d3a36322d27211a130b030000000000000000000000000000000000000000000000000000000000000000000008131e28333e49545f69747f8a959f978c81766c61564b40362b20150a00000000000000000c18242f3a444d545859554e47403a34302d2b2a2b2d2f3236393d42464a4e5256595d60636567676868676664625f5c58534d47413a332c231a100500000000000000000000000000000000000000000000030b12171c1f20202020202020201f1b161009010000000000000000000000000000000000000000000000000000000000000000000810171e252b31373c4044484b4d4f51525253525251504e4b4845413c37322c261f1810080000000000000000000000000007131f2c3844505c6874808c98a3afa69b90857b71685f58514c48454443434345474b50565e67707a85909ca7afa3978b7e7266594d4134281b0f02000000000000000000000000000000000000000b17232e39434c5358585858585858585858554f463c32261b0f03000000000000000000000000000000000c18242f3a444d5458595959595959595959595959595959626f7b8895a2a09386796c5f59595959595959595959595959595958534b42382d21160a000000000000000000000000000000000000000916222f3b47535e677079838c9597908a837c766f69625b5f666d747a81888f96978d847a71685e53483c2f23170a00000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3b47525e6a76828e999a9a9a9a9a9a92877b6f63574b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000b17232f3b47535f6b77838f9ba7a89c9084786b5f53473b2f22160a000000000000000000000000000000000b1724313e4a5763707979797979797979797973675a4e4135281b0e02000000000000000000000000000000020c151d24292d2f2f2f2f2f2f2f2f2f2e2a2521262a2e31333637383939393938373532302c28241f19130d0600000000000000000000000013202c3946535f6c7986938b7e7165636363636363636365717e8b9386796c5f5346392c2013000f1c28343f4b555d6363636363636369768390908376695c4f4336291c1005030000000000000013202c3946535f6c79868686807366594c403326190d0000000000000000000000000003080d12171c21262b30353a3f43484d52575c61666b70757a7f84898e93989ca1a5a09b96908376695d5043362a1d100013202c3946535f6c798692979ca1a5a09b96918c88837d79746f6a65605b56514c47423d38332f2a25201b16110c07020000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2d29241e23282c2f323536383939393938373533312e2a26211c160f09010000000000000000000000000000000000000000000000000000000000000000000000010c17222d37424d58636d78838e999e93887d72685d52473c31271c110600000000000000101c2935404c565f65656058524b45403c393837383a3c3f4246494e52565a5e6266696d6f72737475747473716f6c68635e59524c453d352c22170c010000000000000000000000000000000000000000030c151c23282b2d2d2d2d2d2d2d2d2b27221b130b01000000000000000000000000000000000000000000000000000000000000000000050d141a20262b3034383b3e41424445464646454443413f3c3935302c26211b140d06000000000000000000000000000003101c2834404c58646f7b87929da8aca1978d837a7169635d585452504f4f505154575c61687079828c97a2ada99e92867a6e62564a3d3125180c00000000000000000000000000000000000000000f1b28343f4b555e6465656565656565656560584e43372b1f13060000000000000000000000000000000007131e28323b43484b4c4c4c4c4c4c4c4c4c4c4c4c4c4c55626f7b8895a2a09386796c5f534c4c4c4c4c4c4c4c4c4c4c4c4c4c4b47413930261b10050000000000000000000000000000000000000006131f2b36414c555e67717a838c959b948e87817a746d666a71787e858c939a978e857b72685f564c42372b1f1307000000000000000000000000000000000000000000000000000000000000000000000000000007131e2a36424e5965717d898d8d8d8d8d8d8d8d82766a5e52473b2f23170c0000000000000000000000000000000000000000000000000000000000000000000005101c28333f4b57636f7b87939faba3978b8073675b4f43372b1f1206000000000000000000000000000000000916222f3b47535e676c6c6c6c6c6c6c6c6c6c6961564b3f3226190d0000000000000000000000000000000000030b12181d20222222222222222222211e1a151a1e212427292a2c2c2c2c2c2b2a282623201c18130e08020000000000000000000000000013202c3946535f6c7986938b7e7170707070707070707070717e8b9386796c5f5346392c201300121e2b3844505c676f70707070707070768390908376695c4f4336291c10030000000000000000131f2c3946525f6b76797979797165584c3f3326190c00000000000000000000000000000001060b10151a1f24292e33383d42474b50555a5f64696e73787d82878c91969ba0a49d908376695d5043362a1d100013202c3946535f6c798693a0a39e9994908b86817c77726d68635e59544f4a45403b37322d28231e19140f0a05000000000000000000000000000000000000020a11181c20212222222222222222201d1813181c202326282a2b2c2c2c2c2b2a292724211e1a15100b04000000000000000000000000000000000000000000000000000000000000000000000000000005101b26313b46515c67717c87929d9a8f84796e63594e43382d23180d02000000000000121f2b3844515d6871716a635c56514c484644444546484b4e52565a5e62666a6e7276797c7e8081828181807e7b78746f6a645d564f473e33281d110500000000000000000000000000000000000000010b151e272e34383a3a3a3a3a3a3a3a37332d251d13090000000000000000000000000000000000000000000000000000000000000000000002090f151a1f24282c2f323436373839393939383634322f2c2925201b150f0903000000000000000000000000000000000c1824303b47535f6a75818c97a1aca99f958c837b746e6864615e5d5c5c5d5e6063676c737a828b949ea9aea3988d81766a5e52463a2e2115090000000000000000000000000000000000000000111e2b3744505c67707272727272727272716a6054473b2e22150900000000000000000000000000000000010c16202931383c3f3f3f3f3f3f3f3f3f3f3f3f3f3f4855626f7b8895a2a09386796c5f53463f3f3f3f3f3f3f3f3f3f3f3f3f3e3b362f271e140a0000000000000000000000000000000000000000020e1a25303a434c555f68717a838c959f99928c857e7871757c838990979e988e857c726960564d443a30261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313d4955606c788181818181818181817d71655a4e42362a1e1307000000000000000000000000000000000000000000000000000000000000000000000a16212d3844505c6873808b97a3aa9f93877b6f63574b3f33271b0f030000000000000000000000000000000007131f2b37424c555c5f5f5f5f5f5f5f5f5f5f5e584f453a2e22160a00000000000000000000000000000000000000070d111416161616161616161615120e090e1115181a1c1e1f202020201f1d1c1a1714100c070200000000000000000000000000000013202c3946535f6c7986938b7e7d7d7d7d7d7d7d7d7d7d7d7d7e8b9386796c5f5346392c20130013202c3946535f6c787d7d7d7d7d7d7d7d8390908376695c4f4336291c10030000000000000000111e2a37434f5a646b6c6c6c6c685f54493d3024170b00000000000000000000000000000000000004090e13181d22272c31363b40454a4f54585d62676c71767b80858a8f94999d908376695d5043362a1d100013202c3946535f6c7986939c98938e89847f7a75706b66615c57524d48433f3a35302b26211c17120d080300000000000000000000000000000000000000000000060c101315151515151515151513110c070c101317191b1d1e1f20201f1f1e1c1a1815120e0904000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a353f4a55606b75818b96a0968b80756a5f554a3f34291e140900000000000013202c3946535f6c797c756e68625c5855525151515355585b5e62666a6e72767a7e8285888b8d8e8e8e8d8c8a8884807b756f6861595045392e2215090000000000000000000000000000000000000007121d2730393f444747474747474746443e372f251b1005000000000000000000000000000000000000000000000000000000000000000000000004090f13181c1f222527292b2c2c2c2c2c2b2a282623201c19140f0a0400000000000000000000000000000000000007131f2b37424e59646f7a85909aa4aea79e958d867f7974706d6b6a6969696b6d6f73787e848c949da6b0a69c92877b7065594d42362a1e12050000000000000000000000000000000000000000121f2c3845525f6b787e7e7e7e7e7e7e7e7c6f6356493c302316090000000000000000000000000000000000050e171f262c30323232323232323232323232323c4855626f7b8895a2a09386796c5f534639323232323232323232323232322f2b251e150c0200000000000000000000000000000000000000000008131e28313a434d565f68717a838d969f9d97908a837c80868d949ba2988f867c736a60574e443b32281e1409000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c3844505c6771737373737373737373736c6155493d31251a0e0200000000000000000000000000000000000000000000000000000000000000000004101b26323e4955616c7884909ca8a59a8e82766b5f53473b2f23170b0000000000000000000000000000000000030e1a25303a434b5053535353535353535353514d463d33281d12060000000000000000000000000000000000000000010507090909090909090909080602000205080b0e1011121313131312110f0d0a070400000000000000000000000000000000000013202c3946535f6c7986938f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8f9386796c5f5346392c20130013202c3946535f6c79868a8a8a8a8a8a8a8b93908376695c4f4336291c100300000000000000000e1a26323e48525a5f5f5f5f5f5d564d43382c201408000000000000000000000000000000000000000003080c11161b20252a2f34393e43484d52575c60656a6f74797e83888d92908376695d5043362a1d100013202c3946535f6c798693918c87827d78736e69645f5a55504b47423d38332e29241f1a15100b060100000000000000000000000000000000000000000000000000000407080808080808080808070401000004070a0d0f1012121313131211100e0b09050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232e39444e59646f7a848f9a9c91877c71665b50463b30251a1005000000000013202c3946535f6c79868079736d6864615f5e5d5e5f6164676a6e72767a7e82868a8e929597999b9b9b9a999794908c86807a736b61564a3e3125180b000000000000000000000000000000000000010d18242f39424a5053535353535353534f4941372d21160a0000000000000000000000000000000000000000000000000000000000000000000000000003080c101316191b1d1e1f1f201f1f1e1d1b191714100c08040000000000000000000000000000000000000000030e1a26313c48535e69747e88929ca5ada79f97918a85817d7a787676767677797c8084898f969ea6afa79e948a80756a5f54483d3125190d010000000000000000000000000000000000000000121f2c3845525f6b78858c8c8c8c8c8c897c6f6356493c30231609000000000000000000000000000000000000050d151b20242526262626262626262626262f3c4855626f7b8895a2a09386796c5f5346392c262626262626262626262625231f1a130c0300000000000000000000000000000000000000000000020c161f28313a434d565f68717a848d969fa29b948e878a91989fa29990867d746a61584e453c322920160d02000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b454d555f6567676767676767676766625a4f44382d211509000000000000000000000000000000000000000000000000000000000000000000000a15212c37434e5a66717d8995a0aca095897d71665a4e42362a1e130700000000000000000000000000000000000009141e28313940444646464646464646464645413b342b21170c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693939393939393939393939393939393939386796c5f5346392c20130013202c3946535f6c7986939393939393939393908376695c4f4336291c100300000000000000000a16212c3740484f5253535353514c443b31271b10040000000000000000000000000000000000000000000001060b1014191e23282d32373c41464b50555a5f63686d72777c81868b8376695d5043362a1d100013202c3946535f6c79868a85807b76716c67625d58544f4a45403b36312c27221d18130e090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c27323d48525d68737e89939e988d83786d62574c42372c21160b010000000013202c3946535f6c79868a847e7974706e6c6a6a6b6c6e7073777a7e82868a8f93969a9ea1a4a4a2a1a1a1a3a3a09c97928b857d7266594c3f3326190d00000000000000000000000000000000000005111d2935404b545c60606060606060605b53493e33271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000003070a0c0e1011121313131211100f0d0a07040000000000000000000000000000000000000000000000000914202b37424c57626c76808a939ba3aba9a29c96918c898684838383838486888c90959aa1a8ada69e958c82786e63594e43372c201509000000000000000000000000000000000000000000121f2c3845525f6b7885929898989896897c6f6356493c3023160900000000000000000000000000000000000000030a1014171919191919191919191919222f3c4855626f7b8895a2a09386796c5f5346392c20191919191919191919191817130e0802000000000000000000000000000000000000000000000000040d161f28313b444d565f68717a848d969fa69f9994959ca3a39a90877e746b62584f463c332a20170e040000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d575f636464646464625b5a5a5a5a5750483e33281c100400000000000000000000000000000000000000000000000000000000000000000005101b27323d49545f6b76828e9aa5a69b8f84786c6155493d32261a0e02000000000000000000000000000000000000020c161f282f3438393939393939393939393835302a22190f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0d0a0600000000000000000000000000000013202c3946535f6c798686868686868686868686868686868686868686796c5f5346392c20130013202c3946535f6c7986868686868686868686868376695c4f4336291c1003000000000000000005101a252e373e43464646464644403a322920150a000000000000000000000000000000000000000000000000000004090e13181c21262b30353a3f44494e53585d62676b70757a808376695d5043362a1d100013202c3946535f6c79837e79746f6a65605c57524d48433e39342f2a25201b16110c0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090a0a0a0a0a0a0a0a0a08060407090a0a0a0a0a0a0a0a090704000000000000000000000000000000000000000000000000000000000000000000000000000b16202b36414c56616c77828d979f94897e74695e53483d33281d12070000000013202c3946535f6c7986938f8a85817d7a78777777797a7d8083868a8e92979b9fa3a4a09d9a979594949496989b9ea39d968c807366594c403326190d0000000000000000000000000000000000000714202d3945515d666d6d6d6d6d6d6d6c655a4f43372a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a25303b46505a646e7781899199a0a7ada7a19d9995939190909090919295989ca0a6aca9a39c948c837a70665c52473c31261b0f04000000000000000000000000000000000000000000121f2c3845525f6b7885929fa5a5a396897c6f6356493c3023160900000000000000000000000000000000000000000004080b0c0c0c0c0c0c0c0c0c0c15222f3c4855626f7b8895a2a09386796c5f5346392c20130c0c0c0c0c0c0c0c0c0c0a0703000000000000000000000000000000000000000000000000000000040d161f29323b444d565f68727b848d96a0a0a0a0a0a0a09a91887e756b625950463d342a21180e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3a46535e697071717171716d655e574f4d4b463e362c21160e060000000000000000000000000000000000000000000000000000000000000000010c17222d38434e5a65707c88939faaa1958a7e73675c5044392d2115090000000000000000000000000000000000000000040d161d23282b2c2c2c2c2c2c2c2c2c2c2c29251f18100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b1116191c1c1c1c1c1c1a16110b0400000000000000000000000000131f2c3946525f6b767979797979797979797979797979797979797979766b5f5246392c1f1300131f2c3946525f6b7679797979797979797979797974685c4f4236291c100300000000000000000009131c252c3237393939393938352f2920170e030000000000000000000000000000000000000000000000000000000002070c11161b1f24292e33383d42474c51565b60656a6e737874685c4f4336291d1000131f2c3946525f6b7677726d68635f5a55504b46413c37322d28231e1914100b06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e1215171717171717171717151210141617171717171717171614100b050000000000000000000000000000000000000000000000000000000000000000000000040f1a242f3a45505a65707b86919b9b90857a70655a4f44392f24190e0300000013202c3946535f6c7986939b95918d8987858484848587898c8f93969a9ea3a4a09b9894918d8b89888788898b8e92979c998c807366594c403326190d0000000000000000000000000000000000000815222f3b4855616e787a7a7a7a7a7a776b5f5246392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0c0d0d0d0d0d0d0d0d0c0a060200000000000000000000000000000000000000000000000000000009141f29343e48525c656e7780878f969ca2a7aba9a5a2a09e9d9c9c9d9e9fa1a4a8aca8a39e98918a827a71685e554a40362b20150a00000000000000000000000000000000000000000000121f2c3845525f6b7885929facb0a396897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000040d172029323b444d576069727b848e9393939393939392887f756c635950473e342b22180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626e7b7d7d7d7d7d777069615a534b443d352e271f18110a0200000000000000000000000000000000000000000000000000000000000007121d28333e4954606b76828d99a4a69a8f84786d62564b3f33281c1005000000000000000000000000000000000000000000040b12181c1f202020202020202020201f1d19140d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c222628292929292826221d160e06000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e1100111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6a62574c4033271b0e01000000000000000000010a131a21262a2c2c2c2c2c2b29241e170e050000000000000000000000000000000000000000000000000000000000000000050a0f14191e23272c31363b40454a4f54595e63686c6a62584c4034271b0e00111e2a37434f5a646b6b67625d58534e49443f3a35302b26211c18130e0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e22232424242424242423211e1c2023242424242424242423201c160f08000000000000000000000000000000000000000000000000000000000000000000000008131e28333e49545f69747f8a959f978c81766b61564b40352b20150a00000013202c3946535f6c7986939ca19d99969392919091929496999c9fa3a4a09c98948f8b8884817e7c7b7a7b7d7f82868b90968c807366594c403326190d0000000000000000000000000000000000000915222f3c4855626f7b878787878786796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000001080e1317191a1a1a1a1a1a1a1a1916120d070000000000000000000000000000000000000000000000000000020d18222c36404a535c656d757d848b91969b9fa2a5a8a9aaa9a9a9a9aaaaa8a6a3a09c97928c86807870685f564c43392e24190e0300000000000000000000000000000000000000000000121f2c3845525f6b7885929facaca396897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029323b454e576069727b85868686868686868680766d635a51473e352c22191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b868a8a8a89827a736c645d564e474039312a231b140d0500000000000000000000000000000000000000000000000000000000040e19242f39444f5b66717c87939eaa9f94897e73675c51453a2e23170b000000000000000000000000000000000000000000000001070c10121313131313131313131312100d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d171f272d32353636363635322e2820180f0500000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5e5850463b2f23170b0000000000000000000000010910161a1e1f202020201f1c18130c05000000000000000000000000000000000000000000000000000000000000000000000003080d12171c21262b2f34393e43484d52575c5f5e5950463b3024180c000e1a26323e48525a5f5f5b56514c47423d38332e2924201b16110c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161e252a2e3030303030303030302e2a272c2f30303030303030302f2c27211a110800000000000000000000000000000000000000000000000000000000000000000000010c17222d37424d58636d78838e999e93887d72675d52473c31261c1106000013202c3946535f6c79838b91979ca1a2a09e9e9d9e9fa0a2a5a39f9c9894908c88837f7b7875726f6e6e6e7073767a7f858b8c807366594c403326190d0000000000000000000000000000000000000915222f3c4855626f7b889494949386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000030b131a1f2326262626262626262625221e181109000000000000000000000000000000000000000000000000000006101a242e38414a535c646b727980858a8f9396999b9d9e9f9f9f9f9e9d9b999793908b87817b746d665e564d443a31271d12080000000000000000000000000000000000000000000000121f2c3845525f6b7885929fa0a0a096897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029333c454e57606972797979797979797979766d645b51483f352c231a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a747d869097938c857d766f686059524a433c342d261e1710080000000000000000000000000000000000000000000000000000010b15202b35404b56616c77828d99a4a4998e83786d61564b3f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2931393e4142424242423f39322a20160c01000000000000000000000a16212c3740484f525353535353535353535353535353535353535353524f4840372c21160a000a16212c3740484f52535353535353535353535353524d463e34291e130700000000000000000000000000050a0e11131313131312100c0701000000000000000000000000000000000000000000000000000000000000000000000000000001060b10151a1f24292e33383c41464b5053524e473e342a1f1307000a16212c3740484f52524f4a45403b36312c28231e19140f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f282f363a3d3d3d3d3d3d3d3d3d3a3532383c3d3d3d3d3d3d3d3d3c38332b231a10050000000000000000000000000000000000000000000000000000000000000000000005101b26313b46515c67717c87929d998f84796e63584e43382d22170b0000121f2b3844515d68717980868c9195999b9d9fa0a09f9d9b9996938f8c8884807b77736f6c68656361616263666a6e73798087807366594c403326190d0000000000000000000000000000000000000915222f3c4855626f7b8895a0a09386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000020b151d252b30323333333333333333322f2a231b1209000000000000000000000000000000000000000000000000000009131c262f38414a525961686e74797e83868a8c8e90919292929291908f8d8a8784807b76706a635c544c443b32281f150b000000000000000000000000000000000000000000000000121f2c3845525f6b7885929393939393897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e17202a333c454e5760696c6c6c6c6c6c6c6c6c6b645b52493f362d231a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58626b747d879099978f888179726b635c554d463f383029221a12080000000000000000000000000000000000000000000000000008121d27323c47525d67727d89949fa89d92887c71665b50453a2e23180c0100000000000000000000000000000000000000000000000000000000000000000004090b0d0d0d0d0d0d0d0d0d0b0804000000000000000000000004090b0d0d0d0d0d0d0d0d0d0b0804000000000000000000000000000005111c27313b434a4e4f4f4f4f4e4a443c32281d12060000000000000000000005101a252e373e4346464646464646464646464646464646464646464646433e372e251a10050005101a252e373e434646464646464646464646464645423c352c22180d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e13181d22272c31363b40444645423c352c22180d020005101a252e373e434646433e3934302b26211c17120d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121d27313a41474a4a4a4a4a4a4a4a4946403d44484a4a4a4a4a4a4a4a48443d352c22170c000000000000000000000000000000000000000000000000000000000000000000000009141f2a353f4a55606b75808b96a0958b80756a5f544a3f33271b0f0300101c2935404c565f676e757a8085898c8f9192939392918f8d8a8783807c78746f6b67635f5c5956555455575a5e63686e757c807366594c403326190d0000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000009131d272f363c3f40404040404040403e3a352d241b110600000000000000000000000000000000000000000000000000010a141d262f3840484f565d63686e72767a7d8082838585868685858482807e7b77736f6a655f58514a423a322920160d03000000000000000000000000000000000000000000000000121f2c3845525f6b7885868686868686867c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a0a09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18212a333c454e575d5f5f5f5f5f5f5f5f5f5f5a524940372d241b110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323c475059626b757e8790999a928b847c756e665f585149423b332c241a1106000000000000000000000000000000000000000000000006101a242f39434e59636e79848f9aa5a1968c81766b60554a3f34281d12060000000000000000000000000000000000000000000000000000000000000000040b101518191a1a1a1a1a1a1a191815100a0400000000000000040b101518191a1a1a1a1a1a1a191815100a040000000000000000000000000916212d38434d555a5c5c5c5c5b564e443a2f23170b000000000000000000000009131c252c32373939393939393939393939393939393939393939393937322c251c130900000009131c252c3237393939393939393939393939393936312a231a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c11161b20252a2f3438393936312b231a110600000009131c252c3237393937332e29241f1a15100b0601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e39434c52565757575757575756524b474f545757575757575757554f473e33281d110500000000000000000000000000000000000000000000000000000000000000000000030d18232e39434e59646f79848f939391877c71665b5044382b1f1206000c18242f3a444e555c63696f74797c808284858686858482807d7a77736f6b67635f5b5753504c4a4847484a4e52575d646b72797165584c3f3226190c0000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000040f1a252f3941474c4d4d4d4d4d4d4d4d4b463f372d23180c0100000000000000000000000000000000000000000000000000020b141d262e363d444b52575d62666a6e71737577787979797978777573716e6b67635e59534d474038302820170e0400000000000000000000000000000000000000000000000000121f2b3845515e6a767979797979797979786e6255493c2f2316090000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b889393939386796c5f5346392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a333c454c51535353535353535353524f4940372e251b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343e475059626c757e87919a9d968e878078716a625b544c453e362c23180d02000000000000000000000000000000000000000000040e18222c36404b55606a75808b95a0a49a8f857a6f645a4f44392d22170c0100000000000000000000000000000000000000000000000000000000000000060e151c212426262626262626262624211c150e050000000000060e151c212426262626262626262624211c150e0500000000000000000000000d1925323e4a555f66696969696760564b3f33271b0e0200000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a01000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c292520191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f14191e23282b2c2c2a252019110800000000010a131a21262a2c2c2a27221d18130e0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c28343f4b555d6363636363636363625d544f5960636363636363636360595045392d211509000000000000000000000000000000000000000000000000000000000000000000000007111c27323d48525d68737e868686868682776c6053463a2d2014070007131e29323c434b52585e63686d7073767779797979777673716e6b67635f5b57534f4b4743403d3b3b3c3e42464c525960686c685f54493d3024170b0000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000814202c37414b535859595959595959595751493f34291d11050000000000000000000000000000000000000000000000000000020b141c242b333a40464c51565a5e616466686a6b6c6c6c6c6b6a696765625f5b57534e48423c352e261e160e050000000000000000000000000000000000000000000000000000101d2936424e59646b6c6c6c6c6c6c6c6c6c665d52463a2d2114080000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b868686868686796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a333b414546464646464646464646433e372e251c130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222c353e47505a636c757e88919aa099918a837b746d655e574f483e34291e12070000000000000000000000000000000000000000020c161f29333e48525c67717c87919ca79d93887e73685e53483d32271c110600000000000000000000000000000000000000000000000000000000000000050f1820272d31333333333333333333312d2720170e05000000050f1820272d31333333333333333333312d2720170e05000000000000000000000e1b2835414e5a66717575757572685c4f4336291d10030000000000000000000000010910161a1e1f20202020202020202020202020202020202020201f1e1a161009010000000000010910161a1e1f2020202020202020202020201f1d19140e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080d12171c1e201f1d1a140e07000000000000010910161a1e1f201e1b16110c0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3844505c676f707070707070706e665b55616b70707070707070706b61564a3d3124180b0000000000000000000000000000000000000000000000000000000000000000000000000b16202b36414c56616c76797979797979776c6053463a2d20140700010c17202a323940474d53585c606467696b6c6c6c6c6b696764625e5b57534f4b47433f3b3734312f2e2f32363b41474f565d5f5d564d43382c2014080000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000c1824313d48535d646666666666666666635b50453a2e211509000000000000000000000000000000000000000000000000000000020a121a21282f353b40454a4e5255585a5c5d5e5f5f5f5f5e5d5c5a5856534f4b47423d37312a231c140c040000000000000000000000000000000000000000000000000000000e1a26313d48525a5f5f5f5f5f5f5f5f5f5f5c544b4035291d11050000000000000000000000000000000000000000000000000000000000000000000815222f3b4855616d78797979797979766b5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1821293035383939393939393939393937322c251c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a232c353e48515a636c767f88919ba39c958d867e777069615a50463b2f23170a00000000000000000000000000000000000000010a141e28313b454f5a646e79838e98a3a0958b81766c61574c41362c21160b00000000000000000000000000000000000000000000000000000000000000020d17212a32383d4040404040404040403d38322920170c0100020d17212a32383d4040404040404040403d38322920170c010000000000000000000f1c2835424f5b687582828282776a5d5044372a1d110400000000000000000000000000050a0e1113131313131313131313131313131313131313131313110e0a05000000000000000000050a0e111313131313131313131313131312110d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b0f121313110d0903000000000000000000050a0e111313110f0a0501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c787d7d7d7d7d7d7d776b5e5865727d7d7d7d7d7d7d7d7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000040f1a242f3a45505a646b6c6c6c6c6c6c6b655b4f44372b1f12050000050e1720272e353c41474c5054585a5c5e5f5f5f5f5e5c5a5855524f4b47433f3b37332e2b2724222122252a2f363d444c5152504b443b31261b10040000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000e1b2734404d59656f73737373737373736d62564a3d3124170b0000000000000000000000000000000000000000000000000000000000080f161d242a2f353a3e4245484b4d4f51525253535252514f4e4c4946433f3b36312b261f19120a02000000000000000000000000000000000000000000000000000000000915202b3640484e52535353535353535353504a42392f24190d010000000000000000000000000000000000000000000000000000000000000000000714202d3945515c666c6c6c6c6c6c6c6b645a4f43372a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e24292c2c2c2c2c2c2c2c2c2c2c2a27211b130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232c363f48515a646d767f89929ba09f989089827a736c62574b3f33261a0d0000000000000000000000000000000000000009131c263039434d57616c76808b959fa2988e84796f655a50453a30251a0f040000000000000000000000000000000000000000000000000000000000000008131e29333c43494c4d4d4d4d4d4d4d4c49433b32281e13070008131e29333c43494c4d4d4d4d4d4d4d4c49433b32281e13070000000000000000000f1c2835424f5b6875828f8f84776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79868a8a8a8a8a85786b5e5865727e8a8a8a8a8a8a7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000008131e28333e49525a5f5f5f5f5f5f5f5f5a53493e33271b0f03000000050e161d242a30363b4044484b4e50515253535251504e4b4946423f3b37332f2b27221f1b18151416191e242b333a40444644403a32291f150a000000000000000003060707070707070707070915222f3c4855626f7b8895a2a09386796c5f5346392c20130707070707070707070705020000000000000000000000000000000000000000000000000f1b2835424e5b6875808080808080807e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000050c12191e24292e3236393c3f4143444546464646454443413f3d3a37332f2a25201a140e07000000000000000000000000000000000000000000000000000000000000040f1a242e363d4345464646464646464646443f3830271d12070000000000000000000000000000000000000000000000000000000000000000000004111d2934404a545b5f5f5f5f5f5f5f5f5a52483e32261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d13191c1f2020202020202020201f1e1b1610090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a242d363f48525b646d7680899293939393938c857d74675a4e4134281b0e01000000000000000000000000000000000004101a252e38424b555f69737d88929ca49a90867c72675d53483e33291e130900000000000000000000000000000000000000000000000000000000000000000c1824303a454e55595959595959595959554d443a2f24180c000c1824303a454e55595959595959595959554d443a2f24180c0000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000000407080808080808080808080808080808080808080808080808080808080808080808080808080808070400000000000000000000000000000000000000000000000000000000000000000000000000000000000104070808080808080808080704000000000000000000000000000000000000000000000000000000000000000000000206080b0d0f101212131313131211100e0c0a0704000000000000000000000000000000000000000000000000000000000000000000000000000004070808080808080808080806030000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939797979285786b5e5865727e8c979797978c7f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000010c17222c3740494f52535353535353524f4941372d22160b0000000000040b12191f252a2f34383c3f414345464646464543413f3c3936332f2b27231f1b16120f0b0908090d131921282f34383938342f2820170d03000000000000060b0f121414141414141414141415222f3c4855626f7b8895a2a09386796c5f5346392c201414141414141414141414120f0a04000000000000000000000000000000000000000000000f1b2835424e5b6875828d8d8d8d8d8b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000001070d13181d2226292d303234363738393939393837363433302d2a27231e1a150f0903000000000000000000000000000000000000000000000000000000000000000008121b242c32363939393939393939393937332e271e150b0100000000000000000000000000000000000000000000000000000000000000000000000c18232e38424a5052535353535353524f4840372c21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d101213131313131313131313110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d364049525b646d778086868686868686868174675b4e4134281b0e0100000000000000000000000000000000000a16212c37404a545d67717b858f9aa49b92887e746a60564b41372c22170c020000000000000000000000000000000000000000000000000000000000000000101c2935414c57606566666666666666655f564c4034281c1000101c2935414c57606566666666666666655f564c4034281c100000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000060c101315151515151515151515151515151515151515151515151515151515151515151515151515151513100c070000000000000000000000000000000000000000000000000000000000000000000000000001070c111315151515151515151513100c07000000000000000000000000000000000000000000000000000000000002070b0f1215171a1c1d1e1f2020201f1f1e1c1b191613100d0904000000000000000000000000000000000000000000000000000000000000000000070c111315151515151515151515130f0b05000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a49e9285786b5e5865727e8c98a4a4998c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000005101b252e373e434646464646464646433e372f251b100500000000000000070e14191f24282c2f323537383939393938363532302d2a26231f1b17130f0a06030000000002080f171e24282b2c2b28241e160e050000000000020a11171c1f2121212121212121212121222f3c4855626f7b8895a2a09386796c5f5346392c2121212121212121212121201e1b160f080000000000000000000000000000000000000000000f1b2835424e5b6875828e9a9a9a988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000002070d11161a1d20232628292b2b2c2c2c2c2c2b29282624211e1b17130e0904000000000000000000000000000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2b28231c150c0300000000000000000000000000000000000000000000000000000000000000000000000007121c2630383f434646464646464646433e372e251a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242e374049525b656e7779797979797979797972675a4d4134271b0e0100000000000000000000000000000000000e1a26323d48525c666f79838d97a09d938980766c62584e44392f251a1005000000000000000000000000000000000000000000000000000000000000000000121f2b3845515d68717373737373737371685d5144382b1e1200121f2b3845515d68717373737373737371685d5144382b1e120000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000020a11181c20212222222222222222222222222222222222222222222222222222222222222222222222222221201d18120b0300000000000000000000000000000000000000000000000000000000000000000000030b12181d20222222222222222221201c18120a020000000000000000000000000000000000000000000000000004090e13171b1e212426282a2b2c2c2c2c2c2b2a29272523201c1915100b060100000000000000000000000000000000000000000000000000000000030b12181d20222222222222222222211f1c1610090100000000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c3237393939393939393937332d251d130900000000000000000003080e13181c202326282a2b2c2c2c2c2b2a282623211d1a16130f0b0703000000000000000000050c13181c1e1f1e1c18130c040000000000010b141b22282b2d2e2e2e2e2e2e2e2e2e2e2e2f3c4855626f7b8895a2a09386796c5f5346392e2e2e2e2e2e2e2e2e2e2e2e2d2b27211a120900000000000000000000000000000000000000000f1b2835424e5b6875828e9ba6a5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000105090d111417191b1d1e1f1f20201f1f1e1d1b191715120e0b07020000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1e1f2020202020202020201e1b17110a0300000000000000000000000000000000000000000000000000000000000000000000000000000b141e262d3337393939393939393937322c251c13090000000000000000000000000000000000000000000000000000000000040708080808080808080808070502000000000000000000000000000000000000000000000000000000000000000000010407080808080808080808080704000000000000000000000000000000000000000000000000000000000000000000000000000009121b252e374049535c656b6c6c6c6c6c6c6c6c6c6961564a3e3226190d000000000000000000000000000000000000111d2a36434e5a646e78818b939393938b81776e645a50463c32281d13090000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7980808080808080796c5f5246392c1f130013202c3946535f6c7980808080808080796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2c29231d150c030000000000000000000000000000000000000000000000000000000000000000030d151d24292d2e2e2e2e2e2e2e2e2e2c28231c140c020000000000000000000000000000000000000000000003090f151a1f23272b2e3133353638383939393938373634322f2c2925211c17120c060000000000000000000000000000000000000000000000000000030c151d23292c2e2e2e2e2e2e2e2e2e2e2c27221b130a00000000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000010a131b21272a2c2c2c2c2c2c2c2c2a27211b130b01000000000000000000000002070c101317191c1d1f2020201f1f1d1b191714110e0a07030000000000000000000000000001070c10121312100c070100000000000009131d262d33383a3a3a3a3a3a3a3a3a3a3a3a3a3c4855626f7b8895a2a09386796c5f53463a3a3a3a3a3a3a3a3a3a3a3a3a3a37322c241b1107000000000000000000000000000000000000000f1b2835424e5b6875828e9ba8a5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000105080a0c0e101112131313131211100f0d0b080502000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1113131313131313131313120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c22272b2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000000000000000000000060c10131515151515151515151514110e0802000000000000000000000000000000000000000000000000000000000001070d11141515151515151515151513100c070000000000000000000000000000000000000000000000000000000000000000000000000009131c252e37414a535b5f5f5f5f5f5f5f5f5f5f5d574f44392e22160a000000000000000000000000000000000000121f2c3945525e6b768086868686868682786f655c52483e342a20160c010000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c79868d8d8d8d8d86796c5f5246392c1f130013202c3946535f6c79868d8d8d8d8d86796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b39342e271e150a00000000000000000000000000000000000000000000000000000000000000010b151f272f35393b3b3b3b3b3b3b3b3b39342e261e140a000000000000000000000000000000000000000000070e141a20262b2f33373a3d3f4143444546464646454442403e3c3835312d28231d17110a030000000000000000000000000000000000000000000000000b151e272e35393b3b3b3b3b3b3b3b3b3b38332c251c1208000000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000010910161b1e1f202020202020201e1b1610090100000000000000000000000000000004070a0d0f11121313131312110f0d0a080501000000000000000000000000000000000000000000000000000000000000000005101b252f373f4447474747474747474747474747474855626f7b8895a2a09386796c5f53474747474747474747474747474746433d362d23190e030000000000000000000000000000000000000f1b2835424e5b6875828e9ba2a2988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1e202020202020201f1e1a161009010000000000000000000000000000000000000000000000000000020a11171c2021222222222222222222201e19140d05000000000000000000000000000000000000000000000000000000030b12181d2022222222222222222221201c18120a020000000000000000000000000000000000000000000000000000000000000000000000010a131c252f3841494f52535353535353535353514d453d33281d1106000000000000000000000000000000000000121f2c3845525e6b76797979797979797870675d534a40362c22180e04000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939a9a9a9286796c5f5246392c1f130013202c3946535f6c7986939a9a9a9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000006111c262f383f4548484848484848484848484848484848484848484848484848484848484848484848484848484845403930261c110600000000000000000000000000000000000000000000000000000000000007121d273139404548484848484848484845403830261c1106000000000000000000000000000000000000020a11181f262b31363b3f4347494c4e5051525253535252504f4d4b4845413d39342e28221c150d060000000000000000000000000000000000000000000007121d273039404548484848484848484847443e372e241a0f030000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e111313131313131313110f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d3741495053545454545454545454545454545455626f7b8895a2a09386796c5f545454545454545454545454545454534f483f352a1f14080000000000000000000000000000000000000f1b2835424e5b6875828e959595958b7e7165584b3e3225180b0000000000000000000000000000000000000000000001070b0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0d0a06000000000000000000000000000000000000000000000000000205080a0c0e0f10111212121111100f0d0b0907040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313110e0a05000000000000000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2d2a251f170f0500000000000000000000000000000000000000000000000000030d151d24292d2e2e2e2e2e2e2e2e2e2e2c28231c140c020000000000000000000000000000000000000000000000000000000000000000000000010a131d262f373e434646464646464646464645413b342b21160c00000000000000000000000000000000000000111d2a36424e5a646b6c6c6c6c6c6c6c6c675e554b41382e241a100600000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a69f9286796c5f5246392c1f130013202c3946535f6c798693a0a69f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000b17222d38424a51545555555555555555555555555555555555555555555555555555555555555555555555555554514a42382e23170c0000000000000000000000000000000000000000000000000000000000000c18232f39434b51545555555555555554514a42382d22170b0000000000000000000000000000000000030c141b232a31373d42474b4f5356585b5c5e5f5f5f5f5f5e5d5c5a5754514d49443f3a342d261f1810080000000000000000000000000000000000000000000c18232e39424b51545555555555555555544f4940362b2014090000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27333e49535b60616161616161616161616161616161626f7b8895a2a09386796c616161616161616161616161616161615f5a51473c3024180c0000000000000307090b0b0b0b0b0b0b0b0b0f1b2835424e5b6875828888888888887e7165584b3e3225180b0b0b0b0b0b0b0b0b0b090602000000000000000000060d12171a1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a16110b04000000000000000000000000000000000000000003070b0e121417191b1c1d1e1e1e1e1e1e1d1b1a181613100d090500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141d262e34383b3b3b3b3b3b3b3b3b3b3a36302921170d030000000000000000000000000000000000000000000000010b151f272f35393b3b3b3b3b3b3b3b3b3b39342e261e140a000000000000000000000000000000000000000000000000000000000000000000000000010b141d252d3337393939393939393939393835302922190f05000000000000000000000000000000000000000e1a26323d48525a5f5f5f5f5f5f5f5f5f5c554c43392f261c12080000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000f1b27333f4a545c6161616161616161616161616161616161616161616161616161616161616161616161616161615c544a3f34281c10030000000000000000000000000000000000000000000000000000000004101d2934404b555d6161616161616161615c544a3f33281b0f03000000000000000000000000000000040d151e262d353c42484e53575b5f626567696a6b6c6c6c6c6b6a686664615d5955504b453f38312a221a11090000000000000000000000000000000000000004101c2834404b545c616161616161616161605a52483c3125190d0000000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000000000000000000000106090b0c0c0c0c0c0c0c0c0c0c0b0905010000000000000000000000000000000000000000000000000000000003070a0c0c0c0c0c0c0c0c0c0c0a0804000000000000000000000000000000000005080b0c0c0c0c0c0c0c0c0c0c0a0804000000000000000000111e2a37434f5b656c6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6f7b8895a2a09386796d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6b63584d4034281b0f0000000002090e1316171818181818181818181b2835414e5b67747b7b7b7b7b7b7b7b7164584b3e3125181818181818181818181715120d07010000000000000710171e2327292929292929292929292929292929292929292929292929292929292929292929292929292929292929292826221d160e060000000000000000000000000000000000050a0f13171b1e21232627292a2b2b2b2b2b2a29282624221f1c1915110c07020000000000000000000000000000000000000000000000000000000000000000010407090b0d0f10111112121211100f0e0c0a080502000000000000000000000000000000000000000000000000000005101b262f383f454748484848484848484846413b33291f1409000000000000000000000000000000000000000000000007121d27313940454848484848484848484845403830261c1106000000000000000000000000000000000000000000000000000000000000000000000000020b131b22272a2c2c2c2c2c2c2c2c2c2c2c29251f18100700000000000000000000000000000000000000000a15212c3640484f525353535353535353504b433a31271d140a000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d665c5044382b1f1206000000000000000000000000000000000000000000000000000000000713202c3945515c676d6e6e6e6e6e6e6e6d665b5044372b1f12050000000000000000000000000000030d161f2730383f464d53595e63686b6f72747677787979797978767573706d6965615c56504a433b342c231b120900000000000000000000000000000000000006131f2c3845515c666d6e6e6e6e6e6e6e6e6c64594d4135281c0f0300000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000000000000000000060c121518191919191919191919191815110c0600000000000000000000000000000000000000000000000000030a0f1417181919191919191919181714100a0400000000000000000000000000050c111517181919191919191919181714100a030000000000000013202c3946525f6b777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7b8895a2a093867a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a75695c504336291d10000000040c141a1f22242424242424242424242426333f4b57626b6e6e6e6e6e6e6e6e696054483c30242424242424242424242424221e19120b020000000006101922292f333536363636363636363636363636363636363636363636363636363636363636363636363636363636363635322e2820180e040000000000000000000000000000040b10161b1f23272a2d3032343537373838383837363533312f2c2925211d18130d07010000000000000000000000000000000000000000000000000000000005090d101316181a1b1d1e1e1e1e1e1e1d1c1b191714110e0b070300000000000000000000000000000000000000000000000a16222d37414a5054555555555555555555524c453b31261b0f03000000000000000000000000000000000000000000010d18242f39434b5154555555555555555554514a42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000010910161b1e202020202020202020201f1d19140d06000000000000000000000000000000000000000000040f1a242e363d43464646464646464646443f3931281f150b02000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b786c6053473a2d201407000000000000000000000000000000000000000000000000000000000814212e3b4754616d797b7b7b7b7b7b7b786c5f5346392d20130600000000000000000000000000010b151f283139414951585e656a6f74787b7e81828485868686858483827f7c7976716d67615b544d463e352d241b110800000000000000000000000000000000000714212d3a4754606d787b7b7b7b7b7b7b7b75695d5043372a1d100400000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000000000000000911181d22242525252525252525252524221d1811090000000000000000000000000000000000000000000000050d141b20232525252525252525252524201c160e0600000000000000000000000810171d21242525252525252525252523201b150e0600000000000013202c3946535f6c798687878787878787878787878787878787878b97a3a1948a87878787878787878787878787878787878376695d5043362a1d100000040d161e252b2f313131313131313131313131313b4650595f61616161616161615e574e4338313131313131313131313131312e2a241d140b020000030e18222c343a3f42424242424242424242424242424242424242424242424242424242424242424242424242424242424242423e39322a20160b00000000000000000000000002090f161c21262b2f33373a3c3f4142434445454544444341403e3b3835312d29241e18120c0500000000000000000000000000000000000000000000000002070c1115191c2022252728292a2b2b2b2b2b2a29272523211e1b17130e0a040000000000000000000000000000000000000000000e1b27333e49535c616161616161616161615e574d42372b1f140800000000000000000000000000000000000000000006111d2935404b555d616161616161616161615c544a3f33281b0f030000000000000000000000000000000000000000000000000000000000000000000000000000050a0f111313131313131313131312100d0802000000000000000000000000000000000000000000000008121c242c323639393939393939393938342e271f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946535f6c79868888888888888888888888888888888888888888888888888888888888888888888888877a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b88888888888886796d6053463a2d2013070000000000000000000000000009131d27313a434b535b626970767b8084878b8d8f91929293939291908e8c8986827d78736d665f5750473f362d231a1006000000000000000000000000000000000714212e3a4754616d7a8788888888888884776a5d5044372a1d110400000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000000000000000009121b23292e3132323232323232323232312e29221b1209000000000000000000000000000000000000000000040e171f262c3032323232323232323232302c2720180f0600000000000000000008111a22282d3132323232323232323232302c2720180f05000000000013202c3946535f6c79869394949494949494949494949494949494969da8a69c9594949494949494949494949494949494908376695d5043362a1d1000010b161f2830373b3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e474f535555555555555555524d453e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3a352e261d1309000009141f2a343e454b4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4a443c32281d120600000000000000000000050c131a21272d32373b3f4346494b4d4f505151515151504f4e4c4a4845413d39342f2a241d160f0800000000000000000000000000000000000000000001070d13181d2125292c2f3133353637383838383737353432302d2a27231f1a15100a0400000000000000000000000000000000000000111e2a37434f5b656d6e6e6e6e6e6e6e6e6e695f54483c3024180c0000000000000000000000000000000000000000000a16222e3a46515d676e6e6e6e6e6e6e6e6e6d665b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a121a21262a2c2c2c2c2c2c2c2c2c2b28231d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946535f6c79869395959595959595959595959595959595959595959595959595959595959595959594877a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b88949595959386796d6053463a2d20130700000000000000000000000006101b252f39434c555d656d747b81878c9094979a9c9d9e9fa09f9f9e9d9b9895928e89847e777169625951483f352c22180d030000000000000000000000000000000714202d3a4753606d7a8794959595959184776a5d5144372a1e110400000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000000000007111b242d343a3d3f3f3f3f3f3f3f3f3f3f3d3a342d241b110600000000000000000000000000000000000000010c16202931373c3e3f3f3f3f3f3f3f3f3f3c38322a21180e030000000000000005101a232c33393d3f3f3f3f3f3f3f3f3f3f3c38312a21170d020000000013202c3946535f6c798693a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a2a7afaea6a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19d908376695d5043362a1d100007121d28313a42474a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4640382f251b1004000d1925313c4650575b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b564e44392e23170b000000000000000000070f171e252c32383e43474c4f5355585a5b5d5d5e5e5e5e5d5c5b595754514d4945403b352f282119120a01000000000000000000000000000000000000050c13191e24292d3135383b3e4041434444454545444342413f3c3a37332f2b26211b150f08010000000000000000000000000000000000121f2c3945525f6b777b7b7b7b7b7b7b7b7a7064584c4035291d110500000000000000000000000000000000000000030f1b27323e4a56626e797b7b7b7b7b7b7b7b786c5f5346392d2013060000000000040a0e1112131313131313131313120f0b0600000000000000000000000000000000000000000000000000000000000000050a0e1112131313131313131312110e0a04000000000000000000000810161a1e1f20202020202020201e1c17120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a094877a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8894a1a2a09386796d6053463a2d2013070000000000000000000000020d17222d37414b555e676f777f868c92979ca0a3a6a7a5a3a2a2a2a2a4a5a7a5a29e9a958f89827b736b635a51473e342a1f150a0000000000000000000000000000000713202d3a4653606d798693a0a2a29e9184776b5e5144382b1e110500000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000000000000010d18232d373f454a4c4c4c4c4c4c4c4c4c4c4a453f362d23180c0100000000000000000000000000000000000007121d28323b42484b4c4c4c4c4c4c4c4c4b49433c332a1f150a000000000000010c17212c353e45494b4c4c4c4c4c4c4c4c4b48433c33291f14080000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a1a7afada5a1a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09d908376695d5043362a1d10000c18232f39434c535757575757575757575757575757575757575757575757575757575757575757575757575757575757575756524a41372c21150900111d2936424d5862686969696969696969696969696969696969696969696969696969696969696969696969696969696969696760564b3f33271a0e0000000000000000071019212830373d44494e53585c5f62646668696a6b6b6b6b6a69676563605d5a55514c46403a332b241c130a01000000000000000000000000000000000810171e242a2f35393d4145484a4c4e4f505151515151504f4d4b4946433f3b37322c26201a130b0400000000000000000000000000000000121f2c3845525e6a7682888888888888888175695d5145392d22160a0000000000000000000000000000000000000008141f2b37434f5b67737e8888888888888883776b5f5246392c20130600000000080f151a1d1f1f1f1f1f1f1f1f1f1f1e1b17120b03000000000000000000000000000000000000000000000000000000020910161b1e1f1f1f1f1f1f1f1f1f1f1d1a16100901000000000000000000040a0e11131313131313131313120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0a3a3a3a3a3a3a3a3a3a3a3a3a4a8aeaeaeada6a3a3a3a3a3a3a3a3a3a3a3a3a094877a6d6053473a2d201407000000000000000001030303030303030303030303030303030303030815212e3b4854616e7b8894a1ada09386796d6053463a2d201307000000000000000000000008131e29343e49535d677079818991979ea3a8a7a29e9b98979695959697999c9fa4a9a5a09a948d857d756c635950463b31261c110600000000000000000000000000000613202c3946525f6c7985929facab9e9285786b5e5245382c1f120500000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000000000006121e29343f495156585858585858585858585650483f34291d12060000000000000000000000000000000000000c18242f3a444d5458585858585858585858554e453c31261c1106000000000008131e28333d474f5658585858585858585858544e453b3025190d0100000013202c3946535f6c79869393939393939393939393939393939393959da7a59b9493939393939393939393939393939393908376695d5043362a1d1000101c2834404b555e63646464646464646464646464646464646464646464646464646464646464646464646464646464646464635c53493d3125190d00121f2c3845525e6a7375757575757575757575757575757575757575757575757575757575757575757575757575757575757572675b4f4236291c100000000000000007101a222b333a41484f555a5f64686b6e71737576777778787777757472706d6a66615d57514b443d352d251c130a0100000000000000000000000000020a121a21282f353b40454a4d515457595b5c5d5e5e5e5e5d5d5b5a5855524f4b47423d38322b241d150d05000000000000000000000000000000111d2a36424e5a66717d8995959595959185796d62564a3e32261a0e030000000000000000000000000000000000000c1824303c48545f6b77838f95959595958a7e72665a4f43372a1e110500000009121a21262a2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000000000000000000000000000000000000000000000000020b141b22272a2c2c2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946535f6c79869396969696969696969696969696979da6b1aea39b9796969696969696969696969694877a6d6053473a2d201407000000000002070b0e101010101010101010101010101010101010101015212e3b4854616e7b8894a1ada09386796d6053463a2d20130f0c090400000000000000020e1924303b45505b656f78828b939ba2a9a8a19b96928f8c8a898888898a8c8f93989da3aaa59f978f877e756b62574d43382d22170c010000000000000000000000000005121f2b3845515e6b7884919eaaac9f9286796c5f5346392c20130600000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000000000a16222e3a46515b6265656565656565656565625a50453a2e22160a000000000000000000000000000000000000101c2834404b565f6465656565656565656560574d43382d23180d03000000050f1a252f3a454f5961656565656565656565645f574c4135291d110400000013202c3946535f6c798686868686868686868686868686868686868b96a3a0948986868686868686868686868686868686868376695d5043362a1d1000121f2b3844505c67707171717171717171717171717171717171717171717171717171717171717171717171717171717171716e655a4e4135281c0f0013202c3946535f6c7982828282828282828282828282828282828282828282828282828282828282828282828282828282828276695d5043362a1d10000000000000061019232c343c444c535a60666b7074787b7d80828384848585848382817e7c7976726d68635d564f473f372e251c1309000000000000000000000000020b141c242c333a40464c51565a5d61636667696a6b6b6b6b6a69686664625f5b57534e49433d362f271f170f0600000000000000000000000000000e1a26323d4955616d7884909ca2a2a2968a7e72665a4e43372b1f1307000000000000000000000000000000000005111d2935404c5864707c8894a0a2a29d9185796d61564a3e32261a0e02000008121b242c32363839393939393939393937342e271f160c020000000000000000000000000000000000000000000000000a141d262d33373939393939393939393936322c251c13090000000000000000000000000000000000000000000000000000000001060a0d0e0e0e0e0e0e0e0d0a06010000000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946535f6c79868a8a8a8a8a8a8a8a8a8a8a8a8a8a8b95a0ada99d928a8a8a8a8a8a8a8a8a8a8a8a8a8a877a6d6053473a2d20140700000000060d13171b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c212e3b4854616e7b8894a1ada09386796d6053463a2d201c1b19150f0901000000000007131f2a35414c57626c77818b949da5ada59e96908a8682807d7c7b7b7c7e8083878c9298a0a8a9a19990877d73695f544a3f34281d12060000000000000000000000000002111e2a3744505d6a7683909da9ada093867a6d6054473a2d21140700000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000000030f1b27333f4b57626d727272727272727272726c62564a3f33271b0f030000000000000000000000000000000000121f2b3844515d6870727272727272727271695f544a3f342a1f140a0000010c16212c36414c56616b72727272727272727271695e5245392c201307000000131f2c3946525f6b7679797979797979797979797979797979797b8895a2a0938679797979797979797979797979797979797974695c4f4336291d100013202c3946535f6c797e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e76695d5043362a1d100013202c3946535f6c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8376695d5043362a1d100000000000040e18222b353e464e565e656b71777c8084878a8c8e909191929191908f8d8b8986827e79746e686159514940372e251b110700000000000000000000020b141d262e363e454b52575d62666a6d70727475777778787777767573716e6b68645f5a544e484139312921180f05000000000000000000000000000915212d3944505c6874808b97a3aea69a8f83776b5f53473b3024180c00000000000000000000000000000000000a16212d3945515d6975818c98a4aea4988c8174695d5145392d22160a0000040f1a242e363d4245464646464646464645443f3931281e1308000000000000000000000000000000000000000000000006111c262f373e4345464646464646464645433d362e251b10050000000000000000000000000000000000000000000000000000060d1217191b1b1b1b1b1b1b1916120c0500000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000013202c3946535f6c787d7d7d7d7d7d7d7d7d7d7d7d7d7d7d85929faca89b8e827d7d7d7d7d7d7d7d7d7d7d7d7d7d796d6053473a2d2014070000000810181e2327292929292929292929292929292929292929292929292e3b4854616e7b8894a1ada09386796d6053463a2d29292825201a130b02000000000c18242f3b47525d68737e89939da6aea59c938c857f7a7673716f6f6f6f7173777b81878e969ea7aba2998f857b71665b50453a2e23170b0000000000000000000000000000101c2936424f5c6875828e9ba8aea194887b6e6155483b2f22150900000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000000000007131f2b37434f5b67737e7e7e7e7e7e7e7e7e7e73675b4f43372b1f1307000000000000000000000000000000000013202c3946535f6c797e7e7e7e7e7e7e7e7b71665b51463b31261b11060008131d28333d48535d68737d7e7e7e7e7e7e7e7e7a6d6154473a2e211407000000111e2a37434f5a646b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6f7b8895a2a09386796d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6a62584c4034281b0f0013202c3946535f6c79868b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8376695d5043362a1d100013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c908376695d5043362a1d1000000000010b16202a343d47505860686f767c82878c909497999b9c9d9e9e9e9e9d9c9a9895928e8a857f79726b635b524940372d23190e030000000000000000010a141d262f3840484f565d63686d7276797c7e81828484858584848382807d7b77746f6b656059524b433b332a21170e0400000000000000000000000005101c2834404b57636f7b87929eaaab9f93877b7064584c4034281c1105000000000000000000000000000000020e1a26323e4a56616d7985919da9ab9f93877b7064584c4035291d110500000a15212c3640484e52525252525252525252504a433a3025190e02000000000000000000000000000000000000000000000c17232e3841494f525252525252525252524e4840372c21160a000000000000000000000000000000000000000000000000000810181e23262828282828282726221d170f07000000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000121e2b3744505c676e70707070707070707070707070707885929faca89b8e8275707070707070707070707070706f675c5145382c1f1306000007111a22292f3336363636363636363636363636363636363636363636363b4854616e7b8894a1ada09386796d6053463a36363634312c251d140a00000004101c2834404c58636e7a85909aa5afa69c938a817a736e6a66646362626364676b70757c848c959ea8aba1978d82786d61564b3f33281c1004000000000000000000000000000e1b2834414e5a6773808d99a6afa296897c6f6356493d3023170a00000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000000000c18242f3b47535f6b77838c8c8c8c8c8c8c8c83776b5f53473c3024180c0000000000000000000000000000000000121f2c3845515d69737e898c8c8c8c8c8c82786d62584d42382d23180d040f1a242f3a444f5a646f7a848c8c8c8c8c8c8a7f746a5e5246392d2013070000000e1b27323e49525a5f606060606060606060606060606060626f7b8895a2a09386796c606060606060606060606060606060605e5950463b3024180c0013202c3946535f6c7986939898989898989898989898989898989898989898989898989898989898989898989898989898908376695d5043362a1d100013202c3946535f6c798693a0a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69d908376695d5043362a1d100000000008121d28323c464f59626a727a81888e93989ca0a3a5a7a7a5a4a4a4a5a6a8a7a4a19e9a96908a847d756d645b52493f352a20150a000000000000000008131c262f39424a525a61686e74797e8286898b8d8f909192929190908e8c8a8784807b76716b645d554d453c332920160c010000000000000000000000000c17232f3b47525e6a76828d99a5b0a4988c8074685c5145392d21150900000000000000000000000000000007131f2b37424e5a66727e8a96a2ada69a8e83776b5f53473c3024180c0000000e1a26323d48525a5e5f5f5f5f5f5f5f5f5f5c554c41362a1f130700000000000000000000000000000000000000000005111c28343f4a535b5f5f5f5f5f5f5f5f5f5e5a52483e32271b0f02000000000000000000000000000000000000000000000008111a22292f3334343434343434322e28211910060000000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000f1c28343f4a555d62636363636363636363636363636b7885929faca89b8e827568636363636363636363636363625e554b4034281c100400030e19232c343b404243434343434343434343434343434343434343434343434854616e7b8894a1ada09386796d60534643434343413d372f261c120700000814202d3945515d6874808b96a1aca99e948a81776f68625d5a5756555556585b5f646a727a838c96a0aba99f94897e73675c5044382c201408000000000000000000000000000d1926333f4c5865727e8b98a4b0a4978a7e7164584b3e3225190c00000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000004101c2834404c5864707c889498989898989894887c7064584c4034281c100400000000000000000000000000000000101d2935414c57626c77818c9698989894897f74695f54493f34291f140b16212b36414b56616b76818b96989898978d82786d63584d42362a1e11050000000a16212c3740494f53535353535353535353535353535355626f7b8895a2a09386796c5f535353535353535353535353535353524e473e352a1f13080013202c3946535f6c798693a0a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49d908376695d5043362a1d100013202c3946535f6c7986939999999999999999999999999999999999999999999999999999999999999999999999999999908376695d5043362a1d10000000030e19242f39444e58616b747c848c93999fa4a8a7a29f9c9a9898979898999b9ea1a5aaa6a19c968f877f766d645b51463c31261b100500000000000005101a242e38424b545c646c737980858a8e9295989a9c9d9e9e9e9e9d9c9b999693908c87827c756f675f574e453b32281e130900000000000000000000000007131e2a36424e5965717d8994a0aca89d9185796d6155493e32261a0e0200000000000000000000000000000c18232f3b47535f6b77838e9aa6ada1968a7e72665a4f43372b1f1308000000111d2a36424e5a646b6c6c6c6c6c6c6c6c6c675e53473b2f23170b0000000000000000000000000000000000000000000915212d3945505c656b6c6c6c6c6c6c6c6c6b645a4f43372b1e120500000000000000000000000000000000000000000000040f1a232c343a3f414141414141413e3a332b22180e0300000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000b17232e39434b52565656565656565656565656565f6b7885929faca89b8e8275685b565656565656565656565656524c43392f23180c00000914202a353e464c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f54616e7b8894a1ada09386796d60534f4f4f4f4f4d4841382e23180d01000c1824303d4955616d7985919ca8aea2978c82786e665e57524e4b494848494b4f53596068717a848e99a4afa69a8f84786c6155493d3125180c000000000000000000000000000b1824313d4a5763707c8995a2afa5998c8073665a4d4034271b0e01000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000000000814202c3844505c6874808c98a4a5a5a5a5a4988c8074685c5044382d211509000000000000000000000000000000000d1924303b46505a656f7a858f99a4a59b90867b70665b50463b31261b121d28323d48525d68727d88929da5a59a90857b70665b51473c31261a0e0200000005101b252e373e4346464646464646464646464646464855626f7b8895a2a09386796c5f53464646464646464646464646464646423d352c23180e020013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c908376695d5043362a1d100013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8376695d5043362a1d1000000009141f2b35404b56606a737d868e969da4aaa6a09b9692908d8c8b8a8b8b8d8f92959a9fa5aba7a099918980766d63584e43382d21160b0000000000010c17212c36404a545d666e767d848b91969a9ea2a4a3a09e9d9d9d9d9e9fa1a4a3a09c98938d878079716960574d443a2f251a0f040000000000000000000000020e1a25313d4955606c7884909ba7ada195897d72665a4e42362a1f13070404040404040404040404040404101c2834404c58636f7b87939faba89d9185796d61564a3e32261a0f03000000121f2c3845525e6b767979797979797979786f63574b4034281c100400000000000000000000000000000000000000020e1a26323d4955616d777979797979797979766b5f5346392d201306000000000000000000000000000000000000000000000a16212b353e464b4e4e4e4e4e4e4e4a453d342a1f140800000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000006121c2731394146494a4a4a4a4a4a4a4a4a4a4a525f6b7885929faca89b8e8275685b4e4a4a4a4a4a4a4a4a4a4a4946413a31271d120700000d1925313c4650575c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c616e7b8894a1ada09386796d605c5c5c5c5c5c59534a4035291d1205000f1b2734404c5965717d8995a1a7a89d91867b70665c544c46413e3c3c3c3d3f42484e565f68727d88939ea9aca095897d7165594d4134281c10030000000000000000000000000916222f3b4854616e7a8793a0aca79b8e8175685b4f4236291d1004000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000000010d1925313d4955616c7885919ca8a09a9aa0a99d9185796d6155493d3125190d0100000000000000000000000000000008131f29343e49535e68737d88929da7a2978d82776d62574d42382d2219242f39444f59646f79848f99a4a89d93897e74695f544a3f352a201409000000000009131c252c3337393a3a3a3a3a3a3a3a3a3a3a3a3c4855626f7b8895a2a09386796c5f53463a3a3a3a3a3a3a3a3a3a3a3a3a3936312b231a1107000013202c3946535f6c7986909090909090909090909090909090909090909090909090909090909090909090909090909090908376695d5043362a1d100013202c3946535f6c7980808080808080808080808080808080808080808080808080808080808080808080808080808080808076695d5043362a1d100000020e1a25303c47525d67727c868f98a0a8aaa39b958f8a8683817f7e7d7e7e808285898e939aa1a9aba39b92897e746a5f54493e33271b10040000000007121d28333e48525c666f7880888f969ca1a6a29e9996949290909090919295989ba0a5a49e99928b837b72695f564b41372c21160b0000000000000000000000000915212c3844505c67737f8b97a2aea69a8e82766a5f53473b2f231711111111111111111111111111111115212d3944505c6874808c98a4afa4988c8074695d5145392d21160a00000000121f2c3945525f6b7783868686868686868074685c5044382d2115090000000000000000000000000000000000000007131f2a36424e5a66727d8686868686868684786c5f5346392d201306000000000000000000000000000000000000000000030f1b27323d4750575a5b5b5b5b5b5a564f463b3025190d01000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000b151f272f353a3c3d3d3d3d3d3d3d3d3d3d45525f6b7885929faca89b8e8275685b4e423d3d3d3d3d3d3d3d3d3d3a3630281f160b010000111d2936424d58626869696969696969696969696969696969696969696969696969696e7b8894a1ada09386796d69696969696969645c51463a2e21150800111e2a3743505c6875818d97999a9b978c8075695e544a423a3532302f2f3033373c444d56606b76818d98a4b0a5998d8175695d5044382b1f13060000000000000000000000000713202d3946525f6b7884919daaa99d9083776a5e5145382c1f1306000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000005111d2935414d5965717d8995a1a2968e8e97a2a195897d7165594d41352a1e1206000000000000000000000000000000020d18222c37414c56616b76818b95a0a99e94897e74695f54493f3429202b36404b56606b75808b96a0aba1968c81776c62574d42382e23190e030000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2f3c4855626f7b8895a2a09386796c5f5346392d2d2d2d2d2d2d2d2d2d2d2d2c2a262019110800000013202c3946535f6c7983838383838383838383838383838383838383838383838383838383838383838383838383838383838376695d5043362a1d1000121f2b3844515d687173737373737373737373737373737373737373737373737373737373737373737373737373737373737370665a4e4235291c0f000007131f2b36424d58636e79848e98a1aaaaa198918a847e7a777472717171727376797d82888f979fa8ada49a91867c71665a4f44382c201408000000010d18242f3a454f5a646e78818a929aa1a7a49d97928d8a8785848383838486888b8f949aa0a7a49d958d847b71675d53483d32271c1005000000000000000000000004101c27333f4b57636e7a86929ea9ab9f93877b6f63574c4034281e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e25313d4955616d7985919ca8ab9f93877b7064584c4034291d110500000000111e2a37434f5b67727e8a92929292929084786d6155493d3125190e020000000000000000000000000000000000000b17232f3b47535f6a76828e92929292928b7f73675b5044372b1e120500000000000000000000000000000000000000000006131f2b37434f59626767676767676761584d4136291d1104000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000030d151d242a2e303030303030303030303845525f6b7885929faca89b8e8275685b4e42353030303030303030302e2a251e160d04000000121f2c3945525e6a747676767676767676767676767676767676767676767676767676767b8894a1ada093867976767676767676756e6256493d3024170a00131f2c3946525f6b7884898a8c8d8f90877b6f63584d423830292523222223262b323b444f5a65707c8894a0acaa9e9185796c6054473b2e22150900000000000000000000000005111e2a3743505c6975828e9ba7ab9f9286796d6054473b2e221509000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000000915212d3945515d6975818d99a59e918586929ea59a8e82766a5e52463a2e22160a0000000000000000000000000000000006101b25303a454f5a646f79848e99a3a59b90867b70655b50463b3027323d47525d67727c87929da7a4998f847a6f655a50463b31261c110700000000000000010910161b1e2020202020202020202020222f3c4855626f7b8895a2a09386796c5f5346392c2020202020202020202020201e1a150f0700000000121f2c3945525e6a7476767676767676767676767676767676767676767676767676767676767676767676767676767676767672675b4f4236291c1000101c2935404c565f65666666666666666666666666666666666666666666666666666666666666666666666666666666666666645e54493e32261a0d00000c1824303b47535e6975808b95a0aaaba1988f877f78736e6a67666564646567696d71777d858d969fa9aca2988d82776c6054493d3125190d00000006121e2935404b56616c76808a939ca4aaa299928c86817d7a787776767777797c7f83898f969da6a79f968d83796f645a4f44382d21160a0000000000000000000000000b17232f3a46525e6975818d99a5afa3978c8074685c5044382d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a36424e5a66717d8995a1ada69a8e83776b5f53473c3024180c00000000000e1b27333e4a56626e7985919d9f9f9f95897d7165594e42362a1e1206000000000000000000000000000000000004101c2834404b57636f7b87939f9f9f9e92867a6e62574b3f33271b0f0300000000000000000000000000000000000003070a0e15212e3b4754606b73747474747473695e5245392c1f130c090500000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000030c13191e212323232323232323232c3845525f6b7885929faca89b8e8275685b4e4235282323232323232323211e19130c040000000013202c3946535f6c79838383838383838383838383838383838383838383838383838383838895a1ada0948783838383838383837d7164574a3e3124170b0013202c3946525f6b777b7c7e7f81828483776b5f53473c31261e19161516171a2029323d48545f6b7784909ca9ada195887c6f63564a3d3124180b000000000000000000000000020f1b2834414d5966727e8b98a4aea195887c6f63564a3d3125180c000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000000020e1a26323e4a56626d7a86929ea69a8e82828f9ba79e92867a6e62564a3e32261b0f030000000000000000000000000000000009131e28333d48525d67727c87919ca6a2978d82776d62574d42372e39444e59636e79848e99a4a79c92887d73685e53493e34291f140a00000000000000000000050a0f121313131313131313131315222f3c4855626f7b8895a2a09386796c5f5346392c201313131313131313131313110e09040000000000111d2936424d5862686969696969696969696969696969696969696969696969696969696969696969696969696969696969696760564b3f33271a0e000c18242f3a444d545859595959595959595959595959595959595959595959595959595959595959595959595959595959595958534c42382d21160a0004101c2834404c58636f7b86919ca7afa4998f867d756d67625e5b59585757595a5d61666c737b848d97a2adaa9f94887c7165594d4135291c100400000b17232f3a46515d68737d88929ca5aba2989088817a75716e6c6a69696a6b6d6f73777d848b949da7a89f958b81766b6055493e32261b0f03000000000000000000000006121e2a35414d5965717c8894a0aca89c9084786d6155493d373737373737373737373737373737373737373b47525e6a76828e9aa6ada1968a7e72665a4e43372b1f130700000000000a16222e3945515d6975818c98a4aca59a8e82766a5e52463b2f23170b00000000000000000000000000000000000915212c3844505c6874808c97a3aca5998d8175695e52463a2e23170b0000000000000000000000000000000000050a0f13161a1d222f3c4855626f7b8181818181796d6053463a2d201c1815110c080300000000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000001080d121516171717171717171f2c3845525f6b7885929faca89b8e8275685b4e4235281b1717171717171615120e0802000000000013202c3946535f6c7986909090909090909090909090909090909090909090909090909090929aa5b0a49991909090909090908a7d7164574a3e3124170b00111e2a37434f5a656c6e7071727475777872675b4e42362a1f140d0a09090a0f17212c37434f5b6874818d99a6b0a4978b7e7265584c3f3326190d000000000000000000000000000c1825313e4a57636f7c8895a1ada4978b7e7265594d4034281b0f030000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000006121e2a36424e5a66727e8a96a2a3978a7e7e8b97a3a2978b7e73675b4f43372b1f130700000000000000000000000000000000020c17212c36414b56606b75808a959fa99e94897e74695e54493e35404b55606a75808b95a0aaa0958b80766b61564c41372c22180d0300000000000000000000000002050607070707070707070915222f3c4855626f7b8895a2a09386796c5f5346392c2013070707070707070707060502000000000000000d1925313c4650575c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b564e443a2e23170b0007131e29323b43494c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b48423a30261c1005000713202c3844505c6874808c97a3aea89d92887d746b635c56524e4c4b4b4b4c4e51555a6169727b86909ba7b0a5998d8275695d5145382c20130700030f1b27333f4b57626e79848f9aa4aea49990867d766f6965615f5e5d5d5d5e6063676c7279828b959faaa79d93887d71665a4f43372b1f13070000000000000000000000010d1925313c4854606c77838f9ba7ada195897d71655a4e4444444444444444444444444444444444444444444b57636f7b87929eaaa89d9185796d61564a3e32261a0e03000000000005111d2935404c5864707b87939fabaa9e92877a6f63574b3f33271c1004000000000000000000000000000000020d1925313d4955616c7884909ca8aca094887c7165594d41352a1e1206000000000000000000000000000000060c11161b1f2326292c2f3c4855626f7b888e8e8e86796d6053463a2e2b2825211d18140e09030000000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000205080a0a0a0a0a0a0a121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0a0a0a0a0a0a0806020000000000000013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9ea3acb5aba29d9c9c9c9c9c9c978a7d7164574a3e3124170b000f1b27333e49535b606163646667696a6b6960564a3e32261a0e0300000000050f1b27333f4c5865717e8a97a3b0a6998d8073675a4e4134271b0e000000000000000000000000000916222e3b4753606c7985919eaaa79a8e8175685c5043372b1e12060000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000000a16222e3a46525e6a76828e9aa69f93877b7b8793a0a79b8f83776b5f53473b2f23180c0000000000000000000000000000000000050f1a242f39444e59636e78838d98a2a59b90857b70655b50453c47515c67727c87929ca7a3988e83796e64594f453a30251b10060000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c2013060000000000000000000000000000000000000914202a353e464c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4b443c32281d120600010c17202931383d3f4040404040404040404040404040404040404040404040404040404040404040404040404040404040403f3c3730281e140a00000a17232f3c4854606c7985919ca8aea3978c81766b6259514a4642403e3e3e3f4145494f576069747f8a96a1adaa9e9286796d6154483b2f23160a0007131f2b3744505c67737f8a96a1aba89d92887d746b645e595553515050505254575b61687079838d98a4afa4998e83776b5f53473b2f23170a0000000000000000000000000814202c38434f5b67737e8a96a2aea59a8e82766a5e52515151515151515151515151515151515151515151515c6873808b97a3afa4988c8074685d5145392d21160a000000000000010c1824303c47535f6b77838e9aa6afa3978b7f73675c5044382c20140900000000000000000000000000000006121e2a36424d5965717d8995a1ada79b8f84786c6054483d3125190d0100000000000000000000000000040b11171d22262b2f3236393b3d4855626f7b88959b9386796d6053463c3a3734312d29241f1a140e0701000000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000013202c3946535f6c798693a0a9a9a7a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3a8b0b8afa7a3a2a2a2a2a2a2978a7d7164574a3e3124170b000a16212d3741494f53555658595b5c5e5f5d574e44392e22160a0000000000000b1724303d4956626f7c8995a2afa89b8e8275685b4f4235291c0f0000000000000000000000000006131f2b3844505d6975828e9aa6a99d9184786c5f53473a2e2216090000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000000030f1b27333f4b57636f7b87939fa89c9083777784909ca89f94887b7064584c4034281c1004000000000000000000000000000000000008131d28323d47525c67717b86919ba5a2978c82776c62574c434e58636e78838e99a3a69b91877c72675d52483d33281e1309000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c201306000000000000000000000000000000000000030e19232c343b4042434343434343434343434343434343494d4f4f4f4f4f4f4f4f4d48434343434343434343434343434343423f39322a20160c010000050e1720272c303333333333333333333333333333333333333333333333333333333333333333333333333333333333333332302b251e160c0300000d1926323f4b5864707c8995a1ada99e92867a6f645a50473f3a36333231313335383e454e58626e7985919da9aea295897c7064574b3e3125180c000a16222f3b4754606c7884909ba7aea2978b80766b625a524d49464443434445474a4f565e67717c87929eaaaa9f93887c7064574b3f33261a0e010000000000000000000000040f1b27333f4a56626e7a86919da9aa9e92877b6f635d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d606c7884909ca8ab9f93877b6f64584c4034291d11050000000000000008131f2b37434e5a66727e8a95a1ada79c9084786c6054493d3125190d0100000000000000000000000000000b17232e3a46525e6a76828e99a5aea2968b7f73675b4f44382c20140800000000000000000000000001080f161c22282d32373b3f4245484a4c55626f7b8895a09386796d60534b494744413d3935302b251f19120b040000000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000013202c3946535f6c798693a0aca69c96959595959595959595959595959595959595959595979ea8b2a79d96959595959595958a7d7164574a3e3124170b0005101b252f373e4447484a4b4c4e4f5152514c453c33281d11060000000000000815222e3b4855616e7b8894a1aea99c8f8376695c4f4336291c1000000000000000000000000000030f1c2834414d5966727e8a97a3ada094887b6f63564a3e3225190d0100000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000007131f2b37434f5b67737f8b97a3a5988c807474808c98a4a4988c8074685c5044382c2014090000000000000000000000000000000000010b16202b35404a555f6a747f89949ea99e93897e73695e534a55606a75808a95a0a99e948a7f756a60554b40362b21170c02000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c2013060000000000000000000000000000000000000007111a22292f333636363636363636363636363638424c545a5b5b5b5b5b5b5b5b59534a403636363636363636363636363635332e2820180e0500000000050e151b20242626262626262626262626262626262626262626262626262626262626262626262626262626262626262626231f1a140c040000000f1c2835424e5a6773808c99a5a6a5998d8175695e53483e352e292625242526282d333c46515d6975818d9aa6b1a5988c7f7266594d4033271a0d000c1925323e4b5763707c8894a0aca99d91867a6f645a5048413d3938373637383b3f444c555f6a76828d99a5b0a4988c8073675b4e4236291d10040000000000000000000000000b16222e3a46515d6975818c98a4afa3978b80736a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a717d8995a0aca69a8e83776b5f53473b3024180c0000000000000000030f1a26323e4a55616d7985919ca8aca094897d7165594d41352a1e12060202020202020202020202020204101b27333f4b57636e7a86929eaaa99e92867a6e62564b3f33271b10040000000000000000000000030b121a21272e34393e43474b4e515456585a626f7b8895a09386796d605a585653504d4945413c36312a241d160e0600000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000013202c3946535f6c7986939ea9a0948a8888888888888888888888888888888888888888888c96a2aea1958b88888888888888887d7164574a3e3124170b000009131d252d33383a3b3d3e404143444544403b332a21160c000000000000000714212e3a4754616d7a8794a0ada99d908376695d5043362a1d1000000000000000000000000000000c1825313d4a56626e7a87939faba4978b7e72665a4e4235291d110500000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000000000b17232f3b47535f6b77838f9ba7a195897c70707c8894a0a89c9185786d6155493d3125190d010000000000000000000000000000000000040f19242e39434d58626d77828c97a1a59a90857a70655a515c66717c87919ca7a2978d82786d63584e44392f241a0f0500000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c20130600000000000000000000000000000000000000000810181e2327292929292929292929292929313d49545e666868686868686868645c52463a2e29292929292929292929292926221d160e060000000000030b12181d202222222222222222222222222222222222222222222222222222222222222222222222222222222222222222201c17110901000000111e2b3744505d6976838f97989a9b96897d7165594d41362c231d1a181818191c212a35404c5965717e8a97a4b0a79a8e8174675b4e4135281b0f000f1b2834414d5a66737f8c98a4b0a6998d8175695e52483e36312d2b2a2a2a2c2e333a434e5965717d8995a2aea89c9083776a5e5145382c1f130600000000000000000000000006121d2935414d5864707c88949faba89c9084787777777777777777777777777777777777777777777777777777828d99a5ada1958a7e72665a4e42372b1f13070000000000000000000a16212d3945515c6874808c98a3afa5998d81756a5e52463a2e22170f0f0f0f0f0f0f0f0f0f0f0f0f0f0f14202c3844505b67737f8b97a3afa5998d8175695e52463a2e22170b0000000000000000000000040c151d242b32393f454a4f53575b5e61636567686f7b8895a09386796d686664625f5c5955514c47423c352f2720181007000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000013202c3946525f6c77828d97a29f93877d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b8894a1ada093867b7b7b7b7b7b7b7b7b7063574a3d3124170a0000010b131b22272b2d2f303233353638383835302921180f05000000000000000814212e3a4754616d7a8794a0adaa9d908376695d5043362a1d1000000000000000000000000000000915212d3a46525e6a77838f9ba7a79b8f82766a5e5245392d21150900000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000004101c2834404c5864707c8894a0aa9e9185796c6c7884909ca8a195897d7165594d4135291d110600000000000000000000000000000000000007121c27313c46515b66707b85909aa5a1978c82776c6158636d78838e98a3a59a90857b70665c51473c32271d12080000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2a09386796c5f5346392c201306000000000000000000000000000000000000000000060d13171b1c1c1c1c1c1c1c1c1c1c1c2734414d5a667075757575757575756e63564a3e31241c1c1c1c1c1c1c1c1c1c1c1a17120c040000000000020c151d24292d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2c28221b130a000000131f2c3946525f6b7885898b8c8d8e8f867a6d6155493c31251a110d0c0b0b0d101824303d4956626f7c8895a2aea89c8f8275695c4f4236291c1000101d2a36434f5c6975828e9ba7afa3968a7d7165594d41362c25211e1d1d1d1f2228323d4955616d7986929fabab9f9286796d6053473a2e211408000000000000000000000000010d1924303c48545f6b77838f9aa6aca0958984848484848484848484848484848484848484848484848484848487929eaaa89c9185796d61554a3e32261a0e0300000000000000000005111d2834404c58636f7b87939faaaa9e92867a6e62574b3f33271b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b25313c4854606c7884909ba7aca094887c7065594d4135291e120600000000000000000000040d161e262e363d444a50565b5f63676a6d70727375767b8895a0938679757473716f6c6965615d58534d474039322a221910070000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000111e2b37434f5b66707b85909ba3998f857a706f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7b8894a1ada09386796f6f6f6f6f6f6f6e695f54483b2f231609000000010910161b2125292a2a2a2a2a2b2c2b2a2825201a120a020000000000000a16232f3c4855626e7b8894a1aea99c8f8376695c4f4336291d10000000000000000000000000000005111e2a36424e5a66737e8b97a3ab9e92867a6e6256493d3125190d01000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000000814202c3844505c6874808c98a4a69a8e8275696874808c98a4a5998d82756a5e52463a2e22160a000000000000000000000000000000000000000b15202a353f4a545e69737e89939da89e93897e73685f6a747f8a959fa89e93897e74695f544a3f352a20160b010000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a0a09386796c5f5346392c2013060000000000000000000000000000000000000000000002070b0e101010101010101010101b2835424e5b6875828282828282827e7165584b3e3225181010101010101010100f0e0a06000000000000000a141e272e35393c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3b38332d251c1208000013202c3946525f6c777b7d7e7f80818284776b5e5245392d20140801000000000815222e3b4854616e7b8794a1aea99c908376695c504336291d1000121e2b3844515e6a7784909daaada094877a6e6155493c30251a14121010111316202c3845515e6a7783909ca9aea194887b6f6255483c2f221609000000000000000000000000000814202b37434f5b66727e8a96a2ada59b939191919191919191919191919191919191919191919191919191919299a3aea4988c8074685c5145392d21160a00000000000000000000000c18242f3b47535f6a76828e9aa5aea2978b7f73675b4f43382c28282828282828282828282828282828282935414d5965717c8894a0aca79b8f84786c6054483c3125190d01000000000000000000030d161f28303840484f555b61666b6f73777a7c7e808283848996a09488838281807d7b7875726d69645e58524b433c342b2219100600000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000f1b27333e49545f69747e89939ea1968c82776d6362626262626262626262626262626e7b8894a1ada09386796d626262626262625e574d43372b1f1307000000000a141d252c313537373737373737373735312b241c140d070301010207101a26323e4b5764707d8996a3afa89b8e8275685b4f4235291c0f0000000000000000000000000000010e1a26323e4a56626e7a87939faba2968a7e72665a4e42362a1e1206000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000000010d1925303c4854606c7884909ca8a2968a7e726564707c8894a0aa9e92867a6e62564a3e32261a0e02000000000000000000000000000000000000030e18232d38424d57626c77818c96a1a59a90857a7066717b86919ca6a1968c81776c62574d43382e23190e04000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b889393939386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875828e8f8f8f8f8b7e7165584b3e3225180b00000000000000000000000000000000000006111c26303940454849494949494949494949494949494949494949494949494949494949494949494949494949494949494948443f372e241a0f0300121e2b37434f5b666d6f7071727375767773685c5043362a1d110400000000020714212e3a4754616d7a8794a1aea99c908376695d5043362a1d1000131f2c3945525f6c7885929fabab9e9285786c5f5346392d2014080503010406101d2936424f5b6875828e9ba8afa396897c7063564a3d3023170a00000000000000000000000000030f1b27323e4a56626d7985919da8ada49f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea3abab9f93877b6f64584c4034281d1105000000000000000000000007131f2b36424e5a66717d8995a1ada79b8f84786c6054483c353535353535353535353535353535353535353a46525d6975818d99a5aea2968b7e73675b4f43382c201408000000000000000000010b151f28313a424a525960676d72777b808386898b8d8e8f90939ba49992908f8e8c8a8885827e79756f69635d554e463d342b22180f04000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000b16222d38424d57626c77828c97a19e94897f746a60555555555555555555555555616e7b8894a1ada09386796d60555555555555534d453b31261b0f0300000007111c262f373d42434444444444444443413c362e261e1813100e0e0f1219222c37424e5a67737f8c98a5b1a6998d8073675a4d4134271b0e0000000000000000000000000000000a16222e3a46525e6a76828e9aa6a69a8e82766a5e52463a2e22160b000000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000005111d2935414d5965717d8995a1aa9e92867a6e62606c7884909ca8a2968a7e72675b4f43372b1f13070000000000000000000000000000000000000007111c26313b45505a656f7a848f99a4a1978c81766d78838d98a2a4998f847a6f655b50463b31261c110700000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b868686868686796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875828e9b9c9c988b7e7165584b3e3225180b0000000000000000000000000000000000000b17222e38424b515555555555555555555555555555555555555555555555555555555555555555555555555555555555555554504940362b201408000f1b27333f4a545c61626364666768696a6861574c4034271b0f09090a0a0c0f1219232f3b4855616e7b8894a1aea89c8f8275695c4f4336291c100013202c3946535f6c798693a0acaa9d9184776a5e5144382b1e120500000000010e1b2734414d5a6773818d9aa7b0a4978a7d7064574a3e3124170b00000000000000000000000000000a16222e3945515d6974808c98a4afafabaaa7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6aaabaeb2a69a8e82766b5f53473b2f24180c000000000000000000000000020e1a26323d4955616d7884909ca8aca094887c7065594d4242424242424242424242424242424242424242424a56626e7a86929ea9a99d92867a6e62564b3f33271b0f0400000000000000000009131d27313a434c545c646b72787e83888c8f929598999b9c9d9fa4aba39e9d9c9a999794918e8a85817b756e675f584f463d342a20160c010000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0a29f9286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000005111b26313b46505b65707a85909aa59b91867c71675c5248484848484848484854616e7b8894a1ada09386796d6053484848484846423b332a1f150a000000010c18232e3841484e5050505050505050504d4840383029231f1c1b1a1c1e232b343d48535f6b77838f9ba7b0a3978a7e7165584c3f3226190d00000000000000000000000000000006121e2a36424e5a66727e8a96a2aa9e92867a6e62564b3f33271b0f040000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000000915212d3945515d6975818d99a5a69a8e82766a5e5c6874808c98a4a79b8f83776b5f53473b2f23170b00000000000000000000000000000000000000000a141f29343e49535e68737d88929da79e93887e747f8a949fa79d92887d73685e53493e34291f150a0000000000000000000000000000000000000000000000000000000000000815222f3b4855616d78797979797979766b5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875828e9ba8a5988b7e7165584b3e3225180b0000000000000000000000000000000000000f1b27333f4a545c61626262626262626262626262626262626262626262626262626262626262626262626262626262626262615b52483c3125190c000b17222d38424a5154555758595a5b5c5d5c574f453b2f23181616161617191b1e232b343f4b5763707c8996a2afa79a8e8174685b4e4235281c0f0013202c3946535f6c798693a0acaa9d9084776a5d5044372a1d110400000000000d1a2633404d596673808d99a6b1a4978a7d7164574a3e3124170b000000000000000000000000000005111d2935404c5864707b87939fabb6aea49c98989898989898989898989898989898989898989898989aa1abb6ada195897d72665a4e42372b1f1307000000000000000000000000000915212d3944505c6874808b97a3afa5998d8175695d514e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4f5b67737e8a96a2aea5998d8175695d52463a2e22160b00000000000000000005101b252f39434c555e666e767d83898f94989c9fa2a4a6a7a6a5a6abb0a9a5a4a5a7a5a3a19e9a96918c868079716a61584f463c32281e13080000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c7986939595959286796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000a141f29343e49545e69737e88939ea3988e83786e63594e443c3c3c3c3c3c4854616e7b8894a1ada09386796d6053463c3c3c3c3a36302921180e0300000005111d29343f4a535a5d5d5d5d5d5d5d5d5d59524a423b342f2b292727282b2f353d454f5a65707b87939fabaca094877b6f6256493d3024170b000000000000000000000000000000020e1a26323e4a55616d7985919da9a3978b7f73675b4f43382c2014090000000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000000020e1a26323e4a56626d7986929da9a2968a7e72665a57646f7c8894a0ab9f93877b6f63584c4034281c100400000000000000000000000000000000000000030d18222c37414c56616b76818b95a0a59a8f857b86909ba6a0958b80766b61564c42372d22180d030000000000000000000000000000000000000000000000000000000000000714202d3945515c666c6c6c6c6c6c6c6b645a4f43372a1e110500000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875828e9ba8a5988b7e7165584b3e3225180b000000000000000000000000000000000000121e2b3744505b666e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6c64594d4135281c0f0006111c262f383f4548494a4b4c4d4f5051504c453d33292222222223232425272b2f353d46505c6773808c98a5b0a4988b7e7266594d4033271a0e0013202c3946535f6c7986929facaa9d9084776a5d5044372a1d110400000000000d1a2633404d596673808c99a6b0a3978a7d7063574a3d3124170a0000000000000000000000000000000c1824303c47535f6b76828e9aa6b2a89c928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f9aa5b2a89c9185796d6155493e32261a0e020000000000000000000000000004101c2834404b57636f7b86929eaaa99d92867a6e625b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5f6b77838f9ba7aca094887c7065594d4135291e12060000000000000000010c17222c37414b555e67707880878e959a9fa4a8a6a29f9c9b99989aa0a89e9898999a9c9fa2a6a6a29d97918b837b736a61584e443a2f251a0f0300000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c7986888888888886796c5f5246392c1f130000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000030d18222d37424c57616c77818c96a19f958a80756a60554b40362f2f2f3b4854616e7b8894a1ada09386796d6053463a2f2f2f2d2a251f170f06000000000814212d3945515c656a6a6a6a6a6a6a6a69645c544c46403b3835343435373b40474f57616b76818c98a4afa89c9084786b5f53463a2e211508000000000000000000000000000000000915212d3945515d6974808c98a4a79b8f83776c6054483c3125190e0200000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000006121e2a36424e5a66727e8a96a2aa9e92867a6e6256535f6b7784909ca8a4988c8074685c5044382c201408000000000000000000000000000000000000000006101b25303a454f5a646f79848e99a3a1968c848d97a2a3988e83796e645a4f453a30251b10060000000000000000000000000000000000000000000000000000000000000004111d2934404a545b5f5f5f5f5f5f5f5f5a52483e32261a0e0200000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875828e9ba0a0988b7e7165584b3e3225180b00000000000000000000000000000000000013202c3946535f6c787c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c75695c5043362a1d1000000a141d262e34383b3c3d3e3f4142434443403b332c2f2f2f2f2f2f30313234373b40474e58626d7884909ca8aca094887b6f63564a3e3125180c00121f2c3845525e6b7885919eaaaa9e9184776b5e5145382c1f130905030304070f1b2834414e5a6774818d9aa6afa296897c6f6356493d3023160a00000000000000000000000000000007131f2b37424e5a66727d8995a1ada79a8d817e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e8a97a4afa3988c8074685c5145392d21150a0000000000000000000000000000000c17232f3b47525e6a76828d99a5aea2968a7e7368686868686868686868686868686868686868686868686868707c8894a0aba79b8f83776c6054483c3025190d01000000000000000007121e29333e49535d677079828a9299a0a6a9a39e999693908e8c8b8e98a2968c8b8c8e9092969a9ea4a8a39c958d857c736a60564c41362b20140900000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946525f6c787b7b7b7b7b7b7b776b5f5245392c1f120000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000006101b26303b45505a656f7a858f9aa49c91877c72675d52473d32282e3b4854616e7b8894a1ada09386796d6053463a2d2222211e1a140d050000000000091623303c4955626d7677777777777777756d665e57514b47444241414243474b5158616a737d88939ea9aea3978c8074685b4f43372b1e12050000000000000000000000000000000005111d2934404c5864707b87939eaaa094887c7065594d42362a1f130700000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000000a16222e3a46525e6a76828e9aa6a69a8e82766a5e524f5b6773808b97a3a89c9084786c6055493d3125190d01000000000000000000000000000000000000000009131e28333d48525d67727c87919ca69d9490959ea69c91877c72675d52483d33281e14090000000000000000000000000000000000000000000000000000000000000000000c18232e38424a5052535353535353524f4840372c21160a0000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875828e939393938b7e7165584b3e3225180b00000000000000000000000000000000000013202c3946535f6c7986898989898989898989898989898989898989898989898989898989898989898989898989898989898376695d5043362a1d100000020b141c23282c2e2f3032333435363737342f34393b3c3c3c3c3c3c3d3e4043474b5158616a747e8995a0aca69b8f83776b5f53473b2e22160900111e2a3744505d6976838f9ca8ac9f9286796d6054473b2f241a141110101113171f2b3743505c6975828e9ba8ada094877a6e6155483b2f221509000000000000000000000000000000030e1a26323e4955616d7985909ca8a99d9185797171717171717171717171717171717171717176828e9aa6ab9f93877b6f63584c4034281c110500000000000000000000000000000007121e2a36424e5965717d8994a0aca79b8f83777575757575757575757575757575757575757575757575757575818c98a4aea2968a7e73675b4f43382c2014080000000000000000010d18242f3a45505a656f78828b949ca4aba49d97928d89868381807e8895a093867e808183868a8e93989ea5a79f978f867c72685d53483c31261a0e03000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300121e2b3743505b666d6f6f6f6f6f6f6f6d665b4f43372a1e110000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000009141e29343e49535e68737d88939da3998e83796e64594f44392f2e3b4854616e7b8894a1ada09386796d6053463a2d201514120e09030000000000000a1623303d495663707c8484848484848480777069625c5753514f4e4d4e5053575c636a737c858f99a4afa89d92867b6f63574b3f33271b0f0200000000000000000000000000000000000c1824303c47535f6b76828e99a5a5998d81756a5e52473b2f24180d01000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000000030f1b27333f4b57636e7a87939faba2968a7e7266594d4b57636f7b87939faba195897d7165594d4135291d11050000000000000000000000000000000000000000020c17212c36414b56606b75808a959fa6a09da0a79f948a80756a60554b41362c21170c0200000000000000000000000000000000000000000000000000000000000000000007121c2630383f434646464646464646433e372e251a10050000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875828686868686867e7165584b3e3225180b00000000000000000000000000000000000013202c3946535f6c7986939696969696969696969696969696969696969696969696969696969696969696969696969696908376695d5043362a1d10000000020a11181c20212324252627282a2a2a2e373f45484949494949494a4b4d4f53575c636a737c86909ba6a99f94897e73675b4f43372b1f1206000f1c2835424e5b6773808c99a5aea195887c7064584c41362c25211e1d1d1e202329313c47535f6b7884919daaaa9d9185786c5f53463a2d201407000000000000000000000000000000000a15212d3945505c6874808c97a3aea2968a7e7266656565656565656565656565656565656f7b87939faba69a8e82766b5f53473b2f24180c00000000000000000000000000000000020e1925313d4954606c7884909ba7aba0948882828282828282828282828282828282828282828282828282828285919da9a99d92867a6e62564a3f33271b0f03000000000000000007121e2935404b56616c76818b949da6aaa19a938c86827d7a7775737b8895a09386797374777a7d82878d949ba3a9a1988e847a6f64594e42372b1f1307000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000f1b27333f4a545c6162626262626262615c54493e33271b0f0000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000020d17222c37414c57616c76818b96a0a0958b80756b60564b41362e3b4854616e7b8894a1ada09386796d6053463a2d201308050200000000000000000916222f3c4955626f7b8890909090909089827a736d6863605d5b5a5a5b5d5f63686e747c858e97a1abaca1978c81756a5e53473b2f23170b00000000000000000000000000000000000008131f2b37424e5a65717d8994a0a99e92867a6f63584c4035291e1207000000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000007131f2b37434f5b67737f8b97a3aa9e92867a6e62554947535f6b77838f9ba7a5998d8175695d51463a2e22160a000000000000000000000000000000000000000000050f1a242f39444e59636e78838d98a2acaaaca2978d82786d63594e44392f241a0f0500000000000000000000000000000000000000000000000000000000000000000000000b141e262d3337393939393939393937322c251c1309000000000000000000000000000000000000000000000000000000000000000000000000000e1b2835414e5a677379797979797979797064574b3e3125180b00000000000000000000000000000000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29d908376695d5043362a1d100000000000060c101315161718191b1c1d202c364049505555555555565657585a5c5f63686e747c858e98a2aaa1988d83786d61564a3f33271b0f03000d1a26333f4b5864707c8995a0aca4988c8074685d52483e37312d2b2a2a2a2c2f343b434d58646f7b8894a0aca59a8d8175695c5044372b1e12050000000000000000000000000000000005111c2834404c57636f7b87939eaaa69a8f83776b5f585858585858585858585858585c6874808c97a3ada195897d72665a4e42362b1f130700000000000000000000000000000000000915202c3844505c67737f8b97a2aea499918e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8f97a2ada4998d8175695d52463a2e22160b0000000000000000000b17232f3a46515d68737e88939da6aaa1988f88817b76716d6a686f7b8895a09386796d686a6d71767b8289919aa4aaa0968b81756a5f53473c3024170b000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000b17222d38424a51555555555555555554514a41382d22160b0000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000006101b25303a454f5a646f7a848f99a49c92877d72675d52483d333b4854616e7b8894a1ada09386796d6053463a2d201307000000000000000000000815222e3b4855616e7b88949d9d9d9d9b938c857e79746f6c6a68676768696c6f73797f868e97a0a9ada49a8f857a6f64594d42362a1f1307000000000000000000000000000000000000030e1a26323d4955606c77838f9aa6a3978b8074685d51463a2f23180d020000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000000000b17232f3b47535f6b77838f9ba7a69a8e8276695d5145434e5b67737e8b97a3aa9e92867a6e62564a3e32261a0e0200000000000000000000000000000000000000000008131d28323d47525c67717b86929eabb6aa9d91867b71665c51473c32271d1308000000000000000000000000000000000000000000000000000000000000000000000000020c141c22272b2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000000000000000000000000000000000000000000d1926323f4b5661696c6c6c6c6c6c6c6c685e53483c2f23160a00000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09d908376695d5043362a1d1000000000000000040708090a0c0d0e0f1925313d48525b61626262626263636466686b6f73797f868e97a0a9a1988f867b71665b50453a2e22160b00000a17232f3c4854606c7884909ba6a89c91857a6e645a5048423d3937363637393b40454c555f6a75808c98a4aca095897d7165594d4034281b0f0300000000000000000000000000000000000c18232f3b47535e6a76828e9aa5ab9f93877b6f64584c4b4b4b4b4b4b4b4b4b4b55616c7884909ca8a89c9085796d6155493e32261a0e02000000000000000000000000000000000004101c27333f4b57626e7a86929ea9aba29c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ca1a9aba094887c7064594d4135291d1206000000000000000004101c28343f4b57626e79848f9aa4aca2988f867d76706a65615e626f7b8895a09386796d605e61656a70778088929ca6a89d92877b7064584c4034281b0f030013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130006111c2630384045484848484848484848453f382f261b11050000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000000009141e29333e48535d68727d88929da3998e84796f645a4f443a3b4854616e7b8894a1ada09386796d6053463a2d201307000000000000000000000714212e3a4754616d7a8794a0aaaaaaa59e97908a84807c79767574747476787b80848a9198a0a9ada49b92887e73685e53473c31251a0e02000000000000000000000000000000000000000915212d38444f5b66727d8995a0a89c9185796e62574b4035291e13070000000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000004101c2834404c5864707c8894a0aca2968a7d7265594d413e4a56626e7a87939faba2968a7e72665a4e43372b1f13070000000000000000000000000000000000000000000a141f29343e49535d68727d87929eabb1aa9d91867b71665c51473c32281d130800000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1e202020202020201f1e1a1610090100000000000000000000000000000000000000000000000000000000000000000000000000000a16222e3a454f585e5f5f5f5f5f5f5f5f5c564d42372b1f130700000000000000000000000000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393908376695d5043362a1d100000000000000000000000000000000f1c2835414d59646d6f6f6f6f6f6f70717375787b80848a9198a0a59e978f867d746a5f554a3f34281d110600000713202c3844505c67737e8a95a0aaa1968b80766c625a534d49464443434445484b50575e67717b86919da8a59a8f84786d6155493d3124180c00000000000000000000000000000000000007131f2a36424e5a65717d8995a1aca4988c8074685c50453e3e3e3e3e3e3e424d5965717d8995a1ada3988c8074685c5045392d211509000000000000000000000000000000000000000b17232e3a46525e6975818d99a5b0ada9a8a8a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8a8a8acb2a79b8f83776c6054483c3025190d0100000000000000000814202c3844505c68737f8a96a1aca59a90867c746c645e595555626f7b8895a09386796d6053555a5f666d76808a949faba3988c8074685c5044372b1e12060013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300000a141e262e34393b3c3c3c3c3c3c3c3b39342e261d140a000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000020c17212c37414c56616b76818b96a0a0968b81766b61564c413b4854616e7b8894a1ada09386796d6053463a2d201307000000000000000000000713202d3a4653606c798693a0acb0a7a09ea09b95908c888583828181818285878b90959ca2aaaba39b928980766c61574c41362b201409000000000000000000000000000000000000000004101c27333e4a56616d78848f9aa6a2968a7f73685c51463b2f24190e0200000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000814202c3844505c6874808c98a4aa9e9286796d6155493d3a46525e6a76828e9aa7a79b8f83776b5f53473b2f23170b000000000000000000000000000000000000000007111c26303b45505a656f7a848f99a4a6a4a6a2978d83786e63594e44392f241a10050000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313110e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000006121d28333d464d515353535353535353504b443b30261a0f0300000000000000000000000000000000000013202c3946535f6c7986868686868686868686868686868686868686868686868686868686868686868686868686868686868376695d5043362a1d10000000000000000000000000000000101d2a3743505d69767c7c7c7c7c7c7d7e808284878b90969ca29f99938c857d746b62584e43382e23170c010000030f1c28333f4b57626d78838e98a2a79c92887e756c655e595552515050515254575c62697079838d98a3a79e93897e73675c5044382d201408000000000000000000000000000000000000020e1a26313d4955616c7884909ca7a89c9185796d6155493d32323232323a46525e6a76828e99a5aa9f93877b6f63584c4034281c11050000000000000000000000000000000000000006121e2a35414d5965707c8894a0acb7afa59e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9ca3acb7aea2968a7e73675b4f43372c2014080000000000000000000b1724303c4854606c7884909ca7aa9e93897e746a625a534d4955626f7b8895a09386796d6053494e545b646e78838e9aa6a99d9184786c5f53473a2e2115080013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000020c141c23292d2f2f2f2f2f2f2f2f2f2c29231c140b02000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000000000000000020302010000121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000005101a252f3a444f5a646f79848e99a39d92887d72685d53483e4854616e7b8894a1ada09386796d6053463a2d2013070000000000000000000006131f2c3945525f6c7885929faba99e9591959ca19c989492908e8e8e8e8f9194979ca1a7aca7a099918980776d645a50453b30251a0e030000000000000000000000000000000000000000000b16222d3944505b67727e8995a0a79c9085796e62574c41352a1f140900000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000000000c1824303c4854606c7884909ca8a69a8e8275695d51453936424e5a66727e8a96a2ab9f93877b6f63574b3f34281c1004000000000000000000000000000000000000040e18232d38424d57626c76818b96a0a29a979ba39f948a80756a60564b41362c21170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212b343b4145464646464646464644403a32291f140900000000000000000000000000000000000000131f2c3946525f6b7679797979797979797979797979797979797979797979797979797979797979797979797979797979797974685c4f4336291d10000000000000000000000000000000111d2a3744505d6a778489898989898a8b8c8e9194979c9d9a97938e88827b736b625950463c31271c1106000000000b17232f3a45515c67727c869099a2a49990877e766f6a65615f5d5d5d5d5f6164686d737a838b959fa79f958c82776c61564b3f34281c1004000000000000000000000000000000000000000915212d3844505c6873808b97a3ada195897d71665a4e42362a2527333f4b57636e7a86929eaaa69a8e82766a5f53473b2f23180c0000000000000000000000000000000000000000010d1925313c4854606c77838f9ba7b3a99e938e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e919ba6b2a99d91867a6e62564a3f33271b0f030000000000000000000e1b2733404c5864717d8995a1aca4998d82776c62585048424855626f7b8895a09386796d605346434a525c66727d8995a2ada094887b6f6256493c3023170a0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000000020b12181d20222222222222222222201d18120a0200000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000000000003080c0e0f0f0d0a06121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000009131e28333d48525d67727d87929ca4998f84796f645a4f454854616e7b8894a1ada09386796d6053463a2d2013070000000000000000000004121e2b3845515e6b7784919eaba6998d848b92989ea3a19e9c9b9a9a9b9c9ea0a4a8aaa6a19b958e877f776e655c52483e33291e13080000000000000000000000000000000000000000000005111d28343f4a56616d78838f9aa5a1968a7f73685d52473b30251a0f04000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000005111d2935414d5965717d8995a1ada2968a7d7165594d4135323e4a56626e7a86929eaaa4988c8074685c5044382c2014080000000000000000000000000000000000000b15202a353f4a545e69737e88939da59a908a919ba69c91877c72675d52483e33291e140900000000000000000000000000000000000000000000000000000000000000000000000000000000050a0c0e0e0e0e0e0e0e0e0e0e0c08040000000000000000000000000000000000000000000000000000000000000000000000000000050f19222a303538393939393939393938342f2820170d0200000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584c4034271b0e000000000000000000000000000000111d2a3744505d6a778490969696969697999b9d9a9593918e8b87827d777069615950473e342a20150b000000000006121e2934404b55606a747e879099a0a2999088817b75716e6b6a69696a6b6d7074787e858c959da49d958d837a70655b50453a2e23170b000000000000000000000000000000000000000004101c28343f4b57636f7a86929eaaa69a8e82766a5e52473b2f232c38444f5b67737f8b97a3ada195897d71665a4e42362b1f13070000000000000000000000000000000000000000000814202c38434f5b67737e8a96a2aea79a8d81818181818181818181818181818181818181818181818a97a4b0a4988d8175695d51463a2e22160a00000000000000000000111d2a36434f5c6874818d999fa29f93887c70655a50463e3c4855626f7b8895a09386796d6053463a404a55616d7986929faba3978a7d7164574b3e3125180b0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000000070f171d222628282828282828282826221d170f0700000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000000000000080e14181b1c1c1a1611121f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000010c17212c36414b56606b75808b95a0a0968b81766c61564c4854616e7b8894a1ada09386796d6053463a2d2013070000000000000000000001111e2a3744515d6a7784909daaa6998c8080878d93989c9fa2a4a6a7a7a7a6a5a3a19d9a95908a847d756d655c534a40362c22170d0200000000000000000000000000000000000000000000000b17222e3945505b67727d89949fa79c90857a6e63584d42362b20150a000000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000000915212d3945515d6975818d99a5aa9e9285796d6155493d312d3a46525e6a76828e9aa6a89c9084786c6054483d3125190d010000000000000000000000000000000008121d27313c46515b66707b85909aa59e93897f8a949fa3988e84796f645a4f453a30251b110600000000000000000000000000000000000000000000000000000000000000000000000000050b1116191b1b1b1b1b1b1b1b1b1a18140f0902000000000000000000000000000000000000000000000000000000000000000000000000000710181f25292c2c2c2c2c2c2c2c2c2b28231d160e0500000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5950463b3024180c000000000000000000000000000000111d2a3744505d6a7784909da2a2a3a3a4a5a79e92888684827e7b76716b655e574f473e352c22180e030000000000010c18232e39444e58626c757e878f969ca19a938c86817d7a7877767677787a7c80848a90979e9f99938b837a71685e54493e33281d12060000000000000000000000000000000000000000000b17232f3b46525e6a76828d99a5aa9e93877b6f63574b3f3328303c4854606c7884909ba7a89c9085796d6155493d32261a0e02000000000000000000000000000000000000000000040f1b27333f4a56626e7a85919da9a89c9085797474747474747474747474747474747474747475828d99a5aba094887c7064594d4135291d120600000000000000000000131f2c3945525e6b77848d909295988f83776b5f54493e343c4855626f7b8895a09386796d6053463a3945515e6a7784909da9a5988c7e7265594c3f3226190c0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000006101921282e32353535353535353534322e2821190f06000000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000000010a1219202427292826221d161f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000050f1a242f3a444f59646e79848e99a39d92887d73685e534954616e7b8894a1ada09386796d6053463a2d2013070000000000000000000000101d2a3643505d697683909ca9a69a8d81757c82878c90939698999a9a9a99989794918e89847f79726b635b534a41382e241a100500000000000000000000000000000000000000000000000006111d28343f4a56616c77838e99a4a1968b8074695e53483d32271c11060000000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000000020e1a26323d4955616d7985919da9a69a8d8175695d5145392d2935414d5966727e8a96a2aca195897d7165594d4135291d1105000000000000000000000000000000040f19242e39434e58636d77828c97a1a2978c8278838e98a3a0958b81766b61574c42372d22180d030000000000000000000000000000000000000000000000000000000000000000000000060f161d22252728282828282828282724201a140c0300000000000000000000000000000000000000000000000000000000000000000000000000060d14191d1f20202020202020201f1c18120c040000000000000000000000000000000000000000000a16212c3740484f52535353535353535353535353535353535353535353535353535353535353535353535353535353535353524e473e342a1f1307000000000000000000000000000000111d2a3744505d6a7784909da4a4a4a5a6a8a99d9084807d7975706a66605a544d453d352c231a10060000000000000007121d27323c47505a636c757d848b91969a9d97928d8a8785848383848586898c90959b9b98938e88817971685f564c42372d22170c0100000000000000000000000000000000000000000006121e2a36424d5965717d8894a0aca3978b8073685c5044382c35414d5965707c8894a0aca3978c8074685c5044392d21150900000000000000000000000000000000000000000000000b16222e3a46515d6975818c98a4ada195897d7167676767676767676767676767676767676e7a86929eaaa79b8f83776b6054483c3024190d010000000000000000000013202c3946535f6c787e818386898b8b7f73675b4f43372f3c4855626f7b8895a09386796d6053463a36434f5c6975828f9ca9a6998c807366594c403326190d0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300020d18222b333a3f4142424242424242413e3a332b21180d020000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000009131c242b30343635322e28201f2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000008131d28323d48525d67727c87919ca49a8f857a6f655a5054616e7b8894a1ada09386796d6053463a2d20130700000000000000000000000f1c2936424f5c6975828f9ca8a79a8e817470767b808386898b8c8d8e8d8d8c8a8885827d79736e676059514941382f261c120800000000000000000000000000000000000000000000000000000c17222e3944505b66717d88939ea79c91867a6f64594e43382d22170c0100000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000006121e2a36424e5a66727e8a96a2aea295897d7165594d41352925313d4955616d7986929eaaa5998d8175695d5145392e22160a0000000000000000000000000000010c16212b36404b555f6a747f89949ea69b90857b717c87919ca79d92887d73685e53493f342a1f150a00000000000000000000000000000000000000000000000000000000000000000000050f1821282e3234343434343434343433302c251e150c020000000000000000000000000000000000000000000000000000000000000000000000000002080d1012131313131313131312100c07010000000000000000000000000000000000000000000005101a252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464645423c352c22180d02000000000000000000000000000000111d2a3744505d6a7784909797979798999b9da0968f8c8985817b767069615951483f362c22170d0200000000000000000b16202b353e48515a636b727980858a8d90949c9996939190909090919395989c96928f8c87837d766f675f564d443a30261b100500000000000000000000000000000000000000000000020e1925313d4854606c78848f9ba7a89c9084786c6054493d313a46515d6975818d99a5aa9e93877b6f63574c4034281c1005000000000000000000000000000000000000000000000006121d2935414d5864707c88939faba59a8e82766a5e5a5a5a5a5a5a5a5a5a5a5a5a5a5b67737f8b97a2aea2968a7e73675b4f43372b2014080000000000000000000000121e2b3744505c666e7174777a7c7f827c6f63574a3e322f3c4855626f7b8895a09386796d6053463a36434f5c6976828f9ca9a6998c807366594c403326190d0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130008141f2a343d454b4e4e4e4e4e4e4e4e4e4a453d33291f13080000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000006111b252e363c4042423e39322b232c3845525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000000000000000010c16212b36404b55606b75808a959fa1968c81766c615754616e7b8894a1ada09386796d6053463a2d20130700000000000000000000000f1b2835424e5b6874818e9ba7a89b8f8275686a6f73777a7c7e80818181807f7d7b7875716d68625c564f473f372f261d140a00000000000000000000000000000000000000000000000000000006111d28333e4a55606b76828d98a3a2978c81766b5f54493e33281e130800000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000000a16222e3a46525e6a76828e9aa6aa9d9185796d6155493d3125212d3945515d6975818d99a5a99e92867a6e62564a3e32261a0e020000000000000000000000000009131e28323d47525c67717c86919ba59f94897e746a75808b95a0a49a8f857a70655b50463b31271c12070000000000000000000000000000000000000000000000000000000000000000020d17212a32393e414141414141414141403d3730271e130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393939393936312b231a110600000000000000000000000000000000111d2a3744505d6a77848a8a8a8a8a8b8c8e9194989c9995918c87817a736b635a51483e34291f14090000000000000000040e19232c363f48515961686e74797d81848a96a3a2a09e9d9d9c9d9ea0a2a5988c8583807b77716b655d564d443b32281e14090000000000000000000000000000000000000000000000000914202c3844505b67737f8b96a2aca095897d7165594d41353e4a56626e7a86929da9a69a8e82766a5f53473b2f23180c000000000000000000000000000000000000000000000000010d1924303c48545f6b77838f9aa6aa9e92877a6f63574d4d4d4d4d4d4d4d4d4d4d54606c77848f9ba7a99d91857a6e62564a3e33271b0f0300000000000000000000000f1b28333f4a545d6265686a6d707375756c6054473b2e2f3c4855626f7b8895a09386796d6053463a3945515e6a7784909daaa5988c7f7265594c3f3226190c0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000d1925303b464f565a5b5b5b5b5b5b5b5a564f453b3024190d0000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d110400000000000000000000000c17222d3740474d4f4e4a443c352e2c3845525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000000040f1a242f39444e59636e78838e98a39d93887e73695e54616e7b8894a1ada09386796d6053463a2d20130700000000000000000000000e1b2734414d5a6774818d9aa7a99c8f8376695f63676b6d7072737374747372716f6c6965615c57514b443d352d251d140b02000000000000000000000000000000000000000000000000000000000b17222d38444f5a65707b86919ca89d92877c71665b50453a2f24190e03000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000000030f1b27333f4b57636e7a87939eaaa5998d8175695d5145392d201d2935414d5965717d8995a1ada2968a7e72665a4e42362b1f130700000000000000000000000005101a252f3a444f59636e78838d98a2a3988d82786d636e79848e99a4a1968c82776d62584d43382e23190f040000000000000000000000000000000000000000000000000000000000000008131e29333c444a4d4e4e4e4e4e4e4e4e4d48413930251a0f03000000000000000000000000000000000000000000000000000000000000000205080a0c0d0e0f1010100f0f0e0c0b090604010000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a25201911080000000000000000000000000000000000111d2a3743505d6a767d7d7d7d7d7d7e808285888c91979e9d98928c857d756c635a50453b30251a0f03000000000000000007111a242e37414a535b636a71777c81848b96a3a5a2a09f9e9e9fa0a2a4a5988c84817d78726c655d554d443b322920160c0200000000000000000000000000000000000000000000000004101c27333f4b56626e7a86929da9a5998d81756a5e52463a434f5b67727e8a96a2ada195897d71665a4e42362a1f13070000000000000000000000000000000000000000000000000008141f2b37434f5b66727e8a96a1ada3978b7f73675c504441414141414141414d5864707c8894a0aca4988d8175695d51463a2e22160a0000000000000000000000000b17232e38424b5256585b5e6163666969635a4f44382b2f3c4855626f7b8895a09386796d6053463a424b56616d7a86929faba4978a7e7164584b3e3225180b0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300101d2935414d586167686868686868686761574c4135291c100000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d11040000000000000000000004111d28343f4952595c5b564e473f38313845525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000000000000000000008121d27323d47525c67717c87919ca59a8f857a70655b616e7b8894a1ada09386796d6053463a2d20130700000000000000000000000d1a2733404d596673808c99a6aa9d9083776a5d575b5e6163656667676766656462605d5955504b464039322b231b130b02000000000000000000000000000000000000000000000000000000000005111c27323d49545f6a75808b96a1a4998d82776c61564b40362b20150a000000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000007131f2b37434f5b67737f8b97a3ada195897d7165594d4135281c1925313d4955616d7985919da9a69b8f83776b5f53473b2f23170b0000000000000000000000020d17222c37414b56606b75808a959fa69c91867b71665d67727d88929da89e93897e74695f554a40352b20160b010000000000000000000000000000000000000000000000000000000000000c1824303b454e565a5b5b5b5b5b5b5b5b59534b41372b2014080000000000000000000000000000000000000000000000000000000003070b0e111416181a1b1c1c1c1c1c1b1a19171513100d090501000000000000000000000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d1a140e070000000000000000000000000000000102030f1c2935424e5a656e707070707071727375787c81868c939ba49e978f877e756b61574c42372b20140900000000000000000b16202b353f49535c656d757c82888d91949c9c999694929292929395989b9d94908d89847e776f675f564c42382e23190e03000000000000000000000000000000000000000000000000000b17222e3a46525d6975818d99a4aa9e92867a6e62564b3f48535f6b77838f9ba7a89c9084786d6155493d31261a0e0200000000000000000000000000000000000000000000000000030f1b27323e4a56616d7985919da8a79c9084786c6054483d34343434343945515d6975818d99a4aba094887c7064584d4135291d110600000000000000000000000006111c2730394046494c4f5154575a5c5d5951483e33272f3c4855626f7b8895a09386796d605346464c545d67727e8a96a2aea195887c6f6356493d3023170a0013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300121f2c3845515e69737575757575757573695d5145382b1f120000000000000000000f1c2835424f5b6875828f9084776a5d5044372a1d1104000000000000000000000814202d3945505b6468676059514a423b3845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000000000010b16202b35404b55606a75808a949fa1978c82776c62616e7b8894a1ada09386796d6053463a2d20130700000000000000000000000c1926323f4c5965727e8c98a5aa9e9184776b5e514f52545758595a5a5a5a59575553504d4945403a352e282119120a01000000000000000000000000000000000000000000000000000000000000000b16212c37424d58636f7a85909ba59f94897e73685d52473c31261c11060000000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000000000b17232f3b47535f6b77838f9ba7a99d9185796d6155493d30241814202c3845515d6975818d99a5ab9f93877b6f63574b3f33271c1004000000000000000000000a141f29333e48535d68727d87929ca6a0958a80746a5f56606b76818c96a1a59b90867b71665c51473d32281d1308000000000000000000000000000000000000000000000000000000000000101c2935414c5760666767676767676767655d53483c3024180b0000000000000000000000000000000000000000000000000000040a0e13171b1e2123252728292929292928272624221f1c1916120d0803000000000000000000000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110d0903000000000000000000000003070a0c0d0e0f10111926323d49535c626363636363646567696c70757b8289929ba4a19991877d73695e53483c3125190e0200000000000006111c27323d47515b656e777f878e94999d9b96918c89878685858586888b8f93999d99958f89817971685e544a40352a1f14090000000000000000000000000000000000000000000000000006121e2935414d5964707c8894a0aba2978b7f73675b4f434c5864707c88949faba3978b8074685c5044392d2115090000000000000000000000000000000000000000000000000000000a16222d3945515d6974808c98a4aca094897c7165594d4135292727323e4a56626e7985919da9a79b8f83776b5f54483c3024180d01000000000000000000000000000a151e272f353a3d404245484a4d50504d473f362c222f3c4855626f7b8895a09386796d60534d51575e666f79848f9aa6aa9e9286796d6054473b2e2215080013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c7982828282828282796c5f5246392c1f13000000000000000005101c2835424f5b6875828f9084776a5d5044372a1d1106000000000000000000000916232f3c4955616d75726a635c544d453e45525f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000000000000000000000040f19242e39434e58636e78838d98a29e93897e7469616e7b8894a1ada09386796d6053463a2d20130700000000000000000000000b1825323e4b5865717e8b98a4ab9e9285786b5f524545484a4c4d4d4d4d4d4c4b494744413d39342f29231d160f0700000000000000000000000000000000000000000000000000000000000000000004101b26313c47525d68737e89949fa59a8f84796e63594e43382d22170d0200000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000004101c2834404c5864707b8894a0aca5998d8175695d5145382c2014101c2834404c5864707c8995a1ada3988c8074685c5044382c20140800000000000000000006111b26303b45505a646f79848e99a3a3998e83786e63584f5a646f7a858f9aa5a2978d83786e63594e44392f241a10050000000000000000000000000000000000000000000000000000000000121f2b3844515d697274747474747474746f64594c4033271a0d000000000000000000000000000000000000000000000000040a10151a1f23272a2d2f3233343536363636353432312e2c2926221d19140e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f141718191a1b1c1d1e212c37414a5156575757575757585a5c60646970778089929ca7a3998f857a6f64594d42362a1e12060000000000000c17222e39444e59636d77808991989fa098908a85807d7a797878797a7c7e83888e949ca09a938b837a70665c51473c31251a0f03000000000000000000000000000000000000000000000000010d1925303c4854606b77838f9ba7a79b8f83776c605448515d6974818c98a4aa9e93877b6f63574c4034281c100400000000000000000000000000000000000000000000000000000005111d2934404c58646f7b87939faba5998d8175695d52463a2e222b37434f5a66727e8a96a2aea2968a7e72675b4f43372b2014080000000000000000000000000000030c151d242a2e303336393b3e414343413c362d24222f3c4855626f7b8895a09386796d6054595d62686f78818b95a0aba59a8e8276695d5145382c1f13060013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c79868e8e8e8e8e86796c5f5246392c1f1300000000000000000b16212c38434f5b6875828f9084776a5d5044392e23170c010000000000000000000a1723303d4a5663707d7c756d665f57504845525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000000000000007121d27323c47515c66717b86919ba59a90857b70666e7b8894a1ada09386796d6053463a2d20130700000000000000000000000b1724313e4a5764707d8a97a4ac9f9286796c5f5346393b3d3f40414141403f3e3c3a3734312d28231e18120b0400000000000000000000000000000000000000000000000000000000000000000000000914202b36414c57626c77828d98a3a1968b80756a5f544a3f34291e130900000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000814202c3844505c6874808c98a4ada195897d7165594d4034281c100c1824303c4854606c7884919ca9a89c9084786c6054483c3024190d0100000000000000030e18232d38424c57616c76818b96a0a79d92877c72675c5148535e68737e89939ea99f948a80756a60564b41362c21170c0200000000000000000000000000000000000000000000000000000000131f2c3946525f6c79818181818181818174675a4d4134271a0e0100000000000000000000000000000000000000000001080f151b21262b2f3336393c3e4041424343434242403f3d3b3835322e29251f1a140d0600000000000000000000000000000000000000000000000000000000000000000306090b0c0e0f0f1010100f0e0d0b09070401000000000000000000000000000000000000000000000000000000000000050d141b202325262728292a2b2c2c2f384046494a4a4a4a4a4b4c4d5054585e656d76808b95a0aba1978c81756a5e52463a2e221609000000000005111c28343f4a55606b758089929ba3a0978e867f7974706e6c6b6b6c6d6f72777c838a939ca59d958c82786e63584d42372b201408000000000000000000000000000000000000000000000000000814202c37434f5b67727e8a96a2aca094887c7064584c55616d7985919da9a59a8e82766a5e53473b2f23170c00000000000000000000000000000000000000000000000000000000000c1824303b47535f6b76828e9aa6a99e92867a6e62564a3e3327303b47535f6b77838f9ba6a99d9185796e62564a3e33271b0f03000000000000000000000000000000030b13191e212427292c2f3234363735312b25292d303c4855626f7b8895a09386796d606165696e737a818a939da7aa9f94897d7165594d4135291c10040013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c7986939b9b9b9286796c5f5246392c1f130000000000000006111c27323e49545f6a76828f9084776c61554a3f34291d12070000000000000000000a1723303d4a5663707d877f787069615a534b525f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000b15202a35404a555f6a747f8a949fa2978c82776d6e7b8894a1ada09386796d6053463a2d20130700000000000000000000000a1723303d4a5663707c8996a3ada09386796d6053473a2f313233343434343331302e2b2825211c18120d0b0b0a080500000000000000000000000000000003070a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0e19242f3a45505b66717c87919ca79c91877c71665b50453b30251a0f05000000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0000000c1824303c4854606c7884909ca8a99d9185796d6155483c3024180c0814202c3844505c6874808c98a4aca094897c7165594d4135291d1105000000000000000b151f2a343f49545e69737e88939da7a0968b80756b60554a414c57616c77828d97a2a69c91877c72675d52483e33291e140900000000000000000000000000000000000000000000000000000000131f2c3946525f6c79868e8e8e8e8e8e8174675a4d4134271a0e010000000000000000000000000000000000000000040b131a20262c32373b3f4346494b4d4e4f4f4f4f4f4e4d4c4a4745423e3a35302b251f1811090200000000000000000000000000000000000000000000000000000004080c0f121517191a1c1c1c1c1c1c1b19181613110d0a06010000000000000000000000000000000000000000000000000000040e171f262c303233343536373839393835353a3d3d3d3d3d3d3e3f4144484d545c646e79848f9ba6a89d92867a6f63564a3e3225190d00000000000915212d3944505b67727c87919ba4a2988e857c746d6864615f5f5e5f6063666b7178818a949ea79e948a80756a5e53483c3024190d00000000000000000000000000000000000000000000000000030f1b27333e4a56626e7985919da9a4988d8175695d515a66727e8a96a1ada195897d71655a4e42362a1e1307000000000000000000000000000000000000000000000000000000000007131f2b37424e5a66727d8995a1ada2968a7e73675b4f43372b34404c5864707b87939faba4988c8175695d51453a2e22160a000000000000000000000000000000000001080d1215171a1d202225282a2a28282d3135393d404855626f7b8895a09386796d696d7175797e858c939ca5aca3988e83786c6155493d3125190d000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0a89f9286796c5f5246392c1f13000000000000000c17222d38444f5a65717c879294897d72675c50453a2f23180d0200000000000000000a1723303d4a5663707d8a8a827b736c645d56525f6b7885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000040e19232e38434d58636d78828d97a29e94897e746e7b8894a1ada09386796d6053463a2d20130700000000000000000000000916232f3c4955626f7c8895a2ada194877a6e6154473b2e24262727272727262523211f1c18181818181818181714100b05000000000000000000000002090f13161818181818181818181818181818181818181e29343f4a545f6a75808b95a0a3988d82776d62574c41372c21160c010000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c000005111d2935414d5965717d8995a1ada5998d8175695d5144382c20140804101c2834404c5864707c8894a0aca5998d8175695d5145392d21150a00000000000007121c27313c46515b65707a858f9aa4a49a8f84796e64594e443a45505b65707b86909ba6a3998e84796f645a4f453a30261b1106000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929b9b9b9a8e8174675a4d4134271a0e0100000000000000000000000000000000000000050e151d242b32383d42474b4f525557595b5b5c5c5c5c5b5a585654514e4a46413c36302a231b130b03000000000000000000000000000000000000000000000000060b1014181c1f2224262728292929292827262422201d1a16120d08030000000000000000000000000000000000000000000000010c16202931373c3e3f4041424344454645413b33303030303031313234373c424a525d67737e8a96a2aea3978b7f73665a4e4135281c0f03000000010d1a26323e4a55616d78838e99a3a79b90867c726a625c58555352525254565a60666f78828d98a3a69c91867b7064584d4135291d1104000000000000000000000000000000000000000000000000000a16222e3a45515d6975818c98a4a99d9185796d62565f6b76828e9aa6a89c9084786d6155493d31261a0e020000000000000000000000000000000000000000000000000000000000030e1a26323e4955616d7985909ca8a79b8f83776b5f54483c303945515c6874808c98a4ab9f94887c7064584c4135291d1106000000000000000000000000000000000000000105080b0e101316191d23292f34393d4145494c5055626f7b8895a09386797275797d81858a90969da5aca39a91877c71665b5044382d211509000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300000000000006121d28333f4a55606b77828d989a8f83786d62564b40352a1e130800000000000000000a1723303d4a5663707d8a948d857e766f6760595f6b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000007121c27313c46515b66717b86909ba59b90867b707b8894a1ada09386796d6053463a2d20130700000000000000000000000815222e3b4855616e7b8894a1aea195887b6e6255483c2f25252525252525252525252525252525252525252524211c160f07000000000000000000050d141a1f2325252525252525252525252525252525252525252d38434e59636e79848f99a49f94897e73695e53483d33281d12080000000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00000915212d3945515d6975818d99a5ada195897d7165584c4034281c1004000b17242f3c4854606c7884909ca8a99d9186796e62564a3e32261a0e0200000000040f19242e38434d58626d77828c97a1a89d93887d72685d52473d333e49545f69747f8a949faaa0958b81766c61574c42372d22180e030000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929fa8a79a8e8174675a4d4134271a0e01000000000000000000000000000000000000060f171f272f363d43494e53575b5f62646667686969696968676563605d5a56524d47413b342d251d150c03000000000000000000000000000000000000000000060c11171c2024282b2e3032343536363636353433312f2c2926221e19140e090200000000000000000000000000000000000000000007121d28323b42484b4c4d4e4f50515253514c453c3228242424242426282b3038414b56626e7a86929faba79b8f8276695d5044372b1e110500000005111d2936424e5a66727d8994a0aaa1968a7f746a6058514c4846454546474a4f555d66707b87939eaaa3988c8175695d5145392d2014080000000000000000000000000000000000000000000000000006111d2935414c5864707c87939faba2968a7e72665a636f7b87939faba3978b8074685c5044392d211509000000000000000000000000000000000000000000000000000000000000000a15212d3945505c6874808c97a3aba094887c7064584c40353d4955616d7985919da8a69b8f83776b5f54483c3024180d010000000000000000000000000000000000000000000000020a121a21282e343a4044494d5155595c60636f7b8895a093867b7e8285898d91969ba1a8a9a19a91897f756a60554a3f33281c1004000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000010d18232e3945505b66717d88939ea095897e73685c51463b3024190e03000000000000000a1723303d4a5663707d8a96978f888179726a635f6b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000000000000000000000000000000a15202a353f4a545f69747e89949ea2978d82777b8894a1ada09386796d6053463a2d20130700000000000000000000000814212e3a4754616d7a8794a0ada296897c6f6256493c32323232323232323232323232323232323232323232302d282119110700000000000000040e171f262b2f313232323232323232323232323232323232323232323c47525d67727d88929da59b90857a6f655a4f443a2f24190f0400000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c00020e1925313d4955616d7985919da9a99d9185796c6054483c3024180c000007131f2b37434f5b6874808c98a4aea2968a7e72665a4e42362a1e1207000000010c16202b35404a555f6a747e89949ea8a1968c81766b61564b41362d37424d58626d78838e98a3a79d92887d73685e53493f342a1f150a0000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000000000000000000060f182129313941484e545a5f63686b6e70727475757676757473726f6d6a66625d58534d463f372f271e150c03000000000000000000000000000000000000030a11171d23282c3034383b3d3f41424243434242413f3e3b3936322e2a25201a140d0600000000000000000000000000000000000000000c18242f3a444d5458595a5b5c5d5e5f5f5d574e44392e2217171718191b1f262f3a45525e6a7783909da9aa9e9185786b5f5246392c2013060000000714202d3945525e6a76828e9aa6a99d9185796e62584e46403c393838393b3e434b545f6a76828e9aa7a99d9186796d6155493c3024170b00000000000000000000000000000000000000000000000000010d1824303c48535f6b77838e9aa6a69a8e82766a5e6874808c98a3aa9e92877b6f63574b4034281c10040000000000000000000000000000000000000000000000000000000000000005111c2834404c57636f7b87929eaaa4988c8175695d514539424e5a66727d8995a1ada2968a7e72665b4f43372b1f14080000000000000000000000000000000000000000000000020b141c242b323940464b5055595d6165686c6f727b8895a19489878a8e9195999da2a7aaa49e97908880766d63594e43382d22170b00000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000000000007131e29343f4b56616c78838e99a4a69b8f84796e63574c41362a1f1409000000000000000a1723303d4a5663707d8a96a19a928b847c756d666b7885929faca89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000030e18232d38434d58626d77828c97a29e93887d7b8894a1ada09386796d6053463a2d20130700000000000000000000000713202d3a4653606d798693a0aca3968a7d7063574a3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d39332b23190f050000000000010c16202930373c3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e404b56616b76818b96a1a1978c81766b61564b40362b20160b00000013202c3946535f6c798693a0ab9e9285786b5e5865727e8c98a5a6998c7f7265594c3f3226190c0006121e2a36424e5a66727e8a96a2aea5998d8175685c5044382c2014080000030f1b27333f4b57636f7b8894a0aca69a8e83766b5f53473b2f23170b00000008131d28323d47525c66717b86909ba5a59a90857a6f655a4f443a2f26313b46515c66717c87919ca7a49a8f857a70655b50463b31271c110600000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000000000000000040e18212a333b434b52595f656b6f74777a7d7f81828283838281807e7c7976726e69645e575049413930271e150b0100000000000000000000000000000000050d141b22282e33383d414447494c4d4e4f4f4f4f4f4e4c4a4845423e3a35302b251f18110902000000000000000000000000000000000003101c2834404b565f6466676769696b6b6c6960564a3e3225190c0a0b0c0f141d2936424f5c6875828f9ba8aca093867a6d6054473a2d2114070000000a16232f3c4855616e7a86939faba6998d8175685d51463c35302d2c2c2c2e3239424e5a66727e8b97a4aea2968a7d7165584c3f33261a0d000000000000000000000000000000000000000000000000000008141f2b37434f5a66727e8a95a1ab9f93877b6f636c7884909ca8a59a8e82766a5e52473b2f23170b0000000000000000000000000000000000000000000000000000000000000000000c18232f3b47535e6a76828e9aa5a99d9185796d61564a3e47535e6a76828e9aa6a99d9185796e62564a3e32271b0f0300000000000000000000000000000000000000000000020b141d262e363d444b51575c6165696d7175787b7f828996a29b9493979a9ea1a5a9a7a39e99938c857e766d645b51473c32271c110600000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300000000020d19242f3a45515c67727e89949fabaca1968a7f74695d52473c31251a0f040000000000000a1723303d4a5663707d8a969da49d958e877f78706b7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000000000000000000000000000000007111c26313b46505b66707b85909aa59a8f837b8894a1ada09386796d6053463a2d201307000000000000000000000006131f2c3946525f6c7985929faca4978a7d7164574b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b49443d352b21160b000000000007121d28323b42484b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4f5a646f7a858f9aa49d93887d72675d52473d32271d1207000013202c3946535f6c798693a0a09e9285786b5e5865727e8c98a0a0998c7f7265594c3f3226190c000a16222e3a46525e6a76828e9aa6aca195897c7064584c4034281c10040000000b17232f3b47535f6b77838f9ba7ab9f93877b6f63574b3f33271b0f0300010d19242f39444e59636e78838d98a2a99e93897e73685e53483d33281f2a343f4a55606a75808b95a0aba1968c82776d62584d43382e23170c00000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000000000000020c16202a333c454d555d646b71767b8084878a8c8d8e8f908f8f8e8d8b8986827e7a756f69625b534b423930271d1309000000000000000000000000000000070f171f262d33393f44494d505356585a5b5c5c5c5c5b5a595754524e4a46413c36302a231b140c030000000000000000000000000000000005121f2b3844515d6870727374757677787972665a4d4134271b0e020000030f1b2835414e5b6874818e9ba8aea194877b6e6154483b2e2115080000000c1825323e4b5764707d8a96a2afa3978a7e7165584c40352a23201f1f202227313d4a56636f7c8895a2aea6998d8174675b4e4135281c0f0200000000000000000000000000000000000000000000000000030f1b26323e4a56616d7985919ca8a3978b7f7367717c8995a1aca195897d71655a4e42362a1e130700000000000000000000000000000000000000000000000000000000000000000007131f2a36424e5a65717d8995a0aca2968a7e72665a4e424b57636f7b87939faaa4988c8175695d5145392e22160a00000000000000000000000000000000000000000000000a141d262f3840484f565c62686d7176797d8185888b8e929ba6a5a0a0a3a6aaa7a39f9b97928d87817b746c645b52493f352b20150b0000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000008141f2a35404c57626d78848f9aa5b1b2a79c90857a6f63584d42372b20150a0000000000000a1723303d495663707c848b939aa1a098918a827b737885929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000a151f2a343f49545e69747e89939ea0958a7e8894a1ada09386796d6053463a2d201307000000000000000000000005121f2b3845515e6b7884919eaba4988b7e716558585858585858585858585858585858585858585858585858554f473d33271c1004000000000c18232f3a444d535758585858585858585858585858585858585858585858585858585d68737d88939da4998f84796e64594e44392e23180c000013202c3946535f6c7986939393939285786b5e5865727e8c939393938c7f7265594c3f3226190c000e1a27333f4a56626e7a87929ea0a09d9185786c6054483c3024180c0000000007131f2b37434f5b67737f8b97a0a0a0978b8073675c5044382c2014070005111e2a35414b56606b75808a959fa0a0978d82776c61574c41372c2118232e38434e59636e79848e99a0a09e93897e74695f554a3f34281c1004000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000000000000000a141e28323c454e575f676f757c82878c909396989a9b9c9c9c9c9b999795928f8a86817a746d655d544b42392f251b100600000000000000000000000000071019212931383e454a5055595d60636567686969696968676563615e5a56524d47423b342d251e150d040000000000000000000000000000000613202c3946535f6c797f8081828384858275685c4f43362a1e130c0a090a101c2935424f5b6875828e9ba8aea194887b6e6154483b2e2115080000000d1a2633404c5966727f8c98a5aea295887c6f6256493d3024181412121316222e3b4754616d7a8793a0ada89c8f8276695c5043362a1d100400000000000000000000000000000000000000000000000000000a16212d3945515d6874808c98a3a79b8f83776b75818d99a5a89c9084786c6155493d31251a0e02000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4955616c7884909ca7a69a8e83776b5f5347505c6874808b97a3ab9f93887c7064584c4135291d11050000000000000000000000000000000000000000000008121c262f38414a525960676d73787d82868a8d9194989b9ea4adaeaaa7a4a19e9a97938f8b87827c767069625a524940372d23190f040000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000000030e1a25303b46525d68737e8a95a0abb7b8ada2968b8075695e53483d31261b100500000000000916222f3b4854606a727a81888f979ea39b948d857e7885929faca89b8e8275685b4e4235281b0f02000000000000000000000000000000000000000000000000000000000000000000030d18232d38424d57626c77828c97a19b90848894a1ada09386796d6053463a2d201307000000000000000000000002111e2b3744515d6a7784909daaa5988c7f72656565656565656565656565656565656565656565656565656561594f44382c20140800000000101c2834404b565e64656565656565656565656565656565656565656565656565656565656c76818b96a1a0968b80756b60554b4034281c10040013202c3946535f6c7986868686868685786b5e5865727e8686868686867f7265594c3f3226190c00111e2a36434f5b67737f8b93939393938d8174685c5044382c20140800000000020e1b27333f4b57636f7b8793939393939084786c6054483c3023170a000814212d3a46525d67727c87919393939390867b70655b50453a30251a111c27323c47525d67727d88929393939390867b71665c5045382c1f1306000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000000000006111b26303a444e576069717980878d93989ca0a3a4a2a09f9f9f9fa1a3a4a19e9b96918c857e776f665d544b41372c22170c01000000000000000000000007101a222b333b424950565b6065696c6f71737475767675757472706d6a67625e59534d463f372f271f160d03000000000000000000000000000006121f2c3845525e6b78848d8e8f90919084776b5f52463a2f251d1816161719202c3844515d6a7683909ca9ada194877a6d6154473b2e2114080000000e1b2734414d5a6774818d9aa7aea194887b6e6154483b2e22150805050713202d3946535f6c798693a0acaa9d9084776a5d5144372a1e1104000000000000000000000000000000000000000000000000000005111d2834404c58636f7b87939faaa094887b6f7985919da9a3978b8074685c5044382d21150900000000000000000000000000000000000000000000000000000000000000000000000915212d3844505c68737f8b97a3ab9f93877b6f63584c55606c7884909ca8a69b8f83776b5f53483c3024180c01000000000000000000000000000000000000000000050f1a242e38414b535c646b72797f84898e9296999da1a4a7aaafaba39e9b9895918e8b87837f7b76706b655e57504840372e251b1107000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000914202b36414d58636e7985909ba6b2bdbeb3a89c91867b7064594e43382c21160b000000000007131f2c38434e5861686f767d858c939ba29e9790888185929faca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000006111b26303b46505b65707a858f9aa1968e9099a4ada09386796d6053463a2d201307000000000000000000000000101d2a3643505d697683909ca9a6998d807371717171717171717171717171717171717171717171717171716b6055483c3023160a00000000121f2b3844505c68707171717171717171717171717171717171717171717171717171717171717a848f99a59c92877c72675c5145382c1f130600131f2c3946525f6b7679797979797979756a5e58647079797979797979797165584b3f3225190c00121f2c3945525f6b7783868686868686867c7064584c4034281c100400000000000a16222e3a47535f6b7783868686868686867c7064574b3e3125180b000916232f3c4955626e7984868686868686867f74695f54493e34291e130a15202b35404b56606b76818686868686868683786d6054473b2e211408000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000000000020d18222d38424c566069727b838b92999ea4a5a09b989593929292939496999ca0a5a29d97908981786f665d53493e34291e130700000000000000000000061019232c343d454d545b61676c7175797c7e80818283838282817e7c7a76736e69645e585149413931281f150c020000000000000000000000000004111d2a3743505c6975828e9a9c9c9d93877b6f63574c41372e2825232324262a323d4854606c7985929eabac9f9386796d6053473a2d2014070000000e1b2834414e5b6774818e9ba8aea194877a6d6154473b2e21140802020613202c3946535f6c7986929facab9e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000c18242f3b47535f6b76828e9aa6a4988c80737d8995a1aa9e92877b6f63574b3f34281c1004000000000000000000000000000000000000000000000000000000000000000000000004101c28343f4b57636e7a86929eaaa3988c8074685c505965717d8995a1aca2968a7e72665b4f43372b1f1408000000000000000000000000000000000000000000000b16212c36404a535d656e757d848a90959a9ea2a6a8a5a19fa0a5a499928e8b8885827e7b77736f6a655f5a534d463e362e251c130900000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000040f1b26313c47535e6974808b96a1acb8c3c4b9aea3978c81766a5f54493e32271c110600000000030f1b27323d464f565d656c737a828990979ea19a938b8b94a0ada89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000a141f29343e49535e69737e88939d9f9b9ca2abada09386796d6053463a2d201307000000000000000000000000101c2936424f5c6975828f9ca8a79a8d817e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7064574a3e3124170b0000000013202c3946535f6c797e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e8996a2a3998e83786d6054473a2d21140700111e2a37434f5a646b6c6c6c6c6c6c6c6b6359545f686c6c6c6c6c6c6c6c685f54483c3024170b00121f2c3845525e6b767979797979797979776c6054483c3024180c00000000000006121e2a36424e5a66727979797979797979797064574b3e3125180b000916232f3c4955626e787979797979797979776d62584d42372d22170d040e19242f39444f5a646f787979797979797979776d6054473a2e211408000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000000000007131e29343f49545e68727b848d959da4a7a09a948f8c89878585858687898c90959aa0a7a29b938b82786f655a50453a2f24190d020000000000000000040e18222b353e464f575f666c72787d8185888b8d8e8f90908f8e8d8b8986837f7a756f69625b534b433a31271e140a00000000000000000000000000010f1b2834414d5a66737f8b97a4a9a3978b7f73685d52494039343130303032363c444e5965707c8995a1adaa9d9184786b5e5245392c1f13060000000e1b2834414e5b6774818e9aa7aea194887b6e6155483b2f2216100f0f1014212d3a4753606d798693a0acaa9e9184776b5e5144382b1e110500000000000000000000000000000000000000000000000000000007131f2b36424e5a66717d8995a1a89c908477818d99a5a5998e82766a5e52473b2f23170b000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3b46525e6a76818d99a5a89c9085786d61555e6a76828d99a5a99d9185796d62564a3e32261b0f0300000000000000000000000000000000000000000006121d28333d48525c656f7780878e959ba1a6a9a4a09c989592949ca09488827f7c7975726e6b67635e59544e48423b342c241c130a0100000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300000a15212c37424d59646f7a86919ca7b2bec6c6bfb4a99d92877c70655a4f44382d22170c00000000000a15202b343d444c535a616870777e868d949ba29d97969ca6b1a89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000000020d18222d37424c57616c76818c96a1a7a8acb4ada09386796d6053463a2d2013070000000000000000000000000f1b2835424e5b6875818e9ba8a99d928b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a7d7164574a3e3124170b0000000013202c3946535f6c79868b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8f99a4aaa094877a6d6154473a2e211407000e1a26323e48525a5f5f5f5f5f5f5f5f5e59514d565d5f5f5f5f5f5f5f5f5d564d43382c20140800111d2a36424e5a646b6c6c6c6c6c6c6c6c6b655b5044382c201407000000000000020e1a26323e4a5660696c6c6c6c6c6c6c6c6c685e53483c2f23160a000814212d3a46525d666c6c6c6c6c6c6c6c6c6c655b51463b31261b10060007121d28333d48535e676c6c6c6c6c6c6c6c6c6c655b5044382c1f1306000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000000020d19242f3a45505b66707a848d969fa7a69d968f89847f7c7a797878797b7d8084898f969da5a59d948a81766c61574c41352a1e130700000000000000000b15202a343d475058616970777e84898d919597999b9c9c9c9c9b9a9895938f8b86817a746d655d554c433930261c1107000000000000000000000000000c1925323e4a57636f7b87939faba79c9085796f645b524b45413e3d3c3d3f42464d56606b76818d99a5b1a79a8e8275695c5043372a1d11040000000e1a2734414d5a6773808d99a6afa296897c7063574a3e32261f1c1b1b1c1f24303c4955626e7b8794a1ada99d9083766a5d5044372a1d1104000000000000000000000000000000000000000000000000000000020e1a26323d4955616d7884909ca8a094877b85919da9a195897d7165594e42362a1e12070000000000000000000000000000000000000000000000000000000000000000000000000006121e2a36414d5965717c8894a0aca195897d716559636e7a86929eaaa4988c8175695d5145392e22160a000000000000000000000000000000000000000000000c17232e39444f5a646e7781899299a0a7a8a29d9894908c89868a96a0938679736f6c6966625e5b57524e48433d373029221a120a010000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130005101b27323d48545f6a75818c97a2adb9b9b9b9b9b9afa4988d82766b60554a3f33281d120600000000040f19222b333a414850575e656c747b828991989fa3a3a7aeb5a89b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000006101b25303b45505a656f7a858f9aa4afb8b9ada09386796d6053463a2d2013070000000000000000000000000e1b2734414d5a6774818d9aa7aea49c98989898989898989898989898989898989898989898989898978a7d7164574a3e3124170b0000000013202c3946535f6c7986939898989898989898989898989898989898989898989898989898989898989aa1aaaea194877a6d6154473a2e211407000a16212c3740484f5253535353535353524e48444b515353535353535353514c443b31261b1004000e1a26323d48525a5f5f5f5f5f5f5f5f5f5f5b53493f33281c0f03000000000000000a16222e39444e575d5f5f5f5f5f5f5f5f5f5c564d42372b1f13070005111d2935404b545c5f5f5f5f5f5f5f5f5f5f5b534a3f342a1f14090000010b16212c36414c555c5f5f5f5f5f5f5f5f5f5f5b534a3f34281c1004000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000000007121e2a35414c57626d77828c969fa8a69d948b847d7873706d6c6b6b6c6e7074787d848b939ba4a69c93887e73685d52463b2f23180c0000000000000007121d27313c464f59626a737b82898f95999da1a4a2a09e9e9e9e9fa1a4a29f9b97928c867e776f675e554b42382e23190e030000000000000000000000000916222e3b47535f6b77838f9aa6aca1968b81766d645c56514d4a49494a4b4e52585f68727c87929ea9aea3978b7e7266594d4134281b0f020000000d1926333f4c5965727e8b98a4b0a4988b7e72665a4e4238302b292828292b2f36414c5864717d8a96a3afa79b8e8275685c4f4236291c1003000000000000000000000000000000000000000000000000000000000915212d3944505c6874808b97a3a3978b7f8995a1a89c9084786c6155493d31251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000020d1925313d4854606c78848f9ba7a59a8e82766a5e67737f8b97a3ab9f93887c7064584c4035291d110500000000000000000000000000000000000000000005111d28343f4b56616b76808a939ba3aba49d97918c8884807c7b8895a09386796d63605d5956524e4b46423d37322c251f18100800000000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000a16222d38434e5a65707b87929da8acacacacacacacacaa9e93887d71665b5045392e23170c000000000007101921282f373e454c535b626970787f868d959ca3aaacaca89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000000000000009141e29333e49535e68737d88929da8acacaca09386796d6053463a2d2013070000000000000000000000000d1a2733404d596673808c99a6acaca7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4978a7d7164574a3e3124170b0000000013202c3946535f6c798693a0a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6abacaca194877a6d6154473a2e2114070005101a252e373e43464646464646464645423d3a4044464646464646464644403a32291f150a00000a15212c3640484f525353535353535353524f4941372d22170b000000000000000005111d28323c454c51535353535353535353504b443b30261a0f0300010d19242f39424a50535353535353535353524f4941382d23180d03000000050f1a25303a434b50535353535353535353524f4941382d23170c00000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000000000c17232f3b46525d68737e89949ea8a79d948a8179726c6763615f5f5f606164686c72798189929ca6a49a8f85796e63574c4034281c10040000000000020e19232e39434d57616b747c858d949aa0a5a29d999593919191919395979b9fa5a29d979089817970675d544a3f352a20150a00000000000000000000000006121e2b37434f5b66727e89949faaa79d92887f766e67615d5957565656585a5e6369717a848e99a4afa99e92867a6e62564a3e3125190c000000000b1824313d4a56636f7c8895a1ada79b8e82766a5f544a413c3836353536373b4048525d6975818d99a5b0a4988b7f73665a4d4034271b0e010000000000000000000000000000000000000000000000000000000005101c2834404b57636f7b87929ea79b8f878d99a5a3978b8073685c5044382c2115090000000000000000000000000000000000000000000000000000000000000000000000000000000914202c38444f5b67737e8b96a2aa9e92867a6e626b77848f9ba7a69a8f83776b5f53483c3024180c010000000000000000000000000000000000000000000915212d3945505c67727d88929ba5aba29a928c86817c7774707b8895a09386796d6054504d4a46423e3a36312c26211a1614110e0a050000000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000f1b27333e4954606b76818d98a0a0a0a0a0a0a0a0a0a0a0a0998e83776c61564b3f34281c10040000000000070f161e252c333b424950575f666d747c838a9199a0a0a0a09b8e8275685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000020d17222c37414c56616c76818b96a0a0a0a0a09386796d6053463a2d2013070000000000000000000000000c1926333f4c5965727f8c98a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0978a7d7164574a3e3124170b0000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094877a6d6154473a2e211407000009131c252c323739393939393939393936322f3438393939393939393938342f2820170d030000040f1a242e363d4346464646464646464646433e372f261b11060000000000000000000b16212a333b414546464646464646464644403a32291f140900000007121d2730383f4446464646464646464646433e382f261c1106000000000008131e2831393f4446464646464646464646433e382f261c110600000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000004101c2834404b57636e7a85909ba5aba0968b82786f68615b57545252525355585c61676f77808a949ea29f968b8074685c5145382c1f1306000000000008141f2a35404b555f69737d868f979ea5a49d97918c89868584848586888b8f9499a0a7a29b938b82796f665c51473c31261b10040000000000000000000000020e1a26323e4a56616d78838e99a3ada49a91888079726d69666463636364676a6e747b838c96a0aaada2978c81756a5e52463a2e221509000000000915222e3b4754606c7885919da8ab9f93877b70665c534c48444242424244474b525a646f7a85919da9aca094887c6f63574a3e3225190c0000000000000000000000000000000000000000000000000000000000000c17232f3b47525e6a76828e99a5a19893969fa99e92867a6f63574b3f34281c100400000000000000000000000000000000000000000000000000000000000000000000000000000004101b27333f4b56626e7a86929da9a2968a7e7266707c8894a0aca2968a7e72665a4f43372b1f1308000000000000000000000000000000000000000000000d1925313d4a55616d78848f99a4aca2999088817a75706b676f7b8895a09386796d605346413d3a363230302e2c2a272522201e1a16100902000000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300111e2a37434f5b66717c8793939393939393939393939393939393897d72675c5045382c1f1306000000000000050c131a222930373e464d545b636a717880878e93939393938e8275685b4e4235281b0f02000000000000000000000000000000000000000000000000000000000000000000000000000005101b25303a454f5a646f79848f93939393939386796d6053463a2d2013070000000000000000000000000c1825323e4b5865717e8b939393939393939393939393939393939393939393939393939393939393938a7d7164574a3e3124170b0000000013202c3946535f6c798693939393939393939393939393939393939393939393939393939393939393939393939393877a6d6154473a2e2114070000010a131a21262a2c2c2c2c2c2c2c2c2c2a2624282b2c2c2c2c2c2c2c2c2b28241e160e050000000008121c242c32363939393939393939393937332d251d140a00000000000000000000050f18212930353839393939393939393938342f2820170d02000000010b151e272e33373939393939393939393937332d261d140a000000000000020c161f272e34383939393939393939393937332d261d140a0000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000000814202c3844505c68747f8b96a1aca59a8f84796f665d564f4b4846454546484b50565d656e78828d9896928f8b85796d6054473b2e21140800000000020e1925303b47515c67717b858f98a1a9a29a928b85817c7a78777778797b7e83888e959da6a59d948b81786d63584e43372c21150a0000000000000000000000000a16222e3945505b66717c87919ba4aca39a928a847e797572706f6f707173767a80868d959ea8aea49b90867b7064594d41362a1e12050000000006131f2b3844505c6874808c97a3aea3988d82776e655e5854514f4e4e4f5153575d646c76808b96a2ada69b8f84786c5f53473b2f22160900000000000000000000000000000000000000000000000000000000060b0e131e2a36424e5965717d8994a0aaa3a0a2a8a5998e82766a5e52463b2f23170f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000b17222e3a46525d6975818d99a4a79b8f83766a74808c98a4a99d9185796d61564a3e32261b0f0300000000000000000000000000000000000000000003101c2935414d5a66727e8a95a0aba59b90877e766f69645f626f7b8895a09386796d6053463a3130363b3d3d3b383634312f2d2a27221b140b020000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946525f6b778286868686868686868686868686868686868684786d6054473b2e21140800000000000000010910171e252d343b424a51585f676e757c848686868686868275685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000009131e28333e48535d68727d8686868686868686796d6053463a2d2013070000000000000000000000000b1824313e4a5764717d8686868686868686868686868686868686868686868686868686868686868686867d7164574a3e3124170b0000000013202c3946535f6c798686868686868686868686868686868686868686868686868686868686868686868686868686867a6d6154473a2e211407000000010910161a1e1f202020202020201f1e1a181c1f20202020202020201f1c18130c050000000000000a121a21262a2c2c2c2c2c2c2c2c2c2c2a27221b130b020000000000000000000000060f171f24292c2c2c2c2c2c2c2c2c2c2b28231d160e050000000000030c151c23282b2c2c2c2c2c2c2c2c2c2c2b27221b140b0200000000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2b27221b140b020000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000000c1824303c4955616d7884909ca7ab9f94887d72685e544c443f3b3938393a3c3f444b535c66707b878d8a86837f7c776d6054473a2e2114080000000008131f2b36414d58636e78838d97a1aaa3999088817a75706d6b6a6a6b6d6f72777d848b949da6a69d938a7f756a5f54493d32261b0f03000000000000000000000005111d28343f4a55606a757f89929ba3aba49c958f8985827f7d7c7c7d7e8082868b91989fa8aca49c92897e74695e53483c3125190d0100000000030f1c2834404c58646f7b86919ca6a99e948980776f6964605d5c5b5b5c5d6063686e767e88929da8aa9f958a7e73675b4f43372b1f13060000000000000000000000000000000000000000000000000000030a11171b1d1e25313d4955606c7884909ca0a0a0a0a0a095897d7165594e42362a1e1e1b17110b030000000000000000000000000000000000000000000000000000000000000000000000000006121e2935414d5964707c8894a0ab9f93877b6f7884909ca8a4988c8174695d5145392d22160a0000000000000000000000000000000000000000000006121f2b3844515d6a76828e9aa6aa9f94897e756c645e5855626f7b8895a09386796d6053463a323a42474a4a474543403e3b3936322d251d140a0000000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300131f2c3946525f6b767979797979797979797979797979797979797979776d6054473a2e211408000000000000000000050d141b222931383f464e555c636a72797979797979797973675a4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212c36414c56616b767979797979797979766b5f5346392d2013060000000000000000000000000a1723303d4a56636f78797979797979797979797979797979797979797979797979797979797979797979796f63574a3d3124170a00000000131f2c3946525f6b76797979797979797979797979797979797979797979797979797979797979797979797979797979776c6053473a2d2114070000000000050a0e11131313131313131313110e0c1012131313131313131312100c070100000000000000000810161a1e1f2020202020202020201e1b1610090100000000000000000000000000060d13191d1f2020202020202020201f1c18120c0400000000000000030a11171b1e202020202020202020201e1b16110a02000000000000000000030b12171c1e202020202020202020201e1b16110a02000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000030f1b2834404c5965717d8995a1ada69a8e82776c61564c423a332f2c2c2c2d2f3339414a545f6a7581817d7a76736f6c655b5044382c1f1306000000000c1824303b47535e6974808a959fa9a59b91877e766f6964615f5e5d5e6063666b7279828b949ea9a59b91867b70655a4e43372c2014080000000000000000000000000c17222e39444e59636d7680899199a1a7a7a09a95918e8c8a8989898a8c8f92979ca2a9a9a29a928a81776d62584d42372b2014090000000000000c1824303c47535e6a75808a959ea8a59b9289817a74706c6a696868686a6c6f74798088909aa4aba2988e83786d61564a3f33271b0f0300000000000000000000000000000000000000000000000000030c151c22272a2b2b2c3844505c67737f8b939393939393939084786c6055493d312b2b2a27231c150d04000000000000000000000000000000000000000000000000000000000000000000000000010d1925303c4854606b77838f9ba7a3978b7f737c8894a0ab9f93877b7064584c4035291d1105000000000000000000000000000000000000000000000814212d3a4753606c7985929eaaa69a8e82776c635a534c55626f7b8895a09386796d6053463a3a444c53565654514f4d4a4846433e372f261c110600000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f1300111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c655b5044382c1f130600000000000000000000020910181f262d353c434a515960676c6c6c6c6c6c6c6c6961564b3f3226190d000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a252f3a444f59646b6c6c6c6c6c6c6c6c6b645a4f43372b1e12050000000000000000000000000915222e3a47525d676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c675e53473b2e22160900000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b655b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1113131313131313131313110f0a050000000000000000000000000000000002080d101213131313131313131312100c070100000000000000000000060b0f1213131313131313131313110f0b0500000000000000000000000000060b0f1213131313131313131313110f0b050000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000006121e2b3744505c6875818d99a5aea295897d72665a4f443a302822201f1f2023282f38424d5965707775716e6a6763605b534a3f34281c100400000005111d2935404c58646f7a86919ca7aa9f94897f756c645d58545251515253565b60676f78828d97a2ada3988d82766b5f54483c3024180c00000000000000000000000006111c27323c47515b656e7780878f969ca2a7a6a19d9a989796969697999b9ea3a8a8a39e97908980776e655b51463b31251a0f0300000000000007131f2b36424d58636e78838c969ea7a49b938c86807c79777575757576787b80858b929aa2aaa19990867c71665c50453a2e22160b00000000000000000000000000000000000000000000000000010c151e272e3337383838383f4b57636e7a8686868686868686867f73675c50443838383837332e271f160c020000000000000000000000000000000000000000000000000000000000000000000000000814202c37434f5b67727e8a96a2a79b8f8377808c98a4a69a8e83776b5f53473c3024180c00000000000000000000000000000000000000000000000916222f3c4855626e7b8894a1ada2968a7d71665b51484855626f7b8895a09386796d6053463a414c565e6363605e5c595754524f4941382e23180c00000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b534a3f34281c1004000000000000000000000000060d141c232a313940474e555c5f5f5f5f5f5f5f5f5e584f453a2e22160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28333d48525a5f5f5f5f5f5f5f5f5f5f5a52493e33271b0f0200000000000000000000000006121e2a36414c555c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c554c41362b1f1206000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b53493f33281c0f03000000000000010508090909090909070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000815212e3a47535f6c7885919da9aa9e9285796d6155493e33281e1d1d1d1d1d1d1d26313d48545e676b6865615e5a5753504941382d23170c000000000915212d3945515d6974808c97a2ada4998d82776d635a534c4845444445474a4f555d66707b86919ca8a99e93887c7064594d4135291c10040000000000000000000000000b16202b353f49535c656d757d848b91979ba0a3a6a7a5a3a3a2a3a4a5a8a6a4a09c98928c867e776e655c53493f342a1f140900000000000000030e1a25313c47525c67717a848c959da4a59e97918c888583828282828385888b90969ca4a69f988f877d746a60554a3f34281d12060000000000000000000000000000000000000000000000000008131e2731383f43454545454546525e6a75797979797979797979786e63574b4545454545433f3931281e1409000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333e4a56626e7985919da99f93877a84909ca8a1968a7e72665a4e43372b1f130800000000000000000000000000000000000000000000000a1723303d495663707c8996a3aca093877a6e6155493f4855626f7b8895a09386796d6053463a45515d686f6f6d6a686663615f5b534a3f34281c1004000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000a16212c3740484f525353535353535353535353535353535353535353524f4941382d23170c0000000000000000000000000000030a111820272e353d444b505353535353535353514d463d33281d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16212c3640484e525353535353535353524f4940372c21160a00000000000000000000000000020e19252f3a434b505353535353535353535353535353535353535353535353535353535353535353535353504b433a30251a0e02000000000a16212c3740484f52535353535353535353535353535353535353535353535353535353535353535353535353535353524f4941372d22170b000000000001070d1114161616161615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406080a0b0c0c0c0c0c0b0a090705030000000000000000000000000000000000000000000000000000000000000407090a0a0a0a0a0a0a0a0a090602000000000000000000000000000000000000000000000000000000000000000000000000030709090909090908050100000000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000a1724303d4956626f7b8894a0ada79b8e8275695d5145392d2a2a2a2a2a2a2a2a2a2a2c37424c555b5e5c5955524e4b47443f382f261c1106000000000c1925313d4955616d7985919da8aa9f93877c71665b5148413c393737383a3e444b555f6974808b97a3aea4988d8175695d5145392c201408000000000000000000000000040f19232d37414a535b646b737980868b9093979a9c9d9e9f9f9f9e9d9c9a9794908c87817b746d655c534a41372d23180d03000000000000000009141f2a35404a555f68717a838b92999fa5a29d989592908f8e8e8f909294989ca1a6a19b958d867d756b62584e43392e23170c01000000000000000000000000000000000000000000000000020e19252f39424a4f5151515151514e58636a6c6c6c6c6c6c6c6c6c6c675d525151515151514f4a433a30251a0f030000000000000000000000000000000000000000000000000000000000000000000000000a16222e3a45515d6975818c98a4a3978a7e8894a0a89d9185796d61564a3e32261a0f0300000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a4ab9e9285786b5f52463c4855626f7b8895a09386796d6053463c4855616e7a7c79777572706e6b655c5145392c201307000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130005101a252e373e4346464646464646464646464646464646464646464646433e382f261c110600000000000000000000000000000000070e151c242b32394044464646464646464645413b342b21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a242e363d4345464646464646464646433e372e251b1005000000000000000000000000000008131e2831393f44464646464646464646464646464646464646464646464646464646464646464646464644403931281e1308000000000005101a252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372f261b110600000000030b12191d212323232323221f1b150f07000000000000000000000000000000000000000000000000000000000000000000000000000003070b0e1113151617181919191818171614120f0d0a0602000000000000000000000000000000000000000000000000050b10141617171717171717171715120e08020000000000000000000000000000000000000000000000000000000000000000040a0f1315161616161614110d07010000000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000c1926323f4b5865717e8a97a3b0a5988c7f72665a4d4136363636363636363636363636363a434a4f51504c4945423e3b3735312c251d140a00000003101c2835414d5965727e8a96a2ada69a8e82766b5f54493f36302c2b2b2c2e3239434d58636f7a86929eaaa99d9185796d6155483c3024170b0000000000000000000000000007111b252f384149525961686e757a7f84878a8d8f919292929292918f8d8b8884807b767069625b534a41382f251b1106000000000000000000030e19242e39434d565f68717981888e94999ea1a4a19e9d9c9b9b9c9d9ea1a4a29f9a96908a837c746b625950463c32271c11060000000000000000000000000000000000000000000000000006131f2a36414b545b5e5e5e5e5e5e5953595e5f5f5f5f5f5f5f5f5f5f5c55595e5e5e5e5e5e5c554c42372b1f130700000000000000000000000000000000000000000000000000000000000000000000000006111d2935404c5864707b87939fa79a8e848c98a4a4988c8074695d5145392d21160a0000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a4ab9e9285786b5e51453c4855626f7b8895a09386796d605346414d5965717d888684817f7c7a776d6154483b2e221508000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000009131c252c32373939393939393939393939393939393939393939393937332d261d140a000000000000000000000000000000000000030b121920272e343839393939393939393835302a22190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242c32363939393939393939393937322c251c1309000000000000000000000000000000010c161f272e3438393939393939393939393939393939393939393939393939393939393939393939393938342e271f160c0200000000000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393937332d251d140a00000000030c151d24292d2f303030302f2b27201910070000000000000000000000000000000000000000000000000000000000000000000001060b0f14171a1d1f2123242526262625252422201e1c1916120e0a050000000000000000000000000000000000000000000810171c2023242424242424242423221e19130c04000000000000000000000000000000000000000000000000000000000000070f151b1f222323232323211d19120b0300000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000e1b2734414d5a6773808c99a6afa396897d7063574a43434343434343434343434343434343434343444343434343434343413d372f261c1207000006131f2b3844505d6975828e9aa6aea2968a7d72665a4e43382d25201e1e1f2227313b47525e6a76828e9aa6aea295897d7164584c3f33271a0e010000000000000000000000000009131d262f3740484f565d63696e73777b7e81828485868686858482817e7b78746f6a655e58504941382f261d1309000000000000000000000007121d27313b444d565f676f767d83888d9295989b9d9e9f9f9f9f9e9d9b9996938e8a857f78716a625950473e342a20150b00000000000000000000000000000000000000000000000000000916222f3b47535d666b6b6b6b6b6a645e575253535353535353535353565d646a6b6b6b6b6b675e53483c2f23160a000000000000000000000000000000000000000000000000000000000000000000000000010c1824303c48535f6b77838e9aa69f9691949da89f93877b7064584c4034291d11050000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3ac9f9285796c5f53473c4855626f7b8895a09386796d60534647525d6975818d93908e8b89877a6e6255483b2f221508000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b27221b140b020000000000000000000000000000000000000000070f161d23282b2c2c2c2c2c2c2c2c2c29251f181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2a27211b130a0100000000000000000000000000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27221b130b02000000000a151e272f353a3c3c3c3c3c3b37322b23190f050000000000000000000000000000000000000000000000000000000000000001070c12171b2023272a2c2e3031323232323231302f2d2b2825221e1a16110b0500000000000000000000000000000000000008121a22282c2f3030303030303030302e2a251e160d040000000000000000000000000000000000000000000000000000000007101920272b2f303030302f2d29241d150c03000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000101c2936424f5c6875828e9ba8aea194887b6e625550505050505050505050505050505050505050505050505050505050504e4841382e24180d01000915222e3b4754606c7985919eaaab9f92867a6d6155493d32261c13111112161f2a36414d5966727e8b97a3b0a5998d8174675b4f4236291d100400000000000000000000000000010b141d252e363d454c52585e63676b6f717476777879797978777674726f6c68645f59534d463f372f261d140b010000000000000000000000000b151f29323b444d555d646b72777d8185898c8e90919292929291908e8c8a86837e79736d675f5850473e352c22180e0400000000000000000000000000000000000000000000000000000b1724313d4a57636f7878787878766f69625b554e48464646464d535a61686f7678787878787064574b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37434e5a66727e8a95a1a8a19ea0a6a69a8e83776b5f53473b3024180c000000000000000000000000000000000000000000000000000916232f3c4955626f7b8895a1ada094887b6f63574c434855626f7b8895a09386796d6053464f59646f7a86919d9d9a988f83776b5e5246392d211407000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000000010910161a1e1f2020202020202020202020202020202020202020201e1b16110a0200000000000000000000000000000000000000000000040b12171c1f20202020202020201f1d19140d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1e1f20202020202020201f1e1b16100901000000000000000000000000000000000000030b12171c1e20202020202020202020202020202020202020202020202020202020202020202020201f1c17120b04000000000000000000010910161a1e1f202020202020202020202020202020202020202020202020202020202020202020202020202020201e1b161009010000000006111c2730394046494949494947433d352b21160b000000000000000000000000000000000000000000000000000000000000050c12181e23272c303336383b3c3e3e3f3f3f3f3e3d3b3a3735322e2a26211c16100a0300000000000000000000000000000006101a242c33383c3d3d3d3d3d3d3d3d3d3b3630281f150b010000000000000000000000000000000000000000000000000000050f19232b32373b3c3c3c3c3c3a352f271e150a000000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000111d2a3744505d6a7683909da9ada093867a6d605d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5a534a4035291e1205000b1824313d4a56636f7c8895a1ada89c8f83766a5e5145392d21150a0404060e1925313d4a56626f7b8894a0ada99c9083776a5e5145382c1f12060000000000000000000000000000020b131c242c333a41474d52575b5f626567696b6b6c6c6c6b6a696765635f5c58534e48423b342d251d140b0200000000000000000000000000030d172029323b434b535a60666c7175797c7f82838485868685858482807d7a76726d68625c554e463e352c231a10060000000000000000000000000000000000000000000000000000000b1824313e4b5764717e85858585817a736d666059534c464a50575e656c737981858585857e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000060d121a26323e4a56616d7985919ca2a2a2a2a2a1958a7e72665a4e43372b1f140f090100000000000000000000000000000000000000000000000815212e3a4754606d7986929faba3978b7f74685e554e4955626f7b8895a09386796d60535158616b75808b97a2a9a2978b7f73675b4e42362a1e1105000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000050a0e1113131313131313131313131313131313131313131313110f0b050000000000000000000000000000000000000000000000000001070c0f12131313131313131312100d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1113131313131313131313110e0a0500000000000000000000000000000000000000000000060b0f121313131313131313131313131313131313131313131313131313131313131313131313120f0c0700000000000000000000000000050a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313110f0a050000000000000b17232e38424b525556565656544e473d33281c1105000000000000000000000000000000000000000000000000000000010810171d23292e33383c3f424547494a4b4c4c4c4b4b4a484644413e3a36322d28221c150e0600000000000000000000000000010c18222c363e44484a4a4a4a4a4a4a4a4a47413a31271d120700000000000000000000000000000000000000000000000000000b16212b353d4347494949494946403930271c11060000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000121e2b3845515e6b7784919eaaac9f9286796c69696969696969696969696969696969696969696969696969696969696969655c51463a2e211508000d1a26333f4c5865727e8b97a4b0a6998d8074675b4e4235291d11050000000915212e3a46535f6c7885929eabab9f9286796d6053473a2e211408000000000000000000000000000000010a121a21282f363c41464b4f5356585b5d5e5f5f5f5f5f5e5c5b595653504c47423d37312a231b130b02000000000000000000000000000000050e172029313941484f555b6065696d70737576787879797978777573716e6a66625c57514a433c342c231a1108000000000000000000000000000000000000000000000000000000000b1724313e4a57636f79838c92928c857e78716b645e5751545b626970777d848b92928d837a7064584b3e3225180c00000000000000000000000000000000000000000000000000000000000000000000000710171e23272d3945515c6874808c959595959595959185796d61564a3e322825201a130b020000000000000000000000000000000000000000000006131f2c3845515e6a76838f9ba6a79c90857a7067605a5555626f7b8895a09386796d60575c626a737d87929da8a89d91867a6e62564a3e32261a0e02000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b28333f4a545d626363636360594f44392d2115090000000000000000000000000000000000000000000000000000030b131a21282f343a3f44484c4f52545657585959595857565553504e4a47423e39332d262018110900000000000000000000000006121e29343e484f55575757575757575756524c43392f23180c0000000000000000000000000000000000000000000000000005111c28333d474e545656565655524b42382e23170b0000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000121f2c3945525f6b7885929fabac9f92857876767676767676767676767676767676767676767676767676767676767676766e6256493d3024170a000f1b2835414e5a6774818d9aa6b0a4978b7e7165584c3f33261a0d0100000005121e2b3744515d6a7683909ca9aea194887b6f6255493c2f2316090000000000000000000000000000000000080f171e242a30353a3f4346494c4e5051525253525251504e4c4a47433f3b37312c261f181109010000000000000000000000000000000000050e171f272f363d444a4f54595d616466686a6b6c6c6c6c6b6a686764615e5a56514c463f39322a221a110800000000000000000000000000000000000000000000000000000000000916222f3b47535e677079838c9597908a837c766f69625b5f666d747a81888f96978d847a71685e53483c2f23170a0000000000000000000000000000000000000000000000000000000000000000000006101922292f333536404c58636f7b8788888888888888888074685d5145393634312c251d140b0000000000000000000000000000000000000000000004101d2935424e5a66727e8a96a1aca1978c8279716b65615e626f7b8895a09386796d6063676d747c858f99a3ada2978c8175695e52463a2e22160a00000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0d0a05000000000000000000000000000000000000000000000000000001070b0f1011111111110f0c070200000000000000000000000000000000000000000000000000000000000000000000000000020406070808080808070605030100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001030506070808080807070504020000000000000000000000000000000000000000000000000000000000000000000000000000000000020406070808080807070503010000000000000000000000000000000000000000000000000000121e2b3744505c666e6f6f6f6f6b6155493d3124180b00000000000000000000000000000000000000000000000000030c151d242c333a40454b5054585b5e60626465656565656463615f5d5a57534e49443e38312a221b120a01000000000000000000000a16222e3a45505a616363636363636363635e554b4034281c10030000000000000000000000000000000000000000000000000915212d39444f596063636363625d544a3f33281b0f0000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000013202c3946535f6c7986929facac9f928683838383838383838383838383838383838383838383838383838383838383837d7164574a3e3124170b00101d2936434f5c6975828f9ba8afa295897c6f6356493d3024170b0000000003101c2935424f5b6874818e9ba7b0a3968a7d7063574a3d3124170b000000000000000000000000000000000000050c13191f252a2e33373a3d3f4243444546464645444342403d3a37332f2b26201a140d060000000000000000000000000000000000000000050d151d252c32383e44494d5154575a5c5d5e5f5f5f5f5e5d5c5a5855524e4a45403a342e272018100800000000000000000000000000000000000000000000000000000000000006131f2b36414c555e67717a838c959b948e87817a746d666a71787e858c939a978e857b72685f564c42372b1f1307000000000000000000000000000000000000000000000000000000000000000000030e18222c343a3f42424247535f6a767b7b7b7b7b7b7b7b7b7a6f64584c424242413d372f261c1207000000000000000000000000000000000000000000000d1926323e4a56626d79848f9aa5a89e948b837c76716d6a686f7b8895a09386796d6b6f73787f868e97a1aba59b90867a6f64584d41352a1e120600000013202c3946535f6c798693a0ac9f9286796c5f5246392c1f130013202c3946535f6c798693a0ac9f9286796c5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1c1c1c1c1c1c1a16110b040000000000000000000000000000000000000000000000050c12171b1d1e1e1e1e1d1b18130d05000000000000000000000000000000000000000000000000000000000000000003070a0d0f1112131415151515141312100e0c090602000000000000000000000000000000000000000000000000000000000000000000000000000105080b0e1012131415151515141312100e0c0906030000000000000000000000000000000000000000000000000000000000000000000105090c0f11121414151515141312100d0b0704000005080a0a0a0a0a0a0a0a0a0907040000000000000013202c3946535f6c787c7c7c7c7265594c3f3226190c000000000000000000000000000000000000000000000000030c151e262f363e454b51575c6064686a6d6f70717272727271706e6c6966635f5a554f49433c342d241c130a000000000000000000000c1925323e4a56626c70707070707070706f675c5144382b1f12060000000000000000000000000000000000000000000000000b1824313d4955616b6f6f6f6f6e665c5044372b1e120000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000013202c3946535f6c798693a0acafa39891909090909090909090909090909090909090909090909090909090909090908a7d7164574a3e3124170b00111e2b3744515d6a7784909daaada194877b6e6155483b2f22150900000000000e1a2734404d5a6673808d99a6b1a4988b7e7165584b3f3225190c0000000000000000000000000000000000000001080e14191e22272a2e3033353638393939393838363533312e2b27231f1a150f090300000000000000000000000000000000000000000000030b131a21272d33383d4145484b4d4f50515253535252514f4d4b4945423e39342f29231c150e0600000000000000000000000000000000000000000000000000000000000000020e1a25303a434c555f68717a838c959f99928c857e7871757c838990979e988e857c726960564d443a30261a0f0300000000000000000000000000000000000000000000000000000000000000000009141f2a343e454b4f4f4f4f4f5a646d6f6f6f6f6f6f6f6f6f6e685e534f4f4f4f4d4841382e24190d020000000000000000000000000000000000000000000916222e3a45515c68737e89939ca5a69d958e87827d7a7775737b8895a093867975787b7f848a9198a0a9a69d93897e74695e53473c3025190d0100000013202c3946535f6c798693a0a09f9286796c5f5246392c1f130013202c3946535f6c798693a0a09f9286796c5f5246392c1f130000000000000000000000000000000000000000000000000000000000000000000000050e161c222628292929292826221c160e05000000000000000000000000000000000000000000060f171e23272a2a2a2a2a2a28241e170f070000000000000000000000000000000000000000000000000000000003070c101316191b1d1f20212222222121201e1c1a1815120e0a0601000000000000000000000000000000000000000000000000000000000000000004090d1114181a1c1e20212122222121201f1d1b1816120f0b06010000000000000000000000000000000000000000000000000000000004090d1215181b1d1f202122222221201e1c1a1714100b0c11141617171717171717171614100b05000000000013202c3946535f6c798689897f7265594c3f3226190c0000000000000000000000000000000000000000000000020c151e27303840484f565c62676c707477797b7d7e7e7f7f7e7d7c7b7876736f6b66615b544d463e362e251c12090000000000000000000d1a2633404d5966737d7d7d7d7d7d7d7d796c6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727c7c7c7c786c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000013202c3946535f6c798693a0acb4aaa29d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d978a7d7164574a3e3124170b00121f2c3845525e6b7885919eabaca09386796d6053473a2d21140700000000000c1926333f4c5965727f8c98a5b2a5998c7f7366594c403326190d00000000000000000000000000000000000000000003080d12161a1e212426282a2b2c2c2c2c2c2b2a282624221f1b17130e09040000000000000000000000000000000000000000000000000001080f161c22272c3135383b3e4042444546464646454443413f3c3936322d29231e18110b0400000000000000000000000000000000000000000000000000000000000000000008131e28313a434d565f68717a838d969f9d97908a837c80868d949ba2988f867c736a60574e443b32281e1409000000000000000000000000000000000000000000000000000000000000000000010d1925313c4650575b5c5c5c5c5c5c61626262626262626262625e5c5c5c5c5c5c59534a40352a1e120600000000000000000000000000000000000000000005111d2935404b57616c77818a939ca3a79f99938e89868381807e8895a09386818284878b90959ba2aaa59d948b81776d62584d41362b1f14080000000013202c3946535f6c7986939393939286796c5f5246392c1f130013202c3946535f6c7986939393939286796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000040e1720272e32353636363635322e2720170e0400000000000000000000000000000000000000050f1821282f34363737373737342f2921190f050000000000000000000000000000000000000000000000000003090e13181c202326282a2c2d2e2e2e2e2e2d2c2b292724221e1b16120d070200000000000000000000000000000000000000000000000000000000050b1015191d212427292b2c2d2e2e2e2e2e2d2b2a2725221f1b17120d080200000000000000000000000000000000000000000000000003090f15191e2125282a2c2d2e2e2e2e2e2d2b292623201c17171d2123242424242424242423201c1710080000000013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000000000000000a141e273039424a525a61686d73787c808386888a8b8c8c8c8b8a898785827f7b77726c665f58504840372e241b110700000000000000000d1a2633404d596673808a8a8a8a8a8a86796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f898986796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000013202c3946535f6c7986929facb7ada5a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a2a8aaaaa3978a7d7063574a3d3024170a00131f2c3946525f6c7985929facac9f9286796c5f5346392c20130600000000000c1825323e4b5865717e8b98a4b1a69a8d8073665a4d4034271a0d000000000000000000000000000000000000000000000002060a0e1215171a1c1d1e1f1f201f1f1e1d1c1a1815120f0b07020000000000000000000000000000000000000000000000000000000000040b11161c2025292c2f3234363738393939393837363432302d2926221d18130d070000000000000000000000000000000000000000000000000000000000000000000000020c161f28313a434d565f68717a848d969fa29b948e878a91989fa29990867d746a61584e453c322920160d0200000000000000000000000000000000000000000000000000000000000000000004111d2936424d58626869696969696969676157555555555c656969696969696969655c52463a2e221609000000000000000000000000000000000000000000010c18232f3a45505a656f78818a9299a0a6a49e9a9692908e8c8c8e98a2978e8d8f9194979ba0a6a8a29b938b83796f655b51463b30251a0e030000000013202c3946535f6c7986868686868686796c5f5246392c1f130013202c3946535f6c7986868686868686796c5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000b16202932393e4242424242423e39322920160b000000000000000000000000000000000000010c16212a333a40434444444443403a332b21170c010000000000000000000000000000000000000000000002080f141a1f24282c2f323537383a3b3b3b3b3b3a39383634312e2a27221e19130d0700000000000000000000000000000000000000000000000000030a10161c2125292d30333637393a3b3b3b3b3a39383634312e2b27231e19130d0700000000000000000000000000000000000000000000070e141a20252a2e313436383a3b3b3b3b3a39383533302c282322282d3030303030303030302f2c28221a120800000013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000000000008121c263039424b545c646c72797e84898c909395969898999898979694928f8b87837d77716a625a524940362d23190e04000000000000000d1a2633404d596673808d979797979386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000121f2c3945525f6c7885929fabb1a59b9493939393939393939393939393939393939393939393939393979faaafa396897c6f6356493d3023160a0013202c3946535f6c798693a0acac9f9285786b5f5245392c1f120600000000000b1824313e4b5764717e8b97a4b1a79a8d8174675a4d4134271a0e00000000000000000000000000000000000000000000000000000205080b0d0f1012121313131212100f0d0b09060300000000000000000000000000000000000000000000000000000000000000000000050b1014181c20232527292a2b2c2c2c2c2c2b29282623201d1a16110c070100000000000000000000000000000000000000000000000000000000000000000000000000040d161f28313b444d565f68717a848d969fa69f9994959ca3a39a90877e746b62584f463c332a20170e040000000000000000000000000000000000000000000000000000000000000000000006121f2c3845525e6a737575757575757573695d51484b57636e75757575757575756e63574a3e3124180b0000000000000000000000000000000000000000000007121e29343e49535d666f7880878e949a9fa3a6a29f9c9b99989aa0a9a09a9a9b9da0a3a7a5a19c969089817970675d54493f342a1f14080000000000131f2c3946525f6b7679797979797979766b5e5245382c1f1200131f2c3946525f6b7679797979797979766b5e5245382c1f1200000000000000000000000000000000000000000000000000000000000000000006111d27323b444a4e4f4f4f4f4e4a443b32271d1106000000000000000000000000000000000006121d28323c454b5051515151504c453d33291e1207000000000000000000000000000000000000000000050c131a20252b3034383b3f41434546474848484847464442403d3a37332e29241e18120b0300000000000000000000000000000000000000000000070e151b22272c3135393d40424446474848484847464543403e3b37332e2a241e18120b03000000000000000000000000000000000000010911181f262c31363a3e4143454647484848474644423f3c38342f2d34393c3d3d3d3d3d3d3d3d3c38332c241a1006000013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000000000000040f19242e38424b545d666e767d848a9094999c9fa1a3a3a2a2a2a3a4a2a09e9b97938e89827b746c645b52483f352a20150a000000000000000d1a2633404d596673808d9aa4a4a09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000121e2b3845515e6b7784919eaaada19489868686868686868686868686868686868686868686868686868e9aa6aea295887b6f6255493c2f2216090013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c101316191b1c1e1f1f20201f1f1e1d1b191714110d09050000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f29323b444d565f68727b848d96a0a0a0a0a0a0a09a91887e756b625950463d342a21180e0500000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7982828282828282786b5f52454c5865727e8282828282827e7165584b3e3225180b00000000000000000000000000000000000000000000010c17222d37414b545d666e757d83898e93979a9da0a2a4a5a5a6abb2aba7a5a4a3a19f9c9995908b857e776f675e554b42382d23180d020000000000111e2a37434f5a646b6c6c6c6c6c6c6c6b645a4e42362a1d1100111e2a37434f5a646b6c6c6c6c6c6c6c6b645a4e42362a1d110000000000000000000000000000000000000000000000000000000000000000000a16222e39444d555b5c5c5c5c5b554d44392e22160a00000000000000000000000000000000000a16222e39444e565c5d5d5d5d5c574f453a2f23170b0000000000000000000000000000000000000000080f171e252b31363b4044484b4e50525354555555545352514f4d4a47433f3a352f29231c150d06000000000000000000000000000000000000000109111920262d33383d4246494c4f515253545555545453514f4d4a47433f3a35302a231c150e0600000000000000000000000000000000010a131b232a31373d42464a4d505253545555545453514f4c48443f3a363e45494a4a4a4a4a4a4a4a48443e362c22180c010013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000000000b16202b36404a545d666f7880888f959ba0a5a39f9b99979696969698999ca0a4a39f9a948d867e766d645a51463c32271c11060000000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000111e2a3744505d6a7683909ca9ada093867a7979797979797979797979797979797979797979797979808c99a6ada094877a6d6154473b2e2115080013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e000000000000000000000000000000000000000000000001030406070708080807060503010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070a0c0e101112131313131211100e0c0a0805010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d172029323b444d576069727b848e9393939393939392887f756c635950473e342b22180f060000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c79868f8f8f8f8f85786b5f52454c5865727e8c8f8f8f8f8b7e7165584b3e3225180b000000000000000000000000000000000000000000000006101b252f39424b545c646b72787d82878b8e9193959798999ba1a9a09a9998969592908d8985807a746d655d554c433a30261b11060000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5a52483d32261a0e000e1a26323e48525a5f5f5f5f5f5f5f5f5f5a52483d32261a0e0000000000000000000000000000000000000000000000000000000000000000000d1a26333f4a555f6769696969675f554a3f33261a0d01000000000000000000000000000000000d1a26333f4b5660686a6a6a6a6861574b3f33271b0e0200000000000000000000000000000000000009111a212930363c42474c5054575a5c5e606161616161605f5d5b5956534f4b46413b352e271f170f070000000000000000000000000000000000020b131b232a31383e44494e5255595b5d5f6061616161615f5e5c5957534f4b46413b352e271f180f070000000000000000000000000000000a131c252d353c42484d5256595c5e6061616161615f5d5b5854504b453f4850555757575757575757554f483e34291e12060013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000000000006111c27323d47525c666f78828a929aa0a7a39d97938f8c8a8989898a8b8d9093989da3a59f9890887f766c62584e43382d22170c0000000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000101c2936424f5c6875828e9ba7aea194877b6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c74818e9aa7ab9f9285796c5f5346392d2013070013202c3946535f6c7986939facac9f9285786c5f5245392c1f120600000000000b1824313e4b5764717e8b98a4b1a79a8d8173675a4d4134271a0e000000000000000000000000000000000000000104080b0d0f11131414151514141312100e0c090602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029323b454e576069727b85868686868686868680766d635a51473e352c22191006000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986939c9c9c9285786b5f52454c5865727e8c989c9c988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000009131d273039424a525960666c72767b7e828487898a8b8c8f99a2978e8c8b8a888683817d78746e69625b544b433a31271e140a000000000000000a16212c3740484f5253535353535353524f4840362c21150a000a16212c3740484f5253535353535353524f4840362c21150a0000000000000000000000000000000000000000000000000000000000000000000f1c2935424e5b67717575757571675b4e4235291c0f03000000000000000000000000000000000f1c2835424e5b67727777777773685c4f4336291d1003000000000000000000000000000000000009121b232b333a41484d53585c606467696b6c6d6e6e6e6e6d6c6a6865625f5b56514c463f38312921191007000000000000000000000000000000020b141d252d353c43494f55595e6265686a6c6d6e6e6e6e6d6c6a6866635f5b57524c464039312a211910070000000000000000000000000008121c252e373f464d53595e6266696b6c6d6e6e6e6d6c6a6764605c57514a515a616363636363636363615a50453a2e22160a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000000000c17222e39444e59646e78818b949ca4a8a099928c8783807d7c7c7c7d7e8184878c9299a0a8a29a91887e746a60554a3f34281d110600000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000e1b2734414d5a6673808c99a5afa296897c70635f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6a7683909ca9a99d9084776a5e5144382b1e120500131f2c3945525f6c7885929facac9f9286796c5f5346392d20130600000000000c1825323f4b5865717e8b98a5b1a6998d807366594d4033271a0d000000000000000000000000000000000004090d1114171a1c1e1f202121212120201e1d1b1815120e0a060100000000000000000000000000000000000000000000000305070707070707070707070707070707070707070707070707070707070707070707070707070707070706030000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029333c454e57606972797979797979797979766d645b51483f352c231a100700000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c798693a0a99f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000010b151e27303840484f555b61666a6e7275787a7c7d7e808895a093867f7e7d7b797774706c68635d575049423a31281f160c020000000000000005101a252e373e43464646464646464646433d362e241a0f040005101a252e373e43464646464646464646433d362e241a0f04000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768282828276695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c69758284848376695d5043362a1d10030000000000000000000000000000000009121b242d353d454c53595e64686c70737678797a7b7b7b7a79787774726f6b67625d57514a433b332b2219100600000000000000000000000000010b141d262f373f474e545b60656a6e717476787a7b7b7b7b7a797775726f6b67635d57514a433b332b221a1007000000000000000000000005101a242e37404951585f656a6e727577797a7b7b7b7a797674706c68625c5558636c70707070707070706c62564a3e3225190c0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000005111d28343f4a55606b75808a949da6a89f968e87817b7673716f6f6f707274777b81878e969ea7a39a90867c71665b5045392e22160b00000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000c1925323f4b5864717d8a96a3afa4988b7e7265595353535353535353535353535353535353606c7985929eaba79a8e8175685b4f4236291d100300121f2b3845515e6b7884919eaaada093877a6d6054473a2e21140700000000000d1926333f4c5966727f8c98a5b2a5998c7f7266594c3f3326190d000000000000000000000000000000050a1014191d202426292a2c2d2e2e2e2e2d2c2b292725221e1a16120d070200000000000000000000000000000000000000050b0f12141414141414141414141414141414141414141414141414141414141414141414141414141414141412100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000050e17202a333c454e5760696c6c6c6c6c6c6c6c6c6b645b52493f362d231a11070000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c798693a0ac9f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000030c151e262e363d444a50555a5e6266696b6e6f71727b8895a093867971706f6d6a6764605c57524c463f3830281f160d0400000000000000000009131c252c323739393939393939393936322c241c120800000009131c252c323739393939393939393936322c241c120800000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976838f8f8376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000000000000008121b242e373f474f575e646a6f74797c808284868788888887868583817e7b77736e68625c554d453d342b22180e0400000000000000000000000009131d262f38414951585f666c71767a7e8183858687888888878684827e7b78736e69635c554d453d342c22190f05000000000000000000010c17222c364049525b626a70767a7e82848687888888878583807d78736d675f5b67747d7d7d7d7d7d7d7d7366594d4033261a0d0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000000000a16222e3945505b67727c87929ca5aaa0968d847c756f6a67646362626365676b70757c848c959ea8a2988e83786d61564a3f33271b0f03000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000a1723303c4955626e7b8793a0aca69a8e8175695c5046464646464646464646464646464a57636f7b8894a1ada4978b7e7266594d4034271b0e0100111e2a3744505d6a7783909da9aea194887b6e6255483c2f22160900000000000e1b2734414d5a6773808d9aa6b1a4988b7e7165584b3f3225180c00000000000000000000000000030a10161b2025292d30333537393a3a3b3b3a3a39383634312e2a27221d18130d0600000000000000000000000000000000010910161b1f20202020202020202020202020202020202020202020202020202020202020202020202020202020201f1c17120b03000000000000000000000000000000000000000000000000000000000000000000000000000000050e18212a333c454e575d5f5f5f5f5f5f5f5f5f5f5a524940372d241b1108000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c798693a0a09f9285786b5f52454c5865727e8c98a0a0988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000030c141c242b32393f444a4e5256595c5f6163646f7b8895a09386796d6462605e5b5854504c46413b342d261e160d0400000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2a26211a120a00000000010a131a21262a2c2c2c2c2c2c2c2c2c2a26211a120a0000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000000000000005101a242d374049515961686f757b8085898c8f919394949594949392908e8b87837f7a746d665f574f463d342a20160c010000000000000000000007111b252f38414a535b636a71777d82868a8d909293949595949392908e8b88847f7a746d675f574f473e342b21170d03000000000000000007121e29333e48525b646d747b81868b8e9192949495949392908d89847e78716a616875828a8a8a8a8a8a7e7265594c3f3326190d0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000000030f1b27333e4a56616d78838e99a3ada2988e847b726a645e5a5856555657585b5f646a727a838c96a0a69f94897e72675b4f43372b1f1206000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e01000000000000000000000814212d3a46525f6b7784909ca8a99d9185786c6155493e3939393939393939393939434f5b67737f8b98a4ada094887b6f63564a3e3125180c0000101c2936424f5c6875828e9ba8afa296897c7063564a3d3124180b0000000003101c2936424f5b6875828e9ba7afa3968a7d7063574a3d3124170b000000000000000000000000070e151b21272c3135393c3f424445464748484747464442403d3a37332e29241e18110a0300000000000000000000000000010b131b22272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b28231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a333c454c51535353535353535353524f4940372e251b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986939393939285786b5f52454c5865727e8c939393938b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000020a121a21272e33393e42464a4d50525456626f7b8895a09386796d605554514f4c4844403b353029231b140c04000000000000000000000000010910161a1e1f202020202020201f1e1a161008000000000000010910161a1e1f202020202020201f1e1a161008000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000000000020d17212c353f49525b636b737a81878c9195989b9d9fa0a1a2a1a1a09e9c9a97948f8a857f78716961584f463c32281e1308000000000000000000030e18232d37414a535c656d747c82888e92969a9c9ea0a1a1a2a1a09f9d9b9894908b857f787169615850463d33291f140a00000000000000010d18242f3a454f5a646d767e868d92979a9d9fa0a1a2a1a09e9c9995908a837b736b6976828f979797978b7e7165584b3e3225180b0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000007131f2b37434f5b66727e8994a0aaa69b91867c72696059534e4b4949494a4c4f53596068717a848f9a9996928f83776c6053473a2d211407000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e010000000000000000000005111e2a37434f5b6874808c98a4ada195897d71665a4f453b312c2c2c2c2c2c2c343e49545f6b77838f9ba7a99d9184786c6053473b2e22150900000e1b2834414e5a6773808d99a6b1a4988b7e7265594c4033271a0e0100000006121f2b3844515d6a7683909ca9aea194887b6e6255493c2f23160900000000000000000000010911181f262c32383d4145494c4e505253545454545352514f4d4a47433f3a352f29231c150d0500000000000000000000000009131d252d33373a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a38342e271e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a333b414546464646464646464646433e372e251c13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986868686868685786b5f52454c5865727e8686868686867e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000080f161c22282d32363a3e4143464855626f7b8893939386796d60534745423f3c38342f2a241e18110a02000000000000000000000000000000050a0e11131313131313131313110e0a04000000000000000000050a0e11131313131313131313110e0a0400000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000000009141e29333d47515b646d757d858c92989da1a5a39f9d9b9a9a9a9a9b9da0a3a3a09b96908a837b736a61584e443a2f251a0f0400000000000000000a151f2a343f49535c656e777f868d94999ea2a4a09d9a999898999a9c9fa2a4a09b96908a837b736a62584f453b31261c110600000000000006121e2935404b56616c76808890989ea3a7a9a5a19f9d9c9c9c9c9ea09b958d857d746a7683909da4a4978a7d7164574b3e3124180b0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000b17232f3b47535f6b77838f9aa6aca1958a7f746a60574e47423f3d3c3c3d3f43484e565f68727d88918d8a86837f7a6e6154473b2e211408000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0100000000000000000000020e1b27333f4c5864707c88949faba59a8e82776c61574d433b3532302f3033373d46505a65707c88939faba4988c8074685c5044372b1f120600000d1926323f4c5865717e8a97a3b0a69a8d8174685b4f42362a1e12060000000915222e3a4753606c7985929eabab9f9286796d6053473a2e211408000000000000000000020a131b232a31383e43484d5155585b5d5f6061616161605f5d5b5956534f4a46403a342e271f170f070000000000000000000005101b252f373e444647474747474747474747474747474747474747474747474747474747474747474747474747474747443f3930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000060f1821293035383939393939393939393937322c251c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3946525f6b7679797979797979766a5e51454b58647079797979797979797064574b3e3125180b000000000000000000000000000000000000000000000000000000000000040b11171c21262a2e3134373c4855626f7b8686868686796d6053463a3633302c28231e19130d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000000000040f1a25303b454f59636d767f878f969da3a7a19b9793908e8d8d8d8e8f9194979ca1a7a29b958d857c736a60564c41362b20150a0000000000000005101b26313c46515b656e77808991989fa5a39d9894908e8c8c8c8c8d8f92969ba0a6a29b958d857c746a61574d42382d22170c0100000000000a17222e3a46515d68737d88929aa2a9aba49e999592908f8f8f909194979c978f867c737784909daaa4978a7d7064574a3d3124170b0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000020e1a27333f4b5864707c88949faba79b9084786d62584e453d3632302f303133373c444d56616c778384817d7a76736f685d5145392d201307000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000004070809131f2c3946525f6c7986929faca79a8e8174675a4d4134271a0e0908070400000000000000000b17232f3b47545f6b77838f9aa5aa9f94887d73685f564d46413e3c3c3d3f43484f58626c77828d99a4aa9f93887c7064584c4034271b0f0300000b1724303d4956626f7b8894a1ada99c9083776b5e52463a2e22170d0a090a0e1a25313e4a56626f7b8894a1ada99c9083776a5e5145382c1f12060000000000000000020b141d252d343c43494f54595d6164676a6b6d6d6e6e6d6d6c6a6866635f5b56514c463f383129211910070000000000000000000a16212d3741494f5353535353535353535353535353535353535353535353535353535353535353535353535353535353504a42392f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e24292c2c2c2c2c2c2c2c2c2c2c2a27211b130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a37434f5a646b6c6c6c6c6c6c6c6b64594e4248545f686c6c6c6c6c6c6c6c685e53483c2f23160a0000000000000000000000000000000000000000000000000000000000000000060b11151a1e2225282f3b4855616d787979797979766b5f5346392d2723201c18130e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0d0a0500000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000000a15202c37424c57616b757f889199a1a8a39c958f8a878482818080818284878b90959ca3a69f978e857c72685d53483d32261b10040000000000000b16212d38434d58626d76808a929ba3a8a099928c888481807e7e808183868a8f959ca3a69f978f867c73695f544a3f34291d120700000000020e1b27333f4b57626e79848f9aa3acaba29a938d8986848282828385878b9096988e857a7784919eaaa4978a7d7063574a3d3024170a0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000005111e2a36434f5b6774808c98a4afa3978b7f73675c51463c332b2623222324272b323b444f5a66727b7874716d6a67635e564c4135291d1104000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000070c11141515151f2c3946525f6c7986929faaa79a8e8174675a4d4134271a15151513100b0600000000000007131f2b37434f5b66727d89949faaa59a8f857a71685f58524d4b49494a4b4f535a616a747e88939eaaa4998e82776b5f53483c3024170b0000000815212e3a4753606c7885919daaac9f93877a6e62564a3f33281e1916161719202a36424e5a66727e8b97a3b0a6998d8174685b4f4236291d100400000000000000010a141d262f373f464d545a6065696d71747678797a7b7b7a79787775726f6b67625d57514a433b332b2219100700000000000000000f1b27333e49535b60606060606060606060606060606060606060606060606060606060606060606060606060606060605c544b4035291d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000050d13191c1f2020202020202020201f1e1b161009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26323e48525a5f5f5f5f5f5f5f5f5f5a52483d424d565d5f5f5f5f5f5f5f5f5c564d42372b1f130700000000000000000000000000000000000000000000000000000000000000000000050a0e121518202d3945515c666c6c6c6c6c6c6b645a4f43372b1e1714100c070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1c1c1c1c1c1c1a16110b040000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000040f1b26323d48535e69737d87919aa3aba299918a847e7a77757373737475787b7f848a9199a1a9a0978e84796f64594e43372c201509000000000005101c27333e49545f6a747e89929ca4a89f968e87817b78757372727374767a7e848a9199a2a9a1988e857b70665b50453a2f23180c0000000006121e2b37434f5b67737f8a96a1acada2999088817c797776757576787b80858b92968c827885929eaba3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000714202d3946525e6b7784909ca8ab9f93867a6e62574b40352a211a191919191a2029333e4a56616a6e6c6865615e5a57534c443a2f24190d01000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000000020b12181d20222222222c3946525f6c7986929d9d9d9a8e8174675a4d41342722222222201c1710090100000000030f1b27323e4a55616c77838e98a3aba1968c83797169635e5a57565556585b5f656b737c868f9aa5a89e93887d71665a4f43372b1f130700000006121f2b3744505c6975818d99a6afa3978b7e73675b50443a302925232223252a323c47525e6a76828e9aa7aea2968a7d7165584c3f33271a0e010000000000000009131c262f38414951585f656b71757a7d8183858687888887868583817e7b77736e68625c544d453d342b22190f0500000000000000111e2a37434f5a656c6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d665d5145392d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d101213131313131313131313110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3740484f5253535353535353524e4840363b444b515353535353535353504b443b30261a0f03000000000000000000000000000000000000000000000000000000000000000000000000020609111d2934404a545b5f5f5f5f5f5f5f5a52493e33271b0f0704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161c222628292929292826221c160e0500000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000000915202c37434e5965707a858f99a3aca29990878079736e6b6867666667696b6f737980878f98a1a9a0968b81766b5f54493d31251a0e02000000000a15212d38444f5a66717b86909aa4aaa0968d847c75706b6866656566676a6e72787f879099a3aaa0978d82776d62564b4034291d11050000000915222e3a47535f6b77848f9ba7b1a69b90877e76716d6a696868696c6f737980889094897e85929eaba3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000a16232f3c4855616e7a8793a0aca89b8f83766a5e52463a2e262626262626262626262d39444f585f615f5c5955514e4a47423a32281e130800000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000020c141c23292d2f2f2f2f2f3946525f6c798690909090908e8174675a4d41342f2f2f2f2e2c28221b130a00000000000a16222d3944505b66717c87919ba5a89e958c837b746e6a666463626365676b70767d858e97a1aaa1968c81766b6055493e32261b0f03000000030f1c2834404d5965717d8995a1ada79b8f83786c61564c423a3532302f3032353b434d58636f7b87929eaaaa9e9286796d6155493c3024170b0000000000000006111b252e38414a525b626a70777c81868a8d8f9193949494949392908e8b87837e79736d665f574f463d342b21170d0200000000000013202c3946525f6b777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a786e6155483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a252e373e43464646464646464645433d362e323a4044464646464646464644403a32291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e38424a50525353535353524f4940372c21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1720272e32353636363635322e2720170e04000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000010d1925313d48545f6b76818c97a1aba49a90877e756e67625e5b5a595a5b5c5f63686e757d868f99a3a89d92877c7065594e42362a1e1105000000020e1a26323e4955606c77828d98a2aca3988e847a726b645f5c595858595b5e62676d757e87919ba6a99e94897e73685c5145392d22160a0000000b1824313d4a56626f7b8794a0acaba094897e746c65605e5c5b5c5d5f63686e767e8790908585929faca3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000c1825323e4b5764707d8a96a2afa5998c8073675a4e4236333333333333333333333333333d464e535553504c4945423e3b363029221a120800000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000a141e262e34393b3c3c3c3c3c46525f6c79848484848484848174675a4d413c3c3c3c3c3b38332d251c12080000000005111c28333e4a55606a757f89939ca5a79e958d86807a7673706f6f707174777b81888f97a0a9a2988f857a70655a4f44382d21160a00000000000c1824303d4955616d7985909ca8aba094897d72685e544c46413e3d3c3d3e41464d565f6a75808c97a3afa5998d8175695d5145392d201408000000000000030e18222d37404a535c646d747b82888d9296999c9e9fa0a1a1a1a09e9d9a97948f8a857e78716961584f463d33291f140a00000000000013202c3946535f6c798687878787878787878787878787878787878787878787878787878787878787878787878787877b6f6255483c2f2215090000000000000000000000000000000000000004080b0c0d0d0d0d0d0d0d0d0d0c090601000000000000000000000000000000000000000000000000000000000000000005090b0c0d0d0d0d0d0d0d0d0c0b08040000000000000000000000000000000000000000000000000009131c252c323739393939393939393936322c24282f3438393939393939393938342f2820170d020000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2630383f4346464646464646433e372e251b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202932393e4242424242423e39322920160b000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000006121e2a36424d5965707c87939ea8a89d93887e756b635c56524f4d4d4d4e5053575c636b737d87919c9d9a968d82766a5e5246392d20140700000006121e2b36424e5a66717d88939fa9a79c91867c72696059534f4d4c4c4d4e51565c636c757f8a95a0aba59b8f84796d61564a3e32261a0e0200000d1a2733404c5965727e8b97a3b0a79b8f83786d625a54514f4f4f5053575d646c757e88938e8e96a2aea3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000e1a2734404d5966737f8c98a5b0a3968a7d7164584b404040404040404040404040404040404042464847434040404040403e3a342c241a1005000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130006111c263038404548484848484847515e6a7477777777777777777165594d47484848484848443e372e241a0f04000000000b17222d38434e58636d77818a939ba3a79f98918b86827f7d7c7c7c7e8083878c9399a1a8a19890867c73685e53483d32271c100500000000000814202c3945505c6874808b96a1aca59a8f847970665e57514d4b4949494b4d52575f68717b86919da8aa9f94887c7165594d4135291d11040000000000000a141f2a343f49525c656e767e868d93999ea2a4a09d9b999999999a9c9fa2a3a09b96908a837b736a61584f453b30261b1106000000000013202c3946535f6c798693949494949494949494949494949494949494949494949494949494949494949494949494887b6f6255483c2f2215090000000000000000000000000000000000030a101417191919191919191919191816120c060000000000000000000000000000000000000000000000000000000000050b111518191919191919191919191815100a040000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2a26211a1d24282b2c2c2c2c2c2c2c2c2b28231d160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000b141e262d33373939393939393937322c251c13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d27323b444a4e4f4f4f4f4e4a443b32271d11060000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000000a16222e3a46525e6a76818d99a4aea2978c81766c625a524b46424140404143464b5159616b757f8a94918d8a86837a6e6154483b2e2115080000000a16232f3b47535f6b76828e99a5ada2968b80756a60574e4843403f3f4042454a515a636d78838f9aa6aca1958a7e72665a4e42362a1e120600000f1c2835424e5b6874818d9aa6b0a3978b7e73675b51484543424244474b525a636c76818c979aa0a8b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000f1c2935424f5b6874818e9aa7aea195887b6f62554c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a453e362c22170b000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000b17222d38424a51555555555555534d5862696a6a6a6a6a6a6a6a675f544f54555555555554504940362b2015090000000005111c27323c47515b656f7881899199a0a6a29c97928e8c8a8989898b8d9093989ea4a49e968f867d746b61574c42372c21160b00000000000004101c2834404c57636e7a85909ba5aba0968b82787068625d5a57565556575a5d6369717a838d98a3aea4998e83776c6054483d3125190d00000000000005101b26313b46505a646e77808990989ea4a49e9894918e8d8c8c8c8e9093969ba0a7a19b948d857c736a61574d42382d22170c010000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095887b6f6255483c2f22150900000000000000000000000000000000050d151b20242626262626262626262625221d171008000000000000000000000000000000000000000000000000000000070f161c21242626262626262626262624211c150e060000000000000000000000000000000000000000000000010910161a1e1f202020202020201f1e1a150f12181c1f20202020202020201f1c18120c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c22272b2c2c2c2c2c2c2c2a27211b130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222e39444d555b5c5c5c5c5b554d44392e22160a0000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000010d1926323e4a56626e7a86929ea9a99d91867a6f655a5048403a3634333335373a40474f59636e79848885817e7a77736a5f53463a2d2114070000010e1a26323f4b57636f7b87939faaa89d91857a6e63584e453d373432323335393f48515c67727d8995a1ada69a8f83776b5f52463a2e2215090000111d2a3743505d6976838f9ca9ada094877b6f62564a3f38363536373b4048515a656f7a86919da9b1b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000111d2a3743505d6976838f9ca9ada093877a6d615959595959595959595959595959595959595959595959595959595959595650483e33281c10040000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000f1b27333f4a545c6162626262625f5850585c5d5d5d5d5d5d5d5d5b555259606262626262605b52483d3125190d00000000000a15202a353f49535d666f7780878e959aa0a4a29e9b989696969697999c9fa4a39e99938c857d746b62594f453a30251a1004000000000000000c18232f3b46525d68737e89949ea8a89d948a827a736e6966646362636466696e747b838c959faaa69c92877c71665b4f43382c2014080000000000000b16212c37424d58626c768089929aa2a8a099928d888482807f7f808183868a8f959ca3a69f978e867c73695e54493f34281d12060000000013202c3946535f6c798693a0acadadaba6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a295887b6f6255483c2f221509000000000000000000000000000000040e171f262c3032333333333333333333312e29221a12080000000000000000000000000000000000000000000000000006101921282d3133333333333333333333312d2720180f05000000000000000000000000000000000000000000000000050a0e11131313131313131313110e0a04070c1012131313131313131312100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1e2020202020201f1e1b1610090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a26333f4a555f6769696969675f554a3f33261a0d0100000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000004101d2935424e5a66737e8b97a3afa4988c8175695e53483f362e2a272627282a2f353d47515c68737f7c7875716e6a6761584e42372a1e1205000004111d2a36424f5b6773808b98a3afa4988c8074695d52473c332b27262527292e363f4a55616d7884909ca9ab9f93877b6f62564a3d3125180c0000121e2b3845515e6b7784919eaaab9e9285786c5f53463a2e2929292b2f363f48535e6975818c98a4b0b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000121e2b3844515e6b7784919daaac9f9286796c66666666666666666666666666666666666666666666666666666666666666625a5044392d2114080000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300121e2b3743505b666d6f6f6f6f6f69625a535050505050505050504f545c646b6f6f6f6f6f6c64594d4135281c0f0000000000040e19232d37414b545d656d757c83898f94989b9ea1a2a3a2a2a3a3a2a09e9a97928d88817a736b625950473d33291e1409000000000000000007131e2a35414c57626d77828c959fa8a69d948c857e7a7573716f6f6f7173767a7f868d959ea7a79e948b80756b6055493e33271b1004000000000004101c27323e49545f69747e88929ba4a89f968e87817c78757372727374777a7e848a9199a2a9a0988e857a70665b50453a2e23170c0000000013202c3946535f6c798693a0acb6aba19a989898989898989898989898989898989898989898989898989898989895887b6f6255483c2f2215090000000000000000000000000000010c16202931383d3f4040404040404040403e3a342c241a10050000000000000000000000000000000000000000000000030e18222b33393d3f40404040404040403f3d38322a21170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213131313131313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424e5b67717575757571675b4e4235291c0f0300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000713202c3845515e6a76838f9ba7aca094887b7064584d42372d241d1b1a1a1b1e242b35404b57636d726f6c6965625e5b564f463c31261a0e0200000714202d3945525e6a77838f9ca8ada194887c7064584c41352a211b19191a1d242e3944505c6874818d99a5afa3978b7e7266594d4134281b0f0200121f2c3945525f6c7885929faba99d9083766a5d5144372b1e1c1c1e242d37414d5864707c8894a0adb0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000121f2c3845525f6b7885929eabac9f92857873737373737373737373737373737373737373737373737373737373737373726c6155493c3023170a0000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130013202c3946525f6c787b7b7b7b7b746c655d564e4744444444474e565e666e757b7b7b7b7b76695d5043372a1d1000000000000007111b252f38424b535b636b72787e83888c8f92949697979897969593918e8b87827c767068615950473e352b21170c020000000000000000020d19242f3b46505b66707a848d969ea6a69e96908a86827f7d7c7c7c7d7f82868b90979fa7a59d958c82786e64594e43382d22160a0000000000000915212d38444f5a65707b86909aa4aaa0968d857d76706c6967656566686a6e737880879099a3aaa0968c82776c61564b3f34281d110500000013202c3946535f6c7884909ba7b2a69a8f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b887b6f6255483c2f221509000000000000000000000000000007131e28323b43494c4c4c4c4c4c4c4c4c4c4a453e362c22170b00000000000000000000000000000000000000000000000915202a343d44494c4c4c4c4c4c4c4c4c4c49433c33291e1308000000000000000000000000000000000000000000000000000000000001060a0d0e0e0e0e0e0e0e0e0e0d0c08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768282828276695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000916222f3b4854616d7986929eaba99c9084786b5f53473c30252222222222222222232f3b46515b626563605c5955524e4b453d342b2015090000000a16232f3c4855616e7a86939fabaa9d9185786c6054473b3024190f0c0c0d121c2834404c5864707d8996a2afa79a8e8275695c5043372a1e11050013202c3946535f6c7986929faca89b8f8275685c4f4236291c100f121b25303c4854606c7885919daab0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000131f2c3946525f6c7986929facac9f928580808080808080808080808080808080808080808080808080808080808080807d7164574a3e3124170b0000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130013202c3946535f6c7986888888867e776f686059514a424149515960687078808788888884776a5d5044372a1d110000000000000009131d262f394149515960676d72777c80838587898a8a8b8a8a888785827e7a76716b655e574f473e352c23190f050000000000000000000008131e29343f49545e68717b848c949ba2a8a19b96928e8c8a8989898a8c8e92969ca2a7a19b938b837a70675c52483d32271c10050000000000020e1a26323d4955606b77828d98a2aca3988e847b726b65605c5a59595a5b5e62676e757e87919ca6a89e94897e73675c5045392d21160a000000121e2b3744505c67737e8a96a1aca4978b7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6e6255483c2f22150900000000000000000000000000000c18242f3a444d54585959595959595959595650483e33281c1005000000000000000000000000000000000000000000030e1a26313c464f5559595959595959595959554e453b3024190d01000000000000000000000000000000000000000000000000000000060d1216191a1a1a1a1a1a1a1a1a1a1815100a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306090b0c0e0f1010111110100f0e0d0b09070401000000000000000000000000000000000000000000000000000000000000000000000000050a0e101111111111100d0904000000000000000000000000000000000000000000101c2936434f5c6976838f8f8376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000b1824313e4a5763707c8995a2aea69a8d8174685c4f43372f2f2f2f2f2f2f2f2f2f2f2f353f495157595754504d4946423f3a332b22190f060000000c1825323e4b5764707d8996a2afa79b8e8275695c5044372b1f13070000010c1723303c4855616d7a86939facaa9d9184786b5f5246392c2013070013202c3946535f6c798693a0aca89b8e8174685b4e4135281b0f0209141f2b3744505c6975828e9ba7b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000013202c3946535f6c798693a0acada1968e8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8a7d7164574a3e3124170b0000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300121f2c3845515e69747d87919590898179726a635b544c4b535b636a727a828a91958f857b72675b4f4336291d1000000000000000010b141d262f3840474e555b61676b6f7376797b7c7d7d7e7d7d7c7a7875726e6a65605a534c453d352c231a11070000000000000000000000020d18222d38424c565f69717a828a90979ca1a5a29e9b989796969697989b9ea2a5a19c969089827971685e554b40362b20160a00000000000006121e2a36424e5a66717d88939ea9a89c91877c7269605954504d4c4c4d4f52565c636c75808a95a0aba59a8f84786d61564a3e32261a0e0200000f1c28343f4b57626e7985909ba6a69b8f8478717171717171717171717171717171717171717171717171717171717170695e53463a2e2114080000000000000000000000000000101c2834404b565f65666666666666666666625a5044392d21150900000000000000000000000000000000000000000007131f2b37424e58616566666666666666666560574c4135291d100400000000000000000000000000000000000000000000000000000810181e23262727272727272727272724201b140d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090d10131517191a1c1c1d1d1d1d1d1c1b19181613110e0a070300000000000000000000000000000000000000000000000000000000000000020a10161a1d1e1e1e1e1e1c19150f080000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000d1a2633404c5965727e8b98a4b0a4978b7e7165584c403c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3f464a4c4b4744403d3c3c3c3a36302921180e0300000e1a2733404d5966727f8c98a5b1a5988c7f73665a4d4134281b0f030000000714202c3945525e6b7784919daaaca093877a6d6154483b2e2215080013202c3946535f6c798693a0aca79a8e8174675a4e4134271b0e01030f1b2834414d5a6673808c99a6b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000013202c3946535f6c798693a0acb2a89f9a999999999999999999999999999999999999999999999999999999999999978a7d7164574a3e3124170b0000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300101d2935414d58626b757e88929a938b847c756d665e57555d656d747c848c949b91877d736960564b3f33271a0e0000000000000000020b141d262e3841484d50565b5f63676a6c6e6f70717171706f6d6b6966625e59544f4c463e352b231a11080000000000000000000000000006111b26303a444d575f6870787f858b9095999c9fa1a2a3a2a2a2a3a2a19e9c9895908b857e7770675f564c43392f241a0f040000000000000a16222e3b47535f6b76828e99a5ada2968b80756a60574f4843413f3f4042464b525a636e78848f9aa6aca1958a7e72665a4e42362a1e120500000b17232f3a46515c68737e8a95a0aba0958a7f7469646464646464646464646464646464646464646464646464646464645f574d42362a1e12050000000000000000000000000000121e2b3844505d68717373737373737373726c6155493d32261a0e0200000000000000000000000000000000000000000c18242f3b47535f6a72737373737373737371695d5145382c1f13060000000000000000000000000000000000000000000000000008111a22292f3234343434343434343433312c261f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1216191c1f2224262728292a2a2a2a292927262422201d1a17130f0a0601000000000000000000000000000000000000000000000000000000030c141b2126292a2a2a2a2a2925201a120a01000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000f1b2835414e5b6774818d9aa6aea295897c6f6356494848484848484848484848484848484848484848484848484848484846423b332a1f150a00000f1c2935424e5b6874818e9aa7b0a3968a7d7064574b3e3225190c0000000004111d2a3643505c6975828f9ba8aea295897c6f6356493d3023170a0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000c1925323f4b5865717e8b98a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000013202c3946535f6c7986939facb9b0a8a4a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a5a6a6a6a4978a7d7063574a3d3124170a0000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000d1925303b465059636c768089939d968e877f777068615f676f777f878e969c93897f756b61584e44392e23170b00000000000000000006121e2935404a53595c5c5c5c5c5c5d5f6163646464646362615f5c5c5c5c5c5c5b5750473c31251a0e0100000000000000000000000000000a141e28323b454d565e666d747a8085898d9092949697979897969594928f8c89847f7a736d655e554d433a31271d1208000000000000010e1a26323f4b57636f7b87939faaa99d91857a6e63584e453d3734333334363a4048515c67727d8995a1ada69a8e83776a5e52463a2e211509000006121e2935404b57626d78838e99a4a69b90867b71675d5757575757575757575757575757575757575757575757575757544e453b31251a0e020000000000000000000000000000131f2c3946525f6c7980808080808080807d72665a4e42362a1e13070000000000000000000000000000000000000005101c2834404c58646f7b8080808080808080796d6053463a2d201307000000000000000000000000000000000000000000000000050f1a232c343a3f414141414141414141403d3830281f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000040a1015191e2225292c2e30323435363637373736353433312f2c2926231f1b16110c0701000000000000000000000000000000000000000000000000010b151e262d3236373737373735312b241c1309000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000101d2a3643505c6976828f9ca8ada094877a6e61555555555555555555555555555555555555555555555555555555555555534d453b31261b0f0300111d2a3743505d6976838f9ca9aea195887b6f6255493c3023160a00000000010f1b2835414e5b6774818d9aa7b0a4978a7d7164574b3e3125180b0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1724313e4a5764707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000131f2c3946525f6c7985929facb2a79e97969696969696969696969696969696969696969696969696969aa2acb0a396897d7063564a3d3023170a0000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130008141f2a343e47515a646e77818b949e989189827a736b6a7179818991989e948a81776d63594f463c32281d12060000000000000000000915222e3a46515c646969696969696969665e57575757576067696969696969696862584e42362a1d11040000000000000000000000000000020c162029333b444c545b62696e74797d81838688898a8a8b8a8a89878583807c78736e68625b544c433a31281f150b0100000000000004111d2936424e5b67737f8b97a3afa4988c8174695d52473c332b28262627292e36404a56616d7885919da9ab9f93877b6e62564a3d3125180c0000010d18232f3a45515c67727d88929da7a2978d83786e655b524b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b48433c33291f1409000000000000000000000000000000121f2b3844515d6975818c8c8c8c8c8c8c82766a5e53473b2f23170b000000000000000000000000000000000000000915212d3945505c6874808c8c8c8c8c8c8c8175695e5145392c1f13060000000000000000000000000000000000000000000000000a16212b353e464b4d4d4d4d4d4d4d4d4d4d49423a31271c110500000000000000000000000000000000000000000000000000000000000000000000000000030a10161b20252a2e3235383b3d3f404243434444434342413f3d3b3936332f2b27221d18120c06000000000000000000000000000000000000000000000007121d2730383e424444444444413d362e251b10050000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000111e2b3744515d6a7784909daaaca09386796d626262626262626262626262626262626262626262626262626262626262625e574d43372b1f130700121e2b3844515e6b7784919daaada094877a6d6154473b2e21150800000000000d1a2733404d596673808c99a6b2a5988b7e7265594c3f3226190c0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000121f2b3845525e6b7885919eabaea2968c8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a909ba7afa295887c6f6255493c2f2316090000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300020d18222c353f48525c656f79828c969f9b948c857d76747b838b939ba0968c82786f655b51473d342a20160b000000000000000000000b1724313d4a56626e75757575757575757065594c4b4f5c687275757575757575746a5e5245392c201306000000000000000000000000000000040e172129323a424a51575d63686d707477797b7c7d7d7e7d7d7c7b797673706c68635d575049423a31281f160d03000000000000000714202c3945525e6a77838f9ba8ada194887c7064584c41352b211b19191a1d242e3945505c6874818d99a5afa3978b7e7266594d4034281b0f02000007121e29343f4a55606b76818b959fa99f958a81776d645a5148403e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3c38312a21180d03000000000000000000000000000000101c2935414c5864707c87939999999993877b6f63574b4034281c10040000000000000000000000000000000000020e1a26313d4955616d7985919999999994887c7065594d4135291d10040000000000000000000000000000000000000000000000030f1b27323d4750575a5a5a5a5a5a5a5a5a59544c43382d22160a000000000000000000000000000000000000000000000000000000000000000000000000070e151b21272c31363a3e414447494b4d4e4f505050504f4f4d4c4a4845423f3b37332e29231d17110a030000000000000000000000000000000000000000020d19242f3942494e51515151504e4840372d22170b0000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000121f2c3845525e6b7885919eabac9f9285796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f54483b2f23160900121f2c3845525f6b7885929eabaca09386796c6053463a2d20130700000000000c1925323f4c5865727e8b98a5b2a6998c807366594d4033261a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000111e2b3744515d6a7784909daaada093867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7f8c99a6ada194877b6e6154483b2e2215080000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000006101a232d37404a535d67707a848d97a19e968f87807e868d959da1988e847a70665d53493f352c22180e04000000000000000000000b1824313e4b5764717e8282828282828173675a4d44505d6a7782828282828282796d6053463a2d20130700000000000000000000000000000000050f172028303840474c52575c6164676a6c6e6f70717171706f6e6c6a6764605c57524c473f3730281f160d0400000000000000000a16232f3c4855616d7a86939fabaa9d9185786c6054483c3024190f0c0c0e121d2834404c5864717d8996a2afa79a8e8275695c5043372a1e11050000010c18232e39444f59646f79838e98a1a69c92897f766c635a52494038313131313131313131313131313131313131312f2c2620180f06000000000000000000000000000000000c1824303c48535f6b77838e9aa6a6a3978b8074685c5044382c211509000000000000000000000000000000000007121e2a36424e5a66717d8995a1a6a69b8f84786c6054483c3125190d01000000000000000000000000000000000000000000000006131f2c38434f5962676767676767676767655e554a3e32261a0d01000000000000000000000000000000000000000000000000000000000000000000020a11191f262c32383d42464a4e515456585a5b5c5d5d5d5d5c5b5a595754524f4b47433f3a342f28221b140d060000000000000000000000000000000000000006121e2a35404b545a5d5d5d5d5d5952493e33281c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000131f2c3946525f6c7985929facac9f92857b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7063574a3d3124170a0013202c3946535f6c7986929facac9f9286796c5f5246392c1f130600000000000b1825313e4b5864717e8b98a4b1a69a8d8173675a4d4034271a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000101d2936434f5c6975828f9ba8ada094877a7070707070707070707070707070707070707070707074818d9aa7ac9f9286796c6053463a2d2014070000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000008111b252e38414b555e68727b858f98a2a199928a8890989fa3998f867c72685e544b41372d231a100600000000000000000000000b1824313e4b5764717e8b8f8f8f8f8d8173675a4d44505d6a77848f8f8f8f8f86796d6053463a2d201307000000000000000000000000000000000005101c28333e4952585c5c5c5c5c5c5e60626364646464636361605d5c5c5c5c5c5c5851483d32271b0f040000000000000000000c1825313e4b5764707d8996a2afa79b8e8275695c5044382b1f13080000010c1824303c4855616e7a8793a0acaa9d9184786b5f5246392c20130700000006111c27323d48525d67727c869099a3a49b91887e756c645b524a413930282424242424242424242424242424242423201b150e06000000000000000000000000000000000008141f2b37434f5a66727e8a95a1ada89c9084786c6155493d3125190e02000000000000000000000000000000000b17232f3b47535e6a76828e9aa6aea2968b7e73675b4f43382c2014080000000000000000000000000000000000000000000000000815222e3b4754606b73747474747474747470665a4e4235281c0f020000000000000000000000000000000000000000000000000000000000000000040c141c232a31373d43494d52565a5d606365666869696a6a696968676563615e5b57534f4a45403a342d261f1710070000000000000000000000000000000000000915222e3a46525d656a6a6a6a6a645b5044382c1f130600000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000013202c3946535f6c7986939facaca0948a88888888888888888888888888888888888888888888888888888888888888887d7164574a3e3124170b0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1824313e4b5764717d8a97a4b1a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000f1b2835414e5a6774818d99a6aea295887c6f63636363636363636363636363636363636363636976828f9ca8aa9d9184776b5e5145382c1f12060000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000009131c262f39434c566069737c869099a3a49c95949aa2a59b91877d746a60564c42392f251b11080000000000000000000000000b1824313e4b5764717e8b989c9c9a8d8173675a4d44505d6a7784909c9c9c9386796d6053463a2d20130700000000000000000000000000000000000714202c3944505b636869696969696969665f57575757575f666969696969696968635a4f43372b1f12060000000000000000000e1a2733404d5966727f8c98a5b1a5988c7f73665a4d4134281c0f030000000714202d3945525e6b7884919daaaca093877a6d6154483b2e221508000000000b16212b36414b55606a747d87919ba4a39a91887e766d645c534b423a322a221a1818181818181818181818181816140f0a03000000000000000000000000000000000000030f1b26323e4a56616d7985919ca8ada195897d7165594e42362a1e120600000000000000000000000000000004101c28343f4b57636f7b87939eaaa99d92867a6e62564b3f33271b0f040000000000000000000000000000000000000000000000000916222f3c4955626f7c818181818181818176695c4f4336291c100300000000000000000000000000000000000000000000000000000000000000040d161e262e353c43494f54595e62666a6d6f717375757677777676757372706d6a67645f5b56514b453f3831292119110900000000000000000000000000000000000a1724303d4a56636e77777777766c6054473b2e21150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000013202c3946535f6c798693a0acb1a69c96959595959595959595959595959595959595959595959595959595959595958a7d7164574a3e3124170b0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000d1926333f4c5865717e8b97a4b0a3978a7e71655856565656565656565656565656565656565f6b7885919eaaa79b8e8275695c5043362a1d11040000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000000010a141d27313a444e57616b747e88919ba0a0a0a0a0a09d93897f756b62584e443a31271d1309000000000000000000000000000b1824313e4b5764717e8b98a4a79a8d8173675a4d44505d6a7784909da9a09386796d6053463a2d20130700000000000000000000000000000000000916222f3c4855616c757575757575757571665a4e4b4e5a667175757575757575746b6053473a2e2114080000000000000000000f1c2835424e5b6874818e9aa7b0a3968a7d7064574b3e3225190c0000000004111d2a3743505c6975828f9ca8aea295897c6f6356493d3023170a00000000040f1a242f39444e58626b757f89929ba5a39a91887f766e655d544c443c342c241c130b0b0b0b0b0b0b0b0b0b0b0a07030000000000000000000000000000000000000000000a16212d3945515d6874808c98a3afa5998e82766a5e52463b2f23170b0000000000000000000000000000000915202c3844505c6874808b97a3afa5998d8175695d52463a2e22160b000000000000000000000000000000000000000000000000000916222f3c4955626f7c898e8e8e8e8e8e8376695c4f4336291c1003000000000000000000000000000000000000000000000000000000000000040d161f2830383f474d545a60656a6e7276797c7e808182838484838282807e7c7a7773706b67625c565049423b332b231b1209000000000000000000000000000000000b1724313e4a5764717d8484847b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000013202c3946535f6c798693a0acb7aea7a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978a7d7064574a3e3124170b0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1824313e4b5764717d8a97a4b1a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000b1724303d4956626f7b8894a1ada6998d8174685b4f4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a56626e7b8794a0ada5988c8073665a4d4134281b0f020000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000020b151f28323c454f59626c757f8992939393939393938b81776d635950463c32281f150b01000000000000000000000000000b1824313e4b5764717e8b98a4a79a8d8173675a4d44505d6a7784909daaa09386796d6053463a2d2013070000000000000000000000000000000000091623303c4956636f7c8282828282828275685b4f424f5b6875828282828282827b6e6155483b2e221508000000000000000000101d2a3743505d6976838f9ca9aea295887b6f6255493c3023160a00000000020f1b2835414e5b6774818d9aa7b0a3978a7d7164574b3e3125180b000000000008131d27323c46505a636d768089939ca5a39a918880776f665e564e463e362d251d150d04000000000000000000000000000000000000000000000000000000000000000005111d2834404c58636f7b87939faaaa9e92867a6f63574b3f33271c100400000000000000000000000000010d1925313d4955606c7884909ca8aca094887c7065594d4135291e1206000000000000000000000000000000000000000000000000000916222f3c4955626f7c89969a9a9a9a908376695c4f4336291c10030000000000000000000000000000000000000000000000000000000000030d161f28313a424a51585f656b71767a7e8285888b8c8e8f909090908f8e8d8b898683807c77726d68615b544d453d352d241b12080000000000000000000000000000000b1724313e4a5764717d8a91887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000131f2c3946525f6c7986929facb4aaa19b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9da4aeafa3968a7d7063574a3d3024170a0013202c3946535f6c7986929facac9f9286796c5f5246392c1f130600000000000b1825323e4b5864717e8b98a4b1a69a8d8173675a4d4034271a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000815212e3a4753606c7885919da9a99c9084776b5f53483d3d3d3d3d3d3d3d3d3d3d3d424d5966727e8a97a3aea195897c7064574b3e3225190c000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000000000000030d16202a333d47505a636d7781868686868686868683786f655b51483e342a20160d0300000000000000000000000000000b1824313e4b5764717e8b98a0a09a8d8173675a4d44505d6a7784909da0a09386796d6053463a2d2013070000000000000000000000000000000000091623303c4956636f7c898f8f8f8f8f8275685b4f424f5b6875828f8f8f8f8f887b6e6155483b2e221508000000000000000000121e2b3844515e6b7784919daaada094877a6d6154473b2e21150800000000000d1a2733404d596673808c99a6b1a5988b7e7265594c3f3226190c0000000000010b16202a343e48515b646e77818a939ca5a39a928981787068605850483f372f271f160e0600000000000000000000000000000000000000000000000000000000000000000c18242f3b47535f6b76828e9aa6afa3978b7f73675c5044382c2014090909090909090909090909090909121e2a36414d5965717d8995a1aca79b8f83776c6054483c3025190d01000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2a7a79c908376695c4f4336291c100300000000000000000000000000000000000000000000000000000000010b151f28313a434c545c636a70767c82868b8e929597999b9c9d9d9d9d9c9b99989593908c88837e79736c665f574f473f362d241a100700000000000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000121f2c3845525f6b7885929eabafa3988f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e929ca8afa296897c6f6356493c3023160900121f2c3845525f6b7885929eabaca09386796d6053463a2d20130700000000000c1925323f4c5865727e8b98a5b2a6998c807366594d4033261a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000006121f2b3744505c6975818d99a5aca094887c7064594d43383030303030303030323c47525e6a76828e9aa6aa9e9285796d6054483b2f23160a000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000000000000040e18212b353e48515b656e7879797979797979797970675d53493f362c22180e040000000000000000000000000000000b1824313e4b5764717e8b939393938d8173675a4d44505d6a7784909393939386796d6053463a2d2013070000000000000000000000000000000000091623303c4956636f7c89969c9c9c8f8275685b4f424f5b6875828f9c9c9c95887b6e6155483b2e221508000000000000000000121f2c3845525f6b7885929eabaca09386796d6053463a2d20130700000000000c1925323f4c5865727e8b98a5b2a6998c807366594d4033261a0d000000000000040e18222c363f49525c656e78818a939ba4a49b938a827a726a625a51494139312820180f070000000000000000000000000000000000000000000000000000000000000007131f2b36424e5a66717d8995a1ada79c9084786c6054483d31251915151515151515151515151515151517222e3a46525e6a76828d99a5aea2968a7e73675b4f43382c20140800000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000000000000009131d27313a434d555e666d747b82888d92979b9ea1a4a6a7a9a9a8a8a9a9a8a6a4a29f9c98948f8a847e777069615951483f362c22190e04000000000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000111e2b3844515e6a7784919daaada09387818181818181818181818181818181818181818181818181818c99a6aea194887b6e6155483b2f22150900121e2b3844515e6b7784919daaada094877a6d6154473b2e21150800000000000d1a2633404d596673808c99a6b2a5988c7e7265594c3f3226190c0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000030f1c2834404d5965717d8995a1aca4988c81756a5f544a4139322e2c2c2d2f343b434e58636f7a86929eaaa5998d8275695d5145382c201307000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000060f19232c363f49535c666c6c6c6c6c6c6c6c6c6c685e554b41372d241a1006000000000000000000000000000000000b1824313e4b5764717e8686868686868173675a4d44505d6a7784868686868686796d6053463a2d2013070000000000000000000000000000000000091623303c4956636f7c8996a3a89c8f8275685b4f424f5b6875828f9ca8a295887b6e6155483b2e22150800000000000000000013202c3946535f6c7986929facac9f9286796c5f5246392c1f130600000000000b1825323e4b5864717e8b98a4b1a69a8d8173675a4d4034271a0d0000000000000006101a242d37404a535c666f788189929aa3a59c948c847c746b635b534b433a322a21191108000000000000000000000000000000000000000000000000000000000000020e1a26323d4955616d7884909ca8aca094897d7165594d41352a222222222222222222222222222222222227333f4b57626e7a86929eaaa99d92867a6e62564a3f33271b0f0300000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c100300000000000000000000000000000000000000000000000000000006101b252f39434c565f6770777f868d93999ea3a7aaa6a3a09e9d9c9c9c9c9d9ea0a2a5a9a8a4a09b958f89827b736b635a51483e342a20160c010000000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000101d2a3643505c6976838f9ca9ada094877a7474747474747474747474747474747474747474747474808d9aa6aca093867a6d6054473a2e21140700111d2a3743505d6976838f9ca9aea295887b6f6255493c3023160a00000000010f1b2835414e5a6774818d9aa7b0a4978a7d7164574b3e3125180b0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000c1824303d4955616d7884909ca7a99d92877b71665c534a433e3a3938393c3f454d565f6a75808c97a3aca095897d7165594d4135281c1004000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000000000000000007111a242e37414a545b5f5f5f5f5f5f5f5f5f5f5c564d43392f251b120800000000000000000000000000000000000b1724313e4a57637079797979797979797266594d43505c697479797979797979766b5f5346392d2013060000000000000000000000000000000000091623303c4956636f7c8996a3a89c8f8275685b4f424f5b6875828f9ca8a295887b6e6155483b2e22150800000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1824313e4b5764717d8a97a4b1a79a8e8174675a4d4134271a0e000000000000000008121b252e38414a545d666e7780899199a2a69e968e867d756d655d554c443c332b231a11090000000000000000000000000000000000000000000000000000000000000915212d3944505c6874808b97a3afa5998d81756a5e52463a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f38444f5b67737f8b97a3aea4998d8175695d52463a2e22160b0000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000000000020d17222d37414b555e687179828a91989ea4aaa7a29d9a969492908f8f8f8f90929496999da1a6aba6a19a948d857d756c635a50463c32281d13080000000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000f1c2835424e5b6874818d9aa7aea195887b6f67676767676767676767676767676767676767676875828e9ba8aa9e9185786b5f5245392c1f1306000f1c2935424e5b6874818e9aa7b0a3968a7d7064574b3e3225190c0000000004111d2a36434f5c6975828f9ba8afa295897c6f6356493d3023170a0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000814202c3844505c68737f8a96a1aca3988d82786e655c554f4a47464546484b50575f68717c86919da8a69b8f84786c6155493d3125190c00000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000008121c252f38424a5052535353535353535353504b443b31271d13090000000000000000000000000000000000000916222f3b47535e676c6c6c6c6c6c6c6c6960554a404c58626a6c6c6c6c6c6c6c6b645a4f43372b1e12050000000000000000000000000000000000091623303c4956636f7c8996a0a09c8f8275685b4f424f5b6875828f9ca0a095887b6e6155483b2e22150800000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e00000000000000000009131c262f38424b545c656e767f879098a0a8a0978f877f776f675e564e453d352c231b1209000000000000000000000000000000000000000000000000000000000005101c2834404b57636f7b87929eaaaa9e92867a6e62564b3f3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c4854606c78848f9ba7aba094887c7064594d4135291d12060000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000000000008131e29343e49535d67707a838b949ba3a9a8a29c96918d8a878584838282838485878a8d91959aa0a6aca59e978f877e756c62584e443a2f24190e0300000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000d1a2733404c5966727e8b98a4afa3968a7d70645a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5e6b7784909daaa89c8f8376695d5044372a1e1104000e1a2734404d5966737f8c98a5b1a5988c7f73665a4d4134281b0f030000000713202c3945525e6b7784919daaada094877a6e6154483b2f2215090013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000004101c2834404b57626e79848f9aa5a99f948a80776e67605a565452525354575c61687179838d98a3aaa0958a7e73675c5044382c20140800000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000000000000000000000a131d2630383f434646464646464646464644403a32291f150b0100000000000000000000000000000000000007131f2b37424c555c5f5f5f5f5f5f5f5f5d574e443b4650595e5f5f5f5f5f5f5f5f5a52493e33271b0f020000000000000000000000000000000000091623303c4956636f7c89939393938f8275685b4f424f5b6875828f93939393887b6e6155483b2e22150800000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1824313e4b5764717d8a97a4b1a79a8e8174675a4d4134271a0e000000000000000000010a141d262f39424a535c646d757e868e969fa7a19991898178706860574f473e352d241b120900000000000000000000000000000000000000000000000000000000000c17232f3b47525e6a76828e99a5aea2978b7f73675b4f4848484848484848484848484848484848484848484d5965707c8894a0aca79b8f83776c6054483c3025190d010000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c100300000000000000000000000000000000000000000000000000030e1925303b45505b656f79838c959da5ada59e97908b86817d7b78777675757677787a7d8185898f959ca3aaa9a19990877e746a60564b41362b20150900000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000b1825313e4a5763707c8995a2aea5988c8073675a4e4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d55616d7a86939faca6998d8074675b4e4235281c0f03000c1825323e4b5764707d8996a2afa79b8e8275695c5044372b1f13080201020b17232f3b4854616d7a86939facaa9e9185786c5f5346392d2014070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000000000c17232f3a46515d68737e89939da7a69c92898078716b6663605f5f5f6164686d737a838c959faaa3988e83786d62564b3f34281c100400000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000010b141e262d33373939393939393939393938342f2820170d0300000000000000000000000000000000000000030e1a25303a434b505353535353535353514c453c353e474e5253535353535353524f4940372c21160a000000000000000000000000000000000000091623303c4956636f7c8686868686868275685b4f424f5b6875828686868686867b6e6155483b2e22150800000000000000000013202c3946535f6c7986929facac9f9286796c5f5246392c1f130600000000000b1825323e4b5864717e8b98a4b1a69a8d8173675a4d4034271a0d00000000000000000000020b141d262f38414a525b636c747c858d959da5a39b938b827a7269615950473f362d241b12090000000000000000000000000000000000000000000000000000000007131e2a36424e5965717d8994a0aca79b8f84786c6055555555555555555555555555555555555555555555555d6975818d99a5aea2968a7e73675b4f43372c201408000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000000008141f2a36414c57626c77818b959ea7ada49b938c857f7a75716e6c6a696969696a6c6e7174797e848a9198a1a9aba29990867c72675d52473c31261b0f04000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000916222f3b4854616d7986929eaba89b8f83766a5e5246414141414141414141414141414c5864717d8996a2aea2968a7d7164584c3f33261a0d01000a16232f3c4855616e7a87939facaa9d9185786c6054483c302419110f0e0f121c27333f4b5764707c8995a2aea79b8f8276695d5044372b1e12050013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000007121e2935404b56616c77818b959ea8a49b928a837c77726f6d6c6b6c6e7074787e858c959ea7a49b91877c72675c51453a2e23170b0000000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000000000000000000000000020c141c22272b2c2c2c2c2c2c2c2c2c2c2b28231d160e0500000000000000000000000000000000000000000009141e2831394044464646464646464645413b332c353c42454646464646464646433e372e251b10050000000000000000000000000000000000000916232f3c4955626e787979797979797973675b4e424e5b677379797979797979776d6154483b2e211508000000000000000000121f2c3845525f6b7885929eabaca09386796c6053463a2d20130700000000000c1925323f4c5865727e8b98a5b2a6998c807366594d4033261a0d0000000000000000000000020b141d262f384049515a626a727a838b939ba3a59d948c847b736b6259514840372e241b1208000000000000000000000000000000000000000000000000000000020e1a25313d4955606c7884909ca7aca094887c70646262626262626262626262626262626262626262626262626e7a86929da9a99d91867a6e62564a3f33271b0f03000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000000010d1925303c47525d68737e89939da7aea49b928a827a746e6965625f5d5c5c5c5c5d5f6164686d72787f878f97a0a9aba2988e84796f64594e42372c201409000000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000713202c3845515d6a76828e9ba7ab9f92867a6e63574c40363434343434343434343a45515c6874818d99a5ab9f93877a6e6155493c3024170b00000714202d3946525e6b7783909ca8ada194887c7064584c41362b221e1c1b1c1e232d3844505b6774808c98a5b0a4988c7f73665a4e4135281c0f030013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000000010d18242f3a45505a656f79838c959ea6a49c958e88837e7b797878797a7c8084898f969ea7a39b92897f756a60554a3f34291d12060000000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000000000000000000000000020a11171b1e202020202020202020201f1c18120c0400000000000000000000000000000000000000000000020c161f282f3438393939393939393938353029232b313639393939393939393937322c251c1309000000000000000000000000000000000000000814212d3a46525d666c6c6c6c6c6c6c6c6961574b3f4b5761696c6c6c6c6c6c6c6c665c5145382c201307000000000000000000121e2b3844515e6b7784919daaada094877a6d6154473b2e21150800000000000d1a2633404d596673808c99a6b2a5988c7e7265594c3f3226190c000000000000000000000000020b141d262e373f4850586069717981899199a1a69e968d857c746b635a524940372d241a11070000000000000000000000000000000000000000000000000000000915212c3844505c67737f8b97a2aea5998d81756f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f727e8a96a2aea4988d8175695d51463a2e22160a00000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c100300000000000000000000000000000000000000000000000006121e2a35414d58636f7a85909aa5afa69c928980777069635d59555351504f4f50515255585c61676d757d858e97a1abaaa0968b80756a5f54483d3125190e020000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000004101d2935424e5a66727e8a96a2aea3978b7f73685d52483e352f2a2828292b3038414b56626d7985919da9a79b8f83766a5e5246392d211408000005111d2a36424f5b6773808c98a4b0a4988c8174695d52473d342e2a2828282a2e353f4955606c7884909ca8aca094887c6f63574b3e3225190d000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c000000000000000000000000000000000000000007121e29333e49535d67717a838c949ca3a69f99938f8b888685858687898c90959aa1a7a199918980766d63594e44392e23180c010000000000000d1a2633404d596673808d9aa6ada09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000000000000000000000000000000060b0f121313131313131313131312100c0701000000000000000000000000000000000000000000000000040d161d23282b2c2c2c2c2c2c2c2c2c29241e1920262a2c2c2c2c2c2c2c2c2c2a27211b130a010000000000000000000000000000000000000005111d2935404b545c5f5f5f5f5f5f5f5f5e584f453a454f585e5f5f5f5f5f5f5f5f5b544a3f34281c1004000000000000000000111d2a3743505d6976838f9ca9aea195887b6f6255493c2f23160a00000000010f1b2834414e5a6774818d9aa7b0a4978a7d7164574b3e3125180b00000000000000000000000000020b141c252d363e464e575f676f777f878f979fa79f978f867e756c645b52493f362c23190f05000000000000000000000000000000000000000000000000000004101c28333f4b57636e7a86929ea9a99d91867b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b838f9ba7aba094887c7064594d4135291d120600000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000000a16222e3a46525e6975808b96a1acaa9f958a81776e665e57524d494644434242434446484c50565c636b737c858f99a4afa79d92877b7065594d42362a1e12060000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000010d1925323e4a56626e7a86929da9a79c9085796e645a5047403a37353435383c424a535d68737e8a95a1ada2968a7e72665a4e42362a1d11050000010e1a26333f4b57636f7b87939faba99d91857a6e64594f463f3a37353435373a3f47515b66717d8994a0aca89c9084786c6053473b2f22160a000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000000010c17222c37414b555f68717a828a91989ea3a49f9b9795939292929496989ca0a6a19c968f8780776e645b51473c32271c1106000000000000000d1a2633404d596673808d9aa1a1a09386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b12181c1f20202020202020201f1c19130e151a1d1f202020202020201f1e1b161009010000000000000000000000000000000000000000010d19242f39424a505353535353535353514d463d333d464d5153535353535353524f4a42382e23180c000000000000000000000f1c2935424f5b6874818e9aa7b0a3968a7d7064574b3e3225180c0000000004111d2a36434f5c6975828f9ba8afa295897c6f63564a3d3023170a0000000000000000000000000000020a131b242c343d454d555d656d757d858d959da6a19890877e756d645b51483e352b21170d0200000000000000000000000000000000000000000000000000000b17232f3a46525e6a75818d99a5aea2968c8888888888888888888888888888888888888888888888888888888a949faba79b8f83776b6054483c3024190d0100000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000020e1a26333f4b57626e7a86919da8afa4998e83786e655c544c46413d3a383636363637393c40454a5159616a737d88929da8aea3988d81766a5e52463a2e22160a0000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000000916222e3a46525d6975818c98a3aca1968b80766c6259514b464342414244474d535c656f79848f9ba6a89d91867a6e62564a3e32261a0e010000000a17232f3b47535f6b77838e9aa5ada2968b80756b6158504a464342414243464b5159636d77838e99a5aea3978b8074685c4f43372b1f1306000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000000000006101b252f3a434d565f68707880868c92979b9fa2a4a1a09f9f9fa0a2a4a19e9a96918b847d756d655c53493f352b20160b00000000000000000d1a2633404d596673808d949494949386796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000000000001070b0e0f0f0f0f0f0f0f0f0f0e0b060104090c0f0f0f0f0f0f0f0f0f0e0c09040000000000000000000000000000000000000000000001070c1012131313131313131312100d0803090e11131313131313131313110e0a05000000000000000000000000000000000000000000000007121d2730383f44464646464646464645413c342b343c41454646464646464646433f382f261c1106000000000000000000000e1a2734404d5966737f8c98a5b1a5988c7f7266594d4134281b0f030000000713202c3845525e6b7784909daaada094877a6e6154483b2f2215090000000000000000000000000000000109121a222b333b434b535b636b737b838b949da5a29990887f766d635a50473d33291e140a000000000000000000000000000000000000000000000000000006121e2a36414d5965717c8894a0aca89e97959595959595959595959595959595959595959595959595959595969ca5aea2968a7e73675b4f43372b2014080000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c1003000000000000000000000000000000000000000000000005111e2a36434f5b67737f8b97a2aeaa9e93877c71675c534a423b35302d2b2a2929292b2d3034393f474f58616b76818c97a2aea99e92867a6f63574b3e32261a0e0100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000005111d2935414d5964707b86919ca7a79d92887e746b635c5752504e4e4f5154585e656e77818b96a1aca2978c8075695d52463a2e22160a0000000007131f2b37434f5a66727d89949faaa89c92877d736a625b5652504e4e4e5052565c636b747e89949faaa89d91867a6f63574b3f33271b0f03000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000000000009131e28313b444d565e666e757b81868b8f929598999a9b9b9b9a999795928e8a858079736b645b534a41372d23190f040000000000000008121b2633404d5966738088888888888886796d6053463a2d2013070000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300000000060d12171a1c1c1c1c1c1c1c1c1c1a17120c0f15191b1c1c1c1c1c1c1c1c1b19140f09010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e272e333739393939393939393835302a222a303538393939393939393937332d261d140a00000000000000000000000c1825323e4b5764707d8996a2afa79b8e8275695c5044372b1f13080201020b17232f3b4854616d7986939facaa9e9185786c5f5346392d2014070000000000000000000000000000000000081019212931394149515961697179828a939ca5a29a91887f756c62594f453b30261b110600000000000000000000000000000000000000000000000000010d1925313d4854606c78838f9ba7b0a8a3a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a6aea99d91857a6e62564a3e33271b0f030000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c100300000000000000000000000000000000000000000000000815212d3a46525f6b77838f9ba7b1a5998d82766b60554b4138302a24211e1d1c1c1d1e2024282e353d464f5a646f7a86919da9afa3978b7f73675b4e42362a1d110500000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000010d1925303c48535e6a75808b95a0aaa49990867d756e68625f5c5b5b5b5d60646970778089939da7a59b90857a6f63584c4135291d120600000000030e1a26323e4a55616c77828d98a2aca3998f857c746d67625f5c5b5b5b5c5f62676d757d87909ba5aba1968b8075695e52463b2f23170b00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000000000000020c161f29323b444c545c636a70757a7f8386898b8c8e8e8e8e8d8c8a8885827e79746e686159524941382f251b110700000000000000040f1a242d35404c5966727b7b7b7b7b7b7b7b786c5f5346392d2013060000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130000000710171e232729292929292929292927231e171a20252829292929292929292825201a130b020000000000000000000000000000000000000000000000000000000508090a0a0a0a0a0a0a0a090805010000000000000000000000000000000000000000000000000000000000000000000000030c151c23282b2c2c2c2c2c2c2c2c2c29251f181f25292c2c2c2c2c2c2c2c2c2b27221c140b0200000000000000000000000a16232f3c4855616e7a87939facaa9d9185786c6054473b302419110f0e0f111b27333f4b5764707c8995a2aea89b8f8276695d5044372b1e1205000000000000000000000000000000000000070f171f272f373f474f575f677078818a939ca5a39a91887e746b61574c42382d22170c01000000000000000000000000000000000000000000000000000814202c38434f5b67737e8a96a2aeb3afaaa3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a2a8afb2b0a4988d8175695d51463a2e22160a000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c100300000000000000000000000000000000000000000000000b1724303d4956626e7b87939facada195897d7165594e43392f261e191412100f0f101114181d232b343e48535e6975818c98a4b0a79b8f83776a5e5245392d20140700000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000000814202b37424d58636e79848e98a1aaa29890878079736e6b696867686a6c70757a8189929ba5a79d93897e74695e52473c3024190d0100000000000a16212d39444f5b66717c86909aa4aba1978e867e78736e6b69686768696b6e73787f879099a2aca3998f847a6f63584d41362a1e120700000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000000000000040d17202a333b424a51585f656a6f73777a7c7e808181828181807e7b7976726d68635d564f48423c342a20160b00000000000000000915202b363f474d56616a6e6e6e6e6e6e6e6e6d665b5044372b1e12050000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000006101922292f33353636363636363635332f2921252c3134363636363636363634312c251d140b00000000000000000000000000000000000000000000000000060c11141617171717171717171614110c070000000000000000000000000000000000000000000000000000000000000000000000030a11171b1e20202020202020201f1d19140e14191d1f20202020202020201e1b17110a020000000000000000000000000714202d3946525e6b7783909ca8ada194887c7064584c41352b221d1b1a1b1d232d38444f5b6773808c98a5b0a4988c8073675a4e4135281c0f0300000000000000000000000000000000000000050d151d252d353d454d555e666f78818a939ca6a39a90877c73685e54493f34291e130700000000000000000000000000000000000000000000000000040f1b27333f4a56626e7a86919da9b5aca1989494949494949494949494949494949494949494949494969ea9b4aba094887c7064584d4135291d1106000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c100300000000000000000000000000000000000000000000000d1a26333f4c5865717e8a97a3afaa9d9185786c6054493d32271d140d08050300000205080c1219222c36414d5864707c8894a0adab9f93877a6e6155483c2f23160a00000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000030f1a25313c47525d67727c868f98a1a9a199918a847f7b787574747576797c80868c939ba4a69e958b81776d62574c41362a1f140800000000000005111c28333e49545f6a747e89929ba4a9a0989089837e7a787675747576787b7e848a9199a2aba39a91877d73685d52473c3025190e0200000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0000000000000000000000000000000000000000000000030f1b26313c454d53555555595e63676a6d707273747475747473716f6c6966615d57555555534d463c32271c1004000000000000000e1a26323d4751595d5e5f6161616161616161605c544a3f33271b0f030000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c201300030e18222c343a3f4242424242424242423f3a332b2f373d414242424242424242413d372f261c120700000000000000000000000000000000000000000000010a11181d2123232323232323232323211d18110a020000000000000000000000000000000000000000000000000000000000000000000000060b0f12131313131313131312100d0803080d10121313131313131313120f0b06000000000000000000000000000005111d2a36424f5b6774808c98a4b0a4988c8074695d52473d342d2a2827282a2e353f4954606c7884909ca8aca094887c7063574b3e3226190d000000000000000000000000000000000000000000030b131b232b333b434c545d666e77818a949da7a2988f857a70655b50453a2f24190d02000000000000000000000000000000000000000000000000000b16222e3a46515d6975818d98a4b0a79b8f87878787878787878787878787878787878787878787878c98a4b1a79b8f83776b5f54483c3024190d01000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c100300000000000000000000000000000000000000000000000f1b2835414e5b6774818d99a6b2a79a8e8175695c5044382c20150b0200000000000000000007101a25303c4854606c7884919daaafa296897d7064574b3e3225180c00000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000000914202b36404b55606a747d868f979fa6a39c95908b8784828181828385888c91979ea5a49c948c83796f655b50463b3025190e03000000000000000b16222d38434e58626d768089929aa1a8a29b948f8a8784828281828284878b8f959ba3a8a19991887f756b61564c41362b1f14080000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c00000000000000000000000000000000000000000000000714202c38434e575e6262626262615c5e616365666768686767666462605d5c6162626262625f584e44382d20140800000000000000111d2a36424e59636a6b6b6b6b69635b54545454504a42382d22170b000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c20130009141f2a343e454b4f4f4f4f4f4f4f4f4f4b453d343841484d4f4f4f4f4f4f4f4f4d4841382e24190d020000000000000000000000000000000000000000010a131b23292d2f3030303030303030302d29231c140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a27333f4b57636f7b88939faba89d91857a6e63594f463f3936353435363a3f47505b66717c8894a0aca89c9084786c6054473b2f22160a00000000000000000000000000000000000000000000010911192129313a424b545c656e78828b95a0aaa0968c82776c62574c40352a1e13070000000000000000000000000000000000000000000000000006121d2935414d5864707c88949faba79b8e827a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7f8b97a4aea2968a7e72675b4f43372b20140800000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000101d2a3643505c6976828f9ca8b1a4988b7e7266594d4034281c1004000000000000000000000008141f2b3744505c6875828e9aa7b1a5988c7f7366594d4033271a0e00000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000010507101c2936434f5c69768390908376695c4f4336291c1007050100000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d1003000000000000000000000000030e19242f39444e58626b747d858d949ba1a6a19b9793918f8e8e8e909295989da2a59f99928b837a71675d53493f34291e1308000000000000000005101b26313c46515b646e77808890979da3a6a09b9793918f8e8e8e8f9193979ba0a6a39d968f877f766d63594f453a2f24190e030000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01070b1723303d4a5663707d8a96a3aea3968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3226190c0a0a0a0a0a0a0a0a0906020000000000000000000000000a16232f3c48545f696e6f6f6f6f6d675f5856585a5a5b5b5b5a595856575f666d6f6f6f6f6f6a6055493d3024170b00000000000000131f2c3945525e6b7577777777756d645c544c47443f382f261c1106000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c9386796c5f5346392c2013000d1925313c4650575b5c5c5c5c5c5c5c5b574f463b404a53595c5c5c5c5c5c5c5c59534a40352a1e1206000000000000000000000000000000000000000008121c252d34393c3d3d3d3d3d3d3d3d3c39342e261d130900000000000000000000000000000000000000000000000000000000000000000104070a0c0e0f111212131313131212100f0d0b0906030000000000000000000000000000000000000000000000000000000b17232f3b47535f6b77838e9aa5ada2968b80756b6158504a464341414143464a5159626c77828e99a5aea3978b8074685c5044372b1f1307000000000000000000000001020304050708090908050100070f171f283039424a535c666f79848e98a3a89e94897e73685d52463b2f24180c00000000000000000000000000000000000000000000000000010d1924303c48545f6b77838f9ba6ab9f93877b6f6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d7884909ca8a99d9185796e62564a3e33271b0f0300000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000121e2b3844515e6a7784919daaafa396897d7063574a3e3125180c000000000000000000000000030f1b2834404d5966727f8c98a5b1a79a8e8174685b4e4235281c0f00000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000070d1114161c2936434f5c69768390908376695c4f4336291c1614110d07000000000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000000008121d28323c465059626b737b838a90969b9fa3a3a09d9c9b9b9b9c9ea1a4a29e99948e88817970685f554c42372d22180d020000000000000000000a15202a353f49525c656e767e858c92979ca0a3a3a09d9c9b9b9b9c9da0a3a3a09c97928c857d756d645b51473d33281e1308000000000013202c3946535f6c798693a0a1a19a8e8174675a4d4134271a0e0c12171b23303d4a5663707d8a96a1a1a1968a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f32261917171717171717171715120e0801000000000000000000000b1824313e4b5764707b7b7b7b7b787169625a534d4e4e4e4e4d4d5159616971787b7b7b7b7b7165584b3f3225180c0000000000000013202c3946535f6c79848484847e766e665e554d453d352c241c140c03000000000000000000000000000206090a0a0a0a0a0a0a0a0c1926323f4c5965727f8c9386796c5f5346392c201300111d2936424d586268696969696969696761574c4147525c656969696969696969655c52463a2e22160900000000000000000000000000000000000000030f1a242e373f45494a4a4a4a4a4a4a4a49453f382f251a0f040000000000000000000000000000000000000000000000000000000001060a0d111416191a1c1d1e1f1f20201f1f1e1d1c1a1815130f0c080400000000000000000000000000000000000000000000000007131f2b37434f5a66727d89949faaa79c91877c736a625b56524f4e4d4e4f52565c636b747e89949faaa89d92867a6f63574b3f33271b0f030000000000000002070a0c0d0f1011121315161614110d0701050e161e272f38414a545e67727c86919ca7a59b9085796e63574c4034281d1105000000000000000000000000000000000000000000000000000814202b37434f5b66727e8a96a2ada3978c80746860606060606060606060606060606065717d8994a0aca4988c8175695d51453a2e22160a0000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8996a2afa99c908376695c4f4336291c10030000000000000000000000000000000000000000000000121f2c3945525f6b7885929eabaea195887b6e6255483c2f221609000000000000000000000000000c1825313e4b5764717d8a97a3b0a89c8f8276695c4f4336291d1000000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000030b12181d2022222936434f5c69768390908376695c4f4336292222201d18120b0300000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000000000010b16202a343e475059616971787e858a8f9396999b9d9e9f9f9f9e9d9b9895928e89837d766e675e564d433a30261b110600000000000000000000030e18232d37404a535c646c737a81878c9094979a9c9d9e9f9f9f9e9d9b999794908b86817a736b635b52493f362b21170c01000000000013202c3946535f6c798693949494948e8174675a4d4134271a0f171e23282a303d4a5663707d8a94949494948a7d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f322624242424242424242423221e19130c040000000000000000000b1824313e4b5764717e88888888837b746c655d564e4742444c545c636b737b83888888887e7265584c3f3225190c00000000000000131f2c3946525f6b76818b919189807870675f574f473e362e261e150d050000000000000000000001080e12151717171717171717171926323f4c5965727f8c9386796c5f5346392c201300121f2c3845525e6a737575757575757573695d51444b57636e75757575757575756e63574a3e3124180b000000000000000000000000000000000000000814202b3640495155565656565656565655514a41372c211509000000000000000000000000000000000000000000000000000002080d12161a1d20232527292a2b2c2c2c2c2c2c2b2a282724221f1c18140f0b0500000000000000000000000000000000000000000000030f1b26323e4a55616c77838d98a3ada3998e857c746c66625e5c5b5a5b5c5e62676d747d86909ba5aba1968b8075695e52473b2f23170b00000000000001080e1317191a1b1d1e1f20212222211d19130b03040c151d262f38424c56606a75808a96a1aca1968b8074685c5145392d21150800000000000000000000000000000000000000000000000000030f1b27323e4a56626d7985919da9a89c9084786c61555353535353535353535353535e6975818d99a5ab9f94887c7064584c4135291d11060000000000000000000000000000000000000000000000000000000000000000010c16222f3c4955626f7c8996a2afa99c908376695c4f4336291c1107000000000000000000000000000000000000000000000013202c3946525f6c7986929facada094877a6d6154473a2e211408000000000000000000000000000a1623303c4956626f7c8995a2afaa9d9083776a5d5044372a1d1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000020c151d24292d2f2f2f36434f5c69768390908376695c4f43362f2f2f2d29241d150c02000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000000000040e18222c353e474f575f666d73797e83878a8d8f909292929291908e8c8986827d78726b645d554c433a31281e140900000000000000000000000007111b252e38414a525a62696f757b8084888b8d8f909292929291908f8d8a8784807a756f68615a514940372d241a0f0500000000000013202c3946535f6c79868888888888888174675a4d4134271a1821282f3437383d4a5663707d888888888888887d7063564a3d3023170a0013202c3946535f6c7986938c7f7265594c3f3230303030303030303030302e2a251e160d0300000000000000000a1724303d4a56626d77818a94958d867e776f686059514a4e565e666d757d858d94958b82786e63574a3e3125180b00000000000000111e2a37434f5a646f79838d97928a8279716961595048403830271f170f060000000000000000040c13191e222324242424242424242426323f4c5965727f8c9386796c5f5346392c20130013202c3946535f6c7982828282828282786b5f52454c5865727e8282828282827e7165584b3e3225180b000000000000000000000000000000000000000c1825313c48525b616363636363636363625c53483d3125190d01000000000000000000000000000000000000000000000001070e13191d2226292d2f323435373838393939393838363533312e2b2824201b16110b040000000000000000000000000000000000000000000a16222d3944505b66717c86919ba4aaa0978e867e77726e6b69676767696b6e72787f878f98a2aca3998f857a6f64584d42362a1e13070000000000020b13191f23262728292a2c2d2e2f2f2d29241d150d03030b141d26303a444e58636e7984909ba7a79c9085796d6155493d3125180c00000000000000000000000000000000000000000000000000000a16222e3945515d6974808c98a4ada195897d7165594d4747474747474747474a56626e7a86929eaaa69b8f83776b5f54483c3024180d01000000000000000000000000000000000000000000000000000000000000000008131d28333d4955626f7c8996a2afa99c908376695c4f43382e23180e030000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053473a2d201407000000000000000000000000000915222f3b4855626e7b8895a2aeaa9d9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000a141e272e35393c3c3c3c434f5c69768390908376695c4f433c3c3c3c39352e271e140a000000000000000000000f1c2936424f5c6975828f908376695d5043362a1d100300000000000000000000000000000006101a232c353d454d555c62686d72777a7d80828485858685848382807d7976716c66605a524b433a31281f160c020000000000000000000000000009131c262f38404850575e646a6f74787b7e81828485858685858482817e7b77736f69645e574f483f372e251b12080000000000000013202c3946525f6c777b7b7b7b7b7b7b7b73665a4d4134271a222a333a404344444956636f7a7b7b7b7b7b7b7b7a6f6356493d3023160a0013202c3946535f6c7986938c7f7265594c3f3d3d3d3d3d3d3d3d3d3d3d3d3a362f281f150b00000000000000000915212e3a46515c656f78828c959790898179726a635b54586068707780878f97978d837970665c52463b2e221609000000000000000e1a26323e48535d67717b86909a948b837b736b625a524a4139312921181008000000000000030d161e252a2e3030303030303030303030323f4c5965727f8c9386796c5f5346392c20130013202c3946535f6c79868f8f8f8f8f85786b5f52454c5865727e8c8f8f8f8f8b7e7165584b3e3225180b000000000000000000000000000000000000000f1b2834414d59646d70707070707070706d655a4e4235291c0f0300000000000000000000000000000000000000000000040c12191f24292e3236393c3e40424345454646464645444342403d3b3834302c27221c160f08010000000000000000000000000000000000000005111c28333e4a555f6a747f89929ba4a9a0989089837e7a777574747475777a7e848a9199a1aaa39b91887d73685d52473c3025190e0200000000010b141d242b2f323435363738393b3c3c39352f271f150b00020b141e28323c47515c68737f8b97a3ada1958a7d7165594d4134281b0f030000000000000000000000000000000000000000000000000005111d2935404c5864707b87939faba5998e82766a5e52463a3a3a3a3a3a3a434f5b67737e8a96a2aea2968a7e72665b4f43372b1f14080000000000000000000000000000000000000000000000000000000000000000040f1a242f3a444f5a646f7c8996a2afa99c9083766a5f554a3f352a1f150a0000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000006111c263039404548494949494f5c69768390908376695c4f494949494845403930261c11060000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000000000000008111a232b343b434a51575d62666a6e717475777878797878777573706d6965605b554f48413931281f160d040000000000000000000000000000010a141d262e363e454c53595e63686b6f727476777878797878777574716e6b67635e58524c453e362d251c13090000000000000000111e2b37434f5b656d6e6e6e6e6e6e6e6e6a61564a3e3225242c343c444b50515151535e686e6e6e6e6e6e6e6e6e685e53473a2e2215080013202c3946535f6c7986938c7f7265594c4a4a4a4a4a4a4a4a4a4a4a4a4a47413a31271d12060000000000000005111d29353f4a535d66707a838d979a938b847c756d665e626a727a82899199998f857b71675e544a40352a1e1206000000000000000a16212c37414b555f69747e88929c958d857c746c645c534b433b332a221a120a01000000000b151f282f363a3d3d3d3d3d3d3d3d3d3d3d3d3f4c5965727f8c9386796c5f5346392c20130013202c3946535f6c7986939c9c9c9285786b5f52454c5865727e8c989c9c988b7e7165584b3e3225180b00000000000000000000000000000000000000101c2936434f5c69757d7d7d7d7d7d7d7d766a5d5043372a1d1004000000000000000000000000000000000000000000070f161d242a30353a3e4245484b4d4f505152525353525251504e4c4a4744403c38332d27211a130b03000000000000000000000000000000000000000b17222d38434e58636d778089929aa2a9a29a948f8a8784828181818284878a8f959ba2a8a19a91897f756b61574c41362b1f1409000000000009131d262f363b3f40414344454647484846403931271d120700020c16202a35404b57626e7a87939faca69a8e8275695c5044372b1e120500000000000000000000000000000000000000000000000000000c1824303c47535f6b77828e9aa6aa9e92867a6e63574b3f332d2d2d303c4854606b77838f9ba7a99d9185796e62564a3e32271b0f0300000000000000000000000000000000000000000000000000000000000000010b16212b36414b56616b76818b97a3b0aa9d91867b71665c51463c31261c110600000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000b17222e38424b515555555555555c69768390908376695c555555555555514b42382e22170b0000000000000000000f1c2936424f5c6975828f908376695d5043362a1d10030000000000000000000000000000000000081119222a31383f464c51565a5e626567696a6b6c6c6b6b6a686664615d59554f4a443d362f271f160d0400000000000000000000000000000000020b141c242c343b41484d53575c5f626567696a6b6c6c6b6b6a696765625f5b57524d47413a332c241c130a0100000000000000000f1b27333e49535b6061616161616161615f584f453a2e252d363e464e565c5e5e5e5e5e5d6161616161616161615d564c42362a1e12060013202c3946535f6c7986938c7f7265595757575757575757575757575756524c43392e23170b00000000000000010d18232e38414b545e68717b858e989d968e877f7770686c747c848c949b9a90877d73695f564c42382e24190d020000000000000005101a252f39434d58626c76808b959f978f867e766e655d554d453c342c241b130a01000006121d27313a41474a4a4a4a4a4a4a4a4a4a4a4a4a4c5965727f8c9386796c5f5346392c20130013202c3946535f6c798693a0a99f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b00000000000000000000000000000000000000101c2936434f5c6976838a8a8a8a8a8a84776a5d5044372a1d1104000000000000000000000000000000000000000008101920282f353b41464a4e5255575a5b5d5e5f5f5f5f5f5f5e5d5b595654504c48433e38322c251d150d0500000000000000000000000000000000000005111c27313c47515b656e77808890979ea3a59f9a9693908f8e8e8e8f9193969ba0a6a39d97908880766d645a4f453a2f25190e0300000000030f1a252f3841474b4d4e4f505253545555524b43392e23180c0000040e19242f3a46525e6b7784909da9aa9d9185786c5f5346392d201407000000000000000000000000000000000000000000000000000008131f2b37434e5a66727d8995a1ada3978b7f73675b4f44382c202935404c5864707c8894a0aba4988c8175695d5145392e22160a000000000000000000000000000000000000000000000000000000000000000008121d28323d48525d68727d88929da8b3aea3988d83786d63584d43382d23180d03000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000f1b27333f4a545c616262626262626976839090837669626262626262615c544a3f33271b0f000000000000000109121c2936424f5c6975828f908376695d5043362a1d120a0100000000000000000000000000000000000710181f272e343a40454a4e5255585a5c5e5e5f5f5f646a6b6b6b6b6962584d4139322c241d150d04000000000000000000000000000000000000020a121a222930363c42474b4f5356595b5c5e5e5f5f5f63696b6b6b6b6a63594e423c363029211a120a010000000000000000000b16222d38414a50545454545454545454534e463d33282f373f48505860686b6b6b6b6a665c5454545454545454514c443a30251a0e020013202c3946535f6c7986938c7f72656363636363636363636363636363635d554b3f34281c0f000000000000000007111c262f39424c565f69737c869099a0989189827a73777e868e969e9c92887e756b61574d443a30261c120700000000000000000009131d27313c46505a646e78838d97a198908880776f675f574e463e362d251c130800000b17232e39434c5256575757575757575757575757575965727f8c9386796c5f5346392c20130013202c3946535f6c798693a0ac9f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b00000000000000000000000000000000000000101c2936434f5c69768390969696969084776a5d5044372a1d11040000000000000000000000000000000000000008111a222b323940474c52565a5e61646668696b6b6c6c6c6c6b6b69686563605c59544f4a443d362f271f170e050000000000000000000000000000000000000a15202a353f49535c656e767e868c92989ca1a4a29f9d9b9a9a9b9b9d9fa3a3a09c97928c857e766d645b52483e33291e130800000000000814202b37414b52585a5b5c5d5e5f6162625d554b4034281c1004000007121e2a36424f5b6875818e9ba7ada094877a6e6154483b2e2215080000000000000000000000000000000000000000000000000000030e1a26323e4a55616d7985909ca8a79b9084786c6054483c30252d3945515d6975818c98a4ab9f93887c7064584c4135291d110500000000000000000000000000000000000000000000000000000000000000040f19242f39444f59646f79848f99a4afb2b2aa9f948a7f746a5f544a3f342a1f140a000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000121e2b3744505b666e6f6f6f6f6f6f6f7683909083766f6f6f6f6f6f6f6e665b5044372b1e12000000000000010a131b242c36424f5c6975828f908376695d5043362d241c130b020000000000000000000000000000000000060e151c23292f353a3e4246494c4e505152555d656e767777777774695d5044372a211a130b030000000000000000000000000000000000000000000810171e252b31363b3f43474a4c4e505152545c646d7577777777756b5e5245392c251e171008000000000000000000000005111b262f383f4447484848484848484846423c342b31394149515a626a7277777777776e62564948484848484745413a32281e1409000013202c3946535f6c7986938c7f727070707070707070707070707070706f675c5044382b1e120000000000000000000a141d27313a444d57616a747e87919ba39b948c857d81899098a09e948a80766c63594f453b32281e140a00000000000000000000010b15202a343e48525c67717b858f9aa29a928981797168605850483f372e241a0f04000f1c28343f4b555d63636363636363636363636363636365727f8c9386796c5f5346392c20130013202c3946535f6c798693a0a09f9285786b5f52454c5865727e8c98a0a0988b7e7165584b3e3225180b00000000000000000000000000000000000000101c2936434f5c697683909ca3a39d9084776a5d5044372a1d110400000000000000000000000000000000000007101a232c343c444b52585d62666a6e7073757677787979797978777674726f6c6965605b554f484139312920170d030000000000000000000000000000000000040e19232d37414a535c646c747b81878c9194989a9c9e9f9fa09f9e9d9c9a9794908c87817a736c645b524940362c21170c0200000000000c1824303c48535d646667696a6b6c6d6f6e675c5145382c1f13060000020e1a2734404d5a6773808d9aa6afa295897c6f6256493c302316090000000000000000000000000000000000000000000000000000000a16212d3945505c6874808c97a3aca094887c7065594d413529323e4a56626d7985919da9a69b8f83776b5f53483c3024180c01000000000000000000000000000000000000000000000000000000000000000b16202b36404b56606b75808b96a0aba9a5a6aaa69b91867b71665b51463b31261b11060000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c787c7c7c7c7c7c7c7c839090837c7c7c7c7c7c7c7c786c5f5346392c20130000000000020b131c252d363e47505c6975828f908376695d50483f362e251d140b030000000000000000000000000000000000030a11181e24292e3236393d3f41464e575f676f778084848484776b5e5144382b1e1108010000000000000000000000000000000000000000000000060d141a20252a2f33373a3d4042454d555e666e767e84848484796c5f5346392c20130c05000000000000000000000000000a141d262d34383a3b3b3b3b3b3b3b3b3a37312b323a424b535b636c747c848484847d7063574a3d3b3b3b3b3b39352f2820160c02000013202c3946535f6c7986938c7f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d786c5f5346392c2013000000000000000000020b151e28323b454f58626c757f89929ca59e968f888b939aa29f968c82786e645b51473d332a20160c020000000000000000000000030e18222c36414b555f69737d88929ca49b938b837a726a625a514940362c20150900121e2b3844505c676f707070707070707070707070707070727f8c9386796c5f5346392c20130013202c3946535f6c7986939393939285786b5f52454c5865727e8c939393938b7e7165584b3e3225180b00000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000000000040f19222c353e464e565d63696e73777a7d808183848586868686858483817e7c7975716c66605a534b433b32291f150b01000000000000000000000000000000000007111b252f38414a525a626970767b8084888b8e8f919292939292918f8d8b8884807b756f69615a524940372e241a10050000000000000e1a2734404d59646f7374757778797a7b796d6054473a2e2115080000000d192633404c596673808c99a6b0a396897c7063564a3d3023170a00000000000000000000000000000000000000000000000000000005111c2834404c58636f7b87939eaaa5998d8175695d51463a2e37434e5a66727e8a96a2ada2968a7e72665b4f43372b1f14080000000000000000000000000000000000000000000000000000000000000007121d27323d47525d67727d87929da7a69e9899a0a9a2988d82786d62584d42382d23180d0300000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798689898989898989899292898989898989898986796c5f5346392c201300000000030c141d252e373f485059626a75828f9083766b625a514840372f261d150c03000000000000000000000000000000000000060d13181d22262a2f373f4850586069717981899191897f756a5d5144372b1e11040000000000000000000000000000000000000000000000000002090f141a1f23272b2e363e474f575f677078808991918b81766b5f5246392c1f13060000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2d2a2b343c444c545d656d757e868e918e84796f63564a3d302e2e2e2e2d29241e160e0400000013202c3946535f6c798693908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a86796c5f5346392c201300000000000000000000030d162029333d46505a636d76808a949da7a19994969da5a1978d847a70665c52493f352b21180e040000000000000000000000000006101a242f39434d57616c76808a949fa59d958c847c746b635b52483d3125190d0013202c3946535f6c787d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7f8c9386796c5f5346392c20130013202c3946535f6c7986868686868685786b5f52454c5865727e8686868686867e7165584b3e3225180b00000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000000000000000000010c16202b343e47505860676e747a7e8386898c8e9091929293939292918f8d8b8885817c77726b645d554d443b31271d130800000000000000000000000000000000000009131d262f38404950575e656a6f74787c7e81838485868686858483817e7b78746f6a645e57504840372e251c1208000000000000000f1b2835424e5b687580818283858687887b6f6256493d312519100b090a0e1a2734404d5a6673808d9aa6b0a396897c6f6356493c3023160a000000000000000000000000000000000000000000000000000000000c18232f3b47535e6a76828e9aa5a99d92867a6e62564a3e323b47535f6b77838e9aa6a99d9185796d62564a3e32261b0f03000000000000000000000000000000000000000000000000000000000000040e19242e39444e59646e79848e99a4aa9f948c8e97a2a99f94897f74695f54493f34291f140a00000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798693969494949494949494949494949494949386796c5f5346392c2013000000040c151e262f374049515a626b747c859091867d746c635a524941382f271e150d0400000000000000000000000000000000000001071018202831394149515a626a727a838b93968c82776d63594d4135291c100300000000000000000000000000000000000000000000000000000003090f171f2730384048505961697179828a92978d83796f645a4f43372a1e1105000000000000000000000000000000020a11171c1f212121212121212121252d353d464e565e666f777f87909890867c72685d52473a2e22212121201d19130c040000000013202c3946535f6c798693939393939393939393939393939393939386796c5f5346392c20130000000000000000000000040e17212b343e48515b646e78818b959ea0a0a0a0a0a0998f857b72685e544a40372d23190f0600000000000000000000000000000008131d27313b45505a646e78838d97a0a09e968e867e756d64594d4135281c0f0013202c3946535f6c79868a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a909386796c5f5346392c201300131f2c3946525f6b7679797979797979766a5e51454b58647079797979797979797064574b3e3125180b00000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000000008131d28323d465059626a727980858a8f9396989b9c9e9e9fa0a09f9e9d9c9a9895918d88837d766f675f564d43392f241a0f040000000000000000000000000000000000010b141d262e373e464d53595f64686c6f727476777879797978777674726f6c68635e59534c453e362e251c130a00000000000000000e1b2734414d5a6673808c8f909192948a7e7265594d41362b211b171616191f2a36424f5b6874818e9aa7afa295887c6f6255493c2f2316090000000000000000000000000000000000000000000000000000000007131f2a36424e5a65717d8995a1aca2968a7e72675b4f4337404c58646f7b87939faba4988c8175695d5145392e22160a000000000000000000000000000000000000000000000000000000000000000b15202b35404b55606b75808b95a0aba3988d8386919ba6a69b90867b70665b50463b31261b1106000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938d8787878787878787878787878787878786796c5f5346392c20130000030d161e272f384149525b636c757d868e94948f877e756c645b534a413930271f160d040000000000000000000000000000000001091119222a323a424b535b636c747c848c95998e847a70665b51473c3125190d0000000000000000000000000000000000000000000000000000000008101821293139414a525a626b737b838b949a90867b71675d53483e32261a0e020000000000000000000000000000000000060c1013141515151515161e262e373f474f58606870788189919993897e746a60564c41362a1e15151413110d0801000000000013202c3946535f6c798686868686868686868686868686868686868686796c5f5346392c2013000000000000000000000000050f19222c363f49535c666f79838c9393939393939391877d736960564c42382f251b110700000000000000000000000000000000010b151f29343e48525c66717b858f939393939390877f76695d5043372a1d100013202c3946535f6c798693939393939393939393939393939393939386796c5f5346392c201300111e2a37434f5a646b6c6c6c6c6c6c6c6b64594e4248545f686c6c6c6c6c6c6c6c685e53483c2f23160a00000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000000020e19242f3a444e58626b747c848b91969b9fa2a5a3a19f9e9d9c9c9d9d9fa0a2a4a19d99948e88817971685f554b41362b20150a000000000000000000000000000000000000020b141c252d343b42484e53585c60636568696b6c6c6c6c6b6b696765625f5c57534d48413b342c241c130a0100000000000000000c1925323f4b5864717d8a969d9e9f9a8e8275695e52473d332c272423232529313b46525e6b7783909ca9ada094877a6e6154483b2e22150800000000000000000000000000000000000000000000000000000000020e1a26313d4955616c7884909ca8a79b8f83776b5f53483c44505c6874808c98a4ab9f93887c7064584c4035291d110500000000000000000000000000000000000000000000000000000000000007121c27323c47525c67727c87929ca7a79c91867c7f8a959faaa2978d82776d62574d42382d22180d020000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938b7e7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a776b5f5246392c201300000b151f283039424a535b646d757e878f9289899190877e766d655c534b423931281f160c010000000000000000000000000000020b131b232b343c444c545d656d757e868e969b91877c72685e544a3f352b2014090000000000000000000000000000000000000000000000000000010a121a222a333b434b535c646c747c858d959c92887e74695f554b41372c21160a00000000000000000000000000000000000000000406080808080f172028303840495159616a727a828a939b958b81776d62584e443a2f25190e080807040100000000000000131f2c3946525f6b767979797979797979797979797979797979797979766b5f5246392c1f130000000000000000000000000007101a242d37414a545d67717a8486868686868686867f756b61574e443a30261d1309000000000000000000000000000000000000030d18222c36404a555f69737d868686868686868684776a5d5044372a1d110013202c3946535f6c798686868686868686868686868686868686868686796c5f5346392c2013000e1a26323e48525a5f5f5f5f5f5f5f5f5f5a52483d424d565d5f5f5f5f5f5f5f5f5c564d42372b1f130700000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000000000000000008131f2a35404b56606a747d868e969ca2a7a29e9a979492919090909091929496999da2a59f99928b837a71675d52483d32261b0f03000000000000000000000000000000000000020a131b222930373d42474c505356595b5d5e5f5f5f5f5f5e5d5b5956534f4b47423c363029221a120a010000000000000000000a1723303c4955616e7a87939fabaa9e92867a6f63594f453d373330303031353b434d57636f7a87939facab9e9285796c5f53463a2d20140700000000000000000000000000000000000000000000000000000000000915212d3844505c6873808b97a3ab9f94887c7064584c404955616d7985919ca8a69a8f83776b5f53483c3024180c010000000000000000000000000000000000000000000000000000000000030e19232e39434e59636e79838e99a3aba0958a807578838e98a3a99e94897e74695f54493f34291f14090000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986938b7e716d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c655a4f43372a1e110006121d27313a424b545c656d767f87909088807f8790918880766e655d544b433a31281d120700000000000000000000000000020b141d252d353d464e565e666f777f8790989e93897f756b60564c42382e23190e0300000000000000000000000000000000000000000000000000010a131b242c343c454d555d656e767e868f979f958b80766c62584d43392f251a10050000000000000000000000000000000000000000000000000710192129323a424a525b636b737b848c949c988e83796f655b51463c32281e1308000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e11000000000000000000000000000008121b252f38424b555f6872797979797979797979766d63594f453c32281e140b010000000000000000000000000000000000000006101a242e39434d57616b7579797979797979797974695c5043362a1d1000131f2c3946525f6b767979797979797979797979797979797979797979766b5f5246392c1f13000a16212c3740484f5253535353535353524e4840363b444b515353535353535353504b443b30261a0f0300000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000010d1924303b47525d68727c868f98a0a7a39c97928d8a878684838383838485878a8d91969ca4a49d958c83796f64594e43372c20140800000000000000000000000000000000000000010910181f252b31373b4044474a4c4f5051525353525251504e4c4a47433f3b36312b251e17100800000000000000000000000814202d3946525e6a76838f9aa6aea2978b80756a61574f48433f3d3c3d3e41464c555e6974808b97a3afa89b8f83766a5d5144382b1f1205000000000000000000000000000000000000000000000000000000000004101c28343f4b57636f7a86929eaaa4988c8174695d51454e5a65717d8995a1ada2968a7e72665a4f43372b1f13080000000000000000000000000000000000000000000000000000000000000a15202a35404a55606a75808a95a0aaa4998e83796e717c87929ca7a59b90867b70655b50463b30261b100600000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000000000010507101c2936434f5c69768390908376695c4f4336291c1007050100000000000013202c3946535f6c7986938b7e71656060606060606060606060606060605b53493e33271b0f000b17232e39434c545d666e778088918f877e76757e868f918980776f665d554c433a2f24180c000000000000000000000000000a141d262e373f474f586068707881899199a0968c81776d63594f443a30261c1207000000000000000000000000000000000000000000000000000008131c252d363e464e575f676f7780889098a1978d83786e645a50463b31271d1309000000000000000000000000000000000000000000000000050f19222b333b444c545c646d757d858e969e9a90867c72675d53493f342a20160c010000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e00000000000000000000000000000009131d26303a434d5660696c6c6c6c6c6c6c6c6c6b645b51473d342a20160c0200000000000000000000000000000000000000000008121c27313b454f5a636b6c6c6c6c6c6c6c6c6c6a62584c4034281b0f00111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e110005101a252e373e43464646464646464645433d362e323a4044464646464646464644403a32291f14090000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000006121d2935414c58636e79848e98a1aaa199928b86817e7b79777676767677787a7d81858b929aa2a79e958b81756a5f54483c3024180c000000000000000000000000000000000000000000060d141a20262b2f34373b3d404243454546464645444342403d3a37332f2a25201a140d0600000000000000000000000005111d2a36424e5a66727e8a95a1aca89c91877c7369615a544f4c4a49494b4d51575e67707b85919ca8afa3978b7f73675a4e4235291c10030000000000000000000000000000000000000000000000000000000000000b17232f3b46525e6a76828d99a5a99d9185796d615549525e6a76828e9aa6a99d9185796d61564a3e32261b0f03000000000000000000000000000000000000000000000000000000000007111c27313c47515c67717c87919ca7a89d92877c72676a75808b96a0aba2978d82776d62574d42372d22170d02000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e221508000000000000000000000000070d1114161c2936434f5c69768390908376695c4f4336291c1614110d07000000000013202c3946535f6c7986938b7e71655853535353535353535353535353534f4941372d21160a000f1c28343f4b555e666f788089928e867d756c6c747d858e928a81786f675e554b4035291c1004000000000000000000000005101b262f3840495159616a727a828a939ba2988e847a70655b51473d33281e140a0000000000000000000000000000000000000000000000000000040f1a242e373f485058606871798189929aa29a8f857b71675c52483e342a1f150b010000000000000000000000000000000000000000000000000c17212b353d454d555e666e767e878f979f9d93887e746a60554b41372d23190e04000000000000000000000000000a16212c3740484f525353535353535353535353535353535353535353524f4840372c21160a000000000000000000000000000000010b141e27313b444e575d5f5f5f5f5f5f5f5f5f5f5a52493f352b22180e0400000000000000000000000000000000000000000000010b151f29333d4851595e5f5f5f5f5f5f5f5f5f5e5950463b3024180c000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e000009131c252c323739393939393939393936322c24282f3438393939393939393938342f2820170d020000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000000000000000a16222e3a46525d6974808b96a0aaa1988f87807a75716e6c6b6a69696a6a6c6e71757a8088909aa4a79d92877c7064594d4135281c100300000000000000000000000000000000000000000002090f151a1f23272b2e3133353738393939393938373533312e2b27231f1a140f090200000000000000000000000000010e1a26323e4a56616d79848f9ba5aea3988e857b736b655f5b5856565657595d62697079828c97a2adaa9e93877b6f63574b3e3226190d0100000000000000000000000000000000000000000000000000000000000007121e2a36424d5965717d8994a0aca1958a7e72665a4e57636f7b87929eaaa4988c8174695d5145392d22160a0000000000000000000000000000000000000000000000000000000000030e18232e38434e58636e78838e98a3aba1968b81766b60646e79848f99a4a99e94897e74695e54493e34291e1409000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000000030b12181d2022222936434f5c69768390908376695c4f4336292222201d18120b0300000013202c3946535f6c7986938b7e7165584b47474747474747474747474746443e372f251b100500121e2b3844505c677078818a928d857c746b63626b737c848d938a827970675d5145382c1f130600000000000000000000000a16222d38414a525b636b737b848c949ca59b91877c72685e54493f352b21170c0200000000000000000000000000000000000000000000000000000915202c364049515a626a727a838b939ba49c92887d73695f554b40362c22180e0300000000000000000000000000000000000000000000000005111d28333d474f575f67707880889199a19f958b81766c62584e44392f251b1107000000000000000000000000000005101a252e373e4346464646464646464646464646464646464646464646433e372e251a100500000000000000000000000000000000020c161f29323c454c51535353535353535353524f4940372d23191006000000000000000000000000000000000000000000000000030d17222c363f484e52535353535353535353524e473e352a1f1408000a16212c3740484f525353535353535353535353535353535353535353524f4840372c21160a0000010a131a21262a2c2c2c2c2c2c2c2c2c2a26211a1d24282b2c2c2c2c2c2c2c2c2b28231d160e05000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000000000000000d1926323e4a56626e7a86919ca7a4998f867d756f696562605e5d5d5c5d5e5f6164696e767e88939ea9a4988d8175695d5144382c1f1306000000000000000000000000000000000000000000000004090e13171b1f222427292a2b2c2c2c2c2c2b2a282624221e1b17130e0903000000000000000000000000000000000a16222d3945515c68737e89949ea8aaa0978e857d76706b67656363636466696e737a828b949ea9aea3988d82766a5f53473b2e22160a00000000000000000000000000000000000000000000000000000000000000020e1925313d4954606c78848f9ba7a69a8e82766a5f535c6773808b97a3ab9f93877b7064584c4035291d110500000000000000000000000000000000000000000000000000000000000a151f2a353f4a555f6a75808a959faaa59a8f84796f64595d67727d88939da8a59b90857b70655b50453b30251b10050000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e221508000000000000000000020c151d24292d2f2f2f36434f5c69768390908376695c4f43362f2f2f2d29241d150c02000013202c3946535f6c7986938b7e7165584b3e3a3a3a3a3a3a3a3a3a3a3a3a37332d251d1309000013202c3946535f6c78828a9390847b736a625959616a727a838f948b82796d6053473a2d20140700000000000000000000000e1b27333e49535c646d757d858e969ea69d93897f746a60564c42382d23190f050000000000000000000000000000000000000000000000000000000d1925313d48525b636c747c848c959da59f948a80766c61574d43392f241a1006000000000000000000000000000000000000000000000000000915212d39454f5961697179828a929aa3a2988d83796f655a50463c32281d13090000000000000000000000000000000009131c252c32373939393939393939393939393939393939393939393937322c251c1309000000000000000000000000000000000000040d17202a333b414546464646464646464646433e372e251b1107000000000000000000000000000000000000000000000000000005101a242d363d424546464646464646464645423c352c23180e020005101a252e373e4346464646464646464646464646464646464646464646433e372e251a1005000000010910161a1e1f202020202020201f1e1a150f12181c1f20202020202020201f1c18120c0400000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000101d2935424e5a66727e8a96a1a49d92877d736b635e5956535150505050515355585d646c76818d98a4a99d9185796d6054473b2e2215090000000000000000000000000000000000000000000000000003070b0f1215181a1c1d1e1f2020201f1e1d1c1a1815120f0b070200000000000000000000000000000000000005111d2934404b56626c77828c969fa9a9a0978f88817c777471706f6f717275797e858c949da6afa69c91877c70655a4e42362a1e120600000000000000000000000000000000000000000000000000000000000000000915202c3844505b67737f8b96a2ab9f93877b6f6357606c7884909ca8a69a8e83776b5f53473c3024180c000000000000000000000000000000000000000000000000000000000006111c26313c46515c66717c86919ca6a89e93887d73685d5256616b76818c96a1aca2978c82776c62574c42372c22170d0200000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e2215080000000000000000000a141e272e35393c3c3c3c434f5c69768390908376695c4f433c3c3c3c39352e271e140a000013202c3946535f6c7986938b7e7165584b3e3d3d3d3d3d3d3d3d3d3d3d3d3a362f281f150b0000121f2c3945525e6a747c858e928981786f675e5e666f778089928e867d746b5f5246392d2013070000000000000000000000111d2a36434f5b656e767e878f979fa0a0968b81776d63584e443a30261b1107000000000000000000000000000000000000000000000000000000000f1c2835414d59646d757e868e969ea0a0978d83786e645a50453b31271d130800000000000000000000000000000000000000000000000000000b1825313d4a56616a737b838b949ca0a09a90867b71675d53493e342a20160c0100000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a0100000000000000000000000000000000000000050e1821293035383939393939393939393937322c251c13090000000000000000000000000000000000000000000000000000000008121b242b3236393939393939393939393936312b231a110700000009131c252c32373939393939393939393939393939393939393939393937322c251c1309000000000000050a0e11131313131313131313110e0a04070c1012131313131313131312100c07010000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000121f2c3845515e6a76838f929597978c81756b6159524d494645444343434446484c525a65707c8895a1ada195887c6f63564a3d3024170a000000000000000000000000000000000000000000000000000000000306090b0e0f1112121313131212100f0d0b090602000000000000000000000000000000000000000000000c18232f3a45505b66707a848d979fa7a9a199938d8884817e7d7c7c7d7f82868a90979ea6aea69d948a80756a5f54493d32261a0e02000000000000000000000000000000000000000000000000000000000000000004101c27333f4b57626e7a86929da9a3978b8073685c65717d8995a0aca1968a7e72665a4e43372b1f130800000000000000000000000000000000000000000000000000000000030d18232d38434d58636d78838d98a3aca2978c81766c61564c4f5a646f7a85909aa5a99e93897e73695e53493e33291e140900000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e221508000000000000000006111c263039404548494949494f5c69768390908376695c4f494949494845403930261c11060013202c3946535f6c7986938b7e7165584b4a4a4a4a4a4a4a4a4a4a4a4a4a47413a31271d120600111d2936424d58626a737c858d928a817970686770788189928e857c746b62594e42362a1e11050000000000000000000000121f2c3845525e6b7780889193939393938e84796f655b51473c32281e140a0000000000000000000000000000000000000000000000000000000000101d2a3743505d69767f879093939393938f857b71665c52483e34291f150b0100000000000000000000000000000000000000000000000000000c1926333f4c5966727c858d939393939392887e746a5f554b41372d22180e04000000000000000000000000000000000000010910161a1e1f20202020202020202020202020202020202020201f1e1a16100901000000000000000000000000000000000000000000060f171e24292c2c2c2c2c2c2c2c2c2c2c2a27211b130a01000000000000000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2c2a262019110800000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000013202c3946535f6c79818386888b8d877b6f64594f47413d3a383736363738393c414854606c7985929faba4978b7e7165584b3e3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d29343f49545e68727b858d959da4aba49e9894908d8b8989898a8c8e92969ba1a8aaa39c948b82786e63594e43382c211509000000000000000000000000000000000000000000000000000000000000000000000b17232e3a46525d6975818d99a4a89c9084786c606975818d99a5a89d9185796d61564a3e32261a0f03000000000000000000000000000000000000000000000000000000000a141f2a343f4a545f6a747f8a949faaa59b90857a70655a4f4548535e68737e89949ea9a59a90857a70655a50453a30251b1005000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000b17222e38424b515555555555555c69768390908376695c555555555555514b42382e22170b0013202c3946535f6c7986938b7e7165585757575757575757575757575756524c43392e23170b000d1925313c465059616a737b848d948b837a717179828a938d857c736a625950473d32261a0e020000000000000000000000121f2c3845525f6b788586868686868686867c72685d53493f352b20160c020000000000000000000000000000000000000000000000000000000000111d2a3744505d6a778486868686868686867d73695f554a40362c22180d030000000000000000000000000000000000000000000000000000000d192633404c59667380868686868686868681766c62584e43392f251b1106000000000000000000000000000000000000000000050a0e1113131313131313131313131313131313131313131313110e0a05000000000000000000000000000000000000000000000000050d13191c1f2020202020202020201f1e1b1610090100000000000000000000000000000000000000000000000000000000000000080f151a1e1f2020202020202020201f1d1a150e07000000000000010910161a1e1f20202020202020202020202020202020202020201f1e1a1610090100000000000000000000000000000000000000000000000407080808080808080808080704010000000003060808080808080808080807050100000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000121f2b3844515d68717477797c7e8183766a5e53483d36312d2b2a2a2a2a2b2d303845515e6b7784919eaba5988c7f7265594c3f3226190c000000000004090e10121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212100d090400000000000000010c17222d38424c566069727b838b93999fa5a9a4a09c999796969697989b9ea2a7a9a59f99928a82796f665c52473c31261b10040000000000000000000000000000000000000000000000000000000000000000000006121e2935414d5965707c8894a0aba094887c70646e7a86929eaaa4988c8074695d5145392d21160a0000000000000000000000000000000000000000000000000000000006111b26313b46515b66717b86919ba6a99f94897e74695e53493e414c57626c77828d97a2aca1978c81776c61574c41372c22170c020000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e22150800000000000000000f1b27333f4a545c616262626262626976839090837669626262626262615c544a3f33271b0f0013202c3946535f6c7986938b7e71656363636363636363636363636363635d554b3f34281c0f000914202a353e474f586069727a838c948c837b7a838b948c847b726a615850473e352b20150a000000000000000000000000121f2b3845515e6a76797979797979797979746a60564c41372d23190f04000000000000000000000000000000000000000000000000000000000000101d2a3643505c6974797979797979797979756b61574d43392e241a1006000000000000000000000000000000000000000000000000000000000c1926333f4c586571797979797979797979786f645a50463c32271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d101213131313131313131313110e0a0500000000000000000000000000000000000000000000000000000000000000000000040a0e111313131313131313131313110e0903000000000000000000050a0e1113131313131313131313131313131313131313131313110e0a050000000000000000000000000000000000000000000000060c10131515151515151515151513110c0701050b10131515151515151515151514110d08020000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000101c2935404c565f65686a6d6f72747671665a4e42362b25211f2024272a2d32363d46525f6b7885919eaba6998c807366594c403326190d00000000080f151a1d1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d19150f080000000000000006111b26303a444e576069717981888e94999ea2a5a8a6a4a3a2a3a3a5a7a7a4a19d99948e87807870675e544a40352b20150a0000000000000000000000000000000000000000000000000000000000000000000000010d1925313c4854606b77838f9ba7a5998d817568727e8a96a2ab9f93877b7064584c4034291d1105000000000000000000000000000000000000000000000000000000020d18222d38424d58626d78828d98a2ada2988d82776d62574c42373a45505b65707b86919ba6a89e93897e73685e53493e33291e13090000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e2215080000000000000000121e2b3744505b666e6f6f6f6f6f6f6f7683909083766f6f6f6f6f6f6f6e665b5044372b1e120013202c3946535f6c7986938b7e717070707070707070707070707070706f675c5044382b1e1200030e19232c353d464e576068717a838b948d84848c948c837a726960584f463e352c23190f04000000000000000000000000101d2936424e59646b6c6c6c6c6c6c6c6c6c6a62584e443a30251b1107000000000000000000000000000000000000000000000000000000000000000f1b2834404c58626a6c6c6c6c6c6c6c6c6c6b635a4f453b31271c120800000000000000000000000000000000000000000000000000000000000b1724303d49545f686c6c6c6c6c6c6c6c6c6c665d53483e342a20150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181c2021222222222222222222201d18120b10171c1f21222222222222222222201d19130c0500000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000000000000000c18242f3a444d55595b5e606365676a675f554a3e32262326292d3033363a3e42484e57626e7a8793a0aca5988c7e7265594c3f3226190c00000009121a2026292b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b292520191209000000000000000a141e28323c454e575f676f767d83898d9295989b9d9e9f9f9f9f9e9c9a9895918d88837c756e665e554c42382e24190e040000000000000000000000000000000000000000000000000000000000000000000000000814202c37434f5b67737e8a96a2a99d9185796d76828e9aa6a69a8e83776b5f53473b3024180c0000000000000000000000000000000000000000000000000000000009141f29343f49545f69747f89949fa9a69c91867b71665b50463b30343e49545f69747f8a959faaa59a8f857a6f655a50453a30251a100500000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e221508000000000000000013202c3946535f6c787c7c7c7c7c7c7c7c839090837c7c7c7c7c7c7c7c786c5f5346392c20130013202c3946535f6c7986938b7e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d786c5f5346392c2013000007111a222b343c454e565f687079828a938f8e948b827a716860574e463d342c231a1107000000000000000000000000000e1a26313d48525a5f5f5f5f5f5f5f5f5f5f5e5950463c32281e140900000000000000000000000000000000000000000000000000000000000000000c1824303b4650595e5f5f5f5f5f5f5f5f5f5e5951483d33291f150b0000000000000000000000000000000000000000000000000000000000000814202c38434d565d5f5f5f5f5f5f5f5f5f5f5b544b41362c22180e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030507090a0b0c0c0c0c0b0b090806030100000000000000000000000000000000000000000000000000000000000000000000000307090a0a0a0a0a0a0a0a0a090703000000000000000000000000000000000000000000000000000306080a0b0c0c0c0c0b0a090705020000000000000101010101010101010100000000000000000000000000000206090a0a0a0a0a0a0a0a0a0a08040000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2d29241d151b22282c2e2e2e2e2e2e2e2e2e2e2d2a251e160e05000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000007131e29323b43494c4f515456585b5d5b564d44392d2c2f3236393c3f43464a4e53596069747f8a96a3afa3978a7d7164574b3e3125180b000008121b242b313638383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383836312b231b1208000000000000020c16202a333c454d565d646b72777d8286898c8e90919292929291908e8c8985817c77716b645c544c433a30261c120700000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333e4a56626e7985919da9a195897d717a86929eaaa1958a7e72665a4e43372b1f130700000000000000000000000000000000000000000000000000000006101b26303b46505b66707b86909ba6aa9f958a7f746a5f54493f34292d38424d58636d78838e98a3aca1978c81766c61574c41372c21170c01000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000000000000b1724313e4a5764717d8a95887b6e6155483b2e221508000000000000000013202c3946535f6c798689898989898989899292898989898989898986796c5f5346392c20130013202c3946535f6c7986938f8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a86796c5f5346392c2013000000081019222a333c444d565e677078818a92938a827970685f564e453c342b221a110800000000000000000000000000000915202b3640484e52535353535353535353524e473e352a20160c02000000000000000000000000000000000000000000000000000000000000000008141f2a353e474e52535353535353535353524e483f362c21170d0300000000000000000000000000000000000000000000000000000000000004101b27313b444c5153535353535353535353504a42392f251a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090c0f1214151718191919191817161412100d0a0602000000000000000000000000000000000000000000000000000000000000030a0f131617171717171717171716130f0a04000000000000000000000000000000000000000105090d10121516181819191918171614110e0b070304080c0e0e0e0e0e0e0e0e0e0d0b080300000000000000000001080e12151717171717171717171614100b050000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b39352f271f252d33383b3b3b3b3b3b3b3b3b3b3935302820170d020000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000010c17202932383d404245474a4c4e504f4b443b3235383c3f4245484c4f52565a5f646b727b85909ba7aca094877b6f6256493c3023170a00040f1a242e363d42454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545423d352d23190f04000000000000050e18212a333b444b535a60666c7175797d80828485868686858483817f7c7975716c666059524a423a31281e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000a16222e3a45515d6975818c98a4a5998d81757e8a96a2a89d9185796d61564a3e32261a0e030000000000000000000000000000000000000000000000000000020d17222d37424d57626d77828d97a2ada3998e83786e63584d43382d2226313b46515c66717c87929ca7a89e93887d73685e53483e33281e1308000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000000000040b111724313e4a5764717d8a95887b6e6155483b2e2215100a0200000000000013202c3946535f6c798693969696969696969b9b969696969696969386796c5f5346392c20130013202c3946535f6c798693939393939393939393939393939393939386796c5f5346392c201300000000071018212a323b444c555e666f7880898a81786f675e564d443c332a22191008000000000000000000000000000000040f1a242e363d434546464646464646464645423c352c23190e04000000000000000000000000000000000000000000000000000000000000000000020e18232c353c424546464646464646464645423d362d241a100500000000000000000000000000000000000000000000000000000000000000000a152029323a404446464646464646464646443f3830271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d1115181b1e2022242525262625252423211f1c1a16130e0a05000000000000000000000000000000000000000000000000000000060e151b1f22242424242424242424221f1b150e060000000000000000000000000000000001070c1115191c1f21232425262626252422201e1b17140f0f14181a1b1b1b1b1b1b1b1b1a18140f0901000000000000040c13191e2223242424242424242423201c1710080000000006111c262f383f454848484848484848484845403931272e373e444748484848484848484846413a32291f14090000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000000050e1720272d313336383b3d404244433f39393d4144484b4e5255585b5f62666a6f757c858d97a2ada79b9084786b5f53463a2e211508000a15212c3640484e5152525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252514e473f352b20150900000000000000060f182129323a41484f555b6065696d70737577787979797877767572706d6965605b554e47403830281f160c0200000000000000000000000000000000000000000000000000000000000000000000000000000006111d2935414c5864707c88939fa99d918579828e9aa6a4988c8074685d5145392d21160a00000000000000000000000000000000000000000000000000000009141e29343e49545e69747e89949ea9a79c92877c71675c51463c31261b1f2a353f4a55606a75808b96a0aba59a8f857a6f655a4f453a2f251a0f050000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000000000050e151c2226313e4a5764717d8a95887b6e6155483b2e25211b140c03000000000013202c3946535f6c798693a0a2a2a2a2a2a3a6a6a3a2a2a2a2a2a09386796c5f5346392c20130013202c3946535f6c798686868686868686868686868686868686868686796c5f5346392c20130000000000060f182029323a434c545d666e778080776f665d554c433b322a21181007000000000000000000000000000000000008121b242c3236393939393939393939393936312b231a1107000000000000000000000000000000000000000000000000000000000000000000000007111a232b3136393939393939393939393936322b241b1208000000000000000000000000000000000000000000000000000000000000000000030e1720292f35383939393939393939393937332e261e150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e14181d2125282b2d2f30313232323232312f2e2b2926221f1a16110b05000000000000000000000000000000000000000000000000060f1820262b2f3030303030303030302f2c26201810060000000000000000000000000000060d13181d2125292b2e30313232323232312f2d2a27241f1b1b20242728282828282828282724201a130b0200000000030d161e252a2e3030303030303030302f2d28221a12090000000b17222d38424a5154555555555555555554514b43392f3640495054555555555555555555524c443b30251a0e0200101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000000000000000000050e151c212427292c2e31333537383d4145494d5154575b5e6164686b6e72767b81878e969fa9aba0968a7f73675b4f43372b1e1205000e1a26323d4852595e5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5951473d3125190d0000000000000000060f1720282f373d444a4f55595d616466686a6b6c6c6c6b6b6a686663605d59544f49433d362e261e160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000010d1824303c48535f6b77838e9aa6a195897c86929eaa9f93877b6f64584c4034281d1105000000000000000000000000000000000000000000000000000005101b25303b45505b65707b85909ba5aba0968b80756b60554a40352a1f1518232e39434e59646e79848f99a4aca1968c81766c61564c41362c21160c0100000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100000000050e1720272d32353e4a5764717d8a95887b6e6155483b35312c261e150c030000000013202c3946535f6c798693a0acafafafafafb2b2afafafafafaca09386796c5f5346392c201300131f2c3946525f6b767979797979797979797979797979797979797979766b5f5246392c1f13000000000000060e172028313a424b545c656d76776e655d544b433a312920180f060000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2c2a25201911080000000000000000000000000000000000000000000000000000000000000000000000000008111920262a2c2c2c2c2c2c2c2c2c2c2c2a26211a12090000000000000000000000000000000000000000000000000000000000000000000000050e171e24292b2c2c2c2c2c2c2c2c2c2c2b27221c140c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d141a1f24292d313437393b3d3e3f3f3f3f3e3d3c3a3835322f2b26221c17110a03000000000000000000000000000000000000000000030e18212a31373b3d3d3d3d3d3d3d3d3d3b37322a22180e040000000000000000000000020a11181e24292d3235383a3c3e3f3f3f3f3e3d3c393733302b27252c3134343434343434343433302b251d140b010000000b151f282f363a3d3d3d3d3d3d3d3d3d3c39332c241b110600000f1b27333f4a545c616161616161616161615d554b40343d48525b606161616161616161615e564c42362b1e120600101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000000000040a1015181a1d1f242c32383e44484d5155595d6064676a6d7174777a7e82878c9299a0a8aca3998f84796e62574b3f33271b0f0200111e2a36434e5a646a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a63594e4236291d10000000000000000000060e161d252c32393e44494d5154575a5c5d5e5f5f5f5f5e5d5b595754514d48433e38322b241c140c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b37434f5a66727e8a96a1a5998d818a96a2a69a8e82776b5f53473b3024180c0000000000000000000000000000000000000000000000000000020d17222c37424c57626c77828c97a2aca4998f84796e64594e43392e23180e111c27323c47525d67727d88939da8a89d93887d73685d53483d33281d130800000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000000050e17202931393e42424a5764717d8a95887b6e61554842413d3730271e150c0300000013202c3946535f6c798693a0acb9bcbcbcbcbebebcbcbcbcb9aca09386796c5f5346392c201300111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e1100000000000000050e161f283039424a535b646b6b655c534b423931281f170e05000000000000000000000000000000000000000000080f151a1e1f2020202020202020201f1d1a140e07000000000000000000000000000000000000000000000000000000000000000000000000000000070e151a1d1f2020202020202020201f1e1a150f0800000000000000000000000000000000000000000000000000000000000000000000000000050c13181c1f202020202020202020201e1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181f252b3035393d414446484a4b4c4c4c4c4b4a494744423f3b37322d28221c150e07000000000000000000000000000000000000000009141f2a333c43484a4a4a4a4a4a4a4a4a48433c342a20150a00000000000000000000040c141c23292f35393e414447494a4b4c4c4c4b4a484643403c373230373d404141414141414141403c362f261d1308000006121d27313a41474a4a4a4a4a4a4a4a4a49443e362d23180d0100121e2b37434f5b666d6e6e6e6e6e6e6e6e6d675c514539414e59646c6e6e6e6e6e6e6e6e6e685e53473b2e22150800101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000000000000004080d161f272f363d444a4f54595d6265696d7073777a7d8184878a8e93989da3aaa9a29a91877d72685c51463a2f23170b0000131f2c3945525f6b7678787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878756a5e5145382b1f1200000000000000000000040c131a21272d33383d4145484b4d4f51525253525251504f4d4a4844413c38332d272019120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323e4a56616d7985919ca89d928b909aa6a1958a7e72665a4e42372b1f1307000000000000000000000000000000000000000000000000000009131e29333e49535e69737e89939ea9a89d93887d72685d52473d32271c12070b15202b36404b56616b76818c96a1aca49a8f847a6f645a4f443a2f241a0f05000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110000040e172029323b434a4e4f4d5764717d8a95887b6e61554d4f4d49423930271e150c02000013202c3946535f6c798693a0acb9c6c9c9c9cacac9c9c9c6b9aca09386796c5f5346392c2013000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e0000000000000000040d161e272f384149525a5f5f5a534a413930271f160d050000000000000000000000000000000000000000000000040a0e111313131313131313131313110d0903000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e111313131313131313131313110e0a0400000000000000000000000000000000000000000000000000000000000000000000000000000001070c101213131313131313131313120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141c232a30363c4145494d50535556575859595858575553514e4b47433e39332d2720181109010000000000000000000000000000000000030e1a26313b454d54575757575757575757544e463c32261b0f030000000000000000040d161e262d343a40454a4e5153565758595958585755524f4c48433e3942484d4e4e4e4e4e4e4e4e4c4841382f241a0e03000b17232e39434c525657575757575757575550483f34291e12060013202c3946525f6c777b7b7b7b7b7b7b7b796d6154473b44505d6a767b7b7b7b7b7b7b7b7a6f6356493d3023160a00101c2936434f5c697683909ca9aa9d9084776a5d5044372a1e110400000000000000000000000000000000000000030d161f28313941484f555b6065696e7275797c8083868a8d9093979a9fa3a9aaa59e9790887e756b61564b4035291e1206000013202c3946535f6c7985858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585786b5f5245382c1f12000000000000000000000001090f161c22272c3135393c3e4143444546464645454442403e3b3835302c27221c150f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060a16222d3945515d6874808c98a3a49b989aa2a89c9185796d61554a3e32261a0e030000000000000000000000000000000000000000000000000005101a25303a45505a65707a85909aa5aca1968c81766b61564b40362b20150b00040e19242f39444f5a646f7a85909aa5aba1968b81766b61564b41362c21160c010000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100010c162029323b444d555a5c595764717d8a95887b6e61555a5c5a544b423930271e140a000013202c3946535f6c798693a0acb9c6d3d5d5d7d7d5d5d3c6b9aca09386796c5f5346392c2013000a16212c3740484f525353535353535353535353535353535353535353524f4840372c21160a000000000000000000040c151e262f3740484f52524f4941382f271e150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e262e353b42474d5155595c5f61636465656565646362605d5a57534f4a443e38312a231b130a010000000000000000000000000000000006121f2b37424d575f6363636363636363635f584e43372c1f130700000000000000030d161f2830383f464c51565a5d606264656565656463615f5c58544f49434b53595b5b5b5b5b5b5b5b59534b41362b1f1307000f1c28343f4b555d636363636363636363615a51463a2f23160a0013202c3946535f6c7986888888888888887b6e6154483b44515d6a7784888888888888887d7063564a3d3023170a00101c2936434f5c697683909ca9aa9e9184776b5e5144382b1e1105000000000000000000000000000000000000010b151f28313a434b525a60666c71757a7e8285898c8f9396999ca0a3a7aba8a49f99938d867e756c63594f443a2f24180d01000013202c3946535f6c7986929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929285786b5f5245382c1f1200000000000000000000000000050b11161c2025292c2f32343637383939393938373534312f2c2824201b16100a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161d2934404c58646f7b87939fa8a7a4a6a8a3988c8074685c5145392d21160a00000000000000000000000000000000000000000000000000020c17222c37414c57616c77828c97a1aca59a90857a6f655a4f443a2f24190f04000008121d28333d48535e68737e89949ea9a89d92887d72685d52483d33281d13080000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110007121d28323b444d565f6668645c64717d8a95887b6e615d6569655d544b423930261b10050013202c3946535f6c798693a0acb9c6d3dfe2e3e3e2dfd3c6b9aca09386796c5f5346392c20130005101a252e373e4346464646464646464646464646464646464646464646433e372e251a100500000000000000000000030c141d252e373e434646433e372f261d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607080808080807060503010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000103050607080808080707050402000000000000000000000000000000000000000000000000000000000000000000000000000000000002040607080808080707050301000000000000000000000000000000000000000000000000000000000000000000050e17202830383f464d53585d6265696c6e70717272727271706e6c6a67635f5a55504a433c342d251c130a010000000000000000000000000000000815222e3b47535f697070707070707070706a5f54483b2f221609000000000000000b151e28313a424a51575d62666a6d6f707172727271706e6b68645f5a544e535d656767676767676767645d52473c2f23170a00121e2b3844505c676f70707070707070706c62574b3f3226190c0013202c3946535f6c7986939595959594887b6e6154483b44515d6a77849195959595958a7d7063564a3d3023170a00101c2936434f5c697683909ca9ab9e9285786b5f5245392c1f130600000000000000000000000000000000000008131d27313a434c555d646b71777c81868a8e9295989c9fa2a5a9aaa7a4a09c98938e88827b746c635a51473d33281d120700000013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939285786b5f5245382c1f12000000000000000000000000000000050b1015191d20232528292b2c2c2c2c2c2b2a292725221f1c1814100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151b1f22232324303b47535f6b76828e9a9b9b9b9b9b9b93877b6f64584c4034281d11050000000000000000000000000000000000000000000000000009131e28333e48535e68737e89939ea8a99e93897e73685e53483d33281d1208000000010c16212c37414c57626c77828d97a2ada4998f84796f64594f443a2f241a0f0400000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e11000c18242f3a444d565f6871756e6564717d8a95887b6e61666f756f665d544b42382d21160a0013202c3946535f6c798693a0acb9c6d3dfecf0f0ecdfd3c6b9aca09386796c5f5346392c2013000009131c252c32373939393939393939393939393939393939393939393937322c251c1309000000000000000000000000020b131c252c3237393937332d251d140b030000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0d0f1112131415151515141312100e0c090602000000000000000000000000000000000000000000000000000000000000000000000000000105080b0e1012131415151515141312100e0c0906030000000000000000000000000000000000000000000000000000000000000000000105090c0f11121414151515141312100d0b0704000005080a0a0a0a0a0a0a0a0a09070400000000000000000000000000040d172029323a424a51585e64696e7275787a7c7d7e7f7f7e7e7d7b7976736f6b66615b544e463f362e251c130a000000000000000000000000000000091623303c4956626f7b7d7d7d7d7d7d7d7c7063574a3d3024170a00000000000007121c27303a434c545b62686e7276797b7d7e7e7f7e7e7c7a7874706b665f5859656f74747474747474746f64584b3f3226190c0013202c3946535f6c787d7d7d7d7d7d7d7d73665a4d4034271a0d0013202c3946535f6c798693a0a2a2a194887b6e6154483b44515d6a7784919ea2a2a2968a7d7063564a3d3023170a00101c2936434f5c697683909ca9ac9f9386796d6053473a2d2114080000000000000000000000000000000000040f1a242f39434c565e676e767d83888d92969a9ea1a5a8aba8a5a19e9b9794908c87827d777069625a51483f352b21160c0100000013202c3946535f6c7986868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868685786b5f5245382c1f12000000000000000000000000000000000004090d101416191b1d1e1f1f201f1f1e1e1c1a181613100c080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920262b2e3030303037424e5a66727d898e8e8e8e8e8e8e8e82766b5f53473b2f241a130d05000000000000000000000000000000000000000000000005101a252f3a454f5a656f7a858f9aa5ada2978d82776c62574c41372c21160c0100000000050f1a25303a45505b65707b86919ba6aba0968b81766b61564b41362b21160b01000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100101c2834404b565f68717a80776d64717d8a95887b6e666f7882786f665d54493e32261a0d0013202c3946535f6c798693a0acb9c6d3dfececececdfd3c6b9aca09386796c5f5346392c20130000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a0100000000000000000000000000010a131a21262a2c2c2a27211b130b02000000000000000000000000000000000000000000000000000000000000000000000000000003070c101316191b1d1f20212222222121201e1c1a1815120e0a0601000000000000000000000000000000000000000000000000000000000000000004090d1114181a1c1e20212122222121201f1d1b1816120f0b06010000000000000000000000000000000000000000000000000000000004090d1215181b1d1f202122222221201e1c1a1714100b0c11141617171717171717171614100b0500000000000000000000010c151f29323b444c545c63696f757a7e828587898a8b8c8c8c8b89888583807b77726c665f58504840372e251c12080000000000000000000000000000091623303c4956636f7c898a8a8a8a8a8a7d7063574a3d3024170a0000000000030e19242e39424c555e666d73797e8285888a8b8c8c8c8b898784817c77716a635b687481818181818181807366594d4033261a0d0013202c3946535f6c79868a8a8a8a8a8a8173675a4d4034271a0d0013202c3946535f6c798693a0acaea194887b6e6154483b44515d6a7784919eaaaea3968a7d7063564a3d3023170a00101c2936434f5c697683909ca9ada194887b6e6255493c2f23170a00000000000000000000000000000000000a15202b36414b555e68707981888e94999ea2a6aaa8a5a29e9b9895928f8b8784807b76716c655f5850483f362d23190f0500000000131f2c3946525f6b7679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979766a5e5145382b1f12000000000000000000000000000000000000000004070a0c0e1011121313131212110f0e0c0907040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b32373b3c3c3c3c3c3d4955616d788282828282828282827d72665a4e4237302b251e170f07000000000000000000000000000000000000000000010c17212c37414c56616c76818c96a1aca69b90867b70655b50453a30251a100500000000000009131e29343e49545f69747f8a959faaa79d92887d72685d52483d32281d1208000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100121f2b3844515d68717a838980766d717d8a95887b6e6f78818b82786f665a4e4235291c100013202c3946535f6c798693a0acb9c6d3dfdfdfdfdfdfd3c6b9aca09386796c5f5346392c2013000000010910161a1e1f20202020202020202020202020202020202020201f1e1a16100901000000000000000000000000000000010910161a1e1f201e1b161009010000000000000000000000000000000000000000000000000000000000000000000000000003090e13181c202326282a2c2d2e2e2e2e2e2d2c2b292724221e1b16120d070200000000000000000000000000000000000000000000000000000000050b1015191d212427292b2c2d2e2e2e2e2e2d2b2a2725221f1b17120d080200000000000000000000000000000000000000000000000003090f15191e2125282a2c2d2e2e2e2e2e2d2b292623201c17171d2123242424242424242423201c17100800000000000000000009131d27313b444d565e666d747b81858a8e9194969798999998979694928f8c87837d77716a625a524940372d241a0f0500000000000000000000000000091623303c4956636f7c8996979797978a7d7063574a3d3024170a00000000000914202b35404a545e6770777e858a8e92959698989998979694908c88827c746d646975828e8e8e8e8e8b7e7265584c3f3225190c0013202c3946535f6c798693979797978d8173675a4d4034271a0d0013202c3946535f6c798693a0acaea194887b6e6154483b44515d6a7784919eaab0a3968a7d7063564a3d3023170a00101c2936434f5c697683909ca9afa3968a7d7064584b3f32261a0e06080a0b0a0804000000000000000000030f1b26323d48525d67707a838b92999fa5aaa8a4a09c9995928f8c8986827f7b77736f6b66605a544d463e362d241b11080000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b64594e4236291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b343c434749494949494744505c6872757575757575757575746c61554944403c36302921191007000000000000000000000000000000000000000007121d28333d48535d68737d88939ea8aa9f948a7f74695f54493e34291e130b0b0b0b0a080400020d17222d38424d58636d78838e98a3aea4998f84796f64594f44392f24190e030013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000000000000000815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e110013202c3946535f6c79838c92898076717d8a95887b6f78818a948b82766a5d5044372a1d110013202c3946535f6c798693a0acb9c6d3d3d3d3d3d3d3d3c6b9aca09386796c5f5346392c20130000000000050a0e1113131313131313131313131313131313131313131313110e0a0500000000000000000000000000000000000000050a0e111313110f0a050000000000000000000000000000000000000000000000000000000000000000000000000002080f141a1f24282c2f323537383a3b3b3b3b3b3a39383634312e2a27221e19130d0700000000000000000000000000000000000000000000000000030a10161c2125292d30333637393a3b3b3b3b3a39383634312e2b27231e19130d0700000000000000000000000000000000000000000000070e141a20252a2e313436383a3b3b3b3b3a39383533302c282322282d3030303030303030302f2c28221a12080000000000000005101b252f39434d565f6870787f868c91969a9da0a2a3a2a1a1a2a3a3a19e9b98938e89827c746c645b52493f362b21170c01000000000000000000000000091623303c4956636f7c8996a3a4a4978a7d7063574a3d3024170a00000000030e1a25313c47525c667079828990969a9ea1a3a4a5a6a5a4a2a09d98938d867e766d697683909b9b9b988b7e7164574b3e3125180b0013202c3946535f6c798693a0a4a49a8d8173675a4d4034271a0d0013202c3946535f6c798693a0a3a3a194887b6e6154483b44515d6a7784919ea3a3a3968a7d7063564a3d3023170a00101c2936434f5c697683909ca9b2a5998c8073675b4e42362a1e13131417171714100b05000000000000000814202c37434e59646f79838c949ca4aba8a29c9894908c898683807c7976736f6b67635f5a554f49423b342c241b12090000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483d31261a0e0000000000000003090d10121212121212121211100c080200000000000000000000000000000000060b0e111212121212121212110f0b0701000000000000000000000000000000000000000000000000000000000004101c28333d464e545656565656534e4b56606668686868686868686868635a5553504c47413a332b22190f06000000000000000000000000000000000000000c18232f3a444f5a646f7a858f9aa4a7a3988d83786d62584d42382d221717171717171614100b0506101b26313b46515c66717c87929ca7a7a0968b80756b60564b40362b1f13070013202c3946535f6c798693a0acada09386796d6053463a2d201307030302000000000000010203030815212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100121f2c3845515d69737c858e928980767d8a95887b78818a948c837a71675b4f4236291d100013202c3946535f6c798693a0acb9c6c6c6c6c6c6c6c6c6c6b9aca09386796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c131a20252b3034383b3f41434546474848484847464442403d3a37332e29241e18120b0300000000000000000000000000000000000000000000070e151b22272c3135393d40424446474848484847464543403e3b37332e2a241e18120b03000000000000000000000000000000000000010911181f262c31363a3e4143454647484848474644423f3c38342f2d34393c3d3d3d3d3d3d3d3d3c38332c241a10060000000000010c17222c37414b555f68717a828a91979da2a5a09c99979594949596989b9ea3a49f9a948d867e766d645b51483d33281e1308000000000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a0000000008131f2b37424d58636e78828b949ba1a6aaa6a19e9b99989898989a9c9f98918980766d7783909da8a4978a7d7164574a3e3124170b0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c7986939696969694887b6e6154483b44515d6a77849196969696968a7d7063564a3d3023170a00101c2936434f5c697683909ca9b4a89c8f83776a5e52463b2f251f1f21232423211c1710080000000000000c1824303c48545f6b76818b959ea6aca49d96918c8884807d797673706d6a66635f5b57534e49443e38312a221f1b160f0800000000000a16212c3740484f5253535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524e4840362b201509000000000000070e14191c1e1e1e1e1e1e1e1e1e1c19140d0600000000000000000000000000030a11171b1d1e1e1e1e1e1e1e1e1e1b17120c04000000000000000000000000000000000000000000000000000000000815212d39444f586063636363635f584e4e555a5b5b5b5b5b5b5b5b5e61636362605d58534c453d342b21170d030000000000000000000000000000000000000f1c2834404b56616b76818b969a9a9a9a91877c71665c51463b31262324242424242423201c1710080a141f2a353f4a55606a75808b969a9a9a9a92877d72675d52473c3023170b0013202c3946535f6c798693a0acada09386796d6053463a2d20130f0f0f0f0d090500060a0d0f0f0f0f15212e3b4854616e7b8894a1aeaa9e9184776a5d5144372a1e1100101d2935414c57616a737c858e9289807d8a95887b818a948c837a71685f554a3f33271a0e0013202c3946535f6c798693a0acb9b9b9b9b9b9b9b9b9b9b9b9aca09386796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070808080808080808080705010000000000000000000000000000000000080f171e252b31363b4044484b4e50525354555555545352514f4d4a47433f3a352f29231c150d06000000000000000000000000000000000000000109111920262d33383d4246494c4f515253545555545453514f4d4a47433f3a35302a231c150e0600000000000000000000000000000000010a131b232a31373d42464a4d505253545555545453514f4c48443f3a363e45494a4a4a4a4a4a4a4a48443e362c22180c010000000007121d28333e49535d67717a838c949ba2a7a09a94908c8a88888888898c8e92979ca3a59f98908880766d63594f453a2f24190e030000000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a000000000c1824303c47535e6a75808a949da5ada8a19a95918e8c8b8b8b8c8d9094989a92897f757784919eaaa4978a7d7063574a3d3024170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c79868a8a8a8a8a8a887b6e6154483b44515d6a77848a8a8a8a8a8a8a7d7063564a3d3023170a00101c2936434f5c697683909ca9b6ab9f93877b6f63574c41362e2c2c2d3031302d28221a120800000000020f1b2834404c5864707c87929da7ada39a928b85807b7874706d6a6764605d5a56534f4b47423e383432312f2e2b27211911080000000005101a252e373e43464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645433d362e241a0f0400000000000911192025292b2b2b2b2b2b2b2b2b28241f1810070000000000000000000000030c151c22272a2b2b2b2b2b2b2b2b2a28231d160e050000000000000000000000000000000000000000000000000000000b1724303d4955606a6f6f6f6f6f6a6055494a4e4e4e4e51575c62676b6e6f6f6f6c69645e574f463d33291f1409000000000000000000000000000000000000121e2b3844505c68727d888d8d8d8d8d8d8b80756a5f554a3f352a2c2f313131313131302d28211a130c0e18232e39434e59646e79848d8d8d8d8d8d8d84796e64584c3f33261a0d0013202c3946535f6c798693a0a2a2a09386796d6053463a2d201c1c1c1c1b1915100b11161a1c1c1c1c1c212e3b4854616e7b8894a1a2a29e9184776a5d5144372a1e11000d1924303b454e57616a737c858e9289808a9588818a948c837a71685f564d43392e22160a0013202c3946535f6c798693a0acacacacacacacacacacacacacaca09386796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101314151515151515151514110d0802000000000000000000000000000009111a212930363c42474c5054575a5c5e606161616161605f5d5b5956534f4b46413b352e271f170f070000000000000000000000000000000000020b131b232a31383e44494e5255595b5d5f6061616161615f5e5c5957534f4b46413b352e271f180f070000000000000000000000000000000a131c252d353c42484d5256595c5e6061616161615f5d5b5854504b453f4850555757575757575757554f483e34291e1206000000010c18232f3a45505a656f79838c959ea6a59d958f8984807d7b7b7b7b7d7f82868b9198a0a8a29a92897f756b61564c41362b1f14080000000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000003101c2834404c58646f7b86919ca6afa89f968f898582807e7e7e7f8184878c929991877d7784919eaba3978a7d7063574a3d3024170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c787d7d7d7d7d7d7d7d7a6e6154473b44515d6a767d7d7d7d7d7d7d7d7b6f6356493d3023160a00101c2936434f5c697683909ca9b0a7a0978b8074685d5348403a38393a3d3e3c39332c241a100600000005121e2b3743505c6975818d98a4aea59b9188817a746f6b6864615d5a5754514e4a47434345454442413f3d3c3a37322b231a11060000000009131c252c323739393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393936322c241b1208000000000008121b232b313538383838383838383735302a221a1006000000000000000000010c151e272e3337383838383838383837342e2820170d0300000000000000000000000000000000000000000000000000000c1825323f4b5865717c7c7c7c7c7164584b3f434950565c62686d73777a7c7c7b79756f6861584f453b31261b10040000000000000000000000000000000000131f2c3946525f6c79818181818181818181796e63594e43382e32383c3e3e3e3e3e3e3c39332c251d160f111c27323c47525d67727d81818181818181818074675a4d4134271a0e0013202c3946535f6c798693959595959386796d6053463a2d29292929292825211b161d22262829292929292e3b4854616e7b8894959595959184776a5d5144372a1e110008131f29333c454e57616a737b858e928b8f978d8b938c837a71685f564d443b31271c11060013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09386796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d20212121212121212121201e19140d0500000000000000000000000009121b232b333a41484d53585c606467696b6c6d6e6e6e6e6d6c6a6865625f5b56514c463f38312921191007000000000000000000000000000000020b141d252d353c43494f55595e6265686a6c6d6e6e6e6e6d6c6a6866635f5b57524c464039312a211910070000000000000000000000000008121c252e373f464d53595e6266696b6c6d6e6e6e6d6c6a6764605c57514a515a616363636363636363615a50453a2e22160a00000006121d2934404b56616c76818b959ea7a59c938b847d7874716f6e6e6f7073767a80878e969fa8a49b91877d73685d52473c3025190e0200000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000007131f2c3844505c6874818c98a3aeaaa0968d857e7975737271717274777b81878f968f847985929eaba3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00121e2b3744505c676e70707070707070706f685d514539424e5a656e70707070707070706f695f53473b2e22150900101c2936434f5c697683909ca9a99e959190857a6f645a514a46454647494a49443e362c22170c0100000713202d3946535f6c7885919da9aa9e93897f766f69635f5b5854514e4b4845413e41494f5252504f4d4c4a4947433d352c22180d02000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a12090000000000040f19242d353c42444545454545454544413b342c22180d02000000000000000008131e2731383f43454545454545454543403932291f150a00000000000000000000000000000000000000000000000000000b1825323e4b5864717d8989898073675b4f4a4f555b61676d73797e838789898885817a736a61574d42372c21150a0000000000000000000000000000000000121f2b3844515d687173737373737373737371675c52473c32343d44484a4a4a4a4a4a49443e362f2820191215202b36404b56616b737373737373737373736f64584c4033261a0d0013202c3946535f6c798688888888888886796d6053463a36363636363635322d2620282e32353636363636363b4854616e7b8888888888888884776a5d5144372a1e1100020d17212a333c454e576169727b858e979a9f99958c837a71685f564d443b32291f150b000013202c3946535f6c798693939393939393939393939393939393939386796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d23292c2e2e2e2e2e2e2e2e2e2d2a251f170f060000000000000000000009121b242d353d454c53595e64686c70737678797a7b7b7b7a79787774726f6b67625d57514a433b332b2219100600000000000000000000000000010b141d262f373f474e545b60656a6e717476787a7b7b7b7b7a797775726f6b67635d57514a433b332b221a1007000000000000000000000005101a242e37404951585f656a6e727577797a7b7b7b7a797674706c68625c5558636c70707070707070706c62564a3e3225190c0000000b17232e3a45515c68737d88939da7a79d938a8179726c67646261616263666a6f757c848d97a1aba3998f847a6f63584d41362a1e130700000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a0000000a16222f3b4854606c7985919da9afa4998e847b736d696665646466686b70767d858d968b8085929faca3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000f1c28343f4a555d626363636363636363635e564c41353d49535c626363636363636363635f574d42372b1f130600101c2936434f5c697683909ca9a6998d848c8b81766c635c565352525355575550483e34291d120600000815222e3b4854616e7a8794a0ada6998e82776d645d58534f4c4845423e3b38353f49535b5f5f5d5b5a585755534f473e342a1e130700000000010910161a1e1f202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1e1a150f080000000000000915202b353f474d5151515151515151514d463e342a1f130800000000000000030e19252f39424a4f5151515151515151504b443b31261b1004000000000000000000000000000000000000000000000000000a1723303d4956636f7c89959083776b6057565a60666c72797f858a8f93959694918c857c73695f54493d32261a0f0300000000000000000000000000000000101c2835404c576066676767676767676767655f554b4035323d464e54575757575757554f484139322b241c1519242f39444f596266676767676767676767645d53483c3024170b0013202c3946525f6c787b7b7b7b7b7b7b7b786c60534642424242424242413d38302a32393f42424242424242424754616d797b7b7b7b7b7b7b7b766a5d5044372a1e110000060f18212a333c454e576069727b858e979f958c837a71685f564d443b322920170d04000013202c3946535f6c798686868686868686868686868686868686868686796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f272f34393b3b3b3b3b3b3b3b3b3936302921180e03000000000000000008121b242e373f474f575e646a6f74797c808284868788888887868583817e7b77736e68625c554d453d342b22180e0400000000000000000000000009131d262f38414951585f666c71767a7e8183858687888888878684827e7b78736e69635c554d453d342c22190f05000000000000000000010c17222c364049525b626a70767a7e82848687888888878583807d78736d675f5b67747d7d7d7d7d7d7d7d7366594d4033261a0d000004101c27333f4b56626d79848f9aa5aba0968b81786f67615b5856545455575a5e636a727b858f99a4aba1968b8075695e52473b2f23170b00000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a0000000c1825323e4b5763707c8995a1adaa9e93877c7269615c5a585758595b5f646b727b848e928787939faca3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000b17232e39434b5256565656565656565656534c443a2f37414a5155565656565656565656534d453c31261a0f0300101d2a3643505d697683909ca9a5998c7f8892887e756d6762605f5f606264615a50453a2e22160900000916222f3c4855626f7b8895a2aea3968a7d71655b534c47433f3c3835322f2c3844505b656b6b6a68676563625f5950463b2f23170b000000000000050a0e11131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110e0a04000000000000000e1a26313d4751595e5e5e5e5e5e5e5e5d5850463b3024190d0200000000000008141f2a36414b545b5e5e5e5e5e5e5e5e5c564d43382c201408000000000000000000000000000000000000000000000000000815222e3b4754616d7a869394887d72696463666b71777d848a90969b9fa2a3a19d968e857b70655a4e43372b1f1307000000000000000000000000000000000c18242f3a454e55595a5a5a5a5a5a5a5a5a59544d43392f38444e5860646464646464615a534b443d352e271f181d28333d4750575a5a5a5a5a5a5a5a5a5a58534b41362b20140800121e2b3743505b666d6f6f6f6f6f6f6f6f6d665c504f4f4f4f4f4f4f4f4e49423a323c444a4e4f4f4f4f4f4f4f4f515d676e6f6f6f6f6f6f6f6f6d64594e4235291c10000000060f18212a333c454e576069727b85929c8f837a71685f564d443b322920170e05000000131f2c3946525f6b767979797979797979797979797979797979797979766b5f5246392c1f13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273139404547484848484848484846413b332a20150a0000000000000005101a242d374049515961686f757b8085898c8f919394949594949392908e8b87837f7a746d665f574f463d342a20160c010000000000000000000007111b252f38414a535b636a71777d82868a8d909293949595949392908e8b88847f7a746d675f574f473e342b21170d03000000000000000007121e29333e48525b646d747b81868b8e9192949495949392908d89847e78716a616875828a8a8a8a8a8a7e7265594c3f3326190d00000814202c3844505c67737e8a95a1aca69a8f84796f665d56504b494848494a4e52586069737d88939ea9a89d91867a6f63574b3f33271b0f03000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a0000000e1b2734404d5966737f8c98a4b1a69a8e82766b6057504d4c4b4b4c4f53596169727c8690929299a3afa3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0006121c2731394146494c4c4c4c4c4c4c4c4a47423a32282f384045494b4c4c4c4c4c4c4c4a47423c332a1f15090000101d2a3643505d697683909daaa5988c7e848f91888078736e6c6b6c6d6e716c62564a3e3125180c00000916222f3c4955626f7c8995a2aea295887b6e625549413b3733302c2a2b2e333c4854606c777876757372706e6b62574c3f33271a0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6b6b6b6b6b6b6b6962584c41352a1e13070000000000020e1925303c47535d666b6b6b6b6b6b6b6b675f54493d3024180b000000000000000000000000000000000000000000000000000613202c3945525e6b778490998e847a74707072767c83898f959ba1a5a1a0a0a1a5a0978d82766b5f53473b2f23170b0000000000000000000000000000000007131e29333c44494d4d4d4d4d4d4d4d4d4d4c49433b322f3c4854606a7071717171716c645d564e474038312a231b212c353e454b4d4d4d4d4d4d4d4d4d4d4c4741392f251a0f03000f1b27333f4a545c616262626262626262615c54595c5c5c5c5c5c5c5c5a544c423a444e565b5c5c5c5c5c5c5c5b57555d616262626262626262615b52483d3125190d0000040d161f28313a434c555e677079828b9591938980776e655c534b42392f261e150c020000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18242f39434b51545454545454545454524d453c31261b0f040000000000020d17212c353f49525b636b737a81878c9195989b9d9fa0a1a2a1a1a09e9c9a97948f8a857f78716961584f463c32281e1308000000000000000000030e18232d37414a535c656d747c82888e92969a9c9ea0a1a1a2a1a09f9d9b9894908b857f787169615850463d33291f140a00000000000000010d18242f3a454f5a646d767e868d92979a9d9fa0a1a2a1a09e9c9995908a837b736b6976828f979797978b7e7165584b3e3225180b00000b1824303c4854606c7884909ba7aca094897d72685d544b443f3c3b3b3c3e42474e57616b76818d98a4aea3978b8074685c5044372b1f1307000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a000000101c2936424f5b6875828e9ba7afa2968a7d7165594e45413f3e3e4043484f57606a747f8a959ea3abb0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000b17232e39444d5458595959595959595650473d32272d38424b5358595959595959595751493f34291d12060000111d2a3744505d6a7783909daaa4988b7e7f8b97918a847e7b797879797b7d7266594c403326190d00000915222f3c4855626e7b8895a1aea295887b6e6255483e3a3836363636383a3f454e5864707c858382807e7d7b74685b4e4235281c0f0200000000000004080b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b080400000000000000121f2c3845525e6a757878787878787874695d52463b2f24180d010000000008131f2a36414d58636f78787878787878787165594c3f3326190d0000000000000000000000000000000000000000000000000004111d2a36434f5c6874818d99968d85807d7c7e82888e949aa0a39e9895939395989e9e93877b7064584c3f33271b0e02000000000000000000000000000000020c17212a32383d40404040404040404040403d383129313e4a5764707c7d7d7d7d7d766f676059514a433c342d261e232c343a3e404040404040404040403f3c362f261d130800000b17222d38424a5155555555555555555555515c646969696969696969665e53483f4b566067696969696969696862585255555555555555555554504940362c20150900010b161f28313a434c555e677079828b948b858d928981776e655d544b423930271e140900000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b555c6161616161616161615e574d43382c201407000000000009141e29333d47515b646d757d858c92989da1a5a39f9d9b9a9a9a9a9b9da0a3a3a09b96908a837b736a61584e443a2f251a0f0400000000000000000a151f2a343f49535c656e777f868d94999ea2a4a09d9a999898999a9c9fa2a4a09b96908a837b736a62584f453b31261c110600000000000006121e2935404b56616c76808890989ea3a7a9a5a19f9d9c9c9c9c9ea09b958d857d746a7683909da4a4978a7d7164574b3e3124180b00020f1b2734404c5864707c8994a0aca79b8f84786c61564c423933302e2e2f32363c454f5a65707c88939faba89c9084786c6054473b2f23160a000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a000000111e2a3744505d6a7683909ca9aca093877a6e6155493d3432313233373d454e58626d7884909ba7b3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000f1b28343f4b555f656666666666666661594f44382c323e49545d6466666666666666625b51453a2e2215090000111e2a3744505d6a7784909daaa4978b7e7a86919c958f8b878685858688807366594c403326190d00000814212e3b4754616d7a8693a0aca396897d716459504a47444343424344474a5057606a75818c908e8d8b898074675b4e4235281b0f0200000000030a101417191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191714100a040000000000121f2c3945525f6b77838585858585857a6e63574c4035291e1307000000020d1924303b47525e6975808585858585857d7266594c4033261a0d00000000000000000000000000000000000000000000000000010e1b2733404c5864717d89949f97908c8a898b8e93999fa59e98928d888686888d939b988c8074685b4f43362a1e110500000000000000000000000000000000050f1820272d313334343434343434343433312c2624313e4a5764717d878a8a8a888179726b635c554d463f3730292122292e323434343434343434343433302b251d140b01000006111c26303840454848484848484848484a56626e75757575757575757065594c434f5c687275757575757575746a5e5248484848484848484848443f372e251a0f040007121d28313a434c555e677079828b948b827a848d938a81776f665d544b423930261b1005000a16212c3740484f525353535353535353535353535353535353535353524f4840372c21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3945515d676d6e6e6e6e6e6e6e6e695f54483c3023170a00000000040f1a25303b454f59636d767f878f969da3a7a19b9793908e8d8d8d8e8f9194979ca1a7a29b958d857c736a60564c41362b20150a0000000000000005101b26313c46515b656e77808991989fa5a39d9894908e8c8c8c8c8d8f92969ba0a6a29b958d857c746a61574d42382d22170c0100000000000a17222e3a46515d68737d88929aa2a9aba49e999592908f8f8f909194979c978f867c737784909daaa4978a7d7064574a3d3124170b0005121e2b3743505c6874818d99a5afa3978b7f73675b50453a302823222123252a333d48545f6b77838f9ba7aca094887c7063574b3f3226190d000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a000000121f2b3845525e6b7884919eabaa9e9184786b5f5246392d262525272b333c46515c67737f8b97a3afb0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0000111e2b3744505c6770737373737373726b6054483c2f35424e5a666f737373737373736d62564a3e3124180b0000111e2b3744515d6a7784919eaaa4978a7d75808c97a09b9794929292938c807366594c403326190d00000613202c3945525f6b7884909da9a5998d81756b625b565351504f4f505153575b6169727c86929c9b9995897d7064584b3f33261a0d01000000050d151b20242526262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262524201c150e0600000000111e2a37434f5b66727d89929292928b8074685d51463a2f23180d01000008131e2a35414c58636f7a86919292928f83786c61564a3e3125180c00000000000000000000000000000000000000000000000000000b1724303c4854606c78848f9aa19c989696979a9fa4a099938d87817c79797c8189929c9084776b5f5246392d2014070000000000000000000000000000000000060e161c2125272727272727272727272624211b23303c4955616c757e889197928b847c756e665f585049423b332c251e22252727272727272727272726241f1a130b02000000000a141e262e34393b3c3c3c3c3c3c3c3e4b5764717e8282828282828173675a4d44505d6a7782828282828282796d6053463c3c3c3c3c3c3c3c3b38342d251c130800000c18232f39434d555e677079828b948b8279717a848d938a81786f665d544b42372c21150a0005101a252e373e4346464646464646464646464646464646464646464646433e372e251a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4854616d797b7b7b7b7b7b7b7a7164584b3e3125180b000000000a15202c37424c57616b757f889199a1a8a39c958f8a878482818080818284878b90959ca3a69f978e857c72685d53483d32261b10040000000000000b16212d38434d58626d76808a929ba3a8a099928c888481807e7e808183868a8f959ca3a69f978f867c73695f544a3f34291d120700000000020e1b27333f4b57626e79848f9aa3acaba29a938d8986848282828385878b9096988e857a7784919eaaa4978a7d7063574a3d3024170a000814212d3a46535f6b7884919da9aca093877b6e62564b3f33281e1715151619212c37434f5b67737f8b98a4b0a4988c8073675a4e4135291c10030000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a000000131f2c3946525f6c7985929faca99c8f8376695d5043372a1e18181a212a343f4b57626e7b87939facb0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0001121f2c3845525f6b788080808080807d7063574a3d303643505d69768080808080807e7265594c3f3226190c0000111e2b3844515e6b7784919eaba3968a7d707a85909aa4a3a19f9f9f998c807366594c403326190d000004111e2a37434f5c6874818d99a4a99d92877d736c6662605e5d5c5c5d5e6063676c737b848e98a3a79c9085796d6154483c3023170b000000050e171f262c3032323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232302c2720180f050000000e1b27333e4a55606c77838e9a9e9c9185796e62574c4035291e120700020d1924303b46525d6974808b979e9e94897d72675b5044392d21150900000000000000000000000000000000000000000000000000000814202c3844505b67727d88929ba4a5a3a3a4a5a09b958e88827b75706d6d7077808a9593877a6e6155483c2f23160a000000000000000000000000000000000000040b1015181a1a1a1a1a1a1a1a1a1a1a181514212d3945505a636c767f88919b958e878078716a625b544c453e362f2820191a1a1a1a1a1a1a1a1a1a1917130e08010000000000020c141c23292d2f2f2f2f2f2f2f313e4b5764717e8b8f8f8f8f8d8173675a4d44505d6a77848f8f8f8f8f86796d6053463a2f2f2f2f2f2f2f2e2c28221b130a010000101c2834404b555f677079838c948b82797068727b848d938a81786f665d54493e32261a0d000009131c252c32373939393939393939393939393939393939393939393937322c251c130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b888888888888887e7165584b3e3225180b000000040f1b26323d48535e69737d87919aa3aba299918a847e7a77757373737475787b7f848a9199a1a9a0978e84796f64594e43372c201509000000000005101c27333e49545f6a747e89929ca4a89f968e87817b78757372727374767a7e848a9199a2a9a1988e857b70665b50453a2f23180c0000000006121e2b37434f5b67737f8a96a1acada2999088817c797776757576787b80858b92968c827885929eaba3968a7d7063564a3d3023170a000a1723303c4955626e7b8794a0aca99c9084776b5f52463a2e22170c0808090f1b26323e4b57636f7c8895a1aea89b8f82766a5d5144372b1e12050000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca89b8e8275685b4f4235291c0f0b0f18232e3a46525e6b7784909ca9b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0004121f2c3945525f6b78858c8c8c8c8a7d7063574a3d313743505d6976838c8c8c8c8c7f7265594c3f3326190c0000121f2b3845515e6b7885929ea2a296897c6f747e89929ba2a7aaaca6998c807366594c403326190d0000020e1b2734404c5864707c88939ea9a3998f867e77726f6c6a696969696a6c6f73787e858d96a0aaa1968b8074685c5044382c2014070000010c16202931383c3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d38322a21170d0200000a16222d38444f5b66727d89949fa1968b7f73685c51453a2f23180c0107131e2a35414c57636e7a85919ca59a8f83786c61564a3f33281d1105000000000000000000000000000000000000000000000000000004101c27333f4a56616b76808992999d9f9f9d9a958f89837d77706a646060656e798490968a7d7064574b3e3225180c000000000000000000000000000000000000000005090c0d0d0d0d0d0d0d0d0d0d0d0b08111c28333e48515a646d767f89929b99918a837b746d655e574f484139322b22190f0d0d0d0d0d0d0d0d0d0b07030000000000000000020b12181d2022222222222224313e4b5764717e8b989c9c9a8d8173675a4d44505d6a7784909c9c9c9386796d6053463a2d22222222222222201c17110901000000121f2b3844505c677179838c948b827970676069727b848d938a81786f655a4e4235291c100000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894949494948b7e7165584b3e3225180b0000000915202c37434e5965707a858f99a3aca29990878079736e6b6867666667696b6f737980878f98a1a9a0968b81766b5f54493d31251a0e02000000000a15212d38444f5a66717b86909aa4aaa0968d847c75706b6866656566676a6e72787f879099a3aaa0978d82776d62564b4034291d11050000000915222e3a47535f6b77848f9ba7b1a69b90877e76716d6a696868696c6f737980889094897e85929eaba3968a7d7063564a3d3023170a000c1926323f4b5864717d8a97a3afa69a8d8174685b4f43362a1e12060000000a16222f3b4754606d7986929fabab9e9285786c5f53463a2d2014070000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79b8e8174675b4e4134281b0e0206121e2a36424f5b6874818e9aa7b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0006131f2c3946525f6c7986929999978a7d7164574a3e313744505d6a7784909999998c807366594c403326190d0000121f2c3945525f6b78859295959595887c6f6c76808990969b9d9fa0998c807366594c403326190d0000000b1824303c4854606b76828d97a1aaa1988f89837e7b79777675757677797b7f83898f979fa8a3998f84796e63574c4034281c1004000007131e28323b43484b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c49433c33291f1408000005111c27333e4a55606c77838e9aa59c9085796e62574b4034291d12060d18242f3b46525d6974808b97a2a094897d72675b5044392e22170b000000000000000000000000000000000000000000000000000000000b17222e39444f5a646e7780878d919293918e89847e78726c655f5954545c6874808c938c7f7266594d4033271a0d0100000000000000000000000000000000000000000000000000000000000000000000000c17222c363f48525b646d768089929b9c948d867e777068615a534b443d342b21160b000000000000000000000000000000000000000000070c111415151515151824313e4b5764717e8b98a4a79a8d8173675a4d44505d6a7784909da9a09386796d6053463a2d2015151515151513100b06000000000013202c3946535f6c79838c948b827970675e576069727b848d938a81766a5d5044372a1d11000000010910161a1e1f20202020202020202020202020202020202020201f1e1a161009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a1a1a1988b7e7165584b3e3225180b0000010d1925313d48545f6b76818c97a1aba49a90877e756e67625e5b5a595a5b5c5f63686e757d868f99a3a89d92877c7065594e42362a1e1105000000020e1a26323e4955606c77828d98a2aca3988e847a726b645f5c595858595b5e62676d757e87919ba6a99e94897e73685c5145392d22160a0000000b1824313d4a56626f7b8794a0acaba094897e746c65605e5c5b5c5d5f63686e767e8790908585929faca3968a7d7063564a3d3023170a000e1b2734414d5a6773808c99a5b1a4988b7e7265594c4033271a0e0200000006131f2c3845515e6a7784909da9ada094877b6e6155483c2f2216090000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01020e1a2733404d5966727f8c98a5b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000613202c3946535f6c7986939fa4978b7e7164574b3e313744515d6a7784919da6998d807366594d4033261a0d000013202c3946535f6c79868888888888887b6e656e777e858b8e919293928c807366594c403326190d0000000814202c37434f5a65707b858f98a0a8a19a948f8b888584838282838486888b8f949aa1a9a29a91877d73685d52463b2f23180c0000000c18242f3a444d5458595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595958554e453b3025190d0100000b16222d38444f5b66727d89949fa1968a7e73685c51453a2e23170c131e2935404c57636e7a85919ca59a8f83786c61554a3f33281d11060000000000000000000000000000000000000000000000000000000006111d28333d48525c656e767c8184868684827d78736d67615a544e484b5764707d8686868174685b4e4235281c0f02000000000000000000000000000000000000000000000000000000000000000000000005101a242d364049525b646d768089929c9f989089827a736c645d564e463d33281c1105000000000000000000000000000000000000000000000407080909090b1824313e4b5764717e8b98a4a79a8d8173675a4d44505d6a7784909daaa09386796d6053463a2d20130909090908070400000000000000121f2c3845515e69737c868b827970675e554e576069727b848d847b71675b4f4336291d100000000000050a0e1113131313131313131313131313131313131313131313110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000006121e2a36424d5965707c87939ea8a89d93887e756b635c56524f4d4d4d4e5053575c636b737d87919c9d9a968d82766a5e5246392d20140700000006121e2b36424e5a66717d88939fa9a79c91867c72696059534f4d4c4c4d4e51565c636c757f8a95a0aba59b8f84796d61564a3e32261a0e0200000d1a2733404c5965727e8b97a3b0a79b8f83786d625a54514f4f4f5053575d646c757e88938e8e96a2aea3968a7d7063564a3d3023170a00101c2936424f5c6875828e9ba8afa296897d7063574a3d3124180b0000000004101d2936424f5c6875828e9ba8afa296897c7063564a3d3024170a0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000c1825323e4b5864717e8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000713202d3a4653606d798693a0a4988b7e7165584b3e323844515e6b7784919ea69a8d8073675a4d4034271a0d010013202c3946525f6c777b7b7b7b7b7b7b796d61656d747a7e828486868583807366594c403326190d000000030f1b27323e49545f69737d868e969da3a59f9b97949290908f8f90909294979ba0a5a49e9790887f756b61564c40352a1e1307000000101c2834404c565f6565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656560574d41362a1d1105000005111c27333e4a55606c77838e9aa59b9084796d62564b3f34281d1118242f3a46515d6874808b96a2a094897d72665b5044392e22170b0000000000000000000000000000000000000000000000000000000000000b16212c36404a535c646b71757879797875716c67615c554f49433d4855616d787979797973675b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000000000000008121b242e374049525b656e77808a939ca29b938c857d766f6760584f44392d211508000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8b98a0a09a8d8173675a4d44505d6a7784909da0a09386796d6053463a2d20130700000000000000000000000000101d2935414d58616a737c827970675e554c454e576069727b847b72695f564b3f33271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000a16222e3a46525e6a76818d99a4aea2978c81766c625a524b46424140404143464b5159616b757f8a94918d8a86837a6e6154483b2e2115080000000a16232f3b47535f6b76828e99a5ada2968b80756a60574e4843403f3f4042454a515a636d78838f9aa6aca1958a7e72665a4e42362a1e120600000f1c2835424e5b6874818d9aa6b0a3978b7e73675b51484543424244474b525a636c76818c979aa0a8b0a3968a7d7063564a3d3023170a00111e2a3744505d6a7683909da9aea194887b6e6255483c2f22160900000000000e1b2734414d5a6773818d9aa6b1a4978b7e7164584b3e3225180c0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1724313d4a5763707d8a97a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000714202d3a4753606d798693a0a5988b7e7165584b3f323845515e6b7784919ea79a8d8173675a4d4134271a0e0100121e2b37434f5b666d6e6e6e6e6e6e6e6d675c5b62696e72757779797877746e63574b3e3225190c000000000a16212c37424d57616b747c848b92979ca0a3a3a19f9d9c9c9c9c9d9fa1a4a4a19d98938d867e766d63594f453a2f24190d02000000121f2b3844515d6871727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727271695e5246392d2013070000000b16222d38444f5b66727d89949fa1958a7e73675c5045392e22171e2935404c57626e7985909ca59a8f83786c61554a3f33281c110600000000000000000000000000000000000000000000000000000000000005101a242e38414a52596065686b6c6c6b6965615c56504a443e373945515c666c6c6c6c6c6961574b3f33261a0d010000000000000000000000000000000000000000000000000000000000000000000000000009121b252e374049535c656e77818a939ca09e978f888179726a6155493d3124180b000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8b939393938d8173675a4d44505d6a7784909393939386796d6053463a2d201307000000000000000000000000000d1925303b464f58616a747870675e554c433c454e5760697279726960574d44392e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0d0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00010d1926323e4a56626e7a86929ea9a99d91867a6f655a5048403a3634333335373a40474f59636e79848885817e7a77736a5f53463a2d2114070000010e1a26323f4b57636f7b87939faaa89d91857a6e63584e453d373432323335393f48515c67727d8995a1ada69a8f83776b5f52463a2e2215090000111d2a3743505d6976838f9ca9ada094877b6f62564a3f38363536373b4048515a656f7a86919da9b1b0a3968a7d7063564a3d3023170a00121f2b3845515e6b7784919eaaada093877a6d6054473a2e21140800000000000d192633404c5966727f8c99a5b2a5988c7f7265594c3f3326190c0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000714202d3a4753606d7a8794a0a5988c7e7265584c3f323845515e6b7885929ea79a8e8174675a4d4134271a0e01000f1b27333f4a545c6161616161616161615d5551575d6266696b6c6c6c6a68645c52473b2f23160a0000000005101b26313b454f59626a727980868b909497999b9d9e9f9fa09f9e9d9c9a9794918c87827b746c645b51483d33281e13070000000013202c3946535f6c797f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7a6d6154473a2e21140700000005111c27333e4a55606c77838e9aa59b8f84786d61564a3f33281c232f3a46515c68737f8a96a19f94897d72665b5044392d22170b000000000000000000000000000000000000000000000000000000000000000008121c262f3840484e54595c5e5f5f5e5c5955504b453f39332c34404a545b5f5f5f5f5f5e584f453a2f23170a00000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e37414a535c656f78818a9393939393928b847c7265584c3f3226190c000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8686868686868173675a4d44505d6a7784868686868686796d6053463a2d2013070000000000000000000000000008141f2a343d464f58626a6c675e554c433a333c454e5760686c6860574e453b32281d1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1c1c1c1c1c1c1a16110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0004101d2935424e5a66737e8b97a3afa4988c8175695e53483f362e2a272627282a2f353d47515c68737f7c7875716e6a6761584e42372a1e1205000004111d2a36424f5b6773808b98a3afa4988c8074695d52473c332b27262527292e363f4a55616d7884909ca9ab9f93877b6f62564a3d3125180c0000121e2b3845515e6b7784919eaaab9e9285786c5f53463a2e2929292b2f363f48535e6975818c98a4b0b0a3968a7d7063564a3d3023170a00121f2c3945525f6c7885929fabac9f9286796c5f5346392d20130600000000000c1825323f4b5865717e8b98a5b1a6998d807366594d4033271a0d0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000714212e3a4754616d7a8794a1a5998c7f7265594c3f323845525f6b7885929fa79b8e8174675b4e4134281b0e01000b17222d38424a51545555555555555554514b464c52565a5c5e5f5f5f5e5b58524a40352a1e1307000000000009141f29333d47505860686f757a8084878a8d8f90929292939292918f8d8b8885817b767069625a52493f362c21170c010000000013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877a6d6154473a2e211407000000000b16222d38444f5b66727d89949fa095897e72675b5044392d222934404b57626e7985909ca59a8e83786c61554a3f33281c11060000000000000000000000000000000000000000000000000000000000000000010a141d262e363d43484d5052535352504d49443f3a342e28232e38424a505253535353514d463d33291e1206000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252f38414a535d666f788186868686868686867f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000b1724313e4a57637079797979797979797266594d43505c697479797979797979766b5f5346392d20130600000000000000000000000000020d18222b343d4650585e5f5c554c433a312a333c454e565d5f5d574e453c332920160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161c222628292929292826221c160e0500000000000000000000000000000000000000000000000000000000000000030406070808080707050815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000713202c3845515e6a76838f9ba7aca094887b7064584d42372d241d1b1a1a1b1e242b35404b57636d726f6c6965625e5b564f463c31261a0e0200000714202d3945525e6a77838f9ca8ada194887c7064584c41352a211b19191a1d242e3944505c6874818d99a5afa3978b7e7266594d4134281b0f0200121f2c3945525f6c7885929faba99d9083766a5d5144372b1e1c1c1e242d37414d5864707c8894a0adb0a3968a7d7063564a3d3023170a0013202c3946535f6c7986929facac9f9285786c5f5245392c1f120600000000000b1824313e4b5764717e8b98a4b1a79a8d8173675a4d4034271a0e0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000815212e3b4854616e7b8794a1a6998c7f7366594c40333946525f6c7985929fa89b8e8175685b4e4235281b0f020006111c262f383f4548484848484848484845403b41464a4d5052525352514f4c4740382e24190e020000000000030d17212b353e464e565d64696f73787b7e8182848586868686858483817e7c7874706b655f58504840372d241a0f05000000000013202c3946535f6c7986939999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999994877a6d6154473a2e2114070000000005111c27333e4a55606c77838e9aa59a8f84786c61554a3f33282f3a45515c68737f8a96a19f94897d72665b5044392d22170b00000000000000000000000000000000000000000000000000000000000000000000020b141c242b32383c40434546464543413d39332e28231c1c2630383f43464646464645413c342b21170c0100000000000000000000000000000000000000000000000000000000000000000000000000000000010a131d262f38414b545d666f787979797979797979797165584b3f3225190c000000000000000000000000000000000000000000000000000000000916222f3b47535e676c6c6c6c6c6c6c6c6960554a404c58626a6c6c6c6c6c6c6c6b645a4f43372b1e12050000000000000000000000000000061019222b343e464d5253504b433a3128212a333c444c5153514c453c332a21170e040000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1720272e32353636363635322e2720170e04000000000000000000000000000000000000000000000000000003070a0d0f1113141415151413121015222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000916222f3b4854616d7986929eaba99c9084786b5f53473c30252222222222222222232f3b46515b626563605c5955524e4b453d342b2015090000000a16232f3c4855616e7a86939fabaa9d9185786c6054473b3024190f0c0c0d121c2834404c5864707d8996a2afa79a8e8275695c5043372a1e11050013202c3946535f6c7986929faca89b8f8275685c4f4236291c100f121b25303c4854606c7885919daab0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000815222e3b4855616e7b8894a1a6998c807366594c40333946535f6c7986929fa89b8e8275685b4e4235281c0f0200000a141d262e34383b3b3b3b3b3b3b3b3b393530353a3e41434546464544423f3c362e261c120700000000000000060f19232c343d444c52585e63676b6f71747577787979797978777674726f6c68645f5a544d463e362e241b120800000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094877a6d6154473a2e21140700000000000b16222d38444f5b66727d89949fa095897d72665b4f44392d343f4b56626d7984909ba59a8e83776c61554a3f33281c11060000000000000000000000000000000000000000000000000000000000000000000000020a121a20262c303437383939383734312d28231d1711141e262d333739393939393835302a22191005000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141d262f39424b545d666c6c6c6c6c6c6c6c6c6c685f54483c3024170b0000000000000000000000000000000000000000000000000000000007131f2b37424c555c5f5f5f5f5f5f5f5f5d574e443b4650595e5f5f5f5f5f5f5f5f5a52493e33271b0f02000000000000000000000000000000071019222c343c424546443f3931281f18212a323a40444645413a332a21180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16202932393e4242424242423e39322920160b000000000000000000000000000000000000000000000000050a0f1316191c1e1f2021212121201f1d1b222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000b1824313e4a5763707c8995a2aea69a8d8174685c4f43372f2f2f2f2f2f2f2f2f2f2f2f353f495157595754504d4946423f3a332b22190f060000000c1825323e4b5764707d8996a2afa79b8e8275695c5044372b1f13070000010c1723303c4855616d7a86939facaa9d9184786b5f5246392c2013070013202c3946535f6c798693a0aca89b8e8174685b4e4135281b0f0209141f2b3744505c6975828e9ba7b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000815222e3b4855616e7b8895a2a69a8d807366594d40333946535f6c798693a0a89c8f8275685b4f4235281c0f020000020b141c23282c2e2e2e2e2e2e2e2e2e2d2924292e31343738393939383633302b241c140a00000000000000000007101a222b323a41474d52575b5f626567696a6b6c6c6c6c6b6a69676563605c58534e48423b342c241b12090000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393877a6d6154473a2e211407000000000005111c27333e4a55606c77838e9aa59a8f83786c61554a3e333a45515c68737e8a96a19f94897d72665b4f44392d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000080f151b2024282a2c2c2c2c2a2825211c17120c060c141c22272b2c2c2c2c2c2c29251f1810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d263039424b545c5f5f5f5f5f5f5f5f5f5f5d564d43382c20140800000000000000000000000000000000000000000000000000000000030e1a25303a434b505353535353535353514c453c353e474e5253535353535353524f4940372c21160a000000000000000000000000000000000007101a222a3136383938342e271f160f1820292f3538393835302921180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000006111d27323b444a4e4f4f4f4f4e4a443b32271d1106000000000000000000000000000000000000000000050b11161b1f2326282a2c2d2e2e2e2e2d2b2a27252e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000d1a2633404c5965727e8b98a4b0a4978b7e7165584c403c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3f464a4c4b4744403d3c3c3c3a36302921180e0300000e1a2733404d5966727f8c98a5b1a5988c7f73665a4d4134281b0f030000000714202c3945525e6b7784919daaaca093877a6d6154483b2e2215080013202c3946535f6c798693a0aca79a8e8174675a4e4134271b0e01030f1b2834414d5a6673808c99a6b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120600000000000b1824313e4b5764717e8b97a4b1a79a8d8174675a4d4134271a0e0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000915222f3c4855626f7b8895a2a79a8d8173675a4d40343a4653606d798693a0a99c8f8275695c4f4236291c0f03000000020a11181c20212222222222222222201d191e2225282a2b2c2c2c2b2927231f19120a020000000000000000000007101921282f363c42474b4f5356585a5c5d5e5f5f5f5f5f5e5d5b595653504c48433d37312a221a1209000000000000000013202c3946535f6c7986868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867a6d6154473a2e2114070000000000000b16222d38444f5b66727d89949fa094897d72665b4f44383f4b56626d7884909ba59a8e83776c61554a3e33281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f14181b1d1f20201f1e1b1815100b060100020a11171b1e20202020201f1d19140e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141e273039424a5053535353535353535353514c443b31261b1004000000000000000000000000000000000000000000000000000000000009141e2831394044464646464646464645413b332c353c42454646464646464646433e372e251b10050000000000000000000000000000000000000710181f25292c2c2b28231d150d060e171e24292b2c2b29241e170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222e39444d555b5c5c5c5c5b554d44392e22160a00000000000000000000000000000000000000020a10171c22272b2f323537393a3b3b3b3a39383634312e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000f1b2835414e5b6774818d9aa6aea295897c6f6356494848484848484848484848484848484848484848484848484848484846423b332a1f150a00000f1c2935424e5b6874818e9aa7b0a3968a7d7064574b3e3225190c0000000004111d2a3643505c6975828f9ba8aea295897c6f6356493d3023170a0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000c1925323f4b5865717e8b98a4b0a3968a7d7063564a3d3023170a00131f2c3946525f6c7986929facac9f9286796c5f5346392c20130600000000000b1825323e4b5865717e8b98a4b1a69a8d8073675a4d4034271a0d0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000916222f3c4955626f7c8995a2a79a8d8174675a4d41343a4753606d7a8793a0a99c8f8276695c4f4336291c10030000000000060c101315151515151515151513110d1216191b1d1f20201f1e1d1a17130e0800000000000000000000000000070f161e242b30363b3f4346494c4e505152525353525251504e4c4a4744403c37322c261f181008000000000000000000131f2c3946525f6b767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979776c6053473a2d21140700000000000005111c27333e4a55606c77838e9aa59a8e83776c6055493e45505c67737e8a95a19f94897d72665b4f44392d22160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0f1112131312110f0c0904000000000000060b0f12131313131312100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e2730383f444646464646464646464644403a32291f150a000000000000000000000000000000000000000000000000000000000000020c161f282f3438393939393939393938353029232b313639393939393939393937322c251c13090000000000000000000000000000000000000000060e14191d1f201e1c17120b0300050c13181c1f201f1c18130d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a26333f4a555f6769696969675f554a3f33261a0d010000000000000000000000000000000000050d141b22282d33373b3e4144454747484847464543403d3a3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00101d2a3643505c6976828f9ca8ada094877a6e61555555555555555555555555555555555555555555555555555555555555534d453b31261b0f0300111d2a3743505d6976838f9ca9aea195887b6f6255493c3023160a00000000010f1b2835414e5b6774818d9aa7b0a4978a7d7164574b3e3125180b0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1724313e4a5764707d8a97a4b0a3968a7d7063564a3d3023170a00121f2c3845525e6b7885919eabaca09386796d6053473a2d21140700000000000c1926323f4c5965727e8c98a5b2a6998c807366594c4033261a0d0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00091623303c4956626f7c8996a2a79a8e8174675a4e41343a4754606d7a8794a0a99c908376695c5043362a1d100300000000000000040708080808080808080807040105090c0f111213131312100e0b0703000000000000000000000000000000050c13191f252a2f33373a3d3f414344454646464645444342403d3b3734302b26211b140d0600000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b655b5044382b1f1206000000000000000b16222d38444f5b66727d89949f9f94887d71665a4f434a56616d78848f9ba59a8e83776c61554a3e33281c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e272e33373939393939393939393938342f2820170d0300000000000000000000000000000000000000000000000000000000000000040d161d23282b2c2c2c2c2c2c2c2c2c29241e1920262a2c2c2c2c2c2c2c2c2c2a27211b130a0100000000000000000000000000000000000000000003090d111213120f0b060000000001070c10121312100c08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424e5b67717575757571675b4e4235291c0f0300000000000000000000000000000000060f171f262d33393e43474b4e5052535454545453514f4d4a46424855616e7b8895a2aea5988b7e7165584b3e3225180b00111e2b3744515d6a7784909daaaca09386796d626262626262626262626262626262626262626262626262626262626262625e574d43372b1f130700121e2b3844515e6b7784919daaada094877a6d6154473b2e21150800000000000d1a2733404d596673808c99a6b2a5988b7e7265594c3f3226190c0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00111e2b3744515d6a7784909daaada194877b6e6154483b2e22150800000000000d1a2734404d5a6673808c99a6b1a5988b7e7265584b3f3225190c0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000a1623303c4956636f7c8996a3a89b8e8174675b4e41343a4754616d7a8794a1aa9d908376695d5043362a1d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080e14191e23272b2e303335363738393939393838363533312e2b28241f1a150f090300000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b53493f33281c0f030000000000000005111c27333e4a55606c77838e9aa5998e82776b605449505b67727e8995a09f94897d72665b4f44392d22160b00000000000000000000000000000000000000000000000000030507070707070707070707060400000000000000000000000000000000000000000000000000000000000000000000000306070707070707070707070503000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282b2c2c2c2c2c2c2c2c2c2c2b28241e160e05000000000000000000000000000000000000000000000000000000000000000000040b12181c1f20202020202020201f1c19130e151a1d1f202020202020201f1e1b161009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768282828276695c4f4336291c1003000000000000000000000000000000060f18212930383e444a4f53575a5d5f60616161605f5e5c5956524d4855616e7b8895a2aea5988b7e7165584b3e3225180b00121f2c3845525e6b7885919eabac9f9285796f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e695f54483b2f23160900121f2c3845525f6b7885929eabaca09386796c6053463a2d20130700000000000c1925323f4c5865727e8b98a5b2a6998c807366594d4033261a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00101d293643505c6975828f9ca8afa295897c6f6356493d3024170a00000000020f1c2835424e5b6874818e9aa7b0a3978a7d7064574a3e3124180b0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000a1723303d4a5663707d8a96a3a89b8e8275685b4e42353b4854616e7b8894a1aa9d9084776a5d5044372a1d110400000000000001060a0c0e0e0e0e0e0e0e0d0c090400000000000000000000000000000000000000000000000000000000000000000003090e13171b1e212426282a2b2c2c2c2c2c2c2b2a282724221f1b18130f0a04000000000000000000000000000a16212c3740484f525353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524f4941372d22170b0000000000000000000b16222d38444f5b66727d89949f9f93887c71655a4e56616d78848f9aa59a8e83776c60554a3e33281c11050000000000000000000000000000000000000000000000050b0f121314141414141414141413100c0701000000000000000000000000000000000000000000000000000000000000060c101214141414141414141414120f0b050000000000000000000000000000000000000000000000000000000000000000000000000000030a11171b1e202020202020202020201f1c18130c05000000000000000000000000000000000000000000000000000000000000000000000001070c1012131313131313131312100d0803090e11131313131313131313110e0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080c0f1111111111100e0a05000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976838f8f8376695c4f4336291c10030000000000000000000000000000050f18212a333b424950555b5f6367696b6d6d6e6e6d6c6b6866625e595455616e7b8895a2aea5988b7e7165584b3e3225180b00131f2c3946525f6c7985929facac9f92857b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7063574a3d3124170a0013202c3946535f6c7986929facac9f9286796c5f5246392c1f130600000000000b1825313e4b5864717e8b98a4b1a69a8d8173675a4d4034271a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000f1b2835414e5b6774818d9aa6b0a4978a7e7164584b3f3226190d0100000005111e2a3744505d6976838f9ca9aea195887b6f6256493c3023160a0000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000a1724303d4a5763707d8a96a3a89b8e8275685b4f42353b4855616e7b8894a1aa9d9084776a5d5144372a1e11040000000000050c1216191a1a1a1a1a1a1a1a1815100a0300000000000000000000000000000000000000000000000000000000000000000002070b0f1215171a1b1d1e1f1f20201f1f1e1d1c1a1815120f0b070300000000000000000000000000000005101a252e373e4346464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372f261b110600000000000000000005111c27333e4a55606c77838e9aa4998d82766b5f545b67727e8995a09f94897d72665b4f44382d22160b00000000000000000000000000000000000000000000010910161b1e202020202020202020201f1d18130c04000000000000000000000000000000000000000000000000000000030a11171c1f202020202020202020201f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e14191c1d1e1e1e1e1d1a16110a0300000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000000030e17212a333c454c545b61666b6f737678797a7b7b7a797775726e6a655f58616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c7986939facaca0948a88888888888888888888888888888888888888888888888888888888888888887d7164574a3e3124170b0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1824313e4b5764717d8a97a4b1a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000d1a2633404c5965727e8b98a4b1a6998c8073675a4e4235291d10040000000814212d3946525f6b7885919eaaac9f93867a6d6054473b2e2115080000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000b1724313e4a5764707d8a97a4a89c8f8275685c4f42363c4855626e7b8895a2aa9e9184776a5e5144382b1e1105000000000710171d2225272727272727272725211b150d0400000000000000000000000000000000000000000000000000000000000000000000000205080b0d0f101112131313131212100f0d0b0906030000000000000000000000000000000000000009131c252c32373939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937332d251d140a00000000000000000000000b16222d38444f5b66727d89949f9e93887c706559616c78838f9aa59a8e83776c60554a3e33271c1105000000000000000000000000000000000000000000010a131b22272b2d2d2d2d2d2d2d2d2d2d2c29241e160e0400000000000000000000000000000000000000000000000000030c151c23282b2d2d2d2d2d2d2d2d2d2d2b27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040709090909090909080501000105080909090909090907040000000000000000000000000000000911191f25282a2a2a2a2a2926221c150c03000000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000000b151f29333c454e575e656c72777c80828586878887878684817e7a76706a63616e7b8895a2aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0acb1a69c96959595959595959595959595959595959595959595959595959595959595958a7d7164574a3e3124170b0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000b1824313d4a56636f7c8995a1aea89b8f83766a5d5145392d21150a0605060c1824303d4955626e7a8793a0aca99d9184776b5e5245392c2013060000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000b1724313e4a5764717d8a97a4a99c8f8275695c4f42363c4855626f7b8895a2ab9e9184776b5e5144382b1e110500000007101922282e323434343434343433312c261f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27221b130b02000000000000000000000005111c27333e4a55606c77838e9aa4998d82766b5f66727d8994a09f94897d72665b4f44382d22160b0000000000000000000000000000000000000000000009131c252d33373a3a3a3a3a3a3a3a3a3a38352f2820160d020000000000000000000000000000000000000000000000000b151e262e34383a3a3a3a3a3a3a3a3a3a37332d251d1309000000000000000004080b0c0d0d0d0d0d0d0d0c0b0905000000000000000000000000000000000000000000000002070a0c0d0d0d0d0d0d0d0d0d0d0c0b080400000000000000000000000000000000000000060b0f1213131313131313131312100d08020000000000000000000000000000000000000000000000000000000000000000060c11141616161616161614110d070d11141616161616161614100c0600000000000000000000000007111b232a3035373737373736322d261e160c020000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000007121d27313b454e57606870777d83888c8f91939494949392908e8b86817b746d656e7b8895a1aea5988b7e7165584b3e3225180b0013202c3946535f6c798693a0acb7aea7a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978a7d7064574a3e3124170b0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1824313e4b5764717d8a97a4b1a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000915222e3b4754606d7986929eaaab9e9286796d6155493d31261c15131213151e2935404c5965717d8a96a3afa69a8e8175685c4f43362a1d11040000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000b1824313e4b5764717e8b98a4a99c908376695c4f43363c4955626f7c8996a2ab9e9285786b5e5145382b1e12050000030e19222b333a3e41414141414141403d3831281f150b0000000000000002070b0e101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0e0a06000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201e1b16100901000000000000000000000000000b16222d38444f5b66727d89949f9e93877b70656c77838f9aa5998e83776c60554a3e33271c110500000000000000000000000000000000000000000005101b252e373e434647474747474747474745403a32281e1409000000000000000000000000000000000000000000000007121d2730383f4447474747474747474746443e372f251b10050000000000030a1014171919191919191919191815110b040000000000000000000000000000000000000001080e13161919191919191919191919191815100a04000000000000000000000000000000030b12171b1e1f1f1f1f1f1f1f1f1f1f1c19140d060000000000000000000000000000000000000000000000000000000000010a11181d2022232323232323211d1812181d2123232323232322201c17110901000000000000000000040f19232d353c414444444444423e3830281e13090000000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000000020e19232e39434d57616a727a82898f94989b9ea0a1a1a1a09f9d9a97928d867f776e6e7b8894a1aea5988b7e7165584b3e3225180b00131f2c3946525f6c7986929facb4aaa19b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9da4aeafa3968a7d7063574a3d3024170a0013202c3946535f6c7986929facac9f9286796c5f5246392c1f130600000000000b1825323e4b5864717e8b98a4b1a69a8d8173675a4d4034271a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0006131f2c3845515d6a76828e9ba7aea296897d71655a4e43382e2622201f2022262f3a45515d6975818d99a6afa3978a7e7265594d4034271b0e020000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000b1825323e4b5865717e8b98a4a99c908376695d5043363c4956636f7c8996a2ab9e9285786b5f5245382c1f120500000915202b343d454a4d4d4d4d4d4d4d4d49433a31271c11060000000000060d13171b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a17120c04000000000000000000000000050a0e1113131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110f0a0500000000000000000000000000000005111c27333e4a55606c77838e9aa4988d81766a727d89949f9f94887d71665b4f44382d22160b000000000000000000000000000000000000000000000a16212c3740494f53535353535353535353514b443a30251a0e03000000000000000000000000000000000000000000000c18232e39424a5053535353535353535353504941372d22160b00000000050e151b202426262626262626262624211c160f070000000000000000000000000000000000020b12191f2325262626262626262626262624211c150e0600000000000000000000000000040d151d23282b2c2c2c2c2c2c2c2c2c2b29251f181007000000000000000000000000000000000000000000000000000000010b131c23282d2f30303030302f2d29241d24292d2f30303030302f2d28221b130a0000000000000000000915202b353f474d50515151514f4a423a30251a0e0300000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000008141f2a35404b555f69737c848c949a9fa4a8a7a3a09e9c9c9c9d9fa19e98918981776e7a8794a1aea5988b7e7165584b3e3225180b00121f2c3845525f6b7885929eabafa3988f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e929ca8afa296897c6f6356493c3023160900121f2c3845525f6b7885929eabaca09386796d6053463a2d20130700000000000c1925323f4c5865727e8b98a5b2a6998c807366594d4033261a0d0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0004101c2935414e5a66727e8a96a2aea69a8e82766a5f54494037322e2c2c2c2e3238414c57626d7985919da9ab9f93877b6e62564a3d3125180c000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000c1825323f4b5865727e8b98a5aa9d9083766a5d5043373d495663707c8996a3ac9f9285786c5f5245392c1f120600020e1a26313c464f565a5a5a5a5a5a5a59544c43392e22160a000000000810181e2327292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292926221d160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16222d38444f5b66727d89949f9e92877b7077838e9aa5998e83776c6055493e33271c1105000000000000000000000000000000000000000000000e1a26323e49525b5f6060606060606060605d564c42372b1f130700000000000000000000000000000000000000000005111d2934404a545c606060606060606060605b53493e33271b0f030000050e1720272c30333333333333333333312d2721191006000000000000000000000000000000010b141d242a2f323333333333333333333333312d2720180f050000000000000000000000020c161f272e34373939393939393939393835302a22190f05000000000000000000000000000000000000000000000000000009131d252d34393c3c3c3c3c3c3c39352e272f353a3c3c3c3c3c3c3c39342d251c120800000000000000000e1a26313d4751585d5d5d5d5d5b544c41362b1f130700000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000020e1925303b46515c67717b858e969ea5aba7a09b979391908f8f909295989d9b938980767a8794a0ada5988b7e7165584b3e3225180b00111e2b3844515e6a7784919daaada09387818181818181818181818181818181818181818181818181818c99a6aea194887b6e6155483b2f22150900121e2b3844515e6b7784919daaada094877a6d6154473b2e21150800000000000d1a2633404d596673808c99a6b2a5988c7e7265594c3f3226190c0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000d1925323e4a56626e7a86929da9aa9e93877c70665b5249423e3b3938393b3e434a535d68737e8a96a2ada69a8f83776a5e52463a2e211509000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000c1925323f4c5865727e8c98a5aa9d9084776a5d5044373d4a5663707d8a96a3ac9f9286796c5f5246392c1f13060005121e2a37424e586166676767676767655e554a3f33261a0e01000007111a22292f333636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635332e2820180e0500000000000002070b0e101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0e0a06000000000000000000000000000000000000000000000005111c27333e4a55606c77838e9aa3988c81757d88949f9f94887d71665b4f44382d22160b0000000000000000000000000000000000000000000000111e2a36434f5a646c6d6d6d6d6d6d6d6d6d685e53473b2f24180c0000000000000000000000000000000000000000000a16222d3945515c666c6d6d6d6d6d6d6d6d6c655b4f43372b1e120500010c17202931383d3f404040404040403f3d39322b22180e03000000000000000000000000000009131d262f363b3f404040404040404040403f3d38322a21170d020000000000000000000008131e2831393f4445464646464646464645413b342b21170c01000000000000000000000000000000000000000000000000040f1a252f373f45484949494949494640393039404649494949494948453f372e241a0f0300000000000000111d2a36424e5963696a6a6a6a665d53473b2f23160a00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000007131f2a36414d58636e78838d97a0a8aca49c958f8b87848382838486888c91979b92887e7a8693a0ada5988b7e7165584b3e3225180b00101d2a3643505c6976838f9ca9ada094877a7474747474747474747474747474747474747474747474808d9aa6aca093867a6d6054473a2e21140700111d2a3743505d6976838f9ca9aea295887b6f6255493c3023160a00000000010f1b2835414e5a6774818d9aa7b0a4978a7d7164574b3e3125180b0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000915222e3a46525e6975818c98a3aea4988d82776d645b544e4a47464546474a4e545c656f7984909ba6aca1958a7e72665a4e42362a1e1205000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000c1926323f4c5965727f8c99a6aa9e9184776a5d5144373d4a5763707d8a97a4aca09386796c5f5346392c201306000714212d3a46535f6a7374747474747470675b4f4236291d100300030e19232c343b4042434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343423f39322a20160c0100000000060d13171b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a17120c04000000000000000000000000000000000000000000000b16222d38444f5b66727d89949f9d92867b828e99a5998e83776c6055493e33271c10050000000000000000000000000000000000000000000000121f2c3945525f6b767a7a7a7a7a7a7a7a796f64584c4034281c110500000000000000000000000000000000000000030e1a26323e4a56626d787a7a7a7a7a7a7a7a776c5f5346392d2013060007131e29323b43494c4c4c4c4c4c4c4c4c49443c342a1f140900000000000000000000000000050f1a252f3840474b4c4c4c4c4c4c4c4c4c4c4c49433c33291e1308000000000000000000020e1925303a434a50525252525252525252514d463d33291d12060000000000000000000000000000000000000000000000000915202c3641495155565656565655514a4238424b5155565656565655504940362b20140800000000000000131f2c3945525e6a75777777776f64574b3e3225180b00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000c18242f3b47525e6974808a959fa9ada39a928a847e7a7876757677797c80858c939a8f857a8693a0ada5988b7e7165584b3e3225180b000f1c2835424e5b6874818d9aa7aea195887b6f67676767676767676767676767676767676767676875828e9ba8aa9e9185786b5f5245392c1f1306000f1c2935424e5b6874818e9aa7b0a3968a7d7064574b3e3225190c0000000004111d2a36434f5c6975828f9ba8afa295897c6f6356493d3023170a0013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000005111d2935414d5964707b87929da7a99e948980766d655f5a565452525254565a5f666e77818b96a1aca59b8f84796d61564a3e32261a0e02000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000d192633404c596673808c99a6aa9e9184776b5e5144383e4a5764717d8a97a4aca09386796d6053463a2d201307000815222e3b4855616e7b818181818181776a5d5044372a1d1104000914202a353e464c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4b443c32281d12060000000810181e2327292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292926221d160e0600000000000000000000000000000000000000000005111c27333e4a55606c77838e9aa3978c8188949f9f94887d71665b4f44382d22160b000000000000000000000000000000000000000000000000121f2c3945525e6b7783878787878787878074685c5145392d2115090000000000000000000000000000000000000007131f2b37434e5a66727e8787878787878783776b5f5346392d201306000c18242f3a444d54585959595959595959554e463c31251a0e020000000000000000000000010b16212c37414a52575959595959595959595959554e453b3024190d01000000000000000006121e2a36414c555c5f5f5f5f5f5f5f5f5f5d584f453a2e23170a0000000000000000000000000000000000000000000000000d1925313d48535b616363636363625c544a3f4a545d626363636363615b52473c3125180c0000000000000013202c3946535f6c798484847e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000004101c2834404c58636f7a86919ca7afa59b91888079736e6b6969696a6c70747a818992968b808693a0aca5988b7e7165584b3e3225180b000d1a2733404c5966727e8b98a4afa3968a7d70645a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5e6b7784909daaa89c8f8376695d5044372a1e1104000e1a2734404d5966737f8c98a5b1a5988c7f73665a4d4134281b0f030000000713202c3945525e6b7784919daaada094877a6e6154483b2f2215090013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000010d1925313c48535f6a75808b96a0aaa59b91887f77706a6663605f5f5f6063666b71788089939da8a99e94897e73685c5145392d22160a00000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000d1a2633404d596673808c99a6ab9e9184776b5e5145383e4b5764717d8a97a4ada09386796d6053473a2d201407000915222f3c4855626f7b888e8e8e8e84776a5e5144382b1e1105000d1925313c4650575c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b564e443a2e23170b000007111a22292f333636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635332e2820180e050000000000000000000000000000000000000000000b16222d38444f5b66727d89949f9d928a8e99a5998e82776c6055493e33271c1005000000000000000000000000000000000000000000000000111d2a36434e5a66727e8a94949494949185796d6155493e32261a0e020000000000000000000000000000000000000c18242f3b47535f6b77838f94949494948a7e73675b4f43372b1e120500101c2935404c565f65666666666666666560584d42362a1e1105000000000000000000000007121d28333d48535c63666666666666666666666560574c4135291d100400000000000000000915222e3b47535e676c6c6c6c6c6c6c6c6c6961564b3f33261a0d0100000000000000000000000000000000000000000000000f1c2935414e59646d6f6f6f6f6f6e665b4f434f5b666e6f6f6f6f6f6d64594d4134281b0f0200000000000013202c3946535f6c7986918c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000814202c3945515d6874808c97a2ada99e93897f766e67625f5d5c5c5e6064696f77808992928787939faca5988b7e7165584b3e3225180b000b1825313e4a5763707c8995a2aea5988c8073675a4e4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d55616d7a86939faca6998d8074675b4e4235281c0f03000c1825323e4b5764707d8996a2afa79b8e8275695c5044372b1f13080201020b17232f3b4854616d7a86939facaa9e9185786c5f5346392d2014070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000814202b37424e59646f79848e98a1aaa39a9189827b76726f6d6c6b6c6d6f72767c828a929ba5a9a0978d82776d62564b4034281d110500000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000d1a2733404d596673808d9aa6ab9e9285786b5e5145383e4b5764717e8b98a4ada094877a6d6053473a2d21140700091623303c4956626f7c89969a9a9185786b5e5145382b1f120500111d2936424d5862686969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696760564b3f33271a0e00030e19232c343b4042434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343423f39322a20160c01000000000000000000000000000000000000000005111c27333e4a55606c77838e9aa09b9799a09f94887d71665a4f44382d22160b000000000000000000000000000000000000000000000000000e1a26323e4a55616d7985919ca0a0a095897d72665a4e42362a1f1307000000000000000000000000000000000005101c2834404c58646f7b87939fa0a09d91867a6e62564a3f33271b0f0200121f2b3844515d687173737373737373726a5e52463a2d20140700000000000000000000030e19242f39444f5a646e7373737373737373737371695d5145382c1f130600000000000000000a1724313d4a56636f78797979797979797973675b4e4235281b0f020000000000000000000000000000000000000000000000101d2a3743505d6a767c7c7c7c7c776b5e5245525f6b787c7c7c7c7c75695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000b1824303c4955616d7985919ca8aea3978c81776d645c5652504f505154585e656d76818b96919299a3afa5988b7e7165584b3e3225180b000916222f3b4854616d7986929eaba89b8f83766a5e5246414141414141414141414141414c5864717d8996a2aea2968a7d7164584c3f33261a0d01000a16232f3c4855616e7a87939facaa9d9185786c6054483c302419110f0e0f121c27333f4b5764707c8995a2aea79b8f8276695d5044372b1e12050013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000030f1a26313c47525d68727c868f98a1a9a39b938d87827e7b7a7978797a7c7e83878d949ca4a8a0978e857b70665b50453a2f23180c0000000000000000000000091623303c4956636f7c8996a3b0a4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000d1a2734404d5a6773818d9aa7ac9f9285786b5f5245383e4b5865717e8b98a5aea194877a6d6154473a2e211407000a1723303d4a5663707d8a96a39f9285786c5f5246392c1f130600121f2c3945525e6a7476767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767672675b4f4236291c10000914202a353e464c4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4b443c32281d12060000000000000000000000000000000000000000000b16222d38444f5b66727d89939393939393938e82776b6055493e33271c1005000000000000000000000000000000000000000000000000000a16212d3945515c6874808c98a3ada69a8e82766a5f53473b2f23170c00000000000000000000000000000000000915212d3945505c6874808c98a4ada4988d8175695d51463a2e22160a000013202c3946535f6c79808080808080807b6e6154483b2e211508000000000000000000000a15202a35404b56606b7680808080808080808080796d6053463a2d20130700000000000000000b1724313e4a5764717d868686868686868275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a778489898985786b5f5246525f6c79868989898376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000020f1b2734404c5965717d8995a1ada99d92867b70655b524b4643424344484c535b656f79848f9b9ea3abb2a5988b7e7165584b3e3225180b000713202c3845515d6a76828e9ba7ab9f92867a6e63574c40363434343434343434343a45515c6874818d99a5ab9f93877a6e6155493c3024170b00000714202d3946525e6b7783909ca8ada194887c7064584c41362b221e1c1b1c1e232d3844505b6774808c98a5b0a4988c7f73665a4e4135281c0f030013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000915202b36414b56606a747d868f979ea5a59e98938e8b888686858686888b8e93999fa6a49e968e857c73695f544a3f34291d12070000000000000000000000091623303c4956636f7c8996a3aea4978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000e1a2734414d5a6774818e9aa7ac9f9286796c5f5246393f4c5865727e8c98a5aea194887b6e6154483b2e211508000b1724313e4a5764707d8a97a49f9386796c5f5346392d2013060013202c3946535f6c7983838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838376695d5043362a1d10000d1925313c4650575c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b564e443a2e23170b00000000000000000000000000000000000000000005111c27333e4a55606c778386868686868686867d71665a4f44382d21160b000000000000000000000000000000000000000000000000000005111d2834404c58636f7b87939faaab9f93877b6f63574c4034281c1004000000000000000000000000000000020e1a26313d4955616d7985919ca8aba094887c7064584d4135291d1206000013202c3946535f6c79868c8c8c8c8c887b6e6154483b2e21150800000000000000000006111c26313c47525c67727d888c8c8c8c8c8c8c8c86796d6053463a2d20130700000000000000000b1724313e4a5764717d8a92929292928f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a778490969285786b5f5246525f6c79869296908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000005121e2a3743505c6875818d99a6b1a5998d81756a5e5349403a373636383c4149535d68737e8a95a1adb4b2a5988b7e7165584b3e3225180b0004101d2935424e5a66727e8a96a2aea3978b7f73685d52483e352f2a2828292b3038414b56626d7985919da9a79b8f83766a5e5246392d211408000005111d2a36424f5b6773808c98a4b0a4988c8174695d52473d342e2a2828282a2e353f4955606c7884909ca8aca094887c6f63574b3e3225190d000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000030e19242f3a444e58626b747d858c939a9fa4a39f9a9795939292929395979b9fa4a49f99938c847c736a61574d42382d22170c010000000000000000000000091623303c4956636f7c8996a1a1a1978a7d7063574a3d3024170a00000013202c3946535f6c798693a0aaa79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3aaa3968a7d7063564a3d3023170a0013202c3946535f6c798693a0a1a19a8d8173675a4d4034271a0d000e1b2834414e5b6774818e9aa7ac9f9286796c5f5346393f4c5965727f8c98a5aea194887b6e6155483b2e221508000b1825313e4b5764717e8b97a4a093867a6d6053473a2d2114070013202c3946535f6c7986909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090908376695d5043362a1d1000111d2936424d5862686969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696760564b3f33271a0e000000000000000000000000000000000000000000000b16222d38444f5b6671797979797979797979766b6055493e32271c10050000000000000000000000000000000000000000000000000000000c18242f3b47535f6a76828e9aa6afa3978c8074685c5044382d21150900000000000000000000000000000007131e2a36424e5a66727d8995a1ada79b8f83776b6054483c3024190d01000013202c3946535f6c79869399999994887b6e6154483b2e2115080000000000000000020d18222d38434e58636e79848e999999999999999386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a979f9f9f9c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000814212d3a46535f6b7884919da9ada195897c7165594d42372e2a29292b3037414b56616d7985919ca9b5b2a5988b7e7165584b3e3225180b00010d1925323e4a56626e7a86929da9a79c9085796e645a5047403a37353435383c424a535d68737e8a95a1ada2968a7e72665a4e42362a1d11050000010e1a26333f4b57636f7b87939faba99d91857a6e64594f463f3a37353435373a3f47515b66717d8994a0aca89c9084786c6053473b2f22160a000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000008131d28323c465059626b737b82898e94989ca0a2a4a1a09f9f9fa0a1a4a29f9c98938e88817a726a61584f453b31261c1106000000000000000000000000091623303c4956636f7c8994949494948a7d7063574a3d3024170a00000013202c3946535f6c7986939d9d9d9a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a969d9d9d968a7d7063564a3d3023170a0013202c3946535f6c798693949494948d8173675a4d4034271a0d000e1b2835414e5b6774818e9ba8aca09386796c5f5346393f4c5965727f8c99a6aea295887b6e6155483b2f221508000c1825323f4b5865727e8b98a5a194877a6e6154473b2e2114080013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c908376695d5043362a1d1000121f2c3945525e6a7476767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767672675b4f4236291c100000000000000000000000000000000000000000000005111c27333e4a5560686c6c6c6c6c6c6c6c6c6b645a4f44382d21160b0000000000000000000000000000000000000000000000000000000007131f2b36424e5a66717d8995a1ada89c9084786d6155493d31251a0e0200000000000000000000000000000b17232f3b47535e6a76828e9aa6aea2968a7e72675b4f43372b20140800000013202c3946535f6c798693a0a6a194887b6e6154483b2e211508000000000000000009141e29343f4a545f6a75808b95a0a6a6a6a6a6a09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4aca89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000a1623303c4955626e7b8794a0acaa9e9285796d6054483c31251e1c1d1f252f3a45515c6874808c98a5b1b2a5988b7e7165584b3e3225180b00000916222e3a46525d6975818c98a3aca1968b80766c6259514b464342414244474d535c656f79848f9ba6a89d91867a6e62564a3e32261a0e010000000a17232f3b47535f6b77838e9aa5ada2968b80756b6158504a464342414243464b5159636d77838e99a5aea3978b8074685c4f43372b1f1306000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000000010c16202a343e475059616970777d83888c90939698999a9b9b9b9a99979593908c88837d76706860584f463d33291f140a00000000000000000000000000091623303c4956636f7c888888888888887d7063574a3d3024191006000013202c3946535f6c798690909090908e8174675a4d4134271a0e01000a1723303d4a5663707d8a90909090908a7d7063564a3d3023170a0013202c3946535f6c79868888888888888173675a4d4034271a0d000f1b2835424e5b6875828e9ba8ada09386796d6053463a404c596673808c99a6afa295887b6f6255483c2f221509000c1926333f4c5965727f8c99a5a194887b6e6155483b2f2215080013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09d908376695d5043362a1d100013202c3946535f6c7983838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838376695d5043362a1d1000000000000000000000000000000000000000000000000b16222d38444e575d5f5f5f5f5f5f5f5f5f5f5a52483e32271c100500000000000000000000000000000000000000000000000000000000020e1a26323d4955616d7884909ca8ada195897d71655a4e42362a1e12060303030303030303030303030304101c28343f4b57636f7b87939eaaa99d91857a6e62564a3e33271b0f0300000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080000000000000005101a25303b46505b66717c87919ca7b2b3b3b3ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000c1825323e4b5764717d8a96a3afa89b8f8276695d5144382c20140f10131d2834404c5864707c8995a1aeb2a5988b7e7165584b3e3225180b000005111d2935414d5964707b86919ca7a79d92887e746b635c5752504e4e4f5154585e656e77818b96a1aca2978c8075695d52463a2e22160a0000000007131f2b37434f5a66727d89949faaa89c92877d736a625b5652504e4e4e5052565c636b747e89949faaa89d91867a6f63574b3f33271b0f03000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000040e18222c353e474f575e656c72777c808487898b8d8e8e8e8e8d8c8b898683807c77716b655e564e463d342b21170d03000000000000000000000000000916232f3c4956626f797b7b7b7b7b7b7b7a6f63564a3d342b22180d020013202c3946535f6c79848484848484848174675a4d4134271a0e06030b1723303d4a5663707d848484848484847d7063564a3d3023170a0013202c3946525f6c777b7b7b7b7b7b7b7b72665a4d4033271a0d000f1c2835424f5b6875828f9ca8ada094877a6d6053473a404d596673808d9aa6afa295897c6f6255493c2f221609000d1a2633404d596673808c99a6a295887b6f6255493c2f2216090013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393908376695d5043362a1d100013202c3946535f6c7986909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090908376695d5043362a1d10000000000000000000000000000000000000000000000005111c27323c454c51535353535353535353524f4840372c21160b0000000000000000000000000000000000000000000000000000000000000915212d3944505c6874808b97a3afa59a8e82766a5e52463b2f231710101010101010101010101010101015202c3844505c6874808b97a3afa4988c8175695d51453a2e22160a0000000013202c3946535f6c798693a0aca194887b6e6154483b2e211508000000000000010c16212c37424c57626d78828d98a3aeadacaeb4ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000e1a2733404d5966737f8c99a5b2a6998c8073675a4e4135281c1004030c18232f3c4854606d7986929fabb2a5988b7e7165584b3e3225180b0000010d1925303c48535e6a75808b95a0aaa49990867d756e68625f5c5b5b5b5d60646970778089939da7a59b90857a6f63584c4135291d120600000000030e1a26323e4a55616c77828d98a2aca3998f857c746d67625f5c5b5b5b5c5f62676d757d87909ba5aba1968b8075695e52463b2f23170b00000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000000000007101a232c353d454d545a61666b7074777a7d7e808181828181807e7c7a7774706b66605a534c453c342b22190f0500000000000000000000000000000815212e3a46525e686d6e6e6e6e6e6e6e6e685e534c463d34291e130700131f2c3945525e6a7477777777777777777165594d4033271f17100d151d25303c4955626d7677777777777777766d6255493c3023160900111e2b37434f5b656d6e6e6e6e6e6e6e6e6a61564a3e3225190c000f1c2936424f5c6975828f9ca8ada094877a6d6154473a404d5a6773808d9aa6afa296897c6f6356493c30231609000e1a2734404d5a6773818d9aa6a396897c6f6356493d3023160a0013202c3946535f6c7986868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868376695d5043362a1d100013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c908376695d5043362a1d100000000000000000000000000000000000000000000000000b16202a333a414546464646464646464646433e372e251b100500000000000000000000000000000000000000000000000000000000000005101c2834404b57636f7b87929eaaaa9e92877b6f63574b3f33271c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c25313d4955606c7884909ca8ab9f94887c7064584d4135291d11060000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000000000008121d28333e48535e69747e89949faaa7a19fa3aaada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000f1c2835424e5b6874818e9aa7b0a4978a7e7164584b3f3226190d00000713202c3845515d6a7683909ca9b2a5988b7e7165584b3e3225180b0000000814202b37424d58636e79848e98a1aaa29890878079736e6b696867686a6c70757a8189929ba5a79d93897e74695e52473c3024190d0100000000000a16212d39444f5b66717c86909aa4aba1978e867e78736e6b69686768696b6e73787f879099a2aca3998f847a6f63584d41362a1e120700000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000000000005111d28333d474e535555555b6064686b6e70727374747574747371706d6b67645f5a555555524c443b30251a0e02000000000000000000000000000005121e2a36414c565d6161616161616161615e5e5d574f463b2f24180c00111d2a36424e5962696a6a6a6a6a6a6a6a675f544940383129221a171f272f373e46515c656a6a6a6a6a6a6a6a6a655c5145392d211408000f1b27333e49535b6061616161616161615f584f45392e22160900101c2936434f5c6975828f9ca9aea194877a6d6154473b414d5a6773818d9aa7b0a396897c6f6356493d3023160a000e1b2834414e5b6774818e9aa7a3968a7d7063574a3d3024170a00131f2c3946525f6b7679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797974685c4f4336291d100013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09d908376695d5043362a1d10000000000000000000000000000000000000000000000000040e1821293035383939393939393939393937322c251c130900000000000000000000000000000000000000000000000000000000000000000c17232f3b47525e6a76828d99a5afa3978b8073675c5044382c29292929292929292929292929292929292a36414d5965717d8995a1aca79b8f83776b5f54483c3024180d010000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080000000000040e19242f3a444f5a65707a85909ba6a89d959398a1ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000101d2a3643505c6976838f9ca9afa295897c6f6356493d3024170a000004101c2935424e5b6874818d9aa7b2a5988b7e7165584b3e3225180b000000030f1a25313c47525d67727c868f98a1a9a199918a847f7b787574747576797c80868c939ba4a69e958b81776d62574c41362a1f140800000000000005111c28333e49545f6a747e89929ba4a9a0989089837e7a787675747576787b7e848a9199a2aba39a91877d73685d52473c3025190e0200000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000915222e39454f585f6262626262615b5f616365666768686767666563615e5d6162626262625e564d42362b1f12060000000000000000000000000000020e1925303a434c51545454545c646a6b6b6b6b6961574c4034281b0f000e1a26313c4750585c5d5d5d6062626262626059524a433b342c2521293139414850585f6262626262615d5d5d5d5a534a3f34291d1105000b16222d38414a50545454545454545454534e463d33281d110500101d2936434f5c697683909ca9aea194887b6e6154483b414d5a6774818e9aa7b0a3968a7d7063564a3d3023170a000f1c2835424e5b6875828e9ba8a4978a7d7164574b3e3124180b00111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584c4034271b0e0013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393908376695d5043362a1d1000000000000000000000000000000000000000000000000000060f171e24292b2c2c2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000000000000000000000000000000007131e2a36424e5965717d8994a0aca89c9084786c6054493d363636363636363636363636363636363636363a46525e6a76828d99a5aea2968a7e72675b4f43372b201408000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000000000a15202b36404b56616c76818c97a2aca1968b86909ca9a09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000111e2b3744515d6a7784909daaaea194887b6e6155483b2f2215090000000d1a2733404c5966727f8c98a5b2a5988b7e7165584b3e3225180b000000000914202b36404b55606a747d868f979fa6a39c95908b8784828181828385888c91979ea5a49c948c83796f655b50463b3025190e03000000000000000b16222d38434e58626d768089929aa1a8a29b948f8a8784828281828284878b8f959ba3a8a19991887f756b61564c41362b1f14080000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e02000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000c1825313e4a56616a6f6f6f6f6f6d655e5757585a5b5b5b5b5a5958565860686e6f6f6f6f6e685e53473b2e22150900000000000000000000000000000008131e28313a4145474d565e666e767777777773685c5043362a1d10000915202b353e464c505059646c6f6f6f6f6f6b635c544d453e362f2c333b434b535a626a6f6f6f6f6f6d665b50504e4841382e23180c010005111b262f383f4447484848484848484846423c342b21170c0000101d2a3643505d697683909da9aea195887b6e6155483b414e5b6774818e9ba7b0a3978a7d7063574a3d3024170a000f1c2936424f5c6975828f9ca8a4988b7e7165584b3e3225180c000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5950463b3024180c0013202c3946535f6c7986868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868376695d5043362a1d100000000000000000000000000000000000000000000000000000050d13181c1f2020202020202020201f1e1a16100901000000000000000000000000000000000000000000000000000000000000000000020e1a25313d4955606c7884909ba7aca094897d7165594d4343434343434343434343434343434343434343434b57636e7a86929eaaa99d9185796e62564a3e32271b0f03000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080000000006111c27323c47525d68727d88939ea8a59a8f85828f9ca9a09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000121f2c3845525e6b7885919eabada093867a6d6054473a2d2114070000000c1825323e4b5864717d8a97a4b0a5988b7e7165584b3e3225180b00000000030e19242f39444e58626b747d858d949ba1a6a19b9793918f8e8e8e909295989da2a59f99928b837a71675d53493f34291e1308000000000000000005101b26313c46515b646e77808890979da3a6a09b9793918f8e8e8e8f9193979ba0a6a39d968f877f766d63594f453a2f24190e030000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a110f0b0a1723303d4a5663707d8a96a3aea3968a7d7063564a3d3023170a000000000000000d1a2633404d5966727b7b7b7b7b7770686159524d4e4e4e4e4e4d535a626a727a7b7b7b7b7a6f6356493d3023160a0000000000000000000000000000050d151e262e363e474f575f6770788084848484776a5d5044372a1d1100030e19232c353b4043505d69767b7b7b7b7b756e665f5750484139363d454d555d646c747b7b7b7b7b786c5f5246423d372f261c1107000006111c263039404548494949494949494947433d352c22170c0100111d2a3744505d6a7783909daaaea295887b6f6255483c424e5b6875828e9ba8b0a4978a7d7164574a3e3124170b00101d293643505c697683909ca9a5988c7e7265594c3f3226190c000a16212c3740484f52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524e473e342a1f130700131f2c3946525f6b7679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797974685c4f4336291d1000000000000000000000000000000000000000000000000000000002080c101213131313131313131313110e0a050000000000000000000000000000000000000000000000000000000000000000000000000915202c3844505c67737f8b97a2aea5998d82756a5e524f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5b67737f8b97a3aea4988c8175695d51453a2e22160a00000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211508000000020d18232e38434e59636e79848f9aa4a99e93897e83909da9a09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000131f2c3946525f6c7985929facac9f9386796c5f5346392d2013060000000a1724303d4a5663707d8996a3b0a5988b7e7165584b3e3225180b000000000008121d28323c465059626b737b838a90969b9fa3a3a09d9c9b9b9b9c9ea1a4a29e99948e88817970685f554c42372d22180d020000000000000000000a15202a353f49525c656e767e858c92979ca0a3a3a09d9c9b9b9b9c9da0a3a3a09c97928c857d756d645b51473d33281e1308000000000013202c3946535f6c798693a0a1a19a8e8174675a4d4134271e1d1b17121723303d4a5663707d8a96a1a1a1968a7d7063564a3d3023170a000000000000000d1a2633404d5966738088888888827a736b645c554d4642454d555d656c747c84888888887d7063564a3d3023170a00000000000000000000000000060f171f2730384048505961697179828a9191897e74695c5043362a1d10000007111a232a303744505d6a77848888888780787069615a524b4340484f575f676e767e8688888886796c5f534639312c251d140a0000000b17222e38424b51555555555555555555544f473e34291d120600111e2a3744515d6a7784909daaafa295887b6f6255493c424f5b6875828e9ba8b1a4978a7d7164574b3e3124180b00111d2a3744505d6a7683909daaa6998c807366594c4033261a0d0005101a252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645423c352c22180d0200111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584c4034271b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333f4b57636e7a86929ea9aa9e92867a6e625c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c606c7884909ba7ab9f94887c7064584c4135291d110500000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800000009141f2a343f4a55606a75808b96a0aba2978c827784919daaa09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986939facac9f9285786c5f5246392c1f13060000000916232f3c4955626f7c8995a2afa5988b7e7165584b3e3225180b0000000000010b16202a343e475059616971787e858a8f9396999b9d9e9f9f9f9e9d9b9895928e89837d766e675e564d433a30261b110600000000000000000000030e18232d37404a535c646c737a81878c9094979a9c9d9e9f9f9f9e9d9b999794908b86817a736b635b52493f362b21170c01000000000013202c3946535f6c798693949494948e8174675a4d41342b2b2a27231d1723303d4a5663707d8a94949494948a7d7063564a3d3023170a000000000000000c1926323f4c58646f79828c95948c857d756e665f5750484f575f676f767e868e95948a80766c6155483c2f23160900000000000000000000000008101821293139414a525a626b737b838b94958b81776d63584c4034281b0f0000000811181f2936434f5b67727b858f95918a827b736c645d554e4a5259616971788188909591877d73695e5145382c211a130b020000000f1b27333f4a545c616262626262626262605950453a2e22160a00111e2a3744515d6a7784919eaaaca296897c6f6255493c424f5b6875828f9ca8aca4988b7e7164574b3e3124180b00111e2b3744515d6a7784919daaa69a8d8073675a4d4034271a0d000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393936312b231a110600000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5950463b3024180c000000000000000000000000000000000000000000000106090b0b0a0804000000000000000000000000000000000000000000000206090a0a09060200000000000000000000000000000000000000000000000b17232e3a46525e6975818d99a5aea2978b7f7369696969696969696969696969696969696969696969696969707c8894a0aca69b8f83776b5f54483c3024180d0100000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211508000005101b26303b46515b66717c87929ca7a69b90867b7885919eaba09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f12050000000915222f3c4855626f7b8895a2aea5988b7e7165584b3e3225180b000000000000040e18222c353e474f575f666d73797e83878a8d8f909292929291908e8c8986827d78726b645d554c433a31281e140900000000000000000000000007111b252e38414a525a62696f757b8084888b8d8f909292929291908f8d8a8784807a756f68615a514940372d241a0f0500000000000013202c3946535f6c79868888888888888174675a4d4138383837332e282023303d4a5663707d888888888888887d7063564a3d3023170a000000000000000b1723303c47535d67707a848d97968f8780787169625a535a6169717981889098958c82786e645a5045392d20140700000000000000000000010a121a222a333b434b535c646c747c858d95988e84796f655b51463b3024180c00000000070e1a27333f4b566069737d86909a948d857e766f676058545c636b737b838b929a93897f756b62584d4135291d10090100000000121e2b3744505b666e6f6f6f6f6f6f6f6f6b62564a3e3225190c00111e2b3844515e6b7784919ea0a0a096897c6f6356493c424f5c6975828f9ca0a0a0988b7e7165584b3e3225180b00121e2b3845515e6b7884919ea0a09a8e8174675a4e4134281b0e0000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a25201911080000000a16212c3740484f52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353524e473e342a1f1307000000000000000000000000000000000000000000070d121517181714100b0400000000000000000000000000000000000001080e1215171715120e080200000000000000000000000000000000000000000006121e2a35414d5965707c8894a0aca79b8f84787676767676767676767676767676767676767676767676767676818d99a5ada2968a7e72665b4f43372b1f14080000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150800010c17222c37424d57626d78838e98a3aa9f948a7f747885929faca09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f12050000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000006101a232c353d454d555c62686d72777a7d80828485858685848382807d7976716c66605a524b433a31281f160c020000000000000000000000000009131c262f38404850575e646a6f74787b7e81828485858685858482817e7b77736f69645e574f483f372e251b12080000000000000013202c3946525f6c777b7b7b7b7b7b7b7b73665a4d44444444433f39322a23303d4956636f7a7b7b7b7b7b7b7b7a6f6356493d3023160a0000000000000007131f2b36414b555e68727b858f9899928a837b746c645d646b737b838b929a978d837a70665c52493e33281c1004000000000000000000030b131b242c343c454d555d656e767e868f979a90867c72675d53493f352a1f140800000000000b17232e39444e57616b747e88919b978f888179716a625e666e757d858d959c948b81776d635950463b3025190d01000000000013202c3946535f6c787c7c7c7c7c7c7c7c73665a4d4034271a0d00121e2b3845515e6b7885919393939393897d7063564a3d434f5c6976838f93939393938b7e7265584c3f3225190c00121f2c3945525f6b788592939393938e8275685b4e4235281b0f000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d1a140e070000000005101a252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645423c352c22180d0200000000000000000000000000000000000000020a12191e22242423201c160f0700000000000000000000000000000000030c13191e222323221e1a140c040000000000000000000000000000000000000000010d1925313c4854606c77838f9ba7aca0948883838383838383838383838383838383838383838383838383838386929da9a99d9185796d62564a3e32271b0f030000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080008131d28333e49535e69747e8a949faaa3988e83786d7986939faca09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f12050000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000008111a232b343b434a51575d62666a6e717475777878797878777573706d6965605b554f48413931281f160d040000000000000000000000000000010a141d262e363e454c53595e63686b6f727476777878797878777574716e6b67635e58524c453e362d251c13090000000000000000111e2b37434f5b656d6e6e6e6e6e6e6e6e6a61565151515151504b443c332b2e3a47535e686e6e6e6e6e6e6e6e6e685e53473a2e22150800000000000000030e1a252f39434c566069737c8690999c948d857e766f676e757d858d959d998f857b71685e544a40372d22170c000000000000000000020c151d252d363e464e575f676f77808890989d93897e746a60564b41372d23180e02000000000006121d28323c454f59626c768089939c9a928b837c746d68707880878f979f968c82786f655b51473e342a1f140800000000000013202c3946535f6c79868989898989898173675a4d4034271a0d00121f2c3845525e6b7885868686868686867d7063564a3d43505d697683868686868686867e7265584c3f3226190c0013202c3946535f6c79868686868686868275685c4f4236291c0f0000000000050a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110d090300000000000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393936312b231a110600000000000000000000000000000000000000020b141c242a2e3131302c27211910070000000000000000000000000000040d151d242a2e30302e2a251e160d0400000000000000000000000000000000000000000814202c38434f5b67737e8a96a2aea59a929090909090909090909090909090909090909090909090909090909198a2aea4988c8175695d5145392e22160a000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211508040f19242f3a454f5a65707b86909ba6a79c92877c716d7a8693a0ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c7986929facac9f9285796c5f5246392c1f13060000000915222f3c4855626f7b8895a2aea5988b7e7165584b3e3225180b000000000000000000081119222a31383f464c51565a5e626567696a6b6c6c6b6b6a686664615d59554f4a443d362f271f160d0400000000000000000000000000000000020b141c242c343b41484d53575c5f626567696a6b6c6c6b6b6a696765625f5b57524d47413a332c241c130a0100000000000000000f1b27333e49535b6061616161616161615f585b5e5e5e5e5e5c564e453d352d36424c565d6161616161616161615d564c42362a1e1206000000000000000008131d27313a444e57616a747e88919b9f9790888179727880878f979f9a91877d73695f564c42382e251b10060000000000000000000a141e272f373f485058606871798189929a9f958b81776c62584e443a2f251b1107000000000000000b16202a333d47505a646d77818a949d9d958e867e77727a828a9199a1988e847a70675d53493f352c22180d0200000000000013202c3946535f6c798693969696968d8173675a4d4034271a0d00121f2b3845515e6a767979797979797979786f63564a3d434f5c68747979797979797979797165584b3f3225190c00131f2c3946525f6b76797979797979797973685b4f4235291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a252019110800000000000000000000000000000000000000020b141d262e353a3d3e3c38322b22191007000000000000000000000000040d161f272f363a3d3d3b3630281f160d0400000000000000000000000000000000000000040f1b27333f4a56626e7a86919da9aca39e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9da2aaab9f93887c7064584c4035291d1105000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115080b15202b36414b56616c77828c97a2aba0968b80756a6d7a8794a0ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000121f2c3945525f6b7885929eabac9f9386796c5f5346392d2013060000000916232f3c4956626f7c8995a2afa5988b7e7165584b3e3225180b000000000000000000000710181f272e343a40454a505b646a6b6b6b6b69625f5e5d5c5a5754514d49443f39322c241d150d04000000000000000000000000000000000000020a121a222930363c42474b545f676b6b6b6b6b665f5f5e5d5c5a5856534f4b46423c363029211a120a010000000000000000000b16222d38414a50545454545454545454535d666b6b6b6b6b6760574f473f36303a444c51545454545454545454514c443a30251a0e020000000000000000010b151f28323c454f59626c757f89929ca19a938b837c828a9299a19c92897e756b61574e443a30261d130900000000000000000006111c2630394149515a626a727a838b939ba2988d83796f655b50463c32281e13090000000000000000040e18212b353e48525b656f78828c959f9f989089817c848c949ca39990867c72685e554b41372d241a10060000000000000013202c3946535f6c798693a0a2a29a8d8173675a4d4034271a0d00101d2936424e59646b6c6c6c6c6c6c6c6c6c675d52473a404c58626a6c6c6c6c6c6c6c6c6c685f54483c3024170b00111e2a37434f5a646b6c6c6c6c6c6c6c6c6a62574b3f33271a0e000000000000000000000003070a0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b080400000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d1a140e0700000000000000000000000000000000000000020b141d262f3840464a4b49443d342b2219100700000000000000000000040d161f2831394146494a47413a31281f160d04000000000000000000000000000000000000000b16222e3a46515d6975818c98a4b0aeaaa9a8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7a9a9adb2a69a8f83776b5f53483c3024180c01000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211508111c27323d47525d68737d88939ea9a49a8f84796e646e7b8894a1ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000121e2b3845515e6b7784919eaaada093877a6d6054473a2e2114070000000a1724303d4a5763707d8a96a3b0a5988b7e7165584b3e3225180b0000000000000000000000060e151c23292f353b4754606c7677777777746b635b534f4d4b4845413d38332d27211a130b030000000000000000000000000000000000000000000810171e252b31363f4c596571777777777770686058514f4e4c4946433f3b36302b251e171008000000000000000000000005111b262f383f4447484848484848484a57636f77777777777169615951484038323a414547484848484848484745413a32281e140900000000000000000000030d16202a333d47505a636d77818a949da49d958e878c949ca39e948a80766d63594f453c32281e140b010000000000000000000b17222e38424b535b636c747c848c959da49a90867c71675d53493f342a20160c02000000000000000000060f19232c364049535d667079838d96a0a29b938c878e969ea59b91877e746a60564c43392f251b1208000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000e1a26313d48525a5f5f5f5f5f5f5f5f5f5f5c554c41363b4650595e5f5f5f5f5f5f5f5f5f5d564d43382c201408000e1a26323e48525a5f5f5f5f5f5f5f5f5f5e5850453a2f23170b000000000000000000030a0f1417181919191919191919191919191919191919191919191919191919191919191919191919181714100b0400000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110d090300000000000000000000000000000000000000010a141d262f38414a525657554f463d342b221910070000000000000000040d161f28313a434b525656534c433a31281f160d0400000000000000000000000000000000000006121d2935414d5864707c88949fabb7aea49d99999999999999999999999999999999999999999999999ba2acb7ada2968a7e72665a4f43372b1f140800000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21150d18232e39434e59646f79848f9aa5a89e93887d7268616e7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000111d2a3744505d6a7683909da9aea194887b6e6155483b2f2215090000000c1925323e4b5864717e8b97a4b1a5988b7e7165584b3e3225180b000000000000000000000000030a11181e242e3b4855616e7b848484847d756d655c544c443c3935312c27221c160f08010000000000000000000000000000000000000000000000060d141a202633404d59667380848484837a726a62595149413d3a37332f2a251f1a130c05000000000000000000000000000a141d262d34383a3b3b3b3b3b3b3e4b5865717e848484847b736b635a524a423a3135393b3b3b3b3b3b3b3b3b39352f2820160c020000000000000000000000040e18212b353e48515b656e78828b959fa7a09894979ea69f968c82786e655b51473d332a20160c02000000000000000000000f1b27333f4a545d656d757e868e969ea79d92887e746a5f554b41372d23180e04000000000000000000000007111a242e37414b545e67717b858e98a1a59e969498a0a79d938980756c62584e443b31271d130900000000000000000013202c3946535f6c798693a0a0a09a8d8173675a4d4034271a0d000915202b3640484e52535353535353535353504b433a2f343e474e52535353535353535353514c443b31261b1004000a16212c3740484f525353535353535353524d463e34291e12070000000000000000050d141b20232525252525252525252525252525252525252525252525252525252525252525252525252524211c160f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c262f38414a535c636460584f463d342b22191007000000000000040d161f28313a434c555d63635e564d433a31281f160c030000000000000000000000000000000000010d1924303c48545f6b77838f9aa6b2a99d928c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c909aa6b2a99d9185796d62564a3e32261b0f0300000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2115141f2a353f4a55606b75808b96a1aba2978c81766c61626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000101c2936424f5c6875828e9ba8afa296897c7063564a3d3024170b0000010e1b2734404d596673808c99a5b2a5988b7e7165584b3e3225180b0000000000000000000000000000060d15212e3b4854616d78828c918f877f766e665e564e453d352d241c17110b04000000000000000000000000000000000000000000000000000002090f192633404c5965717c8690918c847c746b635b534a423a322a231e19140e08020000000000000000000000000000020b141c23282c2e2e2e2e2e2e313e4b5764707a858f918d857d756c645c544b433b332d2e2e2e2e2e2e2e2e2e2d29241e160e0400000000000000000000000000060f19232c363f49535c667079838d96a0a0a0a0a0a0a0978e847a70665c53493f352b22180e040000000000000000000000121e2b3744505b666f777f879098a0a09f958b81766c62584e44392f251b11060000000000000000000000000008121c252f39424c555f69727c868f99a0a0a0a0a0a09e958b81776d635a50463c32291f150b0100000000000000000013202c3946535f6c798693939393938d8173675a4d4034271a0d00040f1a242e363d4345464646464646464646443f3931282c353c424546464646464646464644403a32291f150a000005101a252e373e4346464646464646464645423c342c22170d0100000000000000040e171f262c3032323232323232323232323232323232323232323232323232323232323232323232323232302d27211910060000000000000000000000000106090b0b0a0804000000000000000000000000000000000000000000000206090a0a0906020000000000000000000000000000000003070a0c0c0c0c0c0c0c0c0c0c0b0804000000000000000009131c252e38414a535c656e716a61584f463d342b2219100700000000040d161f28313a434c555e676f6f685f554c433a31281e150b01000000000000000000000000000000000008141f2b37434f5b66727e8a96a1ada79a8d81808080808080808080808080808080808080808080808a97a4b0a4988c8175695d5145392d22160a0000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21151b26313b46515c67717c87929da7a59b90857a70655a626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000e1b2834414e5a6773808d99a6b0a4978b7e7165584c3f3226190d000005111d2a36434f5c6875818e9aa7b2a5988b7e7165584b3e3225180b0000000000000000000000000000000713202c3845515c66707a858f999189817870685f574f473f362e261e160d05000000000000000000000000000000000000000000000000000000000b1824313d4955606a747e8993968e867d756d655c544c443c332b231b130a0200000000000000000000000000000000020a11171c1f2121212121232f3c48535e69737d8791978f877e766e665d554d453d342c2421212121212121201d19130c0400000000000000000000000000000007111a242d37414a545e67717a848e939393939393938f857b72685e544a41372d2319100600000000000000000000000013202c3946535f6c7881899193939393938d83796f655a50463c32271d13090000000000000000000000000000000a131d27303a434d57606a747d8791939393939393938c83796f655b51483e342a20170d030000000000000000000013202c3946535f6c79868686868686868173675a4d4034271a0d000008121b242c32363939393939393939393938342e271f232b31363939393939393939393938342f2820170d0300000009131c252c32373939393939393939393836312a2219100600000000000000010c16202931373c3e3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d38322b22180e0300000000000000000000070d121517181714100b04000001040608090a0b0b0a0a08070502000001080e1215171715120e0802000000000000000000000000030a0f1417181919191919191919181714100b04000000000005101a252e37404a535c656e777c736a61584f463d342b231a10070000040d161f28313a434c555e6770797a71675e554c433a30271d13080000000000000000000000000000000000030f1b27323e4a56626d7985919da8a99d9185797373737373737373737373737373737373737376828e9aa6ab9f93877b7064584c4035291d11050000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2117222d37424d58636d78838e99a3a99f94897e74695e55626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000d1926333f4c5865727e8b97a4b0a6998d8073675a4e4135291c1004020915212d3946525e6b7784909da9b2a5988b7e7165584b3e3225180b00000000000000000000000000000004101c28343f4a545e69737d87919b928a827a716961595148403830281f170f070000000000000000000000000000000000000000000000000000000915212d38434e58626c76818b95988f877f766e665e564e453d352d241c140c040000000000000000000000000000000000060c101314151515151f2b37424d57616b75808a9499908880786f675f574f463e362e251d151515151413110d0801000000000000000000000000000000000008121c252f38424c555f69727c8686868686868686867d736a60564c42382f251b11070000000000000000000000000013202c3946535f6c798686868686868686867b71675d53483e342a20160b01000000000000000000000000000000010b151e28323b454e58626b757e8686868686868686847a71675d53493f362c22180e050000000000000000000000131f2c3946525f6b7679797979797979797266594d4033271a0d00000009121a21262a2c2c2c2c2c2c2c2c2c2c2b28231d151920252a2c2c2c2c2c2c2c2c2c2c2b28241e160e0500000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29251f181007000000000000000007121d28323b42484b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b49443d342a20150a0000000000000000020a12191e22242423201c160f070a0d1012141617171717161513110f0b080c13191e222323221e1a140c0400000000000000000000050d141b20232525252525252525252524201c160f06000000000a16212c374049525c656e7781867c736a61584f463d352c231a1007040d161f28313a434c555e67707982837970675e554c42392f24190d0200000000000000000000000000000000000a16222d3945515d6974808c98a4ada1958a7e7266666666666666666666666666666666666f7b87929eaaa69a8f83776b5f53473c3024180c000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e211e29333e49545f69747f8a959faaa3988d82776d625755626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000b1724313d4a56636f7c8895a1aea89b8f83766a5d5145382c20140e0e111a26313d4955626e7a87939facb2a5988b7e7165584b3e3225180b000000000000000000000000000000000c18232e38424c57616b75808a949c948c847b736b635a524a423a312921191008000000000000000000000000000000000000000000000000000004101c27323c46505a656f79838d98999189817870685f574f473f362e261e160d050000000000000000000000000000000000000406080808080f1a26303b454f59636e78828c969a928a817971696058504840372f271f170e080807040100000000000000000000000000000000000000000a131d26303a434d57606a73797979797979797979756b61584e443a30261d13090000000000000000000000000000131f2c3946525f6b7679797979797979797974695f554b41372c22180e040000000000000000000000000000000000030c162029333c465059636d7679797979797979797972685f554b41372e241a1006000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6960554a3d3125180c00000000080f151a1e1f2020202020202020201e1c17120b0e141a1d1f2020202020202020201f1c18130c05000000000000010910161a1e1f20202020202020201f1d19140e060000000000000000000c18242f3a444d5458585858585858585858585858585858585858585858585858585858585858585858585858554f463c31261b0f03000000000000020b141c242a2e3131302c27211912161a1c1f2123242424242322201e1b1814151d242a2e30302e2a251e160d040000000000000000040e171f262c3032323232323232323232302d27201810060000000e1a26323e48525b646e7780898f867c736a61584f473e352c231a100d161f28313a434c555e677079828b8c837970675e544b41352a1e1206000000000000000000000000000000000005111d2935404c58646f7b87939faba69a8e82766a5f595959595959595959595959595c67737f8b97a3ada1968a7e72665a4f43372b1f1308000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e21252f3a45505b65707b86919ba6a79c91867b71665b5055626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000915222e3b4754606d7986929fabab9e9286796d6155483d31251c1b1b1d232c37424e5a66727e8a96a2afb2a5988b7e7165584b3e3225180b0000000000000000000000000000000006111c26303b454f59636d78828c969e958d857d756c645c544b433b332b221a120900000000000000000000000000000000000000000000000000000b15202a343e49535d67717b86909a9b928a827a716961595148403830281f170f05000000000000000000000000000000000000000000000009141f29333d47515c66707a858f999c938b837b736a625a524941393129201810060000000000000000000000000000000000000000000000010b141e28313b454e58626a6c6c6c6c6c6c6c6c6c6b63594f463c32281e150b010000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6a62584d43392f251b100600000000000000000000000000000000000000040e17212a343e47515b646b6c6c6c6c6c6c6c6c6c6960574d43392f251c1208000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d574e44392d2115090000000000040a0e1113131313131313131313120f0b060003090d111313131313131313131312100c0701000000000000000000050a0e1113131313131313131312110d090300000000000000000000101c2834404b565f6465656565656565656565656565656565656565656565656565656565656565656565656560584e43372b1f12060000000000020b141d262e353a3d3e3c38322b221e2226292b2e2f30313131302e2d2a2724201f272f363a3d3d3b3630281f160d04000000000000010c16202931373c3e3f3f3f3f3f3f3f3f3f3d38322a22180e030000111e2a37434f5a646d76808992988f867c736a615950473e352c231a161f28313a434c555e677079828b94948b827970665d52463a2e2115080000000000000000000000000000000000000c1824303b47535f6b76828e9aa6ab9f93877b6f63574c4c4c4c4c4c4c4c4c4c4c54606c7884909ca7a99d9185796d61564a3e32261a0f03000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e212b36414c57616c77828d97a2aba0958a80756a5f544a55626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000006131f2c3845515e6a76838f9ba7aea195897d7165594d42372e2927282a2e343e48535f6a76828e9aa6b2b2a5988b7e7165584b3e3225180b00000000000000000000000000000000000a141f29333d47515c66707a848f999f978f877e766e665d554d453d342c241b110700000000000000000000000000000000000000000000000000040e18222d37414b555f6a747e88929d9c948c847b736b635a524a423a312921170d0300000000000000000000000000000000000000000000020d17212b36404a545e68727d87919b9d958d857c746c645b534b433b322a22180e040000000000000000000000000000000000000000000000020c161f29333c4650585e5f5f5f5f5f5f5f5f5f5e5951473e342a20160c030000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5e5850463c31271d1309000000000000000000000000000000000000000000050f18222c353f49525a5f5f5f5f5f5f5f5f5f5f5d574e453b31271d130a00000000000000000000000000000a16212c3740484f525353535353535353514c453c32271c11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3844515d68707272727272727272727272727272727272727272727272727272727272727272727272716a5f53473b2e21150800000000020b141d262f3840464a4b49443d342b2a2e3235383a3c3d3e3e3d3d3b393734302c2831394146494a47413a31281f160d04000000000007121d28323b42484b4c4c4c4c4c4c4c4c4b49443c342a2015090000131f2c3946525f6b768089929ba1988f867c736b625950473e352c231f28313a434c555e677079828b949d9d948b82786e6256493d3023170a00000000000000000000000000000000000007131f2b37424e5a66727d8995a1ada3978c8074685c504440404040404040414d5965717c8994a0aca4988c8074695d5145392d22160a00000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e27323d48525d68737e89939ea9a4998e84796e63584d4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000004101d2935424e5a67737f8b97a3afa5998d81756a5e5349403935343436393f47505a65707b87929eaab6b2a5988b7e7165584b3e3225180b0000000000000000000000000000000000030d17212b35404a545e68727d87919ba199908880786f675f574f463e362d23180d020000000000000000000000000000000000000000000000000006111b252f39434e58626c76818b959f9e958d857d756c645c544b433b33291f14090000000000000000000000000000000000000000000000050f19242e38424c57616b757f89949e9f968e867e766d655d554d443c342a20160a000000000000000000000000000000000000000000000000040d17212a343e464d52535353535353535353524e473f352c22180e04000000000000000000000000000000000a16212c3740484f52535353535353535353524d463e342a20150b010000000000000000000000000000000000000000000006101a232d3740484f52535353535353535353514c453c33291f150b02000000000000000000000000000005101a252e373e4346464646464646464645413b332a20160b00000000000000000000000000000000000000000000040a0e10121212121212121212110e0b060000000000000000000000000000000000000003070a0c0c0c0c0c0c0c0b08040000000000000000000013202c3946535f6c797e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7c6f6255493c2f221609000000010a141d262f38414a525657554f463d34363a3e424547494a4a4a4a49484643403c38343a434b525656534c433a31281f160d04000000000c18242f3a444d5458585858585858585858554e463c31261a0e0200131f2c3946525f6b768089929ba4a1988f867d746b625950473e352c28313a434c555e677079828b949da69e958c837a6f63564a3d3024170a000000000000000000000000000000000000030e1a26323e4955616d7985909ca8a89c9084786c6155493d33333333333a46525d6975818d99a5ab9f93877b7064584c4034291d110500000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e2e39444e59646f7a858f9aa5a89d92887d72675c51474855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000d1926323e4b57636f7b87939fabaa9e92877b70655b524a4542414143454a5058626c76818c98a2a6aeb2a5988b7e7165584b3e3225180b000000000000000000000000000000000000050f19242e38424c56616b757f89949ea29a928a81797169605850483f352a1e1307000000000000000000000000000000000000000000000000000009131d27323c46505a646f79838d97a19f978f877e766e665d554d453b31261a0e02000000000000000000000000000000000000000000000008121c26303a454f59636d77828c96a0a098908880776f675e564e463c32271c1004000000000000000000000000000000000000000000000000050f18222c343c424546464646464646464645423d362d231a1006000000000000000000000000000000000005101a252e373e434646464646464646464645423c342c22180e0400000000000000000000000000000000000000000000000008111b252e373e434646464646464646464645413b332a21170d030000000000000000000000000000000009131c252c32373939393939393939393835302921180e040000000000000000000000000000000000000000010910151a1d1e1e1e1e1e1e1e1e1e1d1b17110b0300000000000000000000000000000003090f1417181919191919181714100b04000000000000000013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c897c6f6255493c2f2216090000010a131c262f38414a535c636460584f463d42474b4e51535556575757565452504c48443f434c555d63635e564d433a31281f160c03000000101c2834404b565f6465656565656565656560584d42372b1e120600111e2a37434f5a646d768089929ba4a1988f867d746b625950473e35313a434c555e677079828b949da69e958c837a71685e53473b2e221509000000000000000000000000000000000000000a15212d3945505c6874808c97a3ada195897d7165594d42362a2627333f4a56626e7a86929ea9a69a8e83776b5f53473c3024180c0000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b2e35404b55606b76818b96a1aca1968b81766b60554b404855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000a16222e3b47535f6b77838e9aa5aea3988c81776d645c55514f4d4e4f52565b626a747e889395959ca6b2a5988b7e7165584b3e3225180b0000000000000000000000000000000000000008121c26303a454f59636d77828c96a0a49c938b837b726a625a51463b2f23170b0000000000000000000000000000000000000000000000000000010b16202a343e48535d67717b85909aa4a199908880786f675f574d42372b1f13060000000000000000000000000000000000000000000000000a141e29333d47515b66707a848e99a3a29a91898179706860584e43382c20140800000000000000000000000000000000000000000000000000061019222a3136383939393939393939393936322b241b11080000000000000000000000000000000000000009131c252c3237393939393939393939393836312a221a1006000000000000000000000000000000000000000000000000000009131c252c3237393939393939393939393835302921180f050000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29241e170f060000000000000000000000000000000000000000010b131b2126292b2b2b2b2b2b2b2b2b2a27221c150d0400000000000000000000000000050d141b20232525252525252524201c160f060000000000000013202c3946535f6c7986939898989898989898989898989898989898989898989898989898989898989896897c6f6255493c2f221609000009131c252e38414a535c656e716a61584f484e53575a5e60626364646363615f5c5955504b4c555e676f6f685f554c433a31281e150b010000121f2b3844515d68707272727272727272716a5f53473a2e211408000e1b27323e49525b646d768089929ba4a1988f867d746b625950473e3a434c555e677079828b949da69e958c837a71685f564d42362b1f13060000000000000000000000000000000000000005111c2834404c57636f7b87939eaaa5998e82766a5e52463a2e232b37434f5b67737e8a96a2ada1968a7e72665a4e43372b1f13070000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b313c46515c67727c87929da8a59a8f857a6f64594f443c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000006121e2a36424e5a66727d89949faaa99e93897f766d66615d5b5a5b5c5e62666d747c869092898a95a1aea5988c7e7265584c3f3225190c00000000000000000000000000000000000000000a141e29333d47515b66707a848e98a0a09d958d857c746c63574c3f33261a0d010000000000000000000000000000000000000000000000000000040e18222c37414b555f69747e88929ca0a09a928a817971695f53473b2e221509000000000000000000000000000000000000000000000000020d17212b353f4a545e68727c87919ba0a09b938b837a726a6055493c3023170a00000000000000000000000000000000000000000000000000000710181f25292c2c2c2c2c2c2c2c2c2c2c2a26201a12090000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c29251f181007000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c29241f170f0600000000000000000000000000000000000000010910161a1e1f20202020202020201f1c19130d050000000000000000000000000000000000000000000a131d252c323638383838383838383837332e271f160c020000000000000000000000040e171f262b3032323232323232302d272018100600000000000013202c3946535f6c798693a0a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a296897c6f6255493c2f2216090005101a252e37404a535c656e777c736a615854595e63676a6d6f707171706f6e6b6865615c57555e6770797a71675e554c433a30271d1308000013202c3946535f6c797e7e7e7e7e7e7e7e7b6f6255483c2f221509000a16212c374049525b646d768089929ba4a1988f867d746b62595047434c555e677079828b949da69e958c837a71685f564d443b30251a0e0200000000000000000000000000000000000000000c18232f3b47535e6a76828e9aa5aa9e92867a6e63574b3f3327303c48545f6b77838f9ba7a89d9185796d61564a3e32261a0f030000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b38424d58636e78838e99a4a99e93897e73685d53483d3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000020e1a26323e4a55616c78838e99a3ada59b91888078726d6a686767686b6e72787e868f978c818794a0ada5988c7e7265584c3f3225190c0000000000000000000000000000000000000000020c17212b353f4a545e68727c879193939393938e867e74675b4e4135281b0e0200000000000000000000000000000000000000000000000000000006101a252f39434d58626c76808b9393939393938b837b6f6356493d3023160a00000000000000000000000000000000000000000000000000050f19232e38424c56606b757f899393939393938c847c7164584b3e3225180b000000000000000000000000000000000000000000000000000000060e14191d1f2020202020202020201f1d1a150f0800000000000000000000000000000000000000000000010910161a1e1f2020202020202020201f1d19140e060000000000000000000000000000000000000000000000000000000000010910161a1e1f2020202020202020201f1d19130d0600000000000000000000000000000000000000000000050a0e1113131313131313131312100d080200000000000000000000000000000000000000000006111b252f373d42454545454545454545433f3931281e130900000000000000000000010c16202931373c3e3f3f3f3f3f3f3d38322a22180e03000000000013202c3946535f6c798693a0acb2b2a79e9998989898989898989898989898989898989898989898989896897c6f6255493c2f221609000a16212c374049525c656e7780867c736a615f656a6f7376797b7d7d7d7d7c7a7875716d68625e67707982837970675e554c42392f24190d020013202c3946535f6c79868c8c8c8c8c8c887b6f6255483c2f2215090005101b252e374049525b646d768089929ba4a1988f867d746b6259504c555e677079828b949da69e958c837a71685f564d443b32291f140900000000000000000000000000000000000000000007131f2a36424e5a65717d8995a0aca3978b7f73675b4f44382c35404c5864707c8894a0aba4988c8074685d5145392d21160a000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b3e49545f6a74808a95a0aaa2978d82776c61574c41363c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000000000010507101c2936434f5c69768390908376695c4f4336291c1007050100000000000000000a16212d3944505b66717c87919ca5ada39a918a837d797675747475777a7e8389909890857a8693a0ada5988c7e7265584c3f3225190c000000000000000000000000000000000000000000050f19232d38424c56606a757f86868686868686868275685b4e4235281b0f020000000000000000000000000000000000000000000000000000000009131d27313b46505a646e788386868686868686867d7063564a3d3023170a000000000000000000000000000000000000000000000000000007111c26303a444f59636d778186868686868686867e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000003090d111213131313131313131313110e090400000000000000000000000000000000000000000000000000050a0e111313131313131313131312110d09030000000000000000000000000000000000000000000000000000000000000000050a0e111313131313131313131312100d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3741494e5151515151515151514f4a433a30251a0e0300000000000000000007121d28323b42484b4c4c4c4c4c4b49443c342a20150a000000000013202c3946535f6c7986939faab4ada1958c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b897c6f6255493c2f221609000e1a26323e48525b646e7780898f867c736a6a70767b7f838688898a8a8a898784817d78736e677079828b8c837970675e544b41352a1e12060013202c3946535f6c7986939898989895887b6f6255483c2f221509000009131c252e374049525b646d768089929ba4a1988f867d746b6259555e677079828b949da69e958c837a71685f564d443b322920170d02000000000000000000000000000000000000000000020e1a26313d4955616c7884909ca7a79b9084786c6054483c303945515d6975818c98a4ab9f93877b7064584c4034291d1105000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154483b45505b66707b86919ca6a69b91867b70655b50453a2f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000000000000000111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c000000000000000000000000000000000000000000070d1114161c2936434f5c69768390908376695c4f4336291c1614110d070000000000000005111c28333f4a55606b75808a939ca5aca39b948e8986838181818284868a8f949b92887e7986939faca6998c7f7265594c3f3226190c0000000000000000000000000000000000000000000007111c26303a444e59636d7779797979797979797973675a4e4135281b0e0200000000000000000000000000000000000000000000000000000000010b151f2a343e48525c6771797979797979797979786e6256493c3023160a0000000000000000000000000000000000000000000000000000000a141e28323d47515b6570787979797979797979797064574b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090a0a0a0a0a0a0a0a0a0a0804000000000000000000000000000004101c28333f49535a5e5e5e5e5e5e5e5e5e5b554c41362b1f13070000000000000000000c18232f39444d5458585858585858554e463c31261b10050000000013202c3946535f6c79838e98a2acab9e92857e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7b6f6255493c2f22160900111e2a37434f5a646d76808992988f867c73757c82878b8f9294969797979593918d89847f797279828b94948b827970665d52463a2e2115080013202c3946535f6c798693a0a5a5a295887b6f6255483c2f2215090000010a131c252e374049525b646d768089929ba4a1988f867d746b625e677079828b949da69e958c837a71685f564d443b322920170e0500000000000000000000000000000000000000000000000915212d3844505c68737f8b97a3aca094887c7065594d41353e4a56616d7985919da9a69a8e83776b5f53473b3024180c00000000000000000000000000000013202c3946535f6c798693a0aca194887b6e615448414c57626c77828d98a2aa9f958a7f74695f54493e332f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000000000000000000000000000002070b111d2a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000000030b12181d2022222936434f5c69768390908376695c4f4336292222201d18120b030000000000000b17222d39444e59636e78818a939ba2a8a69f9a9592908e8e8e8f9093969a9a928980767885929faca6998c807366594c403326190d00000000000000000000000000000000000000000000000a141e28323d47515b656b6c6c6c6c6c6c6c6c6c6961564b3f3226190d000000000000000000000000000000000000000000000000000000000000030e18222c36404b555f686c6c6c6c6c6c6c6c6c6c675d52463a2e211508000000000000000000000000000000000000000000000000000000020c17212b353f49535e676c6c6c6c6c6c6c6c6c6c685e53483c2f23160a00000000000000000000000000000000000000000000000000000000000000000306080a0b0c0d0d0d0d0c0b0a080604010000000000000000000000000000000000000000000000000000000000000000000003070809090909090909090907040000000000000000000000000000000000000000000206090a0a0a0a0a0a0a0a0a0a080400000000000000000000000000000307090a0a0a0a0a0a0a0a0a0907030000000000000000000001080e12151717171717171717171614100b0500000000000000000000000006131f2c3844505b656a6b6b6b6b6b6b6b6b675e53473b2f23160a0000000000000000000f1c2834404b565e6465656565656560584d43382c21160a00000000121f2b3844505c67717c86909aa5ada1968c8277717171717171717171717171717171717171717171717171716a5f53473a2e21150800131f2c3946525f6b768089929ba1988f867c80878d92979b9fa1a3a4a4a3a2a09d9995908a847d828b949d9d948b82786e6256493d3023170a0013202c3946535f6c798693a0acafa295887b6f6255483c2f221509000000010a131c252e374049525b646d768089929ba4a1988f867d746b677079828b949da69e958c837a71685f564d443b322920170e0500000000000000000000000000000000000000000000000004101c28343f4b57636e7a86929eaaa5998d8175695d51463a424e5a66727e8a96a2ada1958a7e72665a4e42372b1f130700000000000000000000000000000013202c3946535f6c798693a0aca194887b6e61544848535e68737e89949ea9a3998e83786d63584d42372d2f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000000000000000000000001070d13171c202a3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c000000000000000000000000000000000000020c151d24292d2f2f2f36434f5c69768390908376695c4f43362f2f2f2d29241d150c02000000000006111c27323d47525c666f78818990979da2a5a6a29e9c9b9a9a9b9d9f9c97908880776e7885919ea9a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000020c16212b353f49535a5f5f5f5f5f5f5f5f5f5f5e584f453a2e22160a0000000000000000000000000000000000000000000000000000000000000006101a242f39434d565d5f5f5f5f5f5f5f5f5f5f5c554b41352a1e120500000000000000000000000000000000000000000000000000000000050f19232d38424c555c5f5f5f5f5f5f5f5f5f5f5c564d42372b1f1307000000000000000000000000000000000000000000000000000000000106090d101214161819191a1a191918171513110e0b07030000000000000000000000000000000000000000000000000000000000050b0f131516161616161616161514110c07000000000000000000000000000000000001080e12151717171717171717171614100b0500000000000000000000040a0f131617171717171717171716130f0a0300000000000000040c13191e2223242424242424242423201c17100800000000000000000000000815212e3b4754606d7678787878787878786f64574b3e3125180b000000000000000000121e2b3744505c67707272727272716a5f54493e32271b10040000000f1c2834404b55606a747e89939da7a89e94897f756b656565656565656565656565656565656565656565656460584e42372b1f120600131f2c3946525f6b768089929ba4a1988f868b92989ea3a7a8a5a3a2a2a3a4a6a9a5a19b958f888b949da69e958c837a6f63564a3d3024170a0013202c3946535f6c798693a0acafa295887b6f6255483c2f22150900000000010a131c252e374049525b646d768089929ba4a1988f867d747079828b949da69e958c837a71685f564d443b322920170e0500000000000000000000000000000000000000000000000000000b17232f3b46525e6a76828d99a5a99d91867a6e62564a3e47535f6b77838e9aa6a89c9185796d61554a3e32261a0e0300000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154484f5a646f7a85909aa5a79d92877c71675c51463b31262f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000000000050c13191e23282c2f3744505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c0000000000000000000000000000000000000a141e272e35393c3c3c3c434f5c69768390908376695c4f433c3c3c3c39352e271e140a0000000000000b16202b36404a545d666f777e868c9196999c9e9fa09f9e9d9b9995918b857e766e6a7784919c9c9c9a8d8073675a4d4034271a0d000000000000000000000000000000000000000000000000050f19232d3741494f52535353535353535353514d463d33281d1206000000000000000000000000000000000000000000000000000000000000000008131d27313b444b5153535353535353535353504a43392f24190d02000000000000000000000000000000000000000000000000000000000007111b26303a434b5053535353535353535353504b443b30261a0f03000000000000000000000000000000000000000000000000000003090d1216191c1f212324252626262626252322201d1a17130f0b0601000000000000000000000000000000000000000000000000000810161b1f22222222222222222222201d18120a020000000000000000000000000000040c13191e2223242424242424242423201c1710080000000000000000060e151b1f22242424242424242424221f1b150e060000000000030d161e252a2e3030303030303030302f2d28221a1209000000000000000000000815222e3b4855616e7b858585858585857e7165584b3e3225180b000000000000000000131f2c3946525f6c787e7e7e7e7e7b71655a4f43382c2115090000000c17232e39444e58626c76818b959faaa59b91877d72685e585858585858585858585858585858585858585858554e463c31261a0f0300111e2a37434f5a646d768089929ba4a19893959ca3a9a49f9b9997969696979a9da1a6a7a09a94969da69e958c837a71685e53473b2e2215090013202c3946535f6c798693a0a3a3a295887b6f6255483c2f2215090000000000010a131c252e374049525b646d768089929ba4a1988f867d79828b949da69e958c837a71685f564d443b322920170e0500000000000000000000000000000000000000000000000000000006121e2a36424d5965717c8894a0aca2968a7e72675b4f434c58636f7b87939faba4988c8074685d5145392d21160a0000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e61544b56606b76818c96a1aba1968b80756b60554a3f352a222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000000000000000000000810171e242a2f34383c3f44505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c000000000000000000000000000000000006111c263039404548494949494f5c69768390908376695c4f494949494845403930261c11060000000000040f19242e38424b545d656d747a8085898d8f9192939292918f8c8985807a736c6469768390909090908e8174675b4e4134281b0e0000000000000000000000000000000000000000000000000007111b252f373e434646464646464646464645413b342b21170c010000000000000000000000000000000000000000000000000000000000000000010b151f29323a404446464646464646464646443f3931271d1308000000000000000000000000000000000000000000000000000000000000000a141e2831393f444646464646464646464644403a32291f14090000000000000000000000000000000000000000000000000003090f14191e2225292b2e303132333333333231302e2c2a27231f1b16110c06000000000000000000000000000000000000000000000008121a21272c2e2f2f2f2f2f2f2f2f2f2d29231c140b02000000000000000000000000030d161e252a2e3030303030303030302f2d28221a120900000000000006101820262c2f3030303030303030302f2b2620180f06000000000b151f282f363a3d3d3d3d3d3d3d3d3d3c39332c241b11060000000000000000000815222e3b4855616e7b8892929292928b7e7165584b3e3225180b000000000000000000121f2b3844515d69737e898c8c8c82776b6054493d31251a0e02000007121d27323c46505a656f79838e98a2aca3998f847a70665c514b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b49433c342a20150900000e1b27323e49525b646d768089929ba4a3a0a1a7a59e98938f8c8a8989898b8d91969ba1a8a4a1a2a79e958c837a71685f564d42362b1f13060013202c3946535f6c7986939696969695887b6f6255483c2f221509000000000000010a131c252e374049525b646d768089929ba4a1988f86828b949da69e958c837a71685f564d443b322920170e0500000000000000000000000000000000000000000000000000000000020d1925313d4854606c78848f9ba7a79b8f83776b5f5347505c6874808c98a4ab9f93877b6f64584c4034281d11050000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e6154525c67727d88929da8a49a8f84796f64594e43392e23222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000000000000020a121a22292f353b4044484b4e505d6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000b17222e38424b515555555555555c69768390908376695c555555555555514b42382e22170b00000000000008121c263039424b535b62696f75797d818384868686858482807d79746f69625b6875818383838383838275685b4f4235281c0f00000000000000000000000000000000000000000000000000000a131d252d3337393939393939393939393835302a22190f0500000000000000000000000000000000000000000000000000000000000000000000030d1720282f34383939393939393939393937342e271f150c0100000000000000000000000000000000000000000000000000000000000000020c161f272e34383939393939393939393938342f2820170d02000000000000000000000000000000000000000000000000070e141a20252a2e3235383a3c3e3f404040403f3e3d3b3936332f2b27221d17110b04000000000000000000000000000000000000000006111a242c33383b3c3c3c3c3c3c3c3c3c39342e261d140a0000000000000000000000000b151f282f363a3d3d3d3d3d3d3d3d3d3c39332c241b110600000000040e18222a32373b3d3d3d3d3d3d3d3d3d3b37312a21180e03000006121d27313a41474a4a4a4a4a4a4a4a4a49443e362d23180d0100000000000000000815222e3b4855616e7b88959e9e9e988b7e7165584b3e3225180b000000000000000000101c2935414c57626c77828e9893887c71655a4e42362a1e12060000010b16202a343e49535d67717c86909aa5aba0968c82786d63594f453e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3c38322a22180e0300000a16212c374049525b646d768089929eaaaca9a19a938d8783807d7c7c7c7e81858a90969ea5aeaea3978c837a71685f564d443b30251a0e020013202c3946535f6c7986898989898989887b6f6255483c2f22150900000000000000010a131c252e374049525b646d768089929ba4a1988f8d949da69e958c837a71685f564d443b322920170e050000000000000000000000000000000000000000000000000000000000000914202c3844505b67737f8b96a2ab9f93887c7064584c55616d7985919ca8a69a8e82766b5f53473b3024180c000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e615458636e79848e99a4a89e93887d73685d52473d32271c222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000000000000020b141c242c333a41464b5054575a5c5e6a7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c00000000000000000000000000000000000f1b27333f4a545c616262626262626976839090837669626262626262615c544a3f33271b0f000000000000000a141e273039414951585e64696d7174767879797978777573706d68635e57596570767676767676767671665a4e4135281b0f0000000000000000000000000000000000000000000000000000010b131b21272a2c2c2c2c2c2c2c2c2c2c2c29251f181007000000000000000000000000000000000000000000000000000000000000000000000000050e161d24282b2c2c2c2c2c2c2c2c2c2c2b28231c150d03000000000000000000000000000000000000000000000000000000000000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2b28231d160e050000000000000000000000000000000000000000000000030b121920262b31363a3e414447494a4c4c4d4d4c4c4b494745423f3c38332e28231c160f07000000000000000000000000000000000000020d18232c363d44484949494949494949484540382f261b10050000000000000000000006121d27313a41474a4a4a4a4a4a4a4a4a49443e362d23180d010000000a15202a343c43484a4a4a4a4a4a4a4a4a48433c332a20150a00000b17232e39434c525657575757575757575550483f34291e120600000000000000000815222e3b4855616e7b8895a2aba5988b7e7165584b3e3225180b0000000000000000000c1824303b45505b66717c8893998d82766a5e52463a2e221609000000040e18222d37414b55606a747e89939da7a89e948a80756b61564c4238323232323232323232323232323232302c272018100600000005101b252e374049525b646e79838f9ca9a9a0989088827c7773716f6f707275797e858c939ca4ada195887d73685f564d443b32291f1409000013202c3946535f6c787c7c7c7c7c7c7c7c7a6e6255483b2f2215090000000000000000010a131c252e374049525b646d768089929ba4a19b999ea69e958c837a71685f564d443b322920170e050000000000000000000000000000000000000000000000000000000000000004101b27333f4b56626e7a86929da9a4988c8074685d515a65717d8995a1ada1958a7e72665a4e42372b1f1307000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e61545f6a75808a95a0aba2978c81766c61564b41362b2015222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000000000000010a141d262e363e454c52575c606467696b6c7784909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c0000000000000000000000000000000000121e2b3744505b666e6f6f6f6f6f6f6f7683909083766f6f6f6f6f6f6f6e665b5044372b1e1200000000000000020c151e272f373f464d53585d616467696b6c6c6c6b6b696764615c58524c545e666969696969696969675f554a3e3226190d000000000000000000000000000000000000000000000000000000010910161b1e202020202020202020201f1d19140d060000000000000000000000000000000000000000000000000000000000000000000000000000040c12181c1f202020202020202020201e1c17120b030000000000000000000000000000000000000000000000000000000000000000000000030b12171c1e202020202020202020201f1c18120c040000000000000000000000000000000000000000000000050d151d242b31373c41464a4e51535557585959595959575654524f4c48433f39342e2720191109010000000000000000000000000000000007121e29343e484f54555555555555555555514a41382d22160a000000000000000000000b17232e39434c525657575757575757575550483f34291e12060000030f1b26323c464e54575757575757575757544e453c31261b0f03000f1c28343f4b555d636363636363636363615a51463a2f23160a00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000008131e29343f4954606b76828e9992877b6e62564a3e3225190d0000000006111b252f39444e58626c76818b959faaa69b91877d72685e544a40352b2525252525252525252525252523201c160e06000000000009131c252f3b47525e6974808a95a0aaa0978e867e76706b676463626365696d737a818a929ba5a4998f84796e63584c41352920170d020000121e2b3744505c666e6f6f6f6f6f6f6f6f6f685e52463a2d211407000000000000000000010a131c252e374049525b646d768089929ba6a7a6a99f958c837a71685f564d443b322920170e050000000000000000000000000000000000000000000000000000000000000000000b17222e3a46525d6975818d99a4a99d9185796d61555e6a76828e9aa6a89c9185796d61554a3e32261a0e02000000000000000000000000000000000013202c3946535f6c798693a0aca194887b6e615b66717b86919ca7a69b90857a70655a4f453a2f241915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000000000009131d262f38404850575d63686c70737677797984909d9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c000000000000000000000000000000000013202c3946535f6c787c7c7c7c7c7c7c7c839090837c7c7c7c7c7c7c7c786c5f5346392c20130000000000000000030c151d252d343b41474c5155585b5d5e5f5f5f5f5e5c5a5854504c47424c545a5c5c5c5c5c5c5c5c5b554d43392d22160a0000000000000000000000000000000000000000000000000000000000050a0f111313131313131313131312100d08020000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101213131313131313131313120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c07010000000000000000000000000000000000000000000000060e171f272e353c42484d52565a5d6062646566666666656463615e5b58544f4a453f39322b231b130b020000000000000000000000000000000a17232f3b46505a606262626262626262615c53493e33271b0e020000000000000000000f1c28343f4b555d636363636363636363615a51463a2f23160a000007131f2c37434e585f6363636363636363635f574e43372b1f130600121e2b3844505c676f70707070707070706c62574b3f3226190c00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000020d17222d38434e5a65717d8995978b7e72665a4d4135281c0f030000000009131d27323c46505a656f79838d98a2aca3998f847a70665c51473d33291e18181818181818181818181714100a04000000000000030f1b2834404b57636f7a86919ca7a2988e857c746c655f5b58565556595d626870778089939da7a1968b8074695d52463a2e22160a0000000f1b28333f4a545d626363636363636363625e564c41362a1e110500000000000000000000010a131c252e374049525b646d76808995a2afb3a79a8e837a71685f564d443b322920170e050000000000000000000000000000000000000000000000000000000000000000000006121e2935414d5964707c8894a0aba195897d72665a636f7b87929eaaa3988c8074685c5145392d21150a00000000000000000000000000000000000013202c3946535f6c798693a0aca194877b6e61626d77828d98a3aa9f94897e74695e53493e33281d1315222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000000000006101b252f38414a525a61686e74787c808284858687929e9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3225190c070200000000000000000000000000000013202c3946535f6c798689898989898989899292898989898989898986796c5f5346392c2013000000000000000000030b131b232a30363c4045494c4e50525253535251504e4b4844403b3a42494e4f4f4f4f4f4f4f4f4e4a433b31271c110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f182029313940474d53595e62666a6c6f70727373737372716f6d6b6764605b56504a443d352d251d140b0200000000000000000000000000000d1a26333f4b57626b6f6f6f6f6f6f6f6f6d655b4f43362a1d1104000000000000000000121e2b3844505c676f70707070707070706c62574b3f3226190c00000916222f3b48545f6a7070707070707070706a5f54473b2f2215090013202c3946535f6c787d7d7d7d7d7d7d7d73665a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000009141e27323d4955616c7885919b8e8276695d5044372b1e120500000000010b16202a343e49535d67717c86909aa4aba0968c82786d63594f453a30261c120b0b0b0b0b0b0b0b0b0a0804000000000000000007131f2c3844505c6874808b97a2a59b90867c736a625a544f4b49494a4d51575e666e77818b95a0a79c91857a6e62564a3e32261a0e0100000b17232e38424b5255565656565656565656534c443a3025190d0100000000000000000000040d161f28313a434c555e677079828b96a2afafa89b8f867c736a615950473e352c231a100700000000000000000000000000000000000000000000000000000000000000000000010d1925303c4854606b77838f9ba7a69a8e82766a5e6773808b97a3ab9f93877b6f63584c4034281d110500000000000000000000000000000000000013202c3946535f6c798693a0aca094877a6d6169737e89949faaa3988d83786d62574c42372c21170c15222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000000020d18222d37414a535c646c73798084898c8f91929393999f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f32251916130e08010000000000000000000000000013202c3946535f6c798693949494949494949494949494949494969386796c5f5346392c201300000000000000000000020911181f252b3035393c3f424445464646454443413f3c38342f31383e424343434343434343423e39322920150b000000000000000000000000000000000000000000000000000002050708090a0b0b0b0b0b0a090706030100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060708080808070604020000000000000000000000000000000000000000000000000000000000000000000000000000000306090c0e101112131313131212110f0d0b09060300000000000000000000000000000000000000000000000000040e17212a323b434a52585f656a6e7276797b7d7e808080807e7d7c7a7774706c67615c554e473f372f261d140a00000000000000000000000000000e1b2834414e5a67747c7c7c7c7c7c7c7c776b5e5245382c1f120500000000000000000013202c3946535f6c787d7d7d7d7d7d7d7d73665a4d4034271a0d01000a1724303d4a5763707c7d7d7d7d7d7d7d7c706356493d3023160a0013202c3946535f6c79868a8a8a8a8a8a8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000004101b2530394147505c6875818d9a9185786c5f53463a2d2014070000000000040e18222d37414b55606a747e88939da7a89e948a80756b61574c42382e24190f050000000000000000000000000000000000000a16232f3b4854606c7884909ca89f94897e746a61585049433f3c3c3d40454c545c656f79848e99a5a2968a7e73675a4e4236291d1104000006111c27303940464949494949494949494947423b32281e130800000000000000000000040d161f28313a434c555e677079828b949da7a3a2a6a1988f867c736b625950473e352c231a1108000000000000000000000000000000000000000000000000000000000000000000000814202c37434f5b67727e8a96a2aa9e92867a6e626c7884909ca8a69a8e82766b5f53473b2f24180c0000000000000000000000000000000000000013202c3946535f6c798693a0aca093877a6d656f7a85909ba5a79c91877c71665b50463b30251b100915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000008131e29343e49525c656e767e858b9095989b9d9fa0a0a49f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f322625231f19120b0200000000000000000000000013202c3946535f6c7986878787878787878787878787878787878d9386796c5f5346392c2013000000000000000000000000060d14191f24292d303335373839393939383635322f2c2824262d3235363636363636363635322e2720170e04000000000000000000000000000000000000000000000105090c0f1113151617181818181717151412100d0a07030000000000000000000000000000000000000000000000000206090a0a0a0a0a0a0a0a0a0907030003070a0d0f111314151515151412110e0c090501000000000000000000000000000000000000000000000000000000000000000003080c101316181a1c1e1f1f2020201f1e1d1c1a1815120f0b0702000000000000000000000000000000000000000000020c162029333c444d555c636a70757a7e8285888a8b8c8d8d8c8c8a898684807c78726d676059514941382f261c1208000000000000000000000000000e1b2834414e5b67748189898989898985786b5f5245382c1f120500000000000000000013202c3946535f6c79868a8a8a8a8a8a8173675a4d4034271a0d01000a1724303d4a5763707d8a8a8a8a8a8a8a7d7063564a3d3023170a0013202c3946535f6c798693979797978d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000915212c37414b52575965717e8a9794877a6e6155483b2f22150900000000000006111b252f39444e58626c76818b959faaa69b91877d73685e544a40352b21170d0200000000000000000000000000000000000d1926323e4b5764707c8895a1a59a8e83776d62584e463e3732302f31343a424a535d67727d8894a0a79b8f83776a5e5245392d2014070000000a151e272f353a3c3c3c3c3c3c3c3c3c3c3a36302920170c02000000000000000000040d161f28313a434c555e677079828b949da69d96959ba4a1988f867d746b625950473e352c231a1108000000000000000000000000000000000000000000000000000000000000000000030f1b27333e4a56626e7985919da9a3978b7e7367707c8894a0aca195897d72665a4e42372b1f13070000000000000000000000000000000000000013202c3946535f6c798693a0aca09386796d6b76818c97a1aba0958b80756a5f544a3f34291f14090915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000000020e1925303b46505a646e7780888f969ca1a5a8aaabacadac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3232322f2a241d140b02000000000000000000000013202c3946525f6b777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7e8b9386796c5f5346392c20130000000000000000000000000002080e13181c202426282a2b2c2c2c2c2b2a282623201c181c21262829292929292929292926221c160e0500000000000000000000000000000000000000000004080d1115181b1e2021232424252525242322211f1c1a1713100b07020000000000000000000000000000000000000001080e121517171717171717171716130f0b0f1316191c1e202121222221201f1d1b1815110d080300000000000000000000000000000000000000000000000000000000040a0f14181c1f222527292a2b2c2c2c2c2c2b2a282724221f1b17130e09030000000000000000000000000000000000000009141e28323b454e565f676e757b81868b8f9294969899999a9998979593908c88847e78726a635b534a41382e241a10050000000000000000000000000e1b2834414e5b6774818e969696969285786b5f5245382c1f120500000000000000000013202c3946535f6c798693979797978d8173675a4d4034271a0d01000a1724303d4a5763707d8a97979797968a7d7063564a3d3023170a0013202c3946535f6c798693a0a4a49a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000d1925313d49535d6365656f7c889596897c6f6356493d3023170a0000000000000009131d27323c46505a656f79838d98a2aca3998f857a70665c51473d33291e140a00000000000000000000000000000000000f1b2834414e5a6773808c98a5a195897d72665b50463c342c26232224293038414b55606c77838f9ba79f93867a6d6155483c2f221609000000030c151d24292d2f3030303030303030302e2a251e170e05000000000000000000040d161f28313a434c555e677079828b949da69d948b89929ba4a1988f867d746b625950473e352c231a11080000000000000000000000000000000000000000000000000000000000000000000a16222e3a45515d6975818c98a4a79b8f83776b74818c98a5a89c9185796d6155493e32261a0e020000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9386796c727d88939ea8a4998e84796e63584e43382d23180d020915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000008131f2b36414c57626c768089929aa1a7adb1b4b7b8b9b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c3f3e3f3e3b362e261d140b0200000000000000000000111e2a37434f5a656c6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d717e8b9386796c5f5346392c201300000000000000000000000000000003080c1014171a1c1e1f1f20201f1e1d1b191713100c1016191c1c1c1c1c1c1c1c1c1c1a16110b040000000000000000000000000000000000000000040a0f14191d2125282a2c2e30313132323131302f2d2b292623201c17130d080200000000000000000000000000000000040c13191e22232424242424242424221f1b161b1f2326282b2c2d2e2e2e2e2d2c2a2725211d19140e080200000000000000000000000000000000000000000000000002090f151b1f24282c2f3134363738393939393938373533312e2b27231f1a140e08020000000000000000000000000000000006101b25303a444d576068717880878d92979b9ea1a3a2a1a0a0a1a2a4a29f9c98948f89837c756d655c534a40362c22170d0200000000000000000000000e1b2834414e5b6774818e9ba2a29f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0a4a49a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4a4a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000f1c2835414e5a656f7272727a8794978a7d7164574a3e3124180b00000000000000010b16202a343e49535d67717c86909aa4aba1968c82786e63594f453b30261c120800000000000000000000000000000002111d2a3643505c6975828f9ba89e9185796d61554a3f342b221b1716181e262f39444f5b67737f8b98a4a296897d7063574a3e3124180b00000000030b12191d2123232323232323232323211e1a140d05000000000000000000040d161f28313a434c555e677079828b949da69e958b828089929ba4a1988f867d746b625950473e352c231a1108000000000000000000000000000000000000000000000000000000000000000006111d2935414c5864707b87939fab9f93877b6f7885919da9a3988c8074685c5045392d21150a000000000000000000000000000000000000000013202c3946535f6c798693a0ac9f9286796e79848f99a4a89d92887d72675c52473c31271c1106000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000000c1824303c47535e69747e88929ba4acb2b8bdc1c3c5c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c454a4c4b4740382f261d140b020000000000000000000f1b27333e49535b60606060606060606060606060606065717e8b9386796c5f5346392c201300000000000000000000000000000000000004080b0d0f11121313131212100f0d0a070400050a0d0f10101010101010100f0d0a06000000000000000000000000000000000000000002080f151b2025292d313437393b3c3d3e3e3e3e3e3d3b3a3835332f2c28231e19130d070000000000000000000000000000030d161e252a2e3030303030303030302f2c2622272b2f323537393a3b3b3b3b3a383634312d29241f19130d0600000000000000000000000000000000000000000000060d141b20262b3034383b3e404244454646464645454342403d3a37332f2a25201a130c050000000000000000000000000000010c17222d37424c565f69727a838a91989ea3a49f9b98969494949495979a9da2a5a09b958e877f776e655c52483e33291e130800000000000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c69767e7e7e7e8693988b7e7165584b3e3225180b0000000000000000040e18222d37414b555f6a747e88939da7a89e948a80756b61574c42382e24190f05000000000000000000000000000004121f2b3845515e6b7784919da89b8f8276695d5144392d2219100a090c141d27333e4a57636f7c8895a2a4988b7e7265594c3f3326190c000000000001070d11141616161616161616161615120e0902000000000000000000040d161f28313a434c555e677079828b949da69e958c8379768089929ba4a1988f867d746b625950473e352c231a110800000000000000000000000000000000000000000000000000000000000000010d1824303c48535f6b77838e9aa6a3978b7f737c8895a1aa9f93877b6f63584c4034281c1105000000000000000000000000000000000000000013202c3946535f6c798693a0ab9f92857875808b95a0aba1968c81766b60564b40352a20150a00000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000004101c2935404c58636f7a85909aa4adb6bdc4c9cdd0d2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265584c50565957524a41382f261d140c0300000000000000000a16212d3741494f53535353535353535353535353535865717e8b9386796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c131a20262c3135393d40434547494a4b4b4b4b4a49484644423f3c38342f2a241e18110a030000000000000000000000000b151f282f363a3d3d3d3d3d3d3d3d3d3b37322e33373b3f4144464748484847474543403d3935302b251e17100800000000000000000000000000000000000000000810181f262c32373c4044474a4d4f5051525353535251504e4c4a47433f3b36312b251e170f070000000000000000000000000007121e29343e49535e68717b848c959ca3a69f99948f8c8988878787898b8e91969ca2a6a099918980776e645a50453a30251a0e03000000000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c6976838c8c8c8e97988c7e7265584c3f3225190c00000000000000000006101b252f39434e58626c76818b959faaa69c91877d73685e544a40362b21170d030000000000000000000000000006131f2c3946525f6c7985929fa69a8d8073675a4e4135281c11070000020b16222e3b4754616d7a8793a0a6998d8073665a4d4034271a0d010000000000000105080909090909090909090908060200000000000000000000040d161f28313a434c555e677079828b949da69e958c8379706d768089929ba4a1988f867d746b625950473e352c231a11080000000000000000000000000000000000000000000000000000000000000008141f2b37434f5a66727e8a95a1a89b8f8377808c99a5a69a8e82766a5f53473b2f23180c00000000000000000000000000000000000000000013202c3946535f6c798693a0ab9e9184787c87919ca7a59a90857a6f645a4f44392e24190e0300000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000814202d3945515d6974808c97a2acb6bfc8cfd5d9dcd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e726558515a6265635c534a41392f261e150c030000000000000005101b252f373e44464747474747474747474747474b5865717e8b9386796c5f5346392c2013000000000000000000000000000000000000000000000004080a0b0c0c0d0d0d0c0b0a080604010000000000000000000000000000000000000000000000000000000000000000070f171e252b32373c4146494d50525456575758585757565553514e4b4844403b35302a231c150d050000000000000000000006121d27313a41474a4a4a4a4a4a4a4a4a48433c393f43474b4e5052535455555453524f4d4945413c363029221a120a01000000000000000000000000000000000109121a222930373d43484c505457595b5d5e5f5f5f5f5f5e5d5b595653504b47423c363029211911090000000000000000000000010d18242f3a45505b65707a838d969ea6a59c958e88837f7c7b7a7a7b7c7e81858b91989fa8a39b928980766c61574c41362b201409000000000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c697683909898999f988c7e7265584c3f3225190c0000000000000000000009131d27323c46505a656f79838d98a2aca3998f857a70665c52473d33291f140a000000000000000000000000000613202c3946535f6c798693a0a6998c7f7266594c3f3326190d000000000613202c3946535f6c7986929fa79a8d8173675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000040d161f28313a434c555e677079828b949da69e958c83797067646d768089929ba4a1988f867d746b625950473e352c231a1108000000000000000000000000000000000000000000000000000000000000030f1a26323e4a56616d7985919ca89f93877b84909ca9a195897d72665a4e42362b1f130700000000000000000000000000000000000000000013202c3946535f6c798693a0aa9d918478838d98a3a99e94897e73685e53483d32281d12070000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000b1724303c4955616d7985919da8b3bec8d1dae0e5dfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265585a636c726e655c534b423930271e150c030000000000000009131d252d33373a3a3a3a3a3a3a3a3a3a3a3a3e4b5865717e8b9386796c5f5346392c2013000000000000000000000000000000000000000000050b1014161819191919191918171513100d09050100000000000000000000000000000000000000000000000000000000081119212830363d43484d5256595c5f61626364656564646361605d5b5854504b46413b352e261f170f060000000000000000000b17232e39434c52565757575757575757544e46454a4f54575a5d5f6061616161605e5c5956514d47413b342c241c130a010000000000000000000000000000000a131b242c343b42484e54585c606366686a6b6c6c6c6c6c6b696865635f5c57534d47413a332b231b12090000000000000000000007121e2935404b57616c77818c959fa8a59b938a837c7773706e6d6d6e6f72757a7f868d969fa8a49b92887e73685e53473c31251a0e020000000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c697683909ca5a6a5988c7e7265584c3f3225190c00000000000000000000010b16202a343e49535d67717c86909aa4aba1968c82786e63594f453b30261c12080000000000000000000000000613202c3946535f6c7986939fa6998c7f7266594c403326190d000000000713202d3946535f6c7986929fa79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000030c161f28313a434c555e677079828b949da69e958c837970675e5b646d768089929ba4a1988f867d746b625950473e352c231a11070000000000000000000000000000000000000000000000000000000000000a16212d3945515d6874808c98a3a3978b7e8894a0a89c9085796d6155493d32261a0e0200000000000000000000000000000000000000000013202c3946535f6c798693a0a99d90837e89949faaa2988d82776c62574c41362c21160b010000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000d1a26333f4c5864717d8996a2adb9c5d0dae3ebebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e72655a636c757e776e655d544b423930271e150c030000000000000b151f282f363a3d3d3d3d3d3d3d3d3d3d3d3d3e4b5865717e8b9386796c5f5346392c20130000000000000000000000000000000000000000070f161c2023252526262626262523221f1d1916110c07010000000000000000000000000000000000000000000000000008111a232b333a41484e54595e6265696b6d6f7071717171716f6e6c6a6764605c57524c463f38312921180f0600000000000000000f1c28343f4b555d6363636363636363635f584e50565b606467696b6d6e6e6e6e6d6b6865625d58534c453e362e251c130a000000000000000000000000000009121c252d363e464d53595f64696c70727576787979797978777674726f6c68635e59534c453d352d241b12080000000000000000000b17232f3a46515d68737e89939da7a79d93898178716b6763616060616365696e747b848c96a0aaa49a8f857a6f64594d42362a1f13070000000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c697683909ca9b2a5988c7e7265584c3f3225190c0000000000000000000000040e18222d37414b555f6a747e88939da7a89e948a80756b61574c42382e241a0f05000000000000000000000006121f2c3945525f6b7885929ea69a8d8174675a4e4135281c11070000030c17232f3b4854616d7a8793a0a6998c807366594d4033271a0d000000000000000000000000000000000000000000000000000000000000000a151e28313a434c555e677079828b949da69e958c837a70675e55525b656e778089929ba4a1988f867d746b625950473e352c23190f04000000000000000000000000000000000000000000000000000000000005111d2834404c58636f7b87939fa79b8f858c98a4a3978c8074685c5045392d2115090000000000000000000000000000000000000000000013202c3946535f6c798693a0a99c8f8285909ba6a69c91867b70665b50453a30251a0f04000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f0200000000000000000f1c2935424e5b6774818d99a5b2becad6e1ecf5ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e7265636c757e8781776f665d544b423930271e150c030000000006121d27313a41474a4a4a4a4a4a4a4a4a4a4a4a4a4b5865717e8b9386796c5f5346392c20130000000000000000000000000000000000000007111921272c303132333333333231302e2c2926221d18120c05000000000000000000000000000000000000000000000008111a232c353d454c53595f65696e7275787a7c7d7e7e7e7e7d7c7b797674706c68635d57514a433b332a21180f0500000000000000121e2b3844505c676f70707070707070706a5f545b61676c70737678797b7b7b7a797775726e69645e57504840372e251c120800000000000000000000000006111b242e37404850575e656b7075797c7f81838485868686858483817e7b78746f6a645e574f473f362d241a10060000000000000004101c28343f4b57626e79848f9aa5aba0958b81776e67605b575554535456595d6369717a848e99a4aca1968c81756a5e53473b2f23170b0000000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c697683909ca9b0a5988c7e7265584c3f3225190c00000000000000000000000006101b252f39434e58626c76818b959faaa69c91877d73695e544a40362b21170d030000000000000000000004121e2b3844515e6a7784909da89b8f8276695d5145392e2319110b0a0d151e28333f4b5763707c8995a2a4978b7e7165584c3f3225190c00000000000000000000000000000000000000000000000000000000000006111c27313a434c555e677079828b949da69e958c837a71685e554c49535c656e778089929ba4a1988f867d746b625950473e352b21160b0000000000000000000000000000000000000000000000000000000000020d18242f3b47535f6a76828e9aa6a09792959ea99f93877b6f63574c4034281c10050000000000000000000000000000000000000000000013202c3946535f6c798693a0aa9d91898c97a2aa9f958a7f746a5f54493e34291e130900000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000111e2a3744505d6a76838f9ca8b5c1cedae6f2f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e726568747e87908a81786f665d544b423930271e150d040000000b17232e39434c5256575757575757575757575757575865717e8b9386796c5f5346392c2013000000000000000000000000000000000000050f19232b33383c3e3f3f4040403f3e3d3b3835322e29231d160f0700000000000000000000000000000000000000000006101a232c353e474f565e646b70757a7e818487888a8b8b8b8b8a89878683807c78746e69625c544d453c332a21170d0300000000000013202c3946535f6c787d7d7d7d7d7d7d7c70645f666c72777c80838586878888878684817e7a756f69625a524940372e241a100500000000000000000000030e18222d364049525a626970767c8185888b8e90919293939292918f8d8b8884807b756f68615951483f362c22180e030000000000000814202c3844505c68737f8a96a1aca59a8f84796f655c554f4b484747484a4d51585f68727c87929ea9a89d92867b6f63584c4034281c0f0300000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c697683909ca3a3a3988c7e7265584c3f3225190c0000000000000000000000000009131d27323c46505a656f79838d98a2aca3998f857a70665c52473d33291f140a0000000000000000000001101d2936434f5c6875828e9ba79e9285796d61554a3f352b231b1716191f27303a45505b6773808c98a4a195897c6f63564a3d3124170b0000000000000000000000000000000000000000000000000000000000000b17222e38424c555e677079828b949da69e958c837a71685f564c43414a535c656e778089929ba4a1988f867d746b625950473d32271b0f030000000000000000000000000000000000000000000000000000000008131e29333e47515a66717d8995a1a9a29fa1a7a69a8e82766a5f544a40362c21170b0000000000000000000000000000000000000000000013202c3946535f6c798693a0aca39a95979ea9a3998e83786e63584d42382d22170c0200000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f020000000000000000121f2c3845525e6b7885919eaab7c4d0dde9f6f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e726567727b848d938a81786f665d544b423930271f160d0300000f1c28343f4b555d63636363636363636363636363636365717e8b9386796c5f5346392c20130000000000000000000000000000000000000b16212b353d44484b4c4c4c4c4c4c4b494745423e39342f282119110800000000000000000000000000000000000000030d18222c353e47505961686f767c81868a8e9193959697989898979694928f8c8984807a746d665f574e453c33291f150b000000000000121f2c3945525f6b78858a8a8a8a8a8a7e72656970777e83888c8f91939495959493918e8a86807a736c645b524940362c22170c020000000000000000000a151f2a343e48525b646c747b81878c9195989a9c9e9f9fa09f9f9e9c9a9794908c86817a736b635a51483e342a1f150a0000000000000c1824303c4854606c7884909ba7aba094897d72675d534b433e3b3a3a3b3d41464e56606b76818c98a4aea3978c8074685c5044382c1f130700000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c6976839096969696968c7e7265584c3f3225190c00000000000000000000000000010b16202a343e49535d67717c86909aa4aba1968c82786e63594f453b30261c1208000000000000000000000e1b2734404d5966727e8b97a4a295897d72665b51473d352d272423252a3139424c56616c7884909ca89e9286796d6054473b2e2215090000000000000000000000000000000000000000000000000000000000000e1b27333f4a545e677079828b949da69e958c837a71685f564d433a38414a535c656e778089929ba4a1988f867d746b62594f44382c1f1307000000000000000000000000000000000000000000000000000000030e1925303b454f59636c757d86929fa4a2a1a1a3a4978b7f776f665c52483e33281d110600000000000000000000000000000000000000000013202c3946535f6c798693a0acaca5a2a3a8a79d92877c71675c51463c31261b10060000000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000013202c3946535f6c7986929facb8c5d2dfebf8f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e72656069727a838c938a81786f665d544b423931281f150b0000121e2b3844505c676f707070707070707070707070707070717e8b9386796c5f5346392c2013000000000000000000000000000000000005101c28333d474f5557585959595958575654514e4a45403a332b231a11080000000000000000000000000000000000000a151f29343e475059626b727a81878d92969a9da0a2a3a2a2a2a2a3a2a19f9c9995908b857f78706960574e453b31271d12080000000000111e2b3844515e6b778491979797978c80736a727a82898f94989b9ea0a1a1a1a19f9d9a96918c857e766d645b52483e33291e1308000000000000000005101b26313c46505a646d757e858c93989da1a4a5a29f9e9d9c9c9d9fa1a5a4a09c97928c857d756c635a50463c31261b100500000000030f1b2834404c5865717d8995a1aca79b8f83776c61564b4139322f2e2d2e31353c444e5964707b87939faba89c9084786c6054483b2f23160a00000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c697683898989898989897e7265584c3f3225190c0000000000000000000000000000040e18222d37414b555f6a747e88939da7a89e948a80756b61574d42382e241a0f050000000000000000000c1825313e4a56636f7b8894a0a69a8f83786d63594f473f3833303031353b424b545e68737d8994a0a69a8e8276695d5145382c1f1306000000000000000000000000000000000000000000000000000000000000111d2a37434f5b667079828b949da69e958c837a71685f564d433a312f38414a535c656e778089929ba4a1988f867d746b6054483b2f22150900000000000000000000000000000000000000000000000000000008131f2b36414c57616b757e878f979c98959495979b9b918981786e645a4f44392e23170b00000000000000000000000000000000000000000013202c3946535f6c798693a0acb6b1aeafaba1968b80756b60554a40352a1f140a000000000000000915222f3c4855626f7b8895a2ada09386796d6053463a2d20130700000000000000000b1724313e4a5764717d8a97a4b1a89c8f8275685b4f4235281c0f02000000000000000013202c3946535f6c798693a0acb9c6d3dfecf9f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e72655e6068717a838c938a81786f665d544b433a31271c11060013202c3946535f6c787d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e8b9386796c5f5346392c201300000000000000000000000000000000000814212d39444f5960646566666666656463605e5a56514b443d352c231a10060000000000000000000000000000000006111c26313b464f59626b747c848c92989ea2a4a09c99979695959697989b9ea1a5a19c97908a827a726960574d43392e24190e0300000000111e2a3744515d6a7784909da4a49a8d8173727c858d949a9f9c9a999898999b9da1a5a6a29d97908880766d645a4f453a2f24190e03000000000000000a16212d38434d58626c767f8890979ea4a8a29d99959391909090919295989da2a8a39d968f877e756c62584d43382d22160b0000000005121e2b3743505c6875818d99a5afa3978b7e73675b4f44392f2722212122242a323d48535f6b77838f9ba7ada195887c7064574b3f3226190d01000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000101c2936434f5c69757c7c7c7c7c7c7c7c7c7165584b3f3225180c00000000000000000000000000000006101b252f39434e58626c76818b959fa9a69c91877d73695e544a40362b21170d0300000000000000000916222e3b47535f6b77838f9ba6a0948a7f746b61595049433f3d3c3e41464d545d66707a848f9aa6a195897d7266594d4135291c1004000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b78828b949da69e958c837a71685f564d433a3128262f38414a535c656e778089929ba4a1988f867c6f6356493c302316090000000000000000000000000000000000000000000000000000000c1824303c47535e69737d87909997908b8988888a8f959b938a80766c61564a3f33281c1004000000000000000000000000000000000000000013202c3946535f6c798693a0acb5b5b5afa59a8f84796f64594e44392e23180e03000002050709090915222f3c4855626f7b8895a2ada09386796d6053463a2d201307000000000001070b0e1724313e4a5764717d8a97a4afa89c8f8275685b4f4235281c0f0c090400000000000013202c3946535f6c798693a0acb9c6d3dfecf9f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e726b6b6b6b6b7179828b938a81786f665d554c43392e23170b0013202c3946535f6c79868a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8f9386796c5f5346392c201300000000000000000000000000000000000a1724303d4955616b70727273737372716f6d6a66625c564f473e352c22170d020000000000000000000000000000010c17222d38434d57616b757e868f969da4a59e9994908d8b898888898a8c8e91959aa0a6a29b948c847b72695f554b40352b20150900000000111d2a3743505d6a7683909daaa79a8e81747b858e969c9793908d8c8c8c8c8e91959aa0a7a8a19a928980766c61574c41362b1f1408000000000000040f1b27323e49545f6a747e88919aa2a9a59e97918d8986848383838486898c91979da4a8a19990877e74695f54493e33281c11050000000815212e3a46535f6c7884919da9ac9f93877a6e62564a3f33281d1614141518202b37434e5a66737f8b98a4b0a5988c8073675a4e4235291c1003000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000f1b2834414d59646d6f6f6f6f6f6f6f6f6f6a6055493d3024170b0000000000000000000204040404040409131d27323c46505a656f79838d98a2aca3998f857a70665c52483d33291f150a000000000000000006121e2b37434f5b67737e8a95a1a69b91877d736b625b544f4c4a494a4d52575e666f78828c96a1a69b9084786d6155493d3125190d00000000000000000000010202020202020202020201000000000000000000111e2b3744505d68737c858e979e958c837a71685f564d443a31281f1d262f38414a535c656e778089929b988f867d746b6054483b2f221509000000000000000000000000000000000000000000000000000004101c2835404c58646f7a858f99958d85807c7b7b7e848b939c92887d72675b5044382c201407000000000000000000000000000000000000000013202c3946535f6c798693a0a8a8a8a8a89e93887d73685d52483d32271c120701060a0e111415161616222f3c4855626f7b8895a2a8a09386796d6053463a2d20130700000000060d12171a1c24313e4a5764717d8a97a2a2a29c8f8275685b4f4235281c1b19140f09010000000013202c3946525f6c7985929facb8c5d2deebf8f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100300000000000013202c3946535f6c7986938c7e787878787878787879828b948a82786f675e554a3f33271b0f0013202c3946535f6c798693939393939393939393939393939393939386796c5f5346392c201300000000000000000000000000000000000b1825323e4b5865717d7e7f8080807e7d7c7976726d68615950473e34291e1308000000000000000000000000000006121d28343f4a545f69737d879098a0a8a29b938d8884817e7c7b7b7c7d7f8285898f959ca3a69e968e857b71675c52473c31261a0f04000000101d2a3643505d697683909da9a89b8e8278838d9796908b878381807e7e808285898e959ca4aca49b92887d73685d52473c3025190e0200000000000814202c38434f5a65717b86909aa3aca49b938c86817c797776767677797c80858c939ba3aba29990867b71665b4f44392d21160a0000000a1724303d4956626f7b8894a0ada99c9083776b5e52463a2e22160b0707090f1a26323e4a57636f7c8895a1aea89b8f83766a5d5144382b1f1205000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000c1825313c47525b6163636363636363636360584f44392d21150800000000000000060b0e101111111111111116202a343e48535d67717b86909aa4aba1978c82786e64594f453b31261c120800000000000000030e1b27333e4a56626d79848f9aa5a2988f857c746d66605b58565657595d63697078818a949da8a0958a7e73685c5045392d2115090000000000000001060a0d0f0f0f0f0f0f0f0f0f0f0e0b07020000000000000f1c2834404c57616a737c858e958c837a71685f564d443b32281f16141d262f38414a535c656e778089928f867d746b62594f43382c1f130700000000000000000000000000000000000000000000000000000713202c3845515d6975808c97978d837b746f6e6f7278818a949a8f84786c6054483c3023170b000000000000000000000000000000000000000013202c3946535f6c7986939b9b9b9b9b9b978c82776c61564c41362b20160b070d12171b1e2022232322222f3c4855626f7b88959b9b9b9386796d6053463a2d2013070000000710171e23272929313e4a5764717d8a95959595958f8275685b4f423529292825201a130b02000000121f2b3845515e6b7784919daab7c3d0dce9f5f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291c100902000000000013202c3946535f6c7986938d85858585858585858585858a95948b827870675c5044372b1e110013202c3946535f6c798686868686868686868686868686868686868686796c5f5346392c201300000000000000000000000000000000000b1825323e4b5865717e8b8c8c8c8c8b8a8886837e79726b625950453b3024190d02000000000000000000000000000b17232e3a45505b66717b858f99a2aaa2999089827c777471706f6f6f707275797d838a919aa2a8a0968d83796e63594d42372b201409000000101d2936434f5c697683909ca9a89c8f82808a95938c857f7a77747372727375787d838a929ba5ada39a8f857a6f64584d41362a1e120700000000000c1824303c4854606b77828d98a2aca59b9289817a75706d6b6a69696b6d70747a8189919aa4aba2988d82776c6155493e32261a0e0200000c1926323f4b5865717e8a97a3b0a69a8d8174685b4f42362a1e12060000000a16222e3b4754606c7986929fabab9e9285796c6053463a2d211407000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000814202b3640495055565656565656565656544e463d33281c10040000000000040b12171b1d1e1e1e1e1e1e1e1e1e222c37414b555f6a747e88939da7a89e948a80756b61574d42382e241a0f050000000000000a151e28313a45515c68737e89939eaaa1978f867e77716c676563636466696e747b828a939ca6a4998e83786d62574b40352c23190f040000000000050c12171a1b1c1c1c1c1c1c1c1c1c1a17130d0700000000000c18242f3b454e57616a727b858c837a71685f564d443b322920160d0b141d262f38414a535c656e778089867d746b625950473d32271b0f0300000000000000000000000000000000000000000000000000000916222f3b4854616d7985919c90857b7169636162676f78828d9995897d7164584c3f33261a0d000000000000000000000000000000000000000013202c3946535f6c79868e8e8e8e8e8e8e8e867b70655a4f453a2f241a0f0d13181e23272a2d2f30302f2d2f3c4855626f7b888e8e8e8e8e86796d6053463a2d201307000006101922292f333536363e4a5764717d888888888888888275685b4f4236363634312c251d140b000000111d2a3743505c6976828f9ba8b4c1cdd9e5f1f8ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f4336291e1a140d050000000013202c3946535f6c798693959292929292929292929292949b9d948b82786c5f5245392c1f1200131f2c3946525f6b767979797979797979797979797979797979797979766b5f5246392c1f1300000000000000000000000000000000000b1825323e4b5865717e8b98999999989795928f8a847d756b62574c41352a1e120600000000000000000000000004101c28343f4b56616d77828d97a1aba39990877e77716b6765636262636466696d72788088909aa4a89f958b80756a5f53483d3125190e020000101c2936434f5c697683909ca9a99c8f838691938a817a736e6a6866656566696d72788089939da7aba1968b8075695e52463b2f23170b00000000030f1c2834404d5965707c88939fa9a99e938980776f6964615e5d5c5d5e6064696f767f89929da7a99f94897d72665a4e42362a1e120600000e1b2834414d5a6773808d99a6b1a4988b7e7265594c4033271a0e0200000006131f2b3844515e6a7783909da9ada194877b6e6255483c2f221609000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000030f1a242e373f454849494949494949494947433c342b21160b0000000000050e161d23272a2a2a2a2a2a2a2a2a2a2a2a2f39434e58626c76818b959fa9a69c92877d73695e544a40362c21170d030000000006111c27313a434c555e677079838f9ca9a9a1989089827c787471706f7072757a7f858c949ca5aea296897d746b625950473e352b21160b000000000710171e23262828282828282828282827241f1811090000000007131e29333c454e576069727b837a71685f564d443b322920170e04020b141d262f38414a535c656e77807d746b625950473e352b21160a0000000000000000000000000000000000000000000000000000000b1824313e4a5763707c8995978b7f74695f5754565d66717c8894998d8074675b4e4135281c0f020000000000000000000000000000000000000013202c3946535f6c798282828282828282827e74695e53493e3329211712191e24292e3336393b3c3c3c3a373c4855626f7b82828282828282796d6053463a2d20130700030e18222c343a3f424242424a5763707b7b7b7b7b7b7b7b7b74685b4f42424242413d372f261c120700000f1c2835414e5a6773808c98a5b1bdc9d4e0eaf4ebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f43362e2b251f170e0500000013202c3946535f6c79868b8b8b8b8b8b8b8b8b8b8b8b8b8e98988f867d74695e5145382b1f1200111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e1100000000000000000000000000000000000b1825323e4b5865717e8b8d8d8d8d8e9194999b958f877d73695d52463a2e22160a0000000000000000000000000915212d3844505c67737e89949fa9a79c91877e756d65605b585655555657595d61676e757e88929ca7a79c91877b7065594d42362a1e12060000101c2936434f5c697683909ca9aa9e928a8d958a81786f68635e5b5958595a5c61676e77818b95a0aba89d91867a6f63574b3f33271b0f0300000006121f2b3844505d6975818d999c9d9f988c82776e655e585452504f505154585e656d76808b96a1aca59a8e82776b5f53473a2e2216090000101c2936424f5c6875828e9ba8afa296897c7063574a3d3124180b0000000003101d2936424f5c6875828e9ba8afa396897d7063574a3d3124170a000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000008121c252d34393c3c3c3c3c3c3c3c3c3c3b37322b22190f0500000000030d1720282e3336373737373737373737373737373c46505a656f79838d98a2aca3998f857a70665c52483d33291f150a000000000b17222e38424c555e677079828b949faba9aaa29b948e8884807e7c7c7d7e82868b91979ea6aaaba59990877d746b625950473d32271b0f03000006101921292f3335353535353535353535332f2a231b1208000000020d17212a333c454e576069727971685f564d443b322920170e050000020b141d262f38414a535c656e76746b625950473e352c23190f040000000000000000000000000000000000000000000000000000000c1926333f4c5965727e8b9894877b6f63574d484b545f6b7884919c8f8276695c504336291d100300000000000000000000000000000000000000121f2c3845515e6973757575757575757575746d62574d47423b33291f1e242a2f353a3f4346484949484744404754606b7475757575757575736a5e5245392c1f13060009141f2a343e454b4f4f4f4f4f545f696e6f6f6f6f6f6f6f6f6c63584f4f4f4f4f4d4841382e24190d02000d1926323f4b5764707c8894a0acb8c3ced8e2eaebdfd2c5b8ac9f9285786b5f5246525f6c7986929c908376695c4f433d3b36302920160c02000013202c3946535f6c797e7e7e7e7e7e7e7e7e7e7e7e7e7e88958f867d746b62584d4135291d10000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e00000000000000000000000000000000000b1825323e4b5865717e82818080818284888d959e998f857a6e63574b3e3226190d0000000000000000000000000c1925313d4955616c78848f9aa5aca1958a80756c635b544f4c4a4948494b4d51565c646c76808b96a1aca3988d81756a5e52463a2e22160a0000101c2936434f5c697683909ca9afa49b96988e83786f665e57524f4d4c4c4d50555c656f79848f9aa6aea3978b8073675b4f43372b1f13060000000714212e3a4753606c79858b8d8f919392877b70655c534d484543434345484c535b646e7984909ba7ab9f93877b6f63574a3e3225190d0000111e2a3744505d6a7683909da9aea194887b6e6255483c2f22160900000000000e1b2734414d5a6773808d9aa6b1a4978b7e7165584b3e3225180c000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000a131b22282d2f3030303030303030302e2b262019100700000000000a151f2932393f4344444444444444444444444444444448535d67717b86909aa4aba1978c82786e64594f453b31261c12070000000e1b27333f4a545e677079828b949da6a09c9fa5a59f9994908d8a89898a8b8e92969ca2a9a29e9fa4a29990877d746b62594f44382c1f130700030e18222b333a3f42424242424242424242403b352d241a1005000000050f18212a333c454e5760696c685f564d443b322920170e0500000000020b141d262f38414a535c656a69625950473e352c231a1107000000000000000000000000000000000000000000000000000000000d192633404c596673808c999286796c5f53463b43505c6976838f9c9084776a5d5044372a1d110400000000000000000000000000000000000000101d2935414d58616768686868686868686868635b5656534d453b3126292f353b41464b4f525556565553504c474f5a6267686868686868686761584d4236291d1104000d1925313c4650575b5c5c5c5c5c5c5e626262626262626262605c5c5c5c5c5c5c59534a40352a1e1206000a16232f3b4854606c7884909ba7b2bcc6d0d8dfe4dfd2c5b8ac9f9285786b5f524a525f6c7986929c908376695c4f4a4947423b32281e13080000121f2b3844505c68707171717171717171717171757e878f8f867c746b625950463c3025190d000a16212c3740484f525353535353535353535353535353535353535353524f4840372c21160a00000000000000000000000000000000000b1824313e4a57636f76757473737475787c838c96a1978b7f73675a4e4135281c0f020000000000000000000004101c2935414d5965717d8995a0aca79b9084796e635a5149433f3d3c3c3c3e41454a525a646e7984909ba7a99e92867a6f63574b3e32261a0e0100101c2936434f5c697683909ca9b6ada69e93877c71675d544c4642403f3f41444b535d67727d8995a1ada89c9084786c5f53473b2f22160a0000000814212e3b4754616d797d7e818284868882766a5e544a423c38373637383c4149525d68737e8a96a2aea3978b7f73665a4d4135281c0f0300121f2b3845515e6b7884919eaaada093867a6d6054473a2e21140700000000000d1926333f4c5966727f8c99a5b2a5988c7f7266594c3f3326190c000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000000010911171c2022232323232323232323221f1b150e07000000000004101c27313b444b4f5151515151515151515151515151515151555f6a747e88939da7a89e948a80756b61574d42382e23180d010000111d2a37434f5b667079828b949da69e9590939aa1a7a5a09c9997969696989a9ea2a7a49e9791939ba4a29990877d746b6054483b2f2215090008141f2a343d454b4e4f4f4f4f4f4f4f4f4f4c463f362c21160b00000000060f18212a333c454e575d5f5c564d443b322920170e05000000000000020b141d262f38414a535a5e5d5850473e352c231a110800000000000000000000000000000000000000000000000000000000000d192633404c596673808c999386796d6054484045505d697683909c9083766a5d5044372a1d1104000000000000000000000000000000000000000d1925303b464f565a5b5b5b5b5b5b5b5b6063636363625f574d42372e343a40464c51575b5f61636362605c58524c50575b5b5b5b5b5b5b5b5b564f463c3125190d0100111d2936424d58626869696969696969676157555555555c656969696969696969655c52463a2e2216090007131f2c3844505c67737e8a95a0aab4bec6cdd4d8dcd2c5b8ac9f9285786b5f5656565f6c7986929c908376695c565656534c443a3025190d0100101c2834404b565e646565656565656565656d757e87908f867c736a625950473e342a1f14080005101a252e373e4346464646464646464646464646464646464646464646433e372e251a100500000000000000000000000000000000000916222f3b47525d65696867666667686b717a85919d9b8f8276695d5043372a1d1104000000000000000000000713202c3845515d6975828e9aa5aea2968a7e73685c52483f3833302f2f303134394048525d68737f8b96a3afa3978b7f73675b4e42362a1d110500101c2936434f5c697683909ca9b6b1a5998d82766b60554b423b363332323439414b56616d7884909ca8aca094887c6f63574a3e3225190c0000000713202c3945515d676e7072747678797b7d72665a4e4240403f3e3d3b393637414b56626e7a86929eaba79b8f8276695d5044372b1e120500131f2c3945525f6c7885929facac9f9286796c5f5346392d20130600000000000c1825323f4b5865717e8b98a5b1a6998d807366594d4033271a0d000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000060c10141616161616161616161615130f0a040000000000000915212d38434d565b5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d626c76818b959fa9a69c92877d73695f544a4035291d12050000121e2b3845515e6b78828b949da69e958c83898f969ca1a5a8a6a4a3a3a3a5a7a7a39e99938c8589929ba4a2998f867c6f6356493c30231609000d1925303c464f575b5b5b5b5b5b5b5b5b5b5851483e33271b0f0300000000060f18212a333c454c5152504b443b322920170e050000000000000000020b141d262f3841484e51504d463e352c231a11080000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8b9795887c706459514d4f57616d7985919b8f8275695c4f4336291d10030000000000000000000000000000000000000008141f2a343d454b4e4e4e4e4e4e4e56616b6f6f6f6f6f695f53473b393f454b52575d62676b6e6f6f6e6c68635d564e4b4e4e4e4e4e4e4e4e4e4b453d342a1f14090000121f2c3845525e6a737575757575757573695d51484b57636e75757575757575756e63574a3e3124180b00030f1b27333f4b57626d79848e98a2acb4bcc2c8cccfd1c5b8ac9f9285786b63636363636c7986929c90837669636363635e564c41352a1d1105000c18232f3a444d53575858585858585c646d767f88908e867c736a615850473e352c22180e03000009131c252c32373939393939393939393939393939393939393939393937322c251c130900000000000000000000000000000000000006121e2a36414b535a5d5c5a5a595a5c606875828e9b9e9184776b5e5144382b1e1105000000000000000000000a16222f3b4854616d7985929eaaab9e92867a6e62564b40362d272422222325282e36404b57626e7a86929faba79b8f83776b5e5246392d20140700101c2936434f5c697683909ca9b6ada195897d71655a4e4339302a272526282f3944505c6874808c99a5b0a4988b7f73665a4d4135281c0f03000004111d2935404b555d62646667696b6d6f706b61564b4c4c4c4c4b4a4845423e3a46525e6a76828f9ba8aa9e9185786c5f5346392d2013070013202c3946535f6c7986939facac9f9285786b5f5245392c1f120600000000000b1824313e4b5764717e8b98a4b1a79a8d8173675a4d4134271a0e000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000004070909090909090909090909060300000000000000000c1825313d49555f676a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6f79838d98a2ada3998f857b70665c51463a2e2115080000111e2b3744505d68737c858e979e958c837a7e858b9095999c9fa1a2a2a1a09e9b97938d88817b8089929b9990877d746b6054483b2f22150900101d2935414d586167686868686868686868635a4f44382c1f13060000000000060f18212a333b41444644403a322920170e0500000000000000000000020b141d262f373d424444413b342c231a1108000000000000000000000000000000000000000000000000000000000000000b1724313d4a56636f7c8894988c81766b635c595b6169737e8995988c8073665a4d4134281b0e0200000000000000000000000000000000000000020d18222b333a3f4142424242424d5966737c7c7c7c7b7063574a3e444a50575d63686e73777a7c7c7b78746f6860574e4442424242424242413f3a332b22180e03000013202c3946535f6c7982828282828282786b5f52454c5865727e8282828282827e7165584b3e3225180b00000b17232f3a46515c67727c87909aa2aab1b7bcc0c3c4c5b8ac9f928578707070707070707986929c908376707070706f685e5246392d2014070007121d28323b42484b4b4b4b4b4d59646e768088918e857c736a61584f463e352c231a1006000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000020e19242f3942494e565c5e5e5d5e5f626975828e9b9e9184776b5e5144382b1e1105000000000000000000000c1825323e4b5763707c8995a1aea89b8f82766a5e52463a2f241b17161516181d242f3a46525e6a76838f9ba8ab9f93877a6e6155483c2f23160a00101c2936434f5c697683909ca9b6aa9e9185796d6155493d32271e1a19191d2834404c5864707c8995a2aea79b8f8276695d5044372b1e11050000010d18242f39434c525557595b5c5e6062636059565758595959585654524e4a46414e5a6773808c99a5ada094877a6e6154483b2e2215080013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d59667177777777777777777777777777777777777777777777777b86909ca8aba1978d82786e6256493d3024170a00000f1c2834404c57616a737c858e958c837a7173797f84898d90929495959493918e8b87827c76707680899290877d746b62594f43382c1f130700121f2c3845515e69737575757575757575746c6054473b2e211508000000000000060f1821293035383938342f2820170e05000000000000000000000000020b141d252c3236373735302a221a110800000000000000000000000000000000000000000000000000000000000000000915222e3b4753606c7884909b92877d746d6866676b727b858f9a93877b6f63574b3e3225190c00000000000000000000000000000000000000000006101921282e3235353535353f4c5965727e8989897e72665a4e4a4f555b62686e747a7f8487898988858079726960564c4136353535353535322e292119100600000013202c3946535f6c79868f8f8f8f8f85786b5f52454c5865727e8c8f8f8f8f8b7e7165584b3e3225180b000006121e2935404b56606b757e8890989fa6abb0b3b6b8b9b8ac9f92857d7d7d7d7d7d7d7d7d86929c90837d7d7d7d7d7a6e6155483b2e22150800010c16202930373c3e3e3e3e424f5b68758089918e857c736a61584f463d342c231a10070000000000010910161a1e1f20202020202020202020202020202020202020201f1e1a16100901000000000000000000000000000000000000000008131d27313d495560686b6a6a6b6c6e737b86919e9b8f8376695d5044372a1d1104000000000000000000000e1a2734404d5966727f8c98a5b1a5988c8073675a4e4235291d120b09090a0c121e2936424e5a6773808c99a5afa2968a7d7064574b3e3225190c00101c2936434f5c697683909ca9b4a79b8e8275695d5044382c21150e0c0c17232f3c4854616d7a86939facaa9e9185786c5f5246392d20140700000007131d28313a4146494a4c4e505253555a5d606264656666656463615e5a56524d4b5864717d8a97a3afa295897c6f6356493c3023160a0013202c3946535f6c798693a0acac9f9285786b5f5245382c1f120500000000000b1724313e4a5764717d8a97a4b1a79a8e8174675a4d4134271a0e000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774818484848484848484848484848484848484848484848484848f9ba8b3a99e948a7d7164574a3e3124170b00000c18242f3b454e57616a727b858c837a7168686e73787d818386878888888785827e7b76716b656d768089877d746b625950473d32271b0f030013202c3946535f6c7982828282828282827b6f6255483c2f22150900000000000000060f171e24292b2c2b28231d160e050000000000000000000000000000020b131a2126292b2a28241f18100800000000000000000000000000000000000000000000000000000000000000000006131f2b3844505c68737f8a959990877e78747374777d858d97988d82766b5f53473b2f22160a00000000000000000000000000000000000000000000070f171d222628282828313e4b5764707d8a968e82766a5f57565b60666d737980858b9093969694918b847b72685e53473c31282828282826221d1710070000000013202c3946535f6c7986939c9c9c9285786b5f52454c5865727e8c989c9c988b7e7165584b3e3225180b0000010d18232e39444e59636c757e868e959aa0a4a7a9abacacaca0958b8a8a8a8a8a8a8a8a8a8b959e938a8a8a8a8a887b6e6155483b2e2215080000040e171f262b2f31323234414d5a66707a838c857c736a61584f463d342b221a10070000000000000000050a0e1113131313131313131313131313131313131313131313110e0a0500000000000000000000000000000000000000000000010d1a2734404d59667178777777787a7e858d97a0968b7f73675a4e4235281c0f0300000000000000000000101c2935424f5b6875818e9aa7afa3968a7d7064574b3e3226190d01000000010d1926323e4b5764707d8a96a3b0a5998c8073665a4d4134271b0e00101c2936434f5c697683909ca9b1a5988c7f72665a4d4134281c1004000713202c3945515e6a7784909da9ada094877a6e6155483b2f221509000000010c161f282f353a3c3e414950565c6166696d6f7172727372716f6d6a67625e585256636f7c8995a2afa3978a7d7064574a3d3124170b0013202c3946535f6c798693a0acac9f9285786b5f5245392c1f120600000000000b1824313e4b5764717e8b97a4b1a79a8d8174675a4d4134271a0e000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774818e919191919191919191919191919191919191919191919196a0abb7b0a4978a7d7164574a3e3124170b000007131e29333c454e576069727b837a71685f5d63686c717477797a7b7b7b7a7876726f6a65605b646d76807d746b625950473e352b21160a000013202c3946535f6c79868f8f8f8f8f8f887b6f6255483c2f2215090000000000000000050d13181c1f1f1e1c18120c0400000000000000000000000000000000010910151a1d1e1e1c18140e0600000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4b57626d78838d9799908a8481808183888f969990867b70655a4e43372b1f13060000000000000000000000000000000000000000000000050c1216191b1b1b232f3c4955626e7b889493877c71686463666c72787e848b91969ba0a2a2a19c968e847a6f64594d42362a1e1b1b1b1a16120c05000000000013202c3946535f6c798693a0a99f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b00000007121d28323d47515a636c747c83898f94989b9d9e9fa0a0a09d97969696969696969696979da09c9796969695887b6e6155483b2e221508000000050d141a1f23252525323e49545e68717a837c736a61584f463d342b2219100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a67737f84848485878a90979d978e84796e63574b3e3226190d0100000000000000000000111e2a3744505d6a7683909ca9aea195887b6f6255493c2f23160a00000000000a16232f3c4955626f7b8895a1aea79b8e8275685c4f4236291c1000101c2936434f5c697683909ca9afa396897d7064574a3e3125190c000004101d2a36434f5c6875828e9ba8afa296897c7063564a3d3024170a00000000040d161e242a313a434b535b61676d7276797b7d7e7f807f7e7c7a77736e69635d56616e7b8894a1aea4978b7e7164574b3e3125180b00131f2c3946525f6c7985929facac9f9286796c5f5346392c20130600000000000c1825323e4b5865717e8b98a4b1a69a8d8073665a4d4034271a0d000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774818e9a9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a8acacaca4978a7d7164574a3e3124170b0000020d17212a333c454e576069727971685f5651575c6164686a6c6e6f6f6e6d6b6966635e5a54525b646d76756b625950473e352c23190f04000013202c3946535f6c7986939c9c9c9c95887b6f6255483c2f22150900000000000000000002080c101213120f0c07010000000000000000000000000000000000000004090d1011110f0c08020000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a46515c67717b858e969b95908d8c8d8f94999890877e74695f54493d32261a0e0300000000000000000000000000000000000000000000000001060a0d0e0f14212d3a46535f6c788591988d837a73707072777d83898f969ca2a4a1a0a0a2a5a0968c81756a5e52463a2e22160f0e0d0a060100000000000013202c3946535f6c798693a0ac9f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b000000000b16212b353f48515a626a71787e83888b8e9092939393939393939393939393939393939393939393939393887b6e6155483b2e2215080000000002090f13161818212d38434c565f687179736a61584f463d342b221910070000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0d0a050000000000000000000000000000000000000000000000000000040b111926323e4b57636f7b8791919294979895918c857c72685d52463a2e22160a0000000000000000000000121f2b3845515e6b7884919eaaada093877a6d6054473a2e21140800000000000814212e3a4754606d7a8793a0ada99c9083766a5d5044372a1e1100101c2936434f5c697683909ca9aea194887b6e6255483c2f2316090000010e1b2734414d5a6773808d9aa6b1a4978b7e7164584b3e3225180c000000000006111b253039434c555d656c73787e8285888a8b8c8c8c8b8986837f7a756e6861616e7b8894a1aea5988b7e7165584b3e3225180b00121f2c3845525e6b7885919eabaca09386796d6053473a2d21140700000000000c1926333f4c5965727e8c98a5b2a6998c807366594c403326190d000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774818e9aa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0978a7d7164574a3e3124170b000000050f18212a333c454e5760696c685f564d464b5054585b5e6061626261615f5d5a56524e4949525b646a6a625950473e352c231a110700000013202c3946535f6c798693a0a8a8a295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2935404a555f69737c848c92989c9a999a9c99948d867e756c62584d42372c21150a00000000000000000000000000000000000000000000000000000000000005121e2b3744505d6975828e9a958c84807d7c7e83888e949ba1a39d9895939395999e9d92867a6f63574a3e3226190d010000000000000000000013202c3946535f6c798693a0a09f9285786b5f52454c5865727e8c98a0a0988b7e7165584b3e3225180b00000000040f19232d363f48505860676d72777b7f828485868686868686868686868686868686868686868686868686867b6e6155483b2e22150800000000000003070a0b101b26313a434d565f686c6961584f463d342b2219100700000000000000000000000000000000000000000000040b11161a1c1c1c1c1c1c1a16110b040000000000000000000000000000000000000000000000080f161c22282e3a46525e6a76828e9a978e8c8b8985817a736a60564c41352a1e12060000000000000000000000131f2c3946525f6c7985929facac9f9286796c5f5346392d20130600000000000613202d3946535f6c7986929facaa9e9184776b5e5145382b1f1200101c2936434f5c697683909ca9aca09386796d6053473a2d2114070000000d1926333f4c5965727e8c98a5b2a5988c7f7266594c403326190d00000000020d18222d37414b555e676f777e84898e929597989999989795938f8b868079726b626d7a8794a1aea5988b7e7165584b3e3225180b00111e2b3744515d6a7784909daaada194877b6e6155483b2f22150900000000000e1a2734404d5a6673808d99a6b1a4988b7e7265584b3f3225190c000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79a8d8174675a4d4134271b0e01000a1724303d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774818e9393939393939393939393939393939393939393939393939393939393938a7d7164574a3e3124170b00000000060f18212a333c454e575d5f5c564d443b4044484c4f5153545555555452504d4a46423d4049525a5e5d5850473e352c231a11080000000013202c3946535f6c798693a0acafa295887b6f6255483c2f221509000000000004090d10121212121212121212121212121212121212121212121212121212121212121212121212100d0904000000000000000000000000000000000000000000000000000000000000000000000000010d18232e39434d57616a727a81878c8f929292908d88837c746c635a50463b31261b1004000000000000000000000000000000000000000000000000000000000000030f1c2834414d5966727e8a969e96908c8a898b8f949aa0a49e98928c888686898d949c978b7f73675a4e4235291d10040000000000000000000013202c3946535f6c7986939393939285786b5f52454c5865727e8c939393938b7e7165584b3e3225180b000000000007111b242d363e464e555c61676b6f7275777879797979797979797979797979797979797979797979797979776d6154483b2e211508000000000000000000000a151f28313a434d565c5f5d574f463d342b2219100700000000000000000000000000000000000000000000050e161c222628292929292826221c160e050000000000000000000000000000000000000000020a121920272e33393e424e5a66727e8a969386807e7c79756f6961584e443a2f251e170f070000000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245392c1f1206000000000005121f2c3945525f6b7885929facac9f9285786c5f5246392c1f1300101c2936434f5c697683909ca9ab9f9285786c5f5245392c1f13060000000b1825323e4b5864717e8b97a4b1a69a8d8073675a4d4034271a0e0000000008131e29343f49535d67707981898f959a9ea1a3a5a4a2a1a1a19f9b97918b847d746c6d7a8794a1aea5988b7e7165584b3e3225180b00101d2936434f5c6975828f9ba8afa295897c6f6356493d3024170b00000000020f1c2835424e5b6874818e9aa7b0a3968a7d7064574a3e3124180b000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca79b8e8175685b4f4235291c0f03000a1724313d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a67748186868686868686868686868686868686868686868686868686868686868686867d7164574a3e3124170b0000000000060f18212a333c454c5152504b443b3234383c3f42454648484848474644413e3a36313740484e51514d473e352c231a1108000000000013202c3946535f6c798693a0acaca295887b6f6255483c2f22150900000000080f15191d1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1d1a150f0800000000000000000000000000000000000000000000000000000000000000000000000007121c27313b454e5760686f767b808385868584817c77716a625a51483e342a1f150a00000000000000000000000000000000000000000000000000000000000000000c1925313d4955616d7985909ba19c989696989b9fa59f99938c86817c797a7c828a939b8f83766a5e5145382c1f13060000000000000000000013202c3946535f6c7986868686868685786b5f52454c5865727e8686868686867e7165584b3e3225180b00000000000009121b242c353c434a50565b5f6366686a6b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c665c5145382c20130700000000000000000000030d161f28313b444b5053514d453d342b2219100700000000000000000000000000000000000000000000040e1720272e32353636363635322e2720170e04000000000000000000000000000000000000030b141c242b32393f444a4e5256626e7a8692968a7e72706d69645e574f48433d3730292119110800000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f1205000000000003121f2c3845525f6b7885929facac9f9386796c5f5346392c201300101c2936434f5c697683909ca9ab9e9184776b5e5145382b1e12050000000a1724313d4a5764707d8a97a4b0a79a8e8174675b4e4134281b0e000000020d19242f3b46505b656f79828b939aa1a6aaa49f9b989694949495989b9c968f877e756d7a8794a1aea5988b7e7165584b3e3225180b000f1b2835414e5b6774818d9aa6b0a4978b7e7165584c3f32261a0d0100000005111e2b3744505d6976838f9ca9aea195887b6f6256493c3023160a000000000000000e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120500000000000000000013202c3946535f6c798693a0aca99c8f83766a5d5044372b1f1307000b1724313e4a5764717d8a97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734404d5a6672797979797979797979797979797979797979797979797979797979797979797979796f63574a3d3124170a000000000000060f18212a333b41444644403a3229282c303336383a3b3c3c3b3a393735322e2a262e373d424544413c352c231a110800000000000013202c3946535f6c798693a0a0a0a095887b6f6255483c2f2215090000000912192025292b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2926201a120a0000000000000000000000000000000000000000000000000000000000000000000000000b15202a333c454e565e646a6f73767879797774716c665f5850483f362c22180e0300000000000000000000000000000000000000000000000000000000000000000915212d3945515c68737e89939ca4a5a3a3a4a5a09a948e88817b75706d6d7178818b969286796d6054473b2e22150900000000000000000000131f2c3946525f6b7679797979797979766a5e51454b58647079797979797979797064574b3e3125180b0000000000000009121b232a32393f454a4f5357595c5e5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b544a3f34281c10040000000000000000000000040d161f29323a40444645413b342b2219100700000000000000000000000000000000000000000000000b16202932393e4242424242423e39322920160b0000000000000000000000000000000000030c151d262e363d444a50555a5e62656975828e9a8e83776c6a6865625d59544e48413a332b231a1108000000000000000013202c3946535f6c798693a0acac9f9285786b5f5245382c1f1205000000000005121f2c3845525f6b7885929facaca09386796c5f5346392c201300101c2936434f5c697683909ca9aa9e9184776a5d5144372a1e11040000000a1723303d4a5663707d8a96a3b0a89b8e8275685b4e4235281b0f00000007131e2a35414c57626d77818b949da5aca69f98938f8b89888787898b8f93999990877e747a8794a1aea5988b7e7165584b3e3225180b000d1a26333f4c5965727e8b97a4b0a6998d8073675b4e4235291d11050000000814212d3a46525f6c7885919eaaac9f93867a6d6054473b2e211508000000000000020e1b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f120908050100000000000013202c3946535f6c798693a0acab9e9185786c6053473b2f23180d060b1825313e4b5764717e8b97a4b0a3968a7d7063564a3d3023170a0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b00000000000000000000000000000000000202020202020202020201000000000000000000000c1925323e4a5660696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c675e53473b2e22160900000000000000060f1821293035383938342f28201c202427292b2d2e2f2f2f2e2c2b2825221e1c252c3236383835312a231a11080000000000000013202c3946535f6c7986939393939393887b6f6255483c2f221509000008121b242b313538383838383838383838383838383838383838383838383838383838383838383838383836312c241c12090000000000000000000000000000000000000000000000000000000000000000000000030e18212a333c444c53595f63676a6b6c6c6a6865605b554e463e362d241a100600000000000000000000000000000000000000000000000000000000000000000005111d2934404b57626c77818a93999d9f9f9d99948f89837c76706a646060666f7a859195887c6f63564a3d3024170b00000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6b64594e4248545f686c6c6c6c6c6c6c6c685e53483c2f23160a000000000000000009111920272e34393e43474a4d4f515253535353535353535353535353535353535353535353535353524f4a42382e23180c00000000000000000000000000040d1720282f3438393835302922191007000000000000000000000000000000000000000000000006111d27323b444a4e4f4f4f4f4e4a443b32271d1106000000000000000000000000000000020b151e272f3840474e555b61666b6e7275777d899593877b797774716e69655f59534c453d352c231a11080000000000000013202c3946525f6c7986929facac9f9286796c5f5246392c20130600000000000613202c3946525f6c7986929facaca09386796c5f5346392c201300101c2936434f5c697683909ca9aa9d9084776a5d5044372a1e11040000000a1623303c4956636f7c8996a3b0a89b8f8275685b4f4235281c0f0000000c18232f3b46525d68737e89939da6aea59c948d87837f7c7b7a7b7c7e83878d949990867c7a8794a1aea5988b7e7165584b3e3225180b000b1824313d4a56636f7c8895a1aea89c8f83766a5e5145392d21150a0706070d1824313d4955626e7b8794a0ada99d9084776b5e5245392c1f13060000000001080d121b2834414e5b6774818e9ba8ac9f9285786b5f5245382c1f171614110c07000000000013202c3946535f6c798693a0acada194887b6f63574b3f34291f1712111926323f4c5865727e8b98a5afa396897c6f6356493c302316090013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000000000000050a0d0f0f0f0f0f0f0f0f0f0f0e0c0804000000000000000916222d39444e575d5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c554c41362b1f12060000000000000000060f171e24292b2c2b28231d161014171a1d1f202122222221201e1c191612131a2126292b2b29251f191108000000000000000013202c3946535f6c7986868686868686867b6f6255483c2f22150900040f1a242d363d42444545454545454545454545454545454545454545454545454545454545454545454544423d362e241a10050000000000000000000000000000000000000000000000000000000000000000000000060f18212a323a41484e53575b5d5f5f5f5e5c58544f4a433c342c241b120800000000000000000000000000000000000000000000000000000000000000000000000c18232f3a45505b656f7881888d919292918d89837d77716b655e5853545d6975818d938b7e7165584b3f3226190c000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5a52483d424d565d5f5f5f5f5f5f5f5f5c564d42372b1f1307000000000000000000070e151c23282e33373b3e404344454646464646464646464646464646464646464646464646464646433f382f261c11060000000000000000000000000000050e161d23282b2c2c29251f1810070000000000000000000000000000000000000000000000000a16222e39444d555b5c5c5c5c5b554d44392e22160a0000000000000000000000000000000a141d273039414a525960666c72777b7e8184858a95988c868583817e7a75706b645e564f473e352c231a1006000000000000121f2c3845525f6b7885919eabaca09386796d6053473a2d21140700000000000714212d3a4753606d798693a0acac9f9386796c5f5346392c201300101c2936434f5c697683909ca9aa9d9084776a5d5144372a1e1104000000091623303c4956636f7c8996a3b0a89c8f8275685b4f4235281c0f000004101c2834404c57636e7a85909ba5afa69c938a827c7673706e6d6e6f72777c828a92988d837a8794a1aea5988b7e7165584b3e3225180b000915222e3b4754606d7985929eaaab9f92867a6d6155493d32271c16141314161e2935414d5965717e8a96a3afa69a8e8175685c4f43362a1d1104000000030c13191e212834414e5b6774818e9ba8ac9f9285786b5f5245382c232323211d18110a0200000013202c3946535f6c798693a0acb0a4988c8073685c51463b3128221f1e1f2734414d5a6673808d99a6aea295887b6f6255493c2f2216090013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b000000000000000000000000040b1116191b1c1c1c1c1c1c1c1c1c1b18140f0901000000000005111d28323c454c5153535353535353535353535353535353535353535353535353535353535353535353504b433a30251a0e02000000000000000000050d13181c1f1f1e1c18120c04080b0e101214151515151413110f0c0906090f151a1d1e1e1c19140e07000000000000000000131f2c3946525f6b767979797979797979786d6155483b2f221508000a15212b363f474e5151515151515151515151515151515151515151515151515151515151515151515151514e4840362c21160a000000000000000000000000000000000000000000000000000000000000000000000000060f18202830373d42474b4e51525352514f4c48443e38312a221a120900000000000000000000000000000000000000000000000000000000000000000000000007121e29343e49535d666f767d8284868684817d78726c66605a534d474c5965717e8686868073665a4d4034271a0e010000000000000000000a16212c3740484f5253535353535353524e4840363b444b515353535353535353504b443b30261a0f0300000000000000000000040b11171d22272b2e3134363839393939393939393939393939393939393939393939393939393937332d261d140a00000000000000000000000000000000040c12181c1f201f1d19140d06000000000000000000000000000000000000000000000000000d1a26333f4a555f6769696969675f554a3f33261a0d010000000000000000000000000007111c252f39424b535c636b72787d83878b8e9092949c9e969392908d8a86817c766f68615950473e352c22180d030000000000111e2b3744515d6a7784909da9aea194887b6e6155483c2f22160900000000000916222f3b4855616e7b8794a1adac9f9285796c5f5246392c1f1300101c2936434f5c697683909ca9aa9e9184776a5d5144372b1e11040000000a1623303d4956636f7c8996a3b0a89c8f8275685b4f4235281c0f00000814202c3844505c6874808b96a1aca99e948a8178716b666361616163666b7178808891948a7e8794a1aea5988b7e7165584b3e3225180b0006131f2c3844515d6976828e9aa6aea2968a7d71665a4e43382e27222020202227303a46515d6975818d9aa6afa3978a7e7265594d4034271b0e020000030d151d242a2e3034414e5b6774818e9ba8ac9f9285786b5f524538303030302d29231c140b01000013202c3946535f6c798693a0acb4a89c9084786d62574d433a332e2c2b2c2e3743505c6875828e9ba7ada194877b6e6154483b2e2215080013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000000000000815222e3b4855616e7b8895a2aea5988b7e7165584b3e3225180b0000000000000000000000050e151c2226282828282828282828282724201a130b0200000000000b16212a333b41454646464646464646464646464646464646464646464646464646464646464646464644403931281e1308000000000000000000000002080c101213120f0c070100000000040607080909080806050200000000040a0e101211100d080300000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c665c5145392d201407000e1a26323d4851595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5952483e32271b0f02000000000000000000000000000000000000000000000000000000000000000000000000060e161e252b31373b3f42444546464543403c38332d272018100800000000000000000000000000000000000000000000000000000000000000000000000000010c17222d37414b545d646b71757879797875716c67615b554e48423d4956626e787979797972665a4d4034271a0e0100000000000000000005101a252e373e43464646464646464645433d362e323a4044464646464646464644403a32291f140900000000000000000000000000060c11161b1f222527292b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b27221c140b02000000000000000000000000000000000001070c10121312100d080200000000000000000000000000000000000000000000000000000f1c2935424e5b67717575757571675b4e4235291c0f03000000000000000000000000040e19232d37414b545d656e757c83898e93979a9d9fa1a6a8a2a09f9c9a96928d87817a736b625950473e34291f150a0000000000101d2936434f5c6875828e9ba8afa296897c7063574a3e3125180c00000000000c1825313d4a5763707c8996a2afab9e9185786b5e5245382b1f1200101c2936434f5c697683909ca9ab9e9184776b5e5145382b1e12050000000a1724303d4a5663707d8a96a3b0a89b8e8275685b4e4235281b0f00000b1824303c4855616d7985909ca8aea3978c82786e665f5a57555454565a5f666e767f899390858894a1aea5988b7e7165584b3e3225180b0003101c2935414d5a66727e8a96a2aea69a8e82766b60554a4038322f2d2c2d2f3339424c57626e7a85919daaab9f93877a6e6256493d3124180c0000000b151f272f353a3c3d414e5b6774818e9ba8ac9f9285786b5f52453d3d3d3d3c39342e261d1309000013202c3946535f6c798693a0acb2aaa1958a7e73695f554c443e3a3838383a3e48535f6b7884919daaab9f9286796c6053463a2d2014070013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000000000001070b0e15222e3b4855616e7b8895a2a6a5988b7e7165584b3e3225180e0c090400000000000000040e1720272d323535353535353535353534312b251d140b0000000000040f1821293035383939393939393939393939393939393939393939393939393939393939393939393938342e271f160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5b544a4034291d110400111e2a36424e59636a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a645a4f43372b1e120500000000000000000000000000000000000000000000000000000000000000000000000000040c131a20262b2f333537393939383633302c27221c150e0600000000000000000000000000000000000000000000000000000000000000000000000000000006101b252f39424b535a6065696b6c6c6b6865605b56504a433d373a46525d676c6c6c6c6c6960564a3e3225190c000000000000000000000009131c252c323739393939393939393936322c24282f3438393939393939393938342f2820170d02000000000000000000000000000000060a0e1216181b1d1e1f20202020202020202020202020202020202020202020202020201e1b17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768282828276695c4f4336291c10030000000000000000000000000a15202b353f49535d666f7780878e949a9fa3a6a3a19f9e9e9e9fa1a4a6a29e98928c857d746b62594f463b31261b1005000000000e1b2834414d5a6773808c99a5b1a4988b7e7266594d4134281c110a07070709101c2834404d5966727e8b98a4b1aa9d9084776a5d5144372b1e1100101c2936434f5c697683909ca9ab9f9285786c5f5245392c1f13060000000b1724313e4a5764717d8a97a4b0a79b8e8174675b4e4135281b0e00020f1b2734404c5865717d8995a1ada99d91867b70665c544e4a4847484a4e545c646d77818b96909199a4b0a5988b7e7165584b3e3225180b00000d1925313d4a56626e7a86919da9aa9f93877c71665c524a433e3b3a393a3b3f444b545e68737f8a96a2aea69a8e82766a5e52463a2d211508000006121c2731394146494a4a4e5b6774818e9ba8ac9f9285786b5f524a4a4a4a4a49453f382f251a0f040013202c3946535f6c798693a0acaaa0999790857b71675e564f4a47454445474a505964707b8894a0aca99d9084776a5e5145382b1f12060013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00000000060d12171a1c222e3b4855616e7b88959a9a9a988b7e7165584b3e32251c1b19140f090100000000000b16202931393e41424242424242424242403c362f261d12080000000000060f171f24292c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000000000000000000000000000000000000000000000000000000000000000002070c0e1010101010100f0d09040000000000000000000000000000000a16212c3740484f52535353535353535352504a42382e23180c0000131f2c3945525e6b7578787878787878787878787878787878787878787878787878787878787878787878766b5f53463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000002090f151a1f2326292b2c2c2c2b292724201b16110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d27303941484f55595c5e5f5f5e5c59554f4a443f38322c35414b555c5f5f5f5f5f5d574e44392d2216090000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2a26211a1d24282b2c2c2c2c2c2c2c2c2b28231d160e050000000000000000000000000000000000000206090c0e1011121313131313131313131313131313131313131313131313131313120f0b0600000000000000000000000000000000000000000000000000000000000000050a0e1011111111110f0c080300000000000000000000000000101c2936434f5c6976838f8f8376695c4f4336291c1003000000000000000000000005111c27323c47515b656f78818a9199a0a6a6a09b9794929191919395989ca2a8a49d968f877e756b61574d43382d22170b000000000c1926323f4b5864717d8a96a2afa79a8e8275695d5145392d221a161414141519212c3844505c6975818e9aa7b3a89c8f8276695c504336291d1000101c2936434f5c697683909ca9aca09386796d6053473a2d2114070000000c1825323e4b5865717e8b98a4b1a69a8d8173675a4d4134271a0e0005111e2a3743505c6874818d99a5b0a4988c8175695e544a433e3b3a3b3e434a525b656f79848f9b9da3abb2a5988b7e7165584b3e3225180b00000915212d3946515d6975818c98a3aea4998d83786e645c544f4b48474647484b4f555d66707a85909ba7aca095897d72665a4e42362a1e110500000b17232e39434b52565656565b6774818e9ba8ac9f9285786b5f56565656565655514a41372c2115090013202c3946535f6c798693a0aca4988e8b928d83797068615b565352515253565b626b76818c98a4b0a69a8d8175685c4f4336291d10040013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0000000710171e232729292e3b4855616e7b888d8d8d8d8d8b7e7165584b3e3229292825201a130b0200000006111c27323b434a4e4f4f4f4f4f4f4f4f4f4d4841382e24190e020000000000060d13191d1f202020202020202020202020202020202020202020202020202020202020202020201f1c17120b04000000000000000000000000000000000000000000000000000000000000000000060d13181b1d1d1d1d1d1d1c19150f08010000000000000000000000000005101a252e373e4346464646464646464646433f3830261c1207000013202c3946535f6c79858585858585858585858585858585858585858585858585858585858585858585857a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000004090e13171a1c1e1f201f1e1d1b1814100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151e272f373d44494d5052535352504d49443f39332d27242f39434a505353535353514c453c32281d1105000000000000000000000000010910161a1e1f202020202020201f1e1a150f12181c1f20202020202020201f1c18120c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1d1e1e1e1e1d1c19140e07000000000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000b16222d38434e59636d77818a939ba3aaa29b958f8b888584848486898c91969da4a8a19890877d73695f54493e33281c11050000000a1723303c4955616e7a86939fabaa9e9185796d61554a3e342b262221202122252a333e4955606c7885919da9b3a79a8d8174675b4e4235281b0f00101c2936434f5c697683909ca9ada194887b6e6155483c2f2216090000000d1a2633404c5966727f8c99a5b2a6998c807366594c4033261a0d000814212d3946525f6b7884909da9ada094887c7064584d4238322f2e2e32384049535d68737e8a95a1adb4b2a5988b7e7165584b3e3225180b000005111d2935414d5864707b86919ca7aa9f948a80766e66605b575453535355575b60676f78818c96a1aca59a8f84786d61554a3e32261a0d0100000f1c28343f4a555d62636363636774818e9ba8ac9f9285786b63636363636363625c53483d3125190d0013202c3946535f6c798693a0aca29689818b958b827a726c6763605e5e5e6062666c747d87929da9aea2968a7e7165594c4034271b0e020013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000006101922292f333536363b4855616e7b808080808080807e7165584b3e36363634312c251d140b0000000a16222e39434d555a5b5b5b5b5b5b5b5b5b59534a40352a1e120600000000000002080d101213131313131313131313131313131313131313131313131313131313131313131313120f0c07000000000000000000000000000000000000000000000000000000000000000000000811181f2427292a2a2a2a2a2825201a130a020000000000000000000000000009131c252c32373939393939393939393937332d261e140b00000013202c3946535f6c79869292929292929292929292929292929292929292929292929292929292929292877a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000003070a0d101112131312100e0b080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d252c32383d41434546464543403d38332e28221c1d2731393f44464646464645413b332a21160b000000000000000000000000000000050a0e11131313131313131313110e0a04070c1012131313131313131312100c07010000000000000000000000000000000000000000000000000000000000040708080808080808080706040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c2226292a2a2a2a2a28251f1911090000000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000005111c28333e4a55606a757f89939ca5a9a0989089847f7b79777778797c80858b929aa2aaa2998f857b71665b5044392d22160a0000000814202d3946525e6a77838f9ba7ada195897d72665b50463d36322f2e2d2d2f31353c454f5a65717d8995a1adb1a5988c7f7266594d4033271a0d00101c2936434f5c697683909ca9afa296897c7063574a3e3125180c0000020f1b2835414e5a6774818d9aa6b1a4988b7e7165584b3f3225190c000a16232f3c4955626e7a8794a0aca99d9184786c6054483c3126222122262e37414c57626d7984909ca8b4b2a5988b7e7165584b3e3225180b0000010d1925303c47535e6a75808b959fa9a69c92898078716b676361605f606163676b7179818a939ea8a89e93897e73675c5045392d211509000000121e2b3744505c676e707070707074818e9ba8ac9f92857870707070707070706d655a4e4235291c0f0013202c3946535f6c798693a0aca3968a7d858f948c847d77736f6c6b6b6b6c6f72777e868f99a4afa99d92867a6e6255493d3124180b000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00030e18222c343a3f4242424247535f6a7273737373737373736d62564a42424242413d372f261c120700000d1a26323e4a555f66686868686868686868645c52473b2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a222a303436363636363635312c251d140a00000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b27221c140c0200000013202c3946535f6c7986939e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e94877a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b131a21272c313437383939383734302c27221d1711151f272e343739393939393835302921180f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c101315151515151515151413110f0b0804000000000000000000000000000000000000000000000000000000000000000000000000000000020c161e262d3236373737373735302a231b110700000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000a16212d39444f5b66717c87919ba5aba1978e867e78736f6c6b6a6b6d70747a8188909aa3aba1978d82776c61554a3e33271b0f03000005111d2a36424e5a66727e8a96a2ada69a8e83776c62584f48423e3c3a3a3a3b3e41474e57616c77828e99a5b1afa3968a7d7064574b3e3125180c00101c2936434f5c697683909ca9b1a4988b7e7266594d4034271b0f030005111e2a3743505c6975828f9ba8afa396897d7063574a3d3124170b000c1825323e4b5764707d8a96a3afa79a8e8175685c5043372b1f1614161c252f3a45515c6874808c98a4b0b2a5988b7e7165584b3e3225180b00000008141f2b37424d58636e79838e97a1aaa49b928a827c7773706e6d6c6d6e7073777d838b939ca5a9a0968c82776c61564b3f34281c110500000013202c3946535f6c787d7d7d7d7d7d818e9ba8ac9f92857d7d7d7d7d7d7d7d7d766a5d5043372a1d100013202c3946535f6c798693a0aca4978a7d7e8892968f89837e7b79787778797b7e83899098a1abada2988c8175695d5245392d211508000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0009141f2a343e454b4f4f4f4f4f4f5861666666666666666666635b504f4f4f4f4f4d4841382e24190d02000f1c2935424e5b67717575757575757575756e63574a3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e11131313131313131313131313131313131313131313131313131313120f0b06000000000000030e19232c343b40434343434343413d362f261c110700000000000000000000000000010910161a1e1f2020202020202020201e1b17110a020000000013202c3946535f6c79869393939393939393939393939393939393939393939393939393939393939393877a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000003060809090a0a0a0a0908060502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161c2025282a2c2c2c2c2a2824201c16110b060d151c23282b2c2c2c2c2c2c29241f170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181c202122222222222222211f1e1b1814100b050000000000000000000000000000000000000000000000000000000000000000000000000009131e2830383e424444444444413c352d23190f04000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000020e1a26323e4a55616c77838e98a3ada3998f857c746d6763605e5d5e6064686f767e88919ca6a99f94897d72665b4f43372b1f13070000010e1a26323e4a56626e7a85919ca7ab9f94897e746a6159534e4b48474647484a4d52586069737d88939faab6ada094877b6e6155483c2f23160a00101c2936434f5c697683909ca9b3a79a8e8175685c5043372b1f1308050814212d3946525f6b7884919daaada194877b6e6255483c2f221609000d1a2733404d5966727f8c98a5b1a4988b7e7265594d4034271b0f080a131e2934404b57636f7c8894a0adb2a5988b7e7165584b3e3225180b000000030f1a25313c47525d67727c858f98a0a8a49c948d88837f7c7a7979797b7c8083888e959ca5a79f978e847a70655b50453a2e23170c0000000013202c3946535f6c79868a8a8a8a8a8a919da9ada0958b8a8a8a8a8a8a8a8a84776a5d5044372a1d110013202c3946535f6c798693a0aca5988b7e76808a949a948f8b888685848586888b8e949aa2aaaca49b91867b7064594d4135291d1105000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000d1925313c4650575b5c5c5c5c5c5c5c5b59595959595959595c5c5c5c5c5c5c5c59534a40352a1e120600101c2936434f5c697682828282828282827e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1e1f20202020202020202020202020202020202020202020202020201e1c17120b03000000000914202b353e464c4f50505050504d4841382e23180c010000000000000000000000000000050a0e1113131313131313131313120f0b0600000000000013202c3946535f6c79868686868686868686868686868686868686868686868686868686868686868686867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000060b101315161617171716161513110f0c09050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1014181b1e1f20201f1d1b1814100b060000030b12171c1e20202020201f1d19130d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2c2a2724201b16100a0300000000000000000000000000000000000000000000000000000000000000000000030e1a25303a424a4f51515151504d473f352b201509000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000007131f2b37434f5a66727d89949faaa89d92877d736a625b565351515254585d646c75808a95a0aca59a8f83776b5f53473b2f23160a0000000a16222e3a46515d6974808b96a0aba59a90867c736b645e5a57555453535556595e636a727b858f9aa4b0b6aa9d9185786b5f53463a2d20140700101c2936434f5c697683909ca9b6a99d9184786c5f53473c30241a1412121924303d4955616e7a8793a0acab9e9285796c6053463a2d211407000f1c2835424e5b6874818e9aa7afa296897c7063574a3e3124180c00010c18232f3b47535f6c7885919daab2a5988b7e7165584b3e3225180b0000000009141f2b35404b55606a737c868e969ea4a69f99938f8c898786868687898c8f94999fa7a49d968e857c72685e54493e33281d12060000000013202c3946535f6c79869396969696969ba3aeb1a69d97969696969696969084776a5d5044372a1d110013202c3946535f6c798693a0aca5988c7f7278818a939b9b9794929191929294979a9fa5aca8a29b92897f746a5f53483c3125190d01000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00111d2936424d586268696969696969696761574d4d4d525c656969696969696969655c52463a2e22160900101c2936434f5c6976838f8f8f8f8f8f8c7e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28231c150d030000000d1a25313c4750585c5d5d5d5d5d59524a3f34291d11050000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6b7679797979797979797979797979797979797979797979797979797979797979797979776c6053463a2d201407000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f212223232323232221201e1b1815110c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0f1112131312110f0c0804000000000000060b0f12131313131312100d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3a393734302c27221b150d0600000000000000000000000000000000000000000000000000000000000000000007131f2b36414c545b5d5d5d5d5d5851473d31261a0e000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000a17232f3b47535f6b77838e9aa5aea2978b80756b6158504a47454445484c525a646e78848f9ba7ab9f94887c7063574b3f32261a0d01000006111d2935414c57636e79848f99a3aca2988e857d766f6a666362606060616366696e757c848d97a1abb6b3a79a8e8275695c5043372a1e120500101c2936434f5c697683909ca9b6ada094887c7064584c41362c24201e1e212a35414d5965717d8a96a2afa89c8f83766a5d5144382b1f120500101d2a3643505c6976828f9ca8ada194877b6e6155483b2f221609000007131f2b3743505c6975828e9ba7b2a5988b7e7165584b3e3225180b00000000030e19242f39444e58616b737c848c93999fa4a49f9b9896949393939496989ba0a5a39e99928b847b736a60564c42372d22170c010000000013202c3946535f6c798693a0a2a2a2a2a5acb5b8aea7a3a2a2a2a2a2a29d9084776a5d5044372a1d110013202c3946535f6c798693a0aca6998c80736f78818990979da19f9e9e9e9fa1a3a7a8a5a29d97908980776d63584d42372b20140800000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00121f2c3845525e6a737575757575757573695d51444b57636e75757575757575756e63574a3e3124180b00101c2936434f5c697683909c9c9c9c988c7e7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000008121b242b323639393939393939393939393939393939393939393939393939393937342e271f150c010000111d2a36424e5962686969696969645c5145392d2115090000000000000000000000000000000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b655b4f44372b1f12050000000000000000000000000000000000000000000000000000000000000000000000010b141c22282c2e2f30303030302f2e2c2a2825211d18120c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f454848484848484848474543403c38332d261f18100700000000000000000000000000000000000000000000000000000000000000000a16232f3b47535d666a6a6a6a6963594e42362a1d11000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000010e1a26333f4b57636f7b87939faba99d91857a6f64594f463f3a3837383b4148525c67737e8a96a2a6a4988c8073675b4e4235291c10030000010d1824303b46525d68727d87919ba4aaa0978f87817b7673706e6d6d6d6e7072767a80868e969fa9b3bcafa3978b7e7266594d4134281b0f0200101c2936434f5c697683909ca9b6b0a4988c8074695d52483e35302d2b2b2d323b46525d6975818d99a6b1a5988c8073675b4e4235291c100300111e2b3744515d6a7784909daaac9f9386796d6053473a2d2114070000030f1b2834414d5a6673808c99a5b2a5988b7e7165584b3e3225180b000000000008121d27323c464f59616a727a81888e93989b9fa1a4a2a1a0a0a0a1a2a3a19e9b97938d878179726961574e443a30261b1005000000000013202c3946535f6c79869396969696969aa3adb1a69c96969696969696969084776a5d5044372a1d110013202c3946535f6c798693a0aca69a8d8073666f777f868c9195999b9d9e9f9f9e9d9b9995918c867e766e655b51463c31261a0f0300000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c7982828282828282786b5f52454c5865727e8282828282827e7165584b3e3225180b00101c2936434f5c697683909ca8a8a5988c7e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000040f19242d363d42454646464646464646464646464646464646464646464646464646443f3931271d13080000131f2c3945525e6a7476767676766d6256493d3125190c00000000000000000000000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a53493e33271b0f03000000000000000000000000000000000000000000000000000000000000000000000009131d262d33383b3c3c3d3d3d3c3c3b393734312d28231e171009010000000000000000000000000000000000000000000000000000000005090c0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d0b0803000000000000000000000005090c0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d0b08030000000000000b17222d38424a5154555555555555555452504c48443e38312922191007000000000000000000000000000000000000000000000000000000000000000b1825323e4b57646f77777777756a5e5245392c1f13000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000004111d2a36424f5b6773808c98a4b0a4988c8175695d52473d342e2b2b2c3036404b56626e7a86939a9a99988f83766a5d5144382b1f120500000008131e2a35404b56616b757f89929aa2a9a199928c87837f7d7b7a797a7b7c7e82868b9198a0a8b1bbb8aca093877b6f62564a3d3125180c0000101c2936434f5c697683909ca9b6b2a99d91857a6f645a5047403c393838393d444d58636e7a86919da9ada195897c7064584b3f32261a0d0100121f2b3845515e6b7885919eabab9e9285786b5f5245392c1f13060000000c1925323e4b5864717d8a97a4b0a5988b7e7165584b3e3225180b0000000000010b16202a343d474f5860686f767c82878c8f929597989a9a9a9a99989795928f8b87827c766f6860574e453c32291e140900000000000013202c3946535f6c7986898989898989919ca9ada0948b898989898989898984776a5d5044372a1d110013202c3946535f6c798693a0aca69a8d807366656d747b8185898c8f9192929292908f8c8985817a746d655c53493f352a1f14090000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c79868f8f8f8f8f85786b5f52454c5865727e8c8f8f8f8f8b7e7165584b3e3225180b00101c2936434f5c697683909ca9b2a5988c7e7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000915202b363f484e525353535353535353535353535353535353535353535353535353504a43392f24190d020013202c3946535f6c79838383837e7266594d4135291c1004000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3740484f5253535353535353535353535353535353535353535353535353535353535353535353524f4941372d22160b000000000000000000000000000000000000000000000000000000000000000000000005101b252f383f444748494a4a4a4948474543403d39342f29221b130a0100000000000000000000000000000000000000000000000000040b1116191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a18140f090100000000000000040b1116191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a18140f0901000000000f1b27333f4a545c6161616161616161605f5c58544f49433b342b221910060000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e848484796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000714202d3945525e6b7783909ca8ada194887c7064584c41362b231f1e1f242e3a46525e6a77838e8e8d8c8b8a85796c6053463a2d201307000000020d19242f3a444f59636d76808991989fa5a49d97938f8c898887868787898b8e92979ca2a1a5adb6b4a89b8f83776b5f53463a2e2115090000101c2936434f5c697683909ca9b2a8a19d978b80766b6259524c4846454546494e565f6974808b96a2aea99d9185796c6054483c2f23170a0000131f2c3945525f6c7885929facaa9e9184776b5e5145382b1e12050000000a1723303d4956636f7c8996a2afa5988b7e7165584b3e3225180b000000000000040e18222b353d464e565e656b71767b808386888a8c8d8d8e8d8d8c8a8886837f7b76716b645d564e453c332a21170d0200000000000013202c3946535f6c787c7c7c7c7c7c818e9ba8ac9f92857c7c7c7c7c7c7c7c7c76695d5043372a1d100013202c3946535f6c798693a0aca79a8d8173675b62696f75797d808284858685858482807d79756f69625b534a41372d23180e030000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c7986939c9c9c9285786b5f52454c5865727e8c989c9c988b7e7165584b3e3225180b00101c2936434f5c697683909ca9aca5988c7e7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000d1925313d4751595e5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c554b41352a1e120500121f2b3844515e6a778490908e8275695d5145382c2014080000000000000000000000000000000000000000000000000000000000000000000000000005101a252e373e43464646464646464646464646464646464646464646464646464646464646464646464646433e372f251b100500000000000000000000000000000000000000000000000000000000000000000000000a16212d3741495054555656565656555452504d4945403a342c251c130a010000000000000000000000000000000000000000000000060f161d22252727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272624201a130b030000000000060f161d22252727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272624201a130b03000000121e2b37434f5b666d6e6e6e6e6e6e6e6d6b6865605b544d453d342b22180e0300000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9186796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000a16232f3c4855616e7a87939facaa9d9185786c6054483c3024191211131d2936424f5b6874818281807f7e7d7d796d6053473a2d2014070000000007121d28333d47515b646d767e868e949a9fa4a39f9b9896949493949496989a9ea19b95959ba4afafa3978b7f73675b4f43362a1e12050000101c2936434f5c697683909ca9aba096919392887d746b635d585552515153555a6068717b86919ca7afa3988c8174685c5044382c201307000013202c3946535f6c7986929facaa9d9084776a5d5144372a1e11040000000915222f3c4855626f7b8895a2aea5988b7e7165584b3e3225180b0000000000000009141f29323b42474c535a60666b6f7377797c7e7f80818181807e7d7b7976736f6a656059534c443c332a21180f0500000000000000121e2b3744505b666e6f6f6f6f6f74818e9ba8ac9f9285786f6f6f6f6f6f6f6f6d64594d4135281c0f0013202c3946535f6c798693a0aca79a8d8173675a585e64696d7173767778797978777573706d69645e58514941382f251b1107000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c798693a0a99f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b00101c2936434f5c697683909ca0a0a0988c7e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000101d2935424e59636b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c675d52463a2e21150800101d2a3643505c6975828f9c9285796d6155483c3024180b000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c323739393939393939393939393939393939393939393939393939393939393939393939393937332d251d13090000000000000000000000000000000000000000000000000000000000000000000000000e1b27323e49535b6062636363636362615f5c5955514b453e372e251c130900000000000000000000000000000000000000000000060f1821282d3234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343433302b251d150b01000000060f1821282d3234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343433302b251d150b01000013202c3946525f6c777b7b7b7b7b7b7b7a7875716c665f574f463d342a1f150a00000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000c1825313e4b5764707d8996a2afa79a8e8275695c5044372b1f1308040e1a2733404c59657076757473727271706e675c5144382c1f130600000000010c16212b363f49525b646d747c83898f94989c9fa1a3a3a1a0a0a0a1a2a19e9a96908a89939fabaa9f93877b6f63574b3f33261a0e020000101c2936434f5c697683909ca9a89c8f8489958f867d756e6964615f5e5e5f61656b727a838d98a2ada99e92877b7064584c4034281c1004000013202c3946535f6c798693a0acaa9d9084776a5d5044372a1d11040000000815212e3b4854616e7b8894a1aea5988b7e7165584b3e3225180b000000000000020e1a25303b444d53565656565a5f63676a6d6f7172737474737372716f6d6a67635e5a544e48413a322a21180f0600000000000000000f1b27333f4a545c61626262626774818e9ba8ac9f9285786b62626262626262615b52483d3125190d0013202c3946535f6c798693a0aca79a8d8173675a4d53585d616467696b6b6c6c6b6a696764615d58534d463f372f261d130900000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c798693a0ac9f9285786b5f52454c5865727e8c98a5a5988b7e7165584b3e3225180b00101c2936434f5c6976839093939393938c7e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000121e2b3844515e6a7579797979797979797979797979797979797979797979797979786e6256493c3023160a000f1b2835414e5b6774818d9a95897d7165584c4034281b0f0300000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a27211b130b01000000000000000000000000000000000000000000000000000000000000000000000000111e2a37434f5b656c6f6f7070706f6f6d6b6965615c56504840372e241a10050000000000000000000000000000000000000000020d17212a32393e404141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141403c372f271d13090000020d17212a32393e404141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141403c372f271d1309000013202c3946535f6c79868888888888888684817c77716961584f463b31271c1106000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000e1a2733404d5966727f8c98a5b1a5988c7f7266594d4034281b0f03000b1824303c48545e666968676766656463625d554b4034281c10040000000000050f1a242d374049525b636a71787d83888c8f92959798999a9a99989795928e8a857f86929eaba59a8e82766a5e53473b2e22160a000000101c2936434f5c697683909ca9a89b8f82838e988f87807974706e6c6b6b6c6e71767c848c959fa9aca2978c81766a5f53473c3024180c00000013202c3946535f6c798693a0acaa9d9084776a5d5044372a1d11040000000814212e3b4754616e7a8794a1aea5988b7e7165584b3e3225180b00000000000005121e2a36424c565e6263636363605a5b5e606364666667676766656462626362605d59544e463f362d231a0f060000000000000000000b17222e38424b51555555555b6774818e9ba8ac9f9285786b5f55555555555555504940362c2015090013202c3946535f6c798693a0aca79a8d8173675a4d474c5155585a5c5e5f5f5f5f5e5c5a5855514c47423b342d251d140b0100000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c798693a0a09f9285786b5f52454c5865727e8c98a0a0988b7e7165584b3e3225180b00101c2936434f5c697683868686868686867e7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b78858686868686868686868686868686868686868686868686867d7063564a3d3023170a000d1a2633404c5966727f8c98998d8174685c5044372b1f13070000000000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f20202020202020202020202020202020202020202020202020202020202020202020201e1b1610090100000000000000000000000000000000000000000000000000000000000000000000000000121f2c3945525f6b777b7c7d7d7d7c7b7a7875716d68615a524940362c22170c000000000000000000000000000000000000000008131f29333c444a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4841392f251a0f030008131f29333c444a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c4841392f251a0f030013202c3946535f6c798693959595959493918d88827b736a61574d43382d22170b000000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000f1c2835424e5b6874818e9aa7afa3968a7d7064574a3e3125180c00000814202c37424c545a5c5b5b5a5958575655524b43392e23180c0000000000000008121c252e374049515860666c72777c808386888a8b8c8d8d8d8c8a8886827e79818c97a3aca095897d71665a4e42362a1e1206000000101c2936434f5c697683909ca9a99c8f827d889299918b85817d7a787777797a7d82888e969ea8ada49a90867b7065594e42372b1f130700000013202c3946535f6c798693a0acaa9d9084776a5d5044372a1d11040000000815212e3b4854616e7b8894a1aea5988b7e7165584b3e3225180b0000000000000814212e3a46525e686f6f6f6f6f6c625751545658595a5a5a5b61666a6d6f6f6f6d6a655f5851483f352b21170c01000000000000000006111c26303940454849494e5b6774818e9ba8ac9f9285786b5f52494949494948453f372e241a0f040013202c3946535f6c798693a0aca79a8d8173675a4d404045484b4e50515252525251504e4b4845403c36302a231b130b020000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c7986939393939285786b5f52454c5865727e8c939393938b7e7165584b3e3225180b00101c2936424f5c68747979797979797979797064584b3e3225180c000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b788592939393939393939393939393939393939393939393938a7d7063564a3d3023170a000c1825323e4b5764717d8a979d9184786c6054473b2f23170a00000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e11131313131313131313131313131313131313131313131313131313131313131313131313110f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986898a8a8a89888684817d79736c645b52483e33281d1106000000000000000000000000000000000000000d1924303b454e565a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a58534b41372b201408000d1924303b454e565a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a58534b41372b2014080013202c3946535f6c798693a0a2a2a2a1a09d99948d857c73695f554a3f33281c11050000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000101d2a3643505d6976838f9ca9aea195887b6f6255493c2f23160a0000040f1b26303a42494e4f4f4e4d4c4b4b4a4946413a31271d120700000000000000000a131c252e373f474e555b61666b6f7376797b7d7e808080807f7e7c7976727b87929da9a69b8f84786c6155493d32261a0e02000000101c2936434f5c697683909ca9a99c908376818b949c96918c898785848485878a8e9399a0a8aca49b92897e74695e53483d31261a0f0300000013202c3946535f6c7986929facaa9d9084776a5d5144372a1e11040000000915222f3b4855626e7b8895a2aea5988b7e7165584b3e3225180b0000000000000916222f3c4955626f7a7c7c7c7c74675b4e47494b4e555b61676c72767a7c7c7b7976706a625a51473d33281d12070000000000000000000a141e272e35393c3c414e5b6774818e9ba8ac9f9286796c5f53463c3c3c3c3c39342d251d1309000013202c3946535f6c798693a0aca79a8d8173675a4d4035393c3f414344454646454443413f3c3835302b251f18110901000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0013202c3946535f6c7986868686868685786b5f52454c5865727e8686868686867e7165584b3e3225180b000e1b2733404c57626a6c6c6c6c6c6c6c6c6c685f54483c3023170a000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929fa0a0a09c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c968a7d7063564a3d3023170a000a1723303d4956636f7c8995a194887c7063574b3f33261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798692969696969593918e8a847e766d645a5045392e22160a00000000000000000000000000000000000000101d2935414c5760666767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767645d53483c3024180b00101d2935414c5760666767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767645d53483c3024180b0013202c3946535f6c7986939696989b9ea4a9a59f978f857b71665b5044392d2115090000000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000111e2b3844515e6a7784919daaada093877a6d6154473a2e21140800000009141e2831383e4243424140403f3e3d3c3a352f281f150b010000000000000000010a131c252d353c434a50565b5f63676a6d6f71727373737372716f6d6c77828d98a3aba0958a7e73675c5044392d21150900000000101c2936434f5c697683909ca9aa9d90837679828c949c9d9996939291919294969a9ea4aba7a19a928980766c62584d42372c20150900000000121f2c3945525f6c7885929fabaa9e9184776b5e5144382b1e12050000000a1623303c4956636f7c8995a2afa5988b7e7165584b3e3225180b0000000000000915222f3b4855616e7b88898983766a5e52494d535960666c72787d828688898886827c746c63594f453a2f23180c010000000000000000020c151d24292d2f34414e5a6774818e9aa7ada093877a6d6154484546474948453f372f251a0f040013202c3946535f6c798693a0aca79a8d8173675a4d40342c30323536383839393838363532302c28241f1a140d060000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00131f2c3946525f6b7679797979797979766a5e51454b58647079797979797979797064574b3e3125180b000b17232f3b4650585e5f5f5f5f5f5f5f5f5f5d564d42372c20140700000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929faba0958f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8a7d7063564a3d3023170a000815222e3b4854616e7a8794a0988c8073675b4f43362a1e12060000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0d0d0d0d0d0d0d0d0d0c0a0601000000000000000000000000040708090909090909090908070501000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c798691909090909295999a958f8880766c61564a3f33271b0e02000000000000000000000000000000000000121f2c3845515d697274747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474746f64584c4033261a0d00121f2c3845515d697274747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474746f64584c4033261a0d0013202c3946535f6c798689898a8b8e9399a0a8a9a1978d83786c61554a3e3226190d0100000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000121f2c3845525f6b7885929eabac9f9286796c5f5346392d201306000000020c161f262d323536353534333231302f2d2a241d160d0300000000000000000000010c17222d373f474c4e4d4f53575b5e606264656666676666646367727d88939ea9a59a8f84786d61564a3f33281c100500000000101c2936434f5c697683909ca9aa9d9084777079828a92989da2a09f9e9e9fa0a3a6a8a5a19c96908880776e655b50463b31251a0f0400000000121f2b3845515e6b7884919eabab9e9285786b5f5245392c1f13060000000c1825313e4b5764717d8a97a3b0a5988b7e7165584b3e3225180b0000000000000714212d3a4753606c79869292867a6e635956595f656b71777d83898e92959695928d867e756b61564b4034291d1105000000000000000000030b12181d202734404d5a6673808d99a6aea295897c706458535152545655514941362c2015090013202c3946535f6c798693a0aca79a8d8173675a4d4034272326282a2b2c2c2c2c2b2a282623201c18130e0902000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d00111e2a37434f5a646b6c6c6c6c6c6c6c6b64594e4248545f686c6c6c6c6c6c6c6c685e53483c2f23160a0007131e29343e464d52535353535353535353514b443b31261b0f0300000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7984909ba69c8f838282828282828282828282828282828282827d7063564a3d3023170a000714202d3a46535f6c7986929f9c9083776b5f53463a2e2216090000000000000000000000000000000000000000000000000000000000000000000000000000030a1015181a1a1a1a1a1a1a1a1a1916120c06000000000000000000070c11141515151515151515151514110d080100000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985848383838486898d949c9a92887d72675b4f43372a1e120500000000000000000000000000000000000013202c3946535f6c79818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818174675a4d4134271a0e0013202c3946535f6c79818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818174675a4d4134271a0e0013202c3946535f6c787c7c7c7d7e82878e969fa9a99f94897d72665a4e4236291d110400000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000131f2c3946525f6c7986929facab9f9285786b5f5245392c1f120600000000040d151c212628292928272625242423211e19130c04000000000000000000000005111d29343f4951585b59544f4b4e515456575859595a595959636e79848f9aa5a99e94897d72675c50453a2e23170b0000000000101c2936434f5c697683909ca9aa9d9084776a707880878c9296999b9d9e9f9f9e9d9b9895908b857e766e655c53493f342a1f14090000000000111e2a3744515d6a7784909daaac9f9386796d6053473a2d2114070000020e1a2733404d5966727f8c98a5b1a5988b7e7165584b3e3225180b00000000000006121f2c3845515e6a778490968b7f746a6463656a70767c83898f949a9fa2a3a19e9890877d73685c5145392e22160a0000000000000000000000070d111926323f4c5865727e8b98a4b1a5988c81756a625f5e5f6062615b53483d3125190d0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a191b1d1e1f1f1f1f1e1d1b191714100c08030000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000e1a26323e48525a5f5f5f5f5f5f5f5f5f5a52483d424d565d5f5f5f5f5f5f5f5f5c564d42372b1f130700020d18222c353c424546464646464646464644403a32291f140a00000000000000000000000000000000000000000000000000000000000000000000000000121f2b3844505c68737e8a949f9d91867b7575757575757575757575757575757575756d6155493c2f2316090005121f2b3845515e6b7784919d9f93877b6f62564a3e3225190d01000000000000000000000000000000000000000000000000000000000000000000000000050d151b212426272727272727272725221d171008000000000000020b12181d2022222222222222222222211d19130c04000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6b76787776767677797c828a939e9a8f83776b5f53463a2d21140800000000000000000000000000000000000013202c3946535f6c79868e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8174675a4d4134271a0e0013202c3946535f6c79868e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8174675a4d4134271a0e00121e2b3744505c666e6f6f6f7072767c848d97a2ada59a8e82766a5e5245392d20140700000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798693a0acab9e9285786b5e5145382b1e12050000000000030a1016191c1c1c1b1a191918171614120d08010000000000000000000000000815212d3945505b636765605b56514b47494b4c4c4d4d4d56606a75808b95a0aba2988d82776c61564a3f34281d12060000000000101c2936434f5c697683909ca9aa9d9084776a666e757b8186898c8f9192929292908f8c8984807a736c645c534a41372d22180d030000000000101d2936434f5c6975828f9ca8ada194877b6e6155483b2f221609000005111e2a36434f5b6874818e9aa7b2a5988b7e7165584b3e3225180b00000000000004101d2936434f5c6875818d9a91867c75716f71757b81878e949aa0a5a2a0a0a1a4a2998f84796d62564a3e32261a0e010000000000000000000000010b1824313d4a5763707c8995a2aea99d91867c746e6c6b6c6d6f6d64594e4135291c0f0013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0f10121213131211100f0d0a07040000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000a16212c3740484f5253535353535353524e4840363b444b515353535353535353504b443b30261a0f03000006101a232a31363939393939393939393938342f2820170d03000000000000000000000000000000000000000000000000000000000000000000000000000f1c2834404b57626d78838d98a2978c82786e69696969696969696969696969696968645b5045392d2014080003101d2a3643505c6976828f9ca3978b7e72665a4e4235291d11050000000000000000000000000000000000000000000000000000000000000000000000050e171f272c31333434343434343434322e29221a110700000000020c141c23292d2f2f2f2f2f2f2f2f2f2f2d2a241e160d040000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e5a646b6c6a6969696a6d7178818d98a094877b6e6255493c2f23160900000000000000000000000000000000000013202c3946535f6c7986939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675a4d4134271a0e0013202c3946535f6c7986939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675a4d4134271a0e000f1b28333f4a545d6263636364666b727b85909ba7ab9f93867a6e6155483c2f23160a00000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798693a0acab9e9285786b5e5145382b1e120500000000000000050a0d0f100f0e0e0d0c0b0a0908050100000000000000000000000000000a1723303d4955626d74716c67615c57524d4842404049535d67727c87919ca7a69b91867b70665b5044392e23170c010000000000101c2936434f5c697683909ca9aa9d9084776a5d636a7075797d808284858686858482807c78746e68615a524a41382f251b11060000000000000f1b2835414e5b6774818d9aa7afa296897c7063574a3e3125180c00000a16222e3a46525e6b7784909da9b2a5988b7e7165584b3e3225180b000000000000000e1b2734404c5965727e8a96988f87817d7c7e81878c92999fa59f9995939394979da1958a7e72665a4e42362a1d11050000000000000000000000000916222f3b4854616d7986929eaaaea3988e867f7b7978787a7c766a5d5043372a1d100013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0005101a252e373e43464646464646464645433d362e323a4044464646464646464644403a32291f1409000000000811192025292c2c2c2c2c2c2c2c2c2c2b28241d160e0500000000000000000000000000000000000000000000000000000000000000000000000000000c17232f3a45515b66717b8690999e948a80776e665d5c5c5c5c5c5c5c5c5c5c5c5c5c5952493f34281d110400000f1c2835424e5b6774818d9aa79b8e82766a5e5145392d21140800000000000000000000000000000000000000000000000000000000000000000000040d17202931383d4040404040404040403e3a342c23190f040000000a141e262e34393b3c3c3c3c3c3c3c3c3b39352f281f160c01000000000000000000000000000000000000000000000000000000000000000000000e1a26323d48525a5f5f5e5d5c5d5e6066707c8996a296897d7063574a3d3024170a00000000000000000000000000000000000013202c3946535f6c798693a0a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79a8e8174675a4d4134271a0e0013202c3946535f6c798693a0a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79a8e8174675a4d4134271a0e000b17232e38424b5255565656575a6069747f8a96a2aea296897d7064574b3e3125180b00000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000013202c3946535f6c798693a0acab9e9285786b5e5145382b1e1205000000000000060c1013151514131211100f0e0d0b080400000000000000000000000000000b1724313e4a5764717d7d77726d68635e58534e4947515b656f79848e99a3a89e948a7f746a5f54493e33281d1206000000000000101c2936434f5c697683909ca9aa9d9084776a5d595f64696d7173767778797978777573706c68635d57504840382f261d1309000000000000000d1a2633404c5966727e8b98a5b1a4988b7e7265594d4034271b0f0306101b27323e4a56626e7a87939facb2a5988b7e7165584b3e3225180b000000000000000b1824313d4956626e7a86929e98928d8a898a8d92989ea4a099938e898686888c91999b8f83776a5e5246392d2014080000000000000000000000000713202c3845515d6975818d99a4aeaaa098908b878585858684776a5d5044372a1d110013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d000009131c252c323739393939393939393936322c24282f3438393939393939393938342f2820170d020000000000070e14191d1f2020202020202020201f1c18120c0400000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a555f6a747e87919a9c928980776f675f574f4f4f4f4f4f4f4f4f4f4f4d4740372d22170c0000000d1a2733404d5966737f8c99a59e92867a6d6155493d3124180c000000000000000000000000000000000000000000000000000000000000000000030d161f29323b43494c4d4d4d4d4d4d4d4d4a453e352b21160a000006111c26303840454848484848484848484846413a31281e1308000000000000000000000000000000000000000000000000000000000000000000000a15212c3640484f52575b5b5b5b5c5e636f7c8895a2978a7d7063574a3d3024170a00000000000000000000000000000000000013202c3946535f6c798693a0acb4ada5a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675a4d4134271a0e0013202c3946535f6c798693a0acb4ada5a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675a4d4134271a0e0006111c2730394046494949494a4e57626e7a86929eaba5988c7f7266594c403326190d00000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000131f2c3946525f6c7986929facab9e9285786b5f5245382c1f120500000000020a11171c20212221201f1e1d1c1b1a1814100a030000000000000000000000000b1724313e4a5764717d88837e79746e69645f5a555059636d77818b95a0aaa1978c82786d63584d43382d22170c00000000000000101c2936434f5c697683909ca9aa9d9084776a5d5053595d616467696a6b6c6c6b6a696664605c57524c453e362e261d140b01000000000000000b1825313e4a5763707d8996a2afa79a8e8175685c5043372b1f140f1018222d38434f5a66727e8a97a3afb2a5988b7e7165584b3e3225180b000000000000000815212d3946525e6a75818c97a29d999796979a9ea3a19b958e88827d7a797b8087909a93877a6e6155493c3023170a00000000000000000000000004101c2935414d5965717c87929ca5aca9a29c97949292929084776a5d5044372a1d110013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d0000010a131a21262a2c2c2c2c2c2c2c2c2c2a26211a1d24282b2c2c2c2c2c2c2c2c2b28231d160e050000000000000003090d111213131313131313131312100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e38434d58626c757f88919a9b928a817971696159514a4242424242424242403c362e251b11060000000c1825323e4b5864717e8a97a4a2968a7d7165594d4034281c100300000000000000000000000000000000000000000000000000000000000000020c151f28313b444d54595a5a5a5a5a5a5a5a5650473d32271b0f03000b17222d38424a5155555555555555555555524c433a2f24190d01000000000000000000000000000000000000000000000000000000000000000000040f1a242e37434f596268686767686a6e75808b97a195897c6f6356493d3023170a00000000000000000000000000000000000013202c3946535f6c798693a0acb0a59b94929292929292929292929292929292929292929292929292929292929292929292929292928e8174675a4d4134271a0e0013202c3946535f6c798693a0acb0a59b94929292929292929292929292929292929292929292929292929292929292929292929292928e8174675a4d4134271a0e00000a151e272f353a3c3c3c3d3e46515d6a76838f9ba8a69a8d8173675a4d4134271a0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000121f2c3845525f6b7885929eabac9f9285796c5f5246392c1f1306000000010b141c22282c2e2e2d2c2c2b2a29282724201b140d0400000000000000000000000b1724313e4a5764717d8a8f8a85807a75706b65605b626b757f89939da7a2998f857a70665c51463c31261b100500000000000000101c2936434f5c697683909ca9aa9d9084776a5d50484d5155585a5c5e5f5f5f5f5e5c5a5754504b46413a342c241c140b0200000000000000000916232f3c4855616e7a87939faca99d9184786c6054483c30251d1b1c222a343e4954606b77838f9ba7b3b2a5988b7e7165584b3e3225180b0000000000000005111d2935414d5964707b869099a2a5a3a3a3a6a19c96908a837d77716d6d6f757e8893968a7d7164584b3f3226190d000000000000000000000000000d1925313d4854606b76808a939ba1a6a9a7a3a09f9e9d9084776a5d5044372a1d110013202c3946535f6c798693a0aca79a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a0a09a8d8173675a4d4034271a0d000000010910161a1e1f202020202020201f1e1a150f12181c1f20202020202020201f1c18120c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313c46505a636d767f8890999c938b837b736b635c544c453d363636363634302b241c1309000000000a1723303d4956636f7c8995a2a69a8d8175695d5044382c201307000000000000000000000000000000000000000000000000000000000000020b141e27313a434d565f65676767676767676662594f43382b1f1306000f1b27333f4a545c616262626262626262625d564c41352a1d1105000000000000000000000000000000000000000000000000000000000000000000000814212e3a4753606b7475747475777a8087919c9c9185796d6054483b2e22150900000000000000000000000000000000000013202c3946535f6c798693a0acada0948986868686868686868686868686868686868686868686868686868686868686868686868686868174675a4d4134271a0e0013202c3946535f6c798693a0acada0948986868686868686868686868686868686868686868686868686868686868686868686868686868174675a4d4134271a0e0000030c151d24292d2f30303035414e5a6773808d99a6a79a8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000111e2b3744515e6a7784909daaaca09386796d6053473a2d20140700000009131d262d34383b3b3a39383736353433312c261f160d03000000000000000000000b1724313e4a5764717d8a9795908b86817b76716c676b747d87919ba5a39a90877d73695e544a3f352a1f150a0000000000000000101c2936434f5c697683909ca9aa9d9084776a5d50444145484b4e505152525252514f4d4b4844403b352f29221a130a020000000000000000000714202d3945525e6b7784909ca8ada094887c7064584d42372e2a28292d333c46505a65717c88939fabb7b2a5988b7e7165584b3e3225180b00000000000000010d1925313c48535e69747e8790979c9f9f9e9b96908b857e78726c666160636c76828d998c8073675a4d4134281b0f020000000000000000000000000814202c38434e59646e7881899095999c9e9fa0a09f9d9084776a5d5044372a1d110013202c3946535f6c798693a0a0a09a8d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693939393938d8173675a4d4034271a0d0000000000050a0e11131313131313131313110e0a04070c1012131313131313131312100c0701000000000000000000000000000000000000000000000000000000000104060708090a0a0a0908070503000000000000000000000000000000000000000000000000000000000a15202a343e48515b646d767e878f979d958d857d756d665e574f473f372f292927242019120a01000000000915222f3b4855616e7b8794a1aa9d9185796c6054483c2f23170b0000000000000000000000000000000000000000000000000000000000010a141d263039434c555f687173737373737373736b6054473b2e22150800121e2b3743505b666d6f6f6f6f6f6f6f6f6e685d5246392d211407000000000000000000000000000000000000000000000000000000000000000004090e15222e3b4855616e7b8281818283868b91999c948a8074695d5145382c1f130700000000000000000000000000000000000013202c3946535f6c798693a0acaca0938679797979797979797979797979797979797979797979797979797979797979797979797979797972665a4d4034271a0e0013202c3946535f6c798693a0acaca0938679797979797979797979797979797979797979797979797979797979797979797979797979797972665a4d4034271a0e000000030b12191d2123232326333f4c5865727e8b98a5a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000101d2a3643505c6976828f9ca8ada194877a6e6154483b2e221508000005101b252f383f44474847464544434241403d3831281f150b000000000000000000000b1724313e4a5764717d8a91969b97928c87827d7873737d868f99a3a49b92887e756b61574d42382e23180e030000000000000000101c2936434f5c697683909ca9aa9d9084776a5d504437393c3f414344454646454443413e3b38342f2a241e171009010000000000000000000004111d2a36434f5b6774808c98a5b0a4988c8175695e5349403a363535383e454e58626c77828d99a4abb2b2a5988b7e7165584b3e3225180b00000000000000000814202b37424d57626c757e868c909293918e8a858079736d67605a55535a65717d89938f8275695c4f43362a1d1004000000000000000000000000040f1b26323d48525c666f777e84898d909293939392918f84776a5d5044372a1d110013202c3946535f6c798693939393938d8173675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000013202c3946535f6c79868686868686868173675a4d4034271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070b0e1012141516161716161513110f0c0905010206090b0c0c0c0c0c0c0c0c0b0906010000000000000000030e18222c363f49525b646c757d858d959d978f87807870686159514941382f261d18140e080000000000000714202d3a4653606c7986929faca195897c7064584c3f33271b0f02000000000000000000000000000000000000000000000000000000000a131c262f38424b555e67717a818181818181817c6f6255493c2f2216090013202c3946525f6c787b7b7b7b7b7b7b7b7a6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000050b10151a1e222d3a46525e6a76828e8e8e9092969996918a82786e63584c4135281c100600000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6960554a3e3125190c0013202c3946535f6c798693a0acaca09386796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6960554a3e3125190c0000000001070d111416161825313e4b5764717e8b97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000f1c2835424e5b6874818d9aa7afa295897c6f6256493d3023170a00000a16212c37414a50545554535251504f4e4c49423a31271c11060000000000000000000a1724313d4a5763707b80858a8f949998938e89837e7d868f98a1a49b928980766c63594f453b30261c130a020000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372d303235363838393938373634322f2c28231e19130c06000000000000000000000000010e1a27333f4c5864707c8894a0aca99d91867a70655b524b4643424244494f576069737e89939a9aa0a9b2a5988b7e7165584b3e3225180b0000000000000000030f1a25303b46505a636c747b8084868685827e79746e68625c554f494955616d7a86868684776a5e5144382b1e1205000000000000000000000000000a15202b36404a545d656d73797d81838586868685848381776a5d5044372a1d110013202c3946535f6c79868686868686868173675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000131f2c3946525f6b7679797979797979797266594d4033271a0d0000000000000000000000000000000000000000000000000000000003060809090909090807050301000000000000000000000000000000000000000000050a0f13171a1d1f2122232323232321201e1c1915110d0d12161819191919191919191815120d06000000000000000006101a242d374049525a636b737b838b929a99918a827a736b635b534a41382f261c12080000000000000006121f2c3845515e6b7784919daaa5998c8074685c4f43372b1f120600000000000000000000000000000000000000000000000000000009121c252e38414a545d677079838c8d8d8d8d8d887c6f6255493c2f2216090013202c3946535f6c7986888888888888887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000050b11161c21252a2e3236424e5a66727e8a969b948f8e8d8a85807870675c52473b30241c17110b050000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d574e44392d2115090013202c3946535f6c798693a0acaca09386796c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d574e44392d211509000000000000010508090b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000d1a2733404d5966727f8b98a4b0a3978a7d7164584b3f3226190d00020e1a26323e49535b6161605f5e5d5c5b5b59544c43392e22160a0000000000000000000916232f3b48545f696f74797e83888d929899948f8a878f98a1a49b928980766d645a51473d36312b241c140a0000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a2326282a2b2c2c2c2c2b292825231f1c17130d080100000000000000000000000000000b17232f3c4854606c78848f9ba7aea2978c81776d645c56524f4e4f51555a6169727b8590958d8e97a2afa5988b7e7165584b3e3225180b00000000000000000009141f29343e48515a62696f747779797876726e68635d57504a443e45525e6b7679797979756a5e5144382b1e120500000000000000000000000000040f1a242e38424b535b62686d717477787979797977767470665b4f4236291c1000131f2c3946525f6b7679797979797979797266594d4033271a0d000000000000000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6960554a3d3125180c0000000000000000000000000000000000000000000000000004090d1012141616161616151412100e0b080501000000000000000000000000000000040b11161b1f2326292b2d2f303030302f2e2d2b2825211d19191e2225252525252525252524221e181109010000000000000008121b252e37404851596169717981888f979b948c857d756d655c534a41382e241a100500000000000003111d2a3743505d6976838f9ca9a89c9084786b5f53473b2e22160a000000000000000000000000000000000000000000000000000008111b242e37404a535c666f78828b959a9a9a92897f766c6054483b2f2215080013202c3946535f6c7986939595959595887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000020910161c22272d31363a3e41444a56626e7a8692998c8282807d79746e665e554b4037322d28221d17100a03000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f535252525252525252525252525252525252525252525252525252525252525252525252514c453c32271c11050013202c3946535f6c798693a0acaca09386796c5f535252525252525252525252525252525252525252525252525252525252525252525252514c453c32271c1105000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000c1825313e4a5763707c8995a2aea5998c8073675a4e4135291c100605111e2a36434f5a656d6e6d6c6b6a696867655e554a3f33261a0e01000000000000000007131f2b37434d575e63686d73787d82878c91969b969398a1a89c928980776e645b56514c47423c362e261c120700000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d191b1d1e1f1f1f1f1e1d1b1916130f0b07020000000000000000000000000000000007131f2b38444f5b67737e8a96a1aca89e93897f766e67625e5c5b5b5d61656c737b848e978f848693a0ada5988b7e7165584b3e3225180b000000000000000000020d18222c363f4850585e64686a6c6c6b6966625d57524c453f3936424e5a646b6c6c6c6c6b63594e4235291d1003000000000000000000000000000008121d263039414950575c6165686a6b6c6c6c6c6b6967655e554a3e32261a0e00111e2a37434f5a646b6c6c6c6c6c6c6c6c6960554a3d3125180c0000000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d574e44392d2115090000000000000000000000000000000000000000000000050b1015191c1f21222323232221201f1d1a1815110d0701000000000000000000000000080f161c22272b2f3336383a3b3c3d3d3d3c3b393734312d2924232a2e313232323232323232312e29231b1309000000000000000009131c252e363f474f575f676f767e858c949c968f877f776e655c534a40362c22170c020000000000000f1c2835424e5b6874818e9aa0a0a094887b6f63574b3e32261a0e0000000000000000000000000000000000000000000000000007111a232d364049525c656e78818b949da59c938980766d645a4f44382c2013070013202c3946535f6c798693a0a2a2a295887b6f6255483c2f22150900000000000000000000000000000000000000000000000000050d141b21272d33383d42464a4e5154565d6975828e9a8e827673716d69635c544e4b47433e39342e28221b140d060000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53464646464646464646464646464646464646464646464646464646464646464646464644413b332a20160b000013202c3946535f6c798693a0acaca09386796c5f53464646464646464646464646464646464646464646464646464646464646464646464644413b332a20160b00000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000916222f3b4854616d7a86929faba89b8f82766a5d5145392d2116131214202d3946525f6b777b7a79787776757470675b4f4236291d10030000000000000000030f1b26313b454d53585d62676c71767b80858b97a2a0a3a6a69a8d807b76716c67625d57524d4840382e23180d01000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110f10121213131211100f0c0a070300000000000000000000000000000000000000030f1b27333f4b56626d79848f9aa4afa59b91888079736e6b6968686a6d71777d858d9694897e8693a0aca5988b7e7165584b3f3225180c0000000000000000000006101a242d363e464d53585b5e5f5f5f5d5a56514c46403a342e323d48525a5f5f5f5f5f5e5951473d3125190d010000000000000000000000000000010b141e272f373f454b5055585b5d5f5f5f5f5f5e5d5b58534c43382d22160a000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d574e44392d2115090000000000000000000000000000000000000000000000000000000000000a16212c3740484f525353535353535353514c453c32271c1105000000000000000000000000000000000000000000010910161c2125292b2e2f3030302f2e2d2b292724211e19120b03000000000000000000020a121a21272d32373b3f4245464849494a4949474644413d3a35302e353a3e3f3f3f3f3f3f3f3f3e3a342d251b110700000000000000010a131b242d353d454d555d646c737a828a929a99918980776e655c52483e33291e13080000000000000e1a2733404d596673808c93939393938b7f73675a4e4236291d10000000000000000000000000000000000000000000000000071019232c353f48525b646e77818a939da69d948a81776e645b52483e33271c10040013202c3946535f6c798693a0acafa295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000810171e252c33393e44494e52565a5d60636567717d899593877b6f69676663615e5b57534e4a453f39332d261f18100800000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346393939393939393939393939393939393939393939393939393939393939393939393835302921180e04000013202c3946535f6c798693a0acaca09386796c5f5346393939393939393939393939393939393939393939393939393939393939393939393835302921180e0400000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000713202c3945515e6a76838f9ba7ab9e9286796d6155493d3228221f1f2026313d4955616e7a8786868584838281776a5d5044372a1d11040000000000000000000a151f2a333b42474c51565b60656a7179818a96a2a39c999b9d928c87827d78726d68635e59524a4035291e1206000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000000b17232e3a45515c68737d88939da6ada39a928a847e7a7775757576797d82888f97978d837986929faca5988c7e7265584c3f3225190c000000000000000000000008121b242c343b42474c4f51535352504e4a45403b352f29232c3640484f5253535353524e483f362b20150900000000000000000000000000000000020c151d252d343a4045494c4f51525353535251504e4c48423a31271c1105000a16212c3740484f525353535353535353514c453c32271c110500000000000000000000000000000000000000000000000000000000000005101a252e373e4346464646464646464645413b332a20160b000000000000000000000000000000000000000000030b131a21272c3135383a3c3c3c3c3c3b3a383633312e29241d150c0200000000000000020b141c242b32383e43484b4f51535556565656555452504d4a46413c3840464a4c4c4c4c4c4c4c4c4a463f372d23180d02000000000002080d10131b232b333b434b535a61697078808890999b928a81776e645a50453a2f24190e0300000000000c1925323f4b5864717e8686868686868683776a5e5144382b1e120000000000000000000000000000000000000000000000060f19222b353e47515a646d768089939ca59e948b81786f655c524940362c22160b000013202c3946535f6c798693a0acaca295887b6f6255483c2f22150900000000000000000000000000000000000000000000010a121a222930373e444a4f555a5e62666a6d6f717375798591978b8077757472706d6a67635f5a55504a443e383129221a120a020000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b29241e170f0600000013202c3946535f6c798693a0acaca09386796c5f5346392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b29241e170f060000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000004111d2936424e5a67737f8b97a3aea295897d71655a4e443a322e2c2c2d3038424e5965717d8a939291908f8d8174685b4f4236291d10030000000000000000030e18212a31373e444a51585f666d747b838b939ba099928c90959a98938d88837e79746f6a645c51463a2e221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000006121d2934404b56616c76818b949da5aca49c958f8a87848281828385898e939a988f857b7885929eaba5988c7e7265584c3f3225190c00000000000000000000000009121a222a30363b3f434546464544413e3a352f2a241e1a242e363d43464646464645423d362d24190f040000000000000000000000000000000000030b141b22292f34393c40424445464646464543423f3c3730281f150a000005101a252e373e4346464646464646464645413b332a20160b000000000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393835302921180e040000000000000000000000000000000000000000030c151d252c32383d414447484949494948464442403d3a352f271e140a000000000000010b141d262e363d444a4f54585b5e60616263636362615f5d5956514c47414a515758585858585858585651493f352a1e120600000000060d14191d1f202122293139414850575e666e767e878f989c938980766c61574c41362a1f140800000000000a1724303d4a56636f787979797979797979756a5e5144382b1e1200000000000000000000000000000000000000000000050e18212b343d475059636c767f89929ba59e958c82796f665d534a40372e241a1005000013202c3946535f6c798693a0a2a0a095887b6f6255483c2f221509000000000000000000000000000000000000000000020b131c242c333b42494f555b60656a6e7276797c7e80828385909c90858482817f7d7a77736f6b66615b565049423b342c241c140b0200000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c18130d050000000013202c3946535f6c798693a0acaca09386796c5f5346392c201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c18130d05000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000010d1a26323e4b57636f7b87939eaaa69a8e82766b60554c443e3a3938393c424a545f6a76818d999f9e9d968a7d7165584c4033271a0e0100000000000000000a15202a333c43494f555c636970777e868d959d9d968f878084898e939899948f8a85807a756e62564a3d3024170a000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000010c18232f3a45505a656f78828b939ba2a8a7a09b9693908f8e8e8f9295999e978f867d737784919eaba6998c7f7265594c3f3226190c000000000000000000000000000810181f252b2f3336383939393735322e29241e1913121c242c323639393939393936322b241b120800000000000000000000000000000000000000020911171e23282c30333637393939393938373533302c261e160d0300000009131c252c32373939393939393939393835302921180e040000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29241e170f060000000000000000000000000000000000000000020b151e272f373d44494d515355565656555453514f4c4946403930261c1106000000000009131d262f3840484f555b5f64676a6c6e6f70706f6f6d6b6966625d58524c525c636565656565656565625b51463b2f23160a000000060f171f25292c2d2e2f2f3031363e454d545c646c747d8690999b92887d73685d52473c3024180d01000000000915222e3a47525d676c6c6c6c6c6c6c6c6c6b63594e4235291d10000000000000000000000000000000000000000000040e17202a333d464f59626b757e88919ba49f968c837970675d544b41382e251c120800000013202c3946535f6c7986939f96939393887b6f6255483c2f2215090000000000000000000000000000000000000000020b141d252e363e454c535a60666c71767a7e8285888b8d8e909197a19791908f8d8b898683807b77726d67615b544d463e362e261d140b02000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201313131313131313131313131313131313131313131313131313131313131312100c0802000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201313131313131313131313131313131313131313131313131313131313131312100c080200000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000a16222e3a46525e6a76828d99a4aa9e93887c72675e554f4a47454546484d535c66707b87929eaaa99d9185796d6155493d3024170b0000000000000000030f1b26313c454e545a60676d747b828990989f98928b847d75787d82878c91969b96918b867e7164584b3e3125180b000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000000007121d28333e48535d677079818991979da1a5a7a39f9d9c9b9b9c9e9f9a948d857d746b7784909da3a3998c807366594c403326190d0000000000000000000000000000060d141a1f23272a2b2c2c2c2b2825221d18130d070a121a21262a2c2c2c2c2c2c2a26211a120900000000000000000000000000000000000000000000060c12181c202427292b2c2c2c2c2c2b2a282624201b140c0400000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29241e170f0600000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f20202020202020201f1c19130d0500000000000000000000000000000000000000000009141d27303941484f55595d606263636362615f5e5b5956524b42382d22160b0000000006111b252f38414a525960666b707477797b7c7c7d7c7b7a7875726e69635d5658646e72727272727272726d63574b3e3225190c0000040f1821293035393a3b3b3c3d3e3d3b3b424a525a626b747e87919c9a8f857a6f63584c4135291d11050000000006121e2a36414c555c5f5f5f5f5f5f5f5f5f5e5951473d3125190d0000000000000000000000000000000000000000040d162029323c454f58616b747e87909aa3a0978d847a71675e554b42382f261c130a0000000013202c3946535f6c798692998d868686867b6f6255483c2f22150900000000000000000000000000000000000000010a141d262f3740484f575e656b72777d82878b8e929597999b9c9da1a9a29e9d9c9a9896938f8b87837d78726c655f57504840382f261d140b020000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000006121e2a36424e5a65717c88939ea9a4998e83797067605a565352525355585e656e78828d98a3aea3988c8175695d5145392d211408000000000000000007131f2b37434e575f656b72787f868d949b99938d878079726b6c71767b81868b90959a978b7e7165584b3e3225180b000000000000101c2936434f5c697683909ca0a09d9084776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000010c17222c37414b555e676f777f868c9195999b9d9f9f9f9f9d9b98938e89827b736b69768390969696968d8073665a4d4034271a0d00000000000000000000000000000003090e13171a1d1f20201f1e1c1915110c070200000810161a1e1f202020201f1e1a150f0800000000000000000000000000000000000000000000000001070c1014171a1c1e1f2020201f1f1d1c1a17140f0902000000000000010910161a1e1f20202020202020201f1c19130d0500000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131312100d080200000000000000000000000000000000000000000006101b252f39424b535a6065696c6e6f6f6f6f6e6c6a6865625d544a3f33271b0e000000020d18222d37414a535c646b71777c8083868789898a89888785827e7a756f68615b68747e7e7e7e7e7e7e7e7366594d4033261a0d00000b16202a333b4145474748494a4a4a47413a40485059626b75808a95a1968b8075695d5145392d21140800000000020e19252f3a434b50535353535353535353524e483f362b20150900000000000000000000000000000000000000030c161f28323b444e57616a737d869099a2a1978e857b72685f554c433930261d140a0100000000121f2c3945525f6b788592988c7e797979786d6155483b2f2215080000000000000000000000000000000000000009131c262f384149525a616970767d83898e92979b9ea1a4a6a8a9aaa9a8a8a9a9a8a7a5a29f9b98938e89847d777069625a524a41392f261d140a0000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000020e1a26313d4954606b76828c97a2aaa0958b8279726b6662605f5f5f6164697077808a949ea9a79c92877b7064584d4135291d110400000000000000000916222f3b48545f6a70767d838a909090908e88827c756f686161666b70757a7f84898e938b7e7165584b3e3225180b000000000000101c2936434f5c69768390939393939084776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000005101a252f39434c555d666d747a8085898c8f9192929392908e8b87837d777069616875828a8a8a8a8a8a8174675a4e4134281b0e000000000000000000000000000000000003070b0e1012131313110f0d0905010000000000040a0e11131313131313110e0a040000000000000000000000000000000000000000000000000000000004080b0e1011121313131312110f0d0b080300000000000000000000050a0e1113131313131313131312100d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222d37414b545d656b7176797b7c7c7c7b7a797774726e665b4f43372a1e1100000008131e29343f49535c656e757c83888c909294959696969593918e8a86807a736b626875828c8c8c8c8c8c7e7265584c3f3226190c0005111c28323c454d5153545555565757534c43393e47505a636e79848f9b9d91857a6d6155493d3024170b000000000008131e2831393f4446464646464646464645423d362d24190f04000000000000000000000000000000000000000a151e28313a444d566069737c858f98a2a1988f857c726960564d433a31271e140b020000000000121e2b3844515e6b778491998c80736c6c6c665c5145392d20140700000000000000000000000000000000000007111b252e38414a535b646b737a81888e94999ea3a7aaa9a6a3a09f9d9c9c9c9c9d9ea0a2a5a9a8a49f9a958f89827b746c645c534b42382f261c120800000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b0905000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b090500000000000000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000915212c38434f5a65707b86909aa4a79d948b837c77726f6d6c6b6c6e71757a8189929ca6a99f958b80756a5f53483c3024180c0000000000000000000a1724303d4a5763707c8283838383838383827d77716a645d56555a5f64696e73787d83888b7e7165584b3e3225180b000000000000101c2936434f5c69768386868686868684776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000000000000000000009131d27313a434b545b62696f74797d8082848586868584827f7b77726c665f5a66737d7d7d7d7d7d7d7d74685b4e4135281b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090a0a0a0a0a0a0a0a0a0a0906030000000000000000000000000006111d28333e49535d666f767d82858889898988878583817e786b5e5245382c1f120000020d1924303b46505b656e7780878e94989c9fa1a2a3a3a3a2a09e9a96918b847d756c6976838f989898988b7e7164584b3e3225180b000915212d39444e575e606161626364635e554b40353e48525c67737f8b97a2968a7d7165584c3f33261a0d0100000000010c161f272e34383939393939393939393936322b241b12080000000000000000000000000000000000000006111c26303a434c565f68727b858e97a1a2998f867c736a60574e443b31281f150c02000000000000101d2a3643505c6976828f9b8e8275685f5f5b544a4034291d11040000000000000000000000000000000000040f19232d37404a535c656d757d858c93999fa5aaaba6a19d9a969492908f8f8f8f90919396999da1a6aba6a09a948d857e766e655d544b41382e241a1005000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201919191919191919191919191919191919191919191919191919181715110c0500000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201919191919191919191919191919191919191919191919191919181715110c050000000000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000004101b27323d49545e69747e88929ba4a69d958e88837e7b797878797a7d81868c939ba4a8a0978d83796e64594d42372b1f14080000000000000000000a1623303c4956626d75767676767676767676716b665f59524b494e53585d63686d72777c817e7265584c3f3225190c000000000000101c2936424f5c6874797979797979797974695c5043362a1d1004000000000000000000000000000000000000000000000000000000000000000000000000010b151f283139424a51585e64696d70737677787979787775736f6b66615b5456626b70707070707070706c63584c4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090c0d0e0f1010100f0e0d0b08060200000000030405050505050505050402000000000000000000000000000000000000000000000000000206090c0e1011121313131312110f0d0a0704000000000000000000000000000000000000000000000000000407080808080808080808080705010000000000000000000001080e12151717171717171717171716130f090300000000000000000000000b17222e3945505b656f7881888e9294969696959492908d85786b5f5245382c1f12000007121e2a35414c57626d77818a92999fa4a8a8a3a09d9b9a9a9a9b9c9f9d968f877e756b7683909da5a4978a7d7164574a3e3124180b000c1825313e4a5560696d6d6e6f70716f675c50443836404b56636f7b8894a19a8d8174675b4e4135281b0f020000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2a26211a120900000000000000000000000000000000000000000b17222e38424c555e68717a848d97a0a39a90877d746a61584e453c32291f160d03000000000000000f1c2835414e5b6774818d9a9184786b5f53504a42382e23180c0000000000000000000000000000000000010b16202b353f49525c656e7780878f979ea4abaca6a09a95918d8a878584838282828385878a8d91959aa0a6aba59e97908880776f665d534a40362c22170d020000000013202c3946535f6c798693a0acaca09386796c5f5346392c2525252525252525252525252525252525252525252525252525252524211d171008000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2525252525252525252525252525252525252525252525252525252524211d17100800000000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000a16212c37424d57626c768089929aa2a7a099938e8b888685858687898d91979ea5a69f978e857b71675d52473c31261a0f030000000000000000000815212d3945515c646969696969696969696966605a544e47413e43484d52575c61666b7075797064584b3e3225180c0000000000000e1b2733404c57626a6c6c6c6c6c6c6c6c6a62584c4034281b0f0200000000000000000000000000000000000000000000000000000000000000000000000000030d161f2730383f464d53585d616467696b6c6c6c6c6a6966635f5b554f495059606363636363636363615a51473b3024170b0000000000000000000000000000000000000000000000000000000000000000000000000000000004090d101316181a1b1c1c1c1c1c1b191715120f0b06070c0f111212121212121212110f0b07010000000000000000000000000000000000000001060a0e1215181a1c1e1f1f20201f1e1d1b191714100c08030000000000000000000000000000000000000000060c10131515151515151515151514110d080200000000000000040c13191e2223242424242424242424221f1a140d05000000000000000000030f1b27333f4a56616c77818a93999ea1a2a3a2a2a09f9c9285786b5f5245382c1f1200000b17232f3b46525d69747e89939ca4aaaaa39c9793918f8e8d8d8e9092969a9990877d747784919daaa4978a7d7063574a3d3124170a000d1a2733404d596672797a7b7c7d7d796c6053473a323a4753606d798693a09c8f8275695c4f4236291c1003000000000000030b12171c1e2020202020202020201f1e1a150f080000000000000000000000000000000000000000000f1b27333f4a545e67707a838d969fa49a91887e756b62584f463c332a20170d0400000000000000000d1a26333f4c5865727e8a9794877b6f63574b3f3830261c1207000000000000000000000000000000000008121d28323d47515b646e7780899199a1a8afa8a19b948f8a85817d7b79777675757577787a7d8185898f949ba1a9a9a29a928981786f655c52483e33291f14090000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232323232323232323232323232323232323232312d28221a11080000000000000013202c3946535f6c798693a0acaca09386796c5f5346393232323232323232323232323232323232323232323232323232323232312d28221a1108000000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000004101b26313b46505a646d76808890979ea4a49f9b9795939292929496999da2a8a29b948d857c73695f554b40362b2014090000000000000000000005111d29343f4a52595c5c5c5c5c5c5c5c5c5c5a554f49433c3632373c41464b50555a5f64696c685f54483c3023170a0000000000000b17232f3b4650585e5f5f5f5f5f5f5f5f5e5950463b3024180c000000000000000000000000000000000000000000000000000000000000000000000000000000040d151e262d353b41474c5154585a5c5e5f5f5f5f5e5c5a57534f4a443e474f5456565656565656565550483f352a1f13070000000000000000000000000000000000000000000000000000000000000000000000000000050a1015191d20232526282929292928272624211e1b171213181c1e1e1e1e1e1e1e1e1e1e1b17120c040000000000000000000000000000000001070d12161b1e222527292a2c2c2c2c2c2b2a282623201c18140f090300000000000000000000000000000000020a11181c2021222222222222222222201d19130c040000000000030d161e252a2e303030303030303030302f2b261f170f05000000000000000006131f2b37434f5b67727e89939da4aaada7a29f9d9c9d9e9285786b5f5245382c1f1200030f1b27333f4b57636e7a85909ba5aea9a098918c8784828181818183868a8f94998f867b7784919eaba4978a7d7063574a3d3024170a000d1a2734404d5a66738087888989887b6f62564b423f3f4754606d7a8693a09c8f8276695c4f4336291c10030000000000000000060b0f1213131313131313131313110e0a0400000000000000000000000000000000000000000000121e2b3744505b667079838c959fa49b92887f756c635950473d342a21180e050000000000000000000b1724313d4956626f7b8794978b8073675c5045392e23180d0300000000000000000000000000000000030e19242f39444e59636d768089929ba3abaea69e979089837e7975716e6c6a696968696a6c6e7174797e838990979ea6aca49b938a81776d645a4f453b30261b100500000013202c3946535f6c798693a0acaca09386796c5f53463f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d39332c231a100500000000000013202c3946535f6c798693a0acaca09386796c5f53463f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d39332c231a10050000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e03010000000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c100300000000000000000000000009141f29343e48525b646d767e868d93989da2a5a3a1a09f9f9fa0a2a5a4a09c97918a837b726a61574d43392f24190e0300000000000000000000010c18232e3840484d4f4f4f4f4f4f4f4f4f4f4e49443e38312b262b30353a3f44494f54595d5f5d564d42372c20140700000000000007131e29343e464d525353535353535353524e473e352a1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000030c141c232a30363b4045484b4e505152535352514f4d4a47433e39353d44484a4a4a4a4a4a4a4a48453e362d23190e02000000000000000000000000000000000000000000000000000000000000000000000000020910161b2025292c2f31333535363636353432302e2b27231e1e24282a2b2b2b2b2b2b2b2b2a28231d160e050000000000000000000000000000050c12181d22272b2e31343637383939393938363532302c2924201a150f080100000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2d29241e160e04000000000b151f282f363a3d3d3d3d3d3d3d3d3d3d3b37312921170d02000000000000000916222e3b47535f6c78848f9aa5aeaca39c9692909090919285786b5f5245382c1f120006121f2b37434f5c6874808b97a2acaca1978e87807b787574737375767a7e838990978d837885929eaba3968a7d7063564a3d3023170a000c1925323f4b5864717d899495968b7e73675d544e4c4c4f58636f7c8895a19b8e8275685c4f4235291c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c78828b959ea69c928980766d635a51473e342b22180f05000000000000000000000815212e3a46535f6b7784909c9084786d61564b3f352a1f150a0000000000000000000000000000000009141f2a35404b56606a757f89929ba4adada49c948c857e78726d6965625f5e5c5c5b5c5d5f6165686d72787e858d949ca5ada59c938980766c61574c42372c21160b00000013202c3946535f6c798693a0acaca09386796c5f534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4a453e352c22170b00000000000013202c3946535f6c798693a0acaca09386796c5f534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4a453e352c22170b0000000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8275685b4f4235281c100f0d0a06000000000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c1003000000000000000000000000030d18222c364049525b646c747b82888d9195999b9d9e9fa09f9e9d9b9894908b857f78716960574e453c32271d120800000000000000000000000007111c262e363d4143434343434343434343413d38322d26201a1f252a2f34393e43484d5153514b443b31261b0f03000000000000020d18222c353c4245464646464646464645423c352c23180e020000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11181f252b3034383c3f414345454646454443413e3b37322d2c33383c3d3d3d3d3d3d3d3d3c39332d241b1107000000000000000000000000000000000000000000000000000000000000000000000000050d141b21272c3135393b3e40414243434342413f3d3a37332f2a282f3437383838383838383837342e2820170d030000000000000000000000010910171d23292e33373a3d40424445464646454543413f3c3935302b26201a130c040000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b39352f2820160c02000006121d27313a41474a4a4a4a4a4a4a4a4a4a47423b33291f1409000000000000000c1825313e4a57636f7c8894a0acaea49a918a86838383858685786b5f5245382c1f12000915222e3b4753606c7884909ca8b0a59a8f867c756f6b69676767686a6d72787e868f958a7f85929faba3968a7d7063564a3d3023170a000a1723303c4855616d7986919d9b8f84796f665f5a59595b606a74808c98a4998c8073675a4d4134281b0e020000000000000000000004080b0c0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0c09060100000000000013202c3946535f6c7986939da7a1958a81776d645b51483f352c22191006000000000000000000000005121e2a37434f5b67737f8b9795897e72675c51463b31261b0f030000000000000000000000000000030f1a25313c47525d67727c87919aa4adada49b928a827a736d67615d59555351504f4f4f515255585c61676d737b828a939ca5aea59b92887d73695e53493e33281d1106000013202c3946535f6c798693a0acaca09386796c5f58585858585858585858585858585858585858585858585858585858585858585650473e33281c1105000000000013202c3946535f6c798693a0acaca09386796c5f58585858585858585858585858585858585858585858585858585858585858585650473e33281c110500000000000000000000000000000b1724313e4a5764717d8a97a4a99c8f8376695d5043372b1f1d1c1a16110b0400000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000000000101c2936434f5c69768390908376695c4f4336291c10030000000000000000000000000006101a242e374049525a626970767c8185898c8f909292939292908e8b8884807a746d665f574e453c332a20150b01000000000000000000000000000a141c252b31343636363636363636363635322d27211b150f14191e23282d32373c41454644403a32291f140a000000000000000006101a232a31363939393939393939393936312b231a11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d14191f24282c303235373839393939383634322e2b262221272c2f30303030303030302f2d28221b1209000000000000000000000000000000000000000000000000000000000000000000000000060f171f262c32383d4145484a4c4e4f4f4f4f4f4d4c4947433f3b35333a4044454545454545454543403932291f150a00000000000000000000030b131b22292f353a3f43474a4d4f50525253535251504e4b4845413c37312b241d160e060000000000000000000006111c262f383f454848484848484848484846413a32281e130800000b17232e39434c5256575757575757575756534d453b30251a0e020000000000000d1a2733404d5966727e8b98a4b0a89d9288807a777676787a7c786b5f5245382c1f12000c1825313e4a56636f7b8894a0acab9f94887e736a635f5c5b5a5a5b5e61666d747d868f908586929faca3968a7d7063564a3d3023170a000714202d3945515d6975818c97a1958b8178706a676565676b727b86919ca095897d7064584b3f3226190d000000000000000000030a101417191919191919191919191919191919191919191919191919191816120c06000000000013202c3946535f6c7986939fa8a194897f756c625950463d332a20170d040000000000000000000000020e1b27333f4b57636e7a86919a8f84786d62584d42372c20130700000000000000000000000000000914202b37424d58636e79848e98a3acafa59b928980787068625b56514c494644434242434446494c50565b62697078818a939ca5ada3998f857a70655a4f44392e23170c000013202c3946535f6c798693a0acaca09386796c65656565656565656565656565656565656565656565656565656565656565656561594f44392d211408000000000013202c3946535f6c798693a0acaca09386796c65656565656565656565656565656565656565656565656565656565656565656561594f44392d21140800000000000000000000000000000a1724313d4a5763707d8a96a3aa9e9185786b5f53473b302b2a2926221d160e05000000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000000000010507101c2936434f5c69768390908376695c4f4336291c1007050100000000000000000000000008121c252e37404850585f656b7075797d808284858686868584827f7c78736e69635c554d453c332a21180e040000000000000000000000000000020a131a202528292929292929292929292825211c16100a04080d12171c21262b3035383938342f2820170d030000000000000000000811192025292c2c2c2c2c2c2c2c2c2c2a26201911080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e13181c202326282a2b2c2c2c2c2b2a2825221e1a16161c2022232323232323232323201c171009000000000000000000000000000000000000000000000000000000000000000000000000060f18212930373e43494d515457595b5c5c5c5c5b5a5856534f4b46413c454c505151515151515151504b443b31261b10040000000000000000040d151d252c333a40454b4f5356595b5d5e5f5f5f5f5e5c5a5855514d48423c362f28201810070000000000000000000b17222d38424a5154555555555555555555524c443a3025190e02000f1c28343f4b555d636363636363636363635f574d42362a1e12050000000000000f1b2835424e5b6774818e9aa7b0a4988c80766e6a696a6b6d706e665b4f43372a1e11000e1a2733404d5966727e8b98a4b0a69a8e83776c615853504e4d4d4f51565b626b747d8792909097a2aea3968a7d7063564a3d3023170a0004101d2935414d58646f7b86909a9d938a827b7673727274777d848d98a29a8f84786c6054483c2f23170a0000000000000000050e151b20242626262626262626262626262626262626262626262626262625221d1811090000000013202c3946535f6c79848d96a0a59b91887e746b62584f453c32291f160c0300000000000000000000000a17232f3a46525e6975808b93938a7f74695f54483c2f23160a00000000000000000000000000020e1a25313c48535e6a75808b95a0aab1a79d938980776e665e57504a45403d3a383636353637393c40454a50575f666f77818a949da7aba1978c82776c61564a3f34281d11050013202c3946535f6c798693a0acaca0938679727272727272727272727272727272727272727272727272727272727272727272726b6155493d3023170a000000000013202c3946535f6c798693a0acaca0938679727272727272727272727272727272727272727272727272727272727272727272726b6155493d3023170a00000000000000000000000000000a1623303c4956626f7b8895a1ada094877b6f63574c423b383635332e2720170e040000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c20130000000000070d1114161c2936434f5c69768390908376695c4f4336291c1614110d070000000000000000000000000a131c252e363e464d545a5f64696d7073757778797979787775726f6c68635d57514a433b332a21180f060000000000000000000000000000000001080f14191b1c1c1c1c1c1c1c1c1c1c1c1915100b0500000001060c11161b2025292c2c2b28241d160e050000000000000000000000070e14191d1f20202020202020201f1d1a150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c101417191c1d1e1f20201f1e1d1b1916120e0a0b10141617171717171717171614100c06000000000000000000000000000000000000000000000000000000000000000000000000050f18212a333b42494f54595d6164666768696969686765625f5b57524c464e565c5e5e5e5e5e5e5e5e5c564d43382c20140800000000000000040d161f272f373e454b51565b5f6366686a6b6c6c6c6c6b696764615d58534e48413a322a2219100700000000000000000f1b27333f4a545c616161616161616161615d564c41362a1e120600121e2b3844505c676f707070707070707070695e52463a2d211408000000000000101c2936434f5c6975828f9ca8ada094887b6f645e5c5d5f6163625d544a3f33271b0f000f1c2935424f5b6874818e9aa7afa3978a7e72665b50474341404142454a5159626b75808b969ca1a9b0a3968a7d7063564a3d3023170a00000d1924303c47535e69747e88929a9c948d8783807e7f8183888e969f9b92887e73675c5044382c20140700000000000000050e1720272c3033333333333333333333333333333333333333333333333333312e29221b1208000000121f2b3844515d68717b858e97a1a39990877d736a61574e443b31281e150b020000000000000000000006121e2a35414d58636f7a85868686867b7064574b3e3125180b0000000000000000000000000007131f2a36424d5964707b86919ca7b2aa9f958b81776e655c544c453f3934302d2b2a2929292b2d3034393f454d545d656e78828b95a0aaa89e93887d72675b5045392d2115080013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7164574b3e3124180b000000000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7164574b3e3124180b00000000000000000000000000000815212e3a4754606d7985929eaaa3978b8074685e544c474443423f39322920160b0000000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000000030b12181d2022222936434f5c69768390908376695c4f4336292222201d18120b0300000000000000000000010a131c242c343b42494e54595d616467696a6b6c6c6c6b6a686663605c57524c463f38312921180f060000000000000000000000000000000000000004090c0f101010101010101010100f0d09050000000000000000050a0f14191d1f201f1c18120c040000000000000000000000000003090d1112131313131313131313110e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070a0d0f11121313131212100e0c09060200000407090a0a0a0a0a0a0a0a09070400000000000000000000000000000000000000000000000000000000000000000000000000020d17212a333c454c545a6065696d707274757676757573716f6b67635d57515560686b6b6b6b6b6b6b6b675f54493d3024180b000000000000020c161f283139414950565c62676b6f7274767879797978777673706d69645f59524b443c342b2219100600000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e685e52463a2e2115080013202c3946535f6c787d7d7d7d7d7d7d7d7b6e6255483c2f221509000000000000101c2936434f5c697683909ca9ab9e9285786c5f534f5052545656524b42382d22170b00111d2a3744505d697683909ca9ada094877a6e62564a3e3735343435393f475059646e7a85919ca8b3b0a3968a7d7063564a3d3023170a00000814202b36424d58626c76808890979e98938f8d8c8c8d8f94999f99928980766c61564b3f34281c1004000000000000010c17202931383d3f4040404040404040404040404040404040404040404040403e3a342d241a10060000101c2834404b565f69727c858f98a2a2998f867c736960564d433a30271d140a01000000000000000000020d1925303c47525d68737979797979797064574b3e3125180b000000000000000000000000000b17232f3b47525e6a75818c98a3aeaea3988e83796f655c534a423a342e2824211e1d1c1c1d1e2024282e343b434b535c666f79848e98a3aaa49a8f83786d6156493d3124170b0013202c3946535f6c798693a0acaea2968d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b7e7164574b3e3124180b000000000013202c3946535f6c798693a0acaea2968d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b7e7164574b3e3124180b000000000000000000000000000006121f2b3844515d6975828d99a4a89c90857a6f665e585451504e4a443b32271c110500000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c20130000020c151d24292d2f2f2f36434f5c69768390908376695c4f43362f2f2f2d29241d150c0200000000000000000000010a121a222a31373d43484d5154575a5c5e5f5f5f5f5f5d5c5a5753504b46413b352e271f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d10121312100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333c454e575e656b7175797c7f818282838282807e7b78736e69625b5a667278787878787878787165594c3f3326190d0000000000000a141e28313a434b535a61686e73777b7e818385868686858482807d7975706a645d564e463d342b22180e0400000000000013202c3946525f6c777b7b7b7b7b7b7b7b7a6f6256493c2f2316090013202c3946535f6c79868a8a8a8a8a8a887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5e51444445484a4946413930261c110600121f2b3845515e6b7784919eaaab9e9185786b5f52463a2d282727292d353e48525d6874808c98a4b0b0a3968a7d7063564a3d3023170a0000030e1a25303b46505a646d767e868c92979a9b9998989a9c9b98938e8780776e645a50453a2e23170b0000000000000007131e29323b43494c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a453f362c22170c00000c18242f3a444d57606a737d869099a3a1988e857b72685f554c42392f261c13090000000000000000000008141f2a36414c5761696c6c6c6c6c6c685e53483c2f23160a000000000000000000000000030f1b2834404b57636f7b86929da9b3a89d92877c71675d534a41383029221d181412100f0f101114181d22293139414a545e67727c87919c9e99938d887e7265584b3f3225180c0013202c3946535f6c798693a0acb3a89f999898989898989898989898989898989898989898989898989898989898989898988b7e7164574b3e3124180b000000000013202c3946535f6c798693a0acb3a89f999898989898989898989898989898989898989898989898989898989898989898988b7e7164574b3e3124180b000000000000000000000000000003101c2835414d5965717c88939ea8a1968c8178706964605e5d5b554d44392e22160a00000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c201300000a141e272e35393c3c3c3c434f5c69768390908376695c4f433c3c3c3c39352e271e140a0000000000000000000000000910181f262c32373c4145484b4d4f515253535252514f4d4a47443f3b35302a231c150d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080b0c0c0c0c0c0c0c0b08040000000000000000000000000000000000000000000000000000000004070808080808080808080808080808080808080808080808080808080808080808080808080808080806040000000000000000000000000004070808080808080808080807040000000000000000000005101b26303b454e57606970777c8286898c8d8f8f908f8e8d8b8884807a746d655d6875828585858585857f7266594c4033261a0d000000000007121c26303a434c555d656c73797e83888b8e909192939292918f8c8985817b756f6860584f463d342a20160c01000000000013202c3946535f6c7986888888888888887c6f6255493c2f2316090013202c3946535f6c7986939797979795887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d504437393b3d3d3a352f271e150a0000131f2c3946525f6c7885929faba99c9083766a5d5044372b1e1a1a1d232c36414c58636f7b8894a0acb0a3968a7d7063564a3d3023170a00000009141f2a343e48525b646c747b81868b8e9092939392918f8c88837c756e655c53483e33281d1206000000000000000c18242f3a444d54585959595959595959595959595959595959595959595959595650483e34281d11050007121d28323b454e58616b747e87919aa3a0978d847a71675e544b41382e251b1209000000000000000000030e19242f3a454f585e5f5f5f5f5f5f5c564d42372b1f130700000000000000000000000007131f2c3844505c6874808b97a3aeada2968b80756a60554b41382f261e17110c08050300000205080c11171f272f38424c56606a75808a95938d88827c766f63574b3e3125180b0013202c3946535f6c798693a0acb9b1aaa6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4988b7e7164574b3e3124180b000000000013202c3946535f6c798693a0acb9b1aaa6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4988b7e7164574b3e3124180b0000000000000000000000000000000c1925313d4954606b77828c96a0a89d938a827a74706c6a69675f554a3e32261a0d00000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c20130006111c263039404548494949494f5c69768390908376695c4f494949494845403930261c1106000000000000000000000000060d141b21262c3035383c3f41434445464646454443403e3b37332f2a241f18110a030000000000000000000000000000000000000000000000000000000000000104070a0c0e0f111112121211100e0d0a080401000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a101417191919191919191715100b04000000000000000000000000000000000000000000000000060c10131515151515151515151515151515151515151515151515151515151515151515151515151515151513100b06000000000000000000060c10131515151515151515151513100c0700000000000000000b16212c37424d57606a727a82888d9295989a9b9c9c9c9b999794908b857f776f676975828f929292928b7e7165584b3f3225180c00000000030e19232e38424c555e676f777e848a8f94979a9c9e9fa09f9f9d9b9995918c878179726a61584f463c32281d13080000000000131f2c3946525f6c7985929595959595887b6f6255493c2f2216090013202c3946535f6c798693a0a4a4a295887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372c2f30302e2a241d150c03000013202c3946535f6c7986939faca89b8f8275685c4f4236291c100e111a242f3b47535f6b7884919da9b0a3968a7d7063564a3d3023170a000000020d18222d364049525a626970757a7e8284858686868482807c77716b645c534a41372c22170c0100000000000000101c2935404c565f65666666666666666666666666666666666666666666666666625a5045392d21150800010c162029333c464f59626b757e88929ba49f968c837970665d534a40372d241b110800000000000000000008131e29333d464d51535353535353504b443b30261a0f030000000000000000000000000b17232f3c4854606c7884909ca8b4a89c91857a6f64594e44392f261d140d0600000000000000000000060d151d26303a444e59636e79848d88827c76716b655d52473b2f22160a0013202c3946535f6c798693a0acb7ada5a1a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988b7e7164574b3e3124180b000000000013202c3946535f6c798693a0acb7ada5a1a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0988b7e7164574b3e3124180b0000000000000000000000000000000914202c38444f5a65707a848e969ea49c948c85807c79777671675b4e4235281c0f00000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000b17222e38424b515555555555555c69768390908376695c555555555555514b42382e22170b0000000000000000000000000003090f151b2024292c2f323436383939393938373634312f2b27231e19130d0700000000000000000000000000000000000000000000000000000000000004090d101416191b1c1d1e1e1e1e1e1d1b191714110d0904000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b20242526262626262624211c160f06000000000000000000000000000000000000000000020a11181c20212222222222222222222222222222222222222222222222222222222222222222222222222222211f1c17110a010000000000020a11181c2021222222222222222221201c18120a02000000000004101c27323e49545e69727c858c93999ea2a5a7a6a4a2a1a1a1a1a09c979089817970697683909c9e9e978b7e7164574b3e3124180b000000000a15202b35404a545e67707981888f969ba0a4a7a9a9a7a6a6a7a9a8a5a29d98928b847c736a61584e443a2f24190e0300000000121f2c3845525f6b7885929fa2a2a295887b6f6255483c2f2215090013202c3946535f6c798693a0acafa295887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a222423211e19130b0300000013202c3946535f6c798693a0aca89b8e8174675b4e4135281b0e0208131f2b37434f5c6875828e9ba7b0a3968a7d7063564a3d3023170a0000000006101b242e37404850585e646a6e727577787979797876736f6b666059524a41382f251b10050000000000000000121f2b3844515d68717373737373737373737373737373737373737373737373726c6155493d3024170a0000040e17212a343d47505a636c768089929ca59e958b82786f655c52493f362d231a10070000000000000000010c17212b343b414546464646464644403a32291f1409000000000000000000000000010e1a27333f4b5864707c8895a1adafa3978b8074695d52473c32271d140b02000000000000000000000000030b141e28323c47525c68737e827c76716b65605a534b41362a1f13070013202c3946535f6c798693a0acb0a59b949393939393939393939393939393939393939393939393939393939393939393938b7e7164574b3e3124180b000000000013202c3946535f6c798693a0acb0a59b949393939393939393939393939393939393939393939393939393939393939393938b7e7164574b3e3124180b00000000000000000000000000000004101b27323e49545e68727b848c93989d9e97918c8886848275695c4f4236291c0f00000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c2013000f1b27333f4a545c616262626262626976839090837669626262626262615c544a3f33271b0f000000000000000000000000000000040a0f14181c202326282a2b2c2c2c2c2c2b292725221f1b17120d08020000000000000000000000000000000000000000000000000000000000050b1015191d20232527292a2b2b2b2b2a29282623201d1915100b06000000000000000000000000000000000000000000000000000000000000000000000000050f1820272c3032323232323232302d272018100600000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2c28221b130b01000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2c28231c140c02000000000915212c38444f5a65707a858e969ea4aaa9a39e9a97959494949596999c9b938b82796f7784909daaa4978a7d7164574a3e3124170b00000004101b26313c47515c667079828b939aa1a7aca8a39f9c9a999a9a9c9fa4a9a9a39d968e867c736a60564b41362b20150900000000121f2b3845515e6b7885929eabaea195887b6e6155483b2e2215080013202c3946535f6c798693a0acafa295887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d171715120d08010000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271b0e01020f1b2734404d596673808c99a5b0a3968a7d7063564a3d3023170a000000000009121c252e363e464d53595e6266686a6c6c6c6c6b6967635f5a554e4840382f261d130900000000000000000013202c3946535f6c7980808080808080808080808080808080808080808080807e7164574b3e3124180b000000050f18222b353e48515a646d77808a939da69d948a81776e645b51483f352c22190f060000000000000000050f19222a30353839393939393938342f2820170d0200000000000000000000000004111d2a36424f5b6774808c98a5b1ab9e93877b6f63584c41362b20160c020000000000000000000000000000020c16202b35404b56616d7776716b65605a544e4941392f24190e020013202c3946535f6c798693a0acada09489868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b000000000013202c3946535f6c798693a0acada09489868686868686868686868686868686868686868686868686868686868686868686867e7164574b3e3124180b000000000000000000000000000000000b16212c37424c566069727a81888d91949d9c9895928f8275695c4f4236291c0f00000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c201300121e2b3744505b666e6f6f6f6f6f6f6f7683909083766f6f6f6f6f6f6f6e665b5044372b1e12000000000000000000000000000000000003080c101416191b1d1e1f2020201f1e1d1b1916130f0b07020000000000000000000000000000000000000000000000000000000000040a11161c2125292c2f323436373838383837363432302d2925211c17110b04000000000000000000000000000000000000000000000000000000000000000000020d17212a32383d3f3f3f3f3f3f3f3d38322a22180e030000000000000000000000000000000000000a141d262e34383b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b38332d251d13090000000a141d262e34383b3b3b3b3b3b3b3b3b3b39342e261e140a000000010d1925313d4954606b77828c96a0a8aea69e97928e8b89888787888a8c90959a948b81777784919eaaa4978a7d7063574a3d3024170a0000000a15212c38434e58636e78828b949da5acaaa39c9793908d8d8d8e9093989da4aba7a0988f857c72675d52473c31261a0f03000000121e2b3845515e6b7784919eabaea194887b6e6154483b2e2115080013202c3946535f6c798693a0ababa295887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110a08060200000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000c1925323e4b5865717e8b97a4b0a3968a7d7063564a3d3023170a0000000000000a131c242c343b42484d5256595c5e5f5f5f5f5e5d5a57534f49443d362e261d140b0100000000000000000013202c3946535f6c79868c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b7e7164574b3e3124180b00000000061019232c363f48525b656e78818b949ea69c938980766d635a50473e342b21180e0500000000000000000710181f25292c2c2c2c2c2c2c2b28231d160e05000000000000000000000000000713202c3945525e6b7783909ca8b3a79a8e82766a5e52473b3024190e0400000000000000000000000000000000040e19242f3a45505b656b6b65605a544e49433d3730271d1308000013202c3946535f6c798693a0acaca0938679797979797979797979797979797979797979797979797979797979797979797979797064574a3e3124180b000000000013202c3946535f6c798693a0acaca0938679797979797979797979797979797979797979797979797979797979797979797979797064574a3e3124180b0000000000000000000000000000000005101b26303a444e57606870767c81848b97a3a4a19c8f8275695c4f4236291c0f00000000000000000000000000000000000c1925323f4c5865727e8c9386796c5f5346392c20130013202c3946535f6c787c7c7c7c7c7c7c7c839090837c7c7c7c7c7c7c7c786c5f5346392c2013000000000000000000000000000000000000000004070a0d0f1011121313131211100e0c09060300000000000000000000000000000000000000000000000000000000000000070f151c22272d3135393c3e414243444545444443413f3c3935312d28221c160f08010000000000000000000000000000000000000000000000000000000000000008131e29333c43494c4c4c4c4c4c4c49443c342a1f1409000000000000000000000000000000000006111c262f383f4548484848484848484848484848484848484848484848484848484848484848484848484848484847443f372f251b10040006111c262f383f454848484848484848484845403830261c1106000004111d2935414d5965717d88939ea8b0a69c948c86827e7c7b7a7a7b7d8084898f9693897f7784919eaba3968a7d7063574a3d3024170a0000030f1b26323d49545f6a75808a949da6afa8a098918b87838180808184878c9299a1aaaaa1978e84796f64594e42372b201408000000111e2b3844515e6b7784919eaaaea194877a6d6154473b2e2114080013202c3946535f6c7986939e9e9e9e95887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1724313d4a5763707d8a97a4b0a3968a7d7063564a3d3023170a000000000000010a121b222a30373c41464a4d4f515253535352504e4b47433e38322b241c140b020000000000000000000013202c3946535f6c79869399999999999999999999999999999999999999988b7e7164574b3e3124180b000000000007111a242d364049535c666f78828c959ea59b92897f756c625950463d332a20160c020000000000000000060d14191d1f2020202020201f1c18120c0400000000000000000000000000000916222f3b4854616d7a86939facafa3978a7e72665a4e42362a1f130800000000000000000000000000000000000007121d28343f49535b5f5f5a544e49433d38322c251e150b01000013202c3946535f6c798693a0acaca09386796d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c685e53473b2f231609000000000013202c3946535f6c798693a0acaca09386796d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c685e53473b2f2316090000000000000000000000000000000005101b25303a444e5760686f767c81858b97a3a29f9c8f8275695c4f4236291c0f00000000000000000000000000000002070c1925323f4c5865727e8c9386796c5f5346392c20130013202c3946535f6c798689898989898989899292898989898989898986796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a111920272d33383d4145484b4d4f5051515151514f4e4b4945423d38332d27211a130b030000000000000000000000000000000000000000000000000000000000010d1925303b454e5458595959595958554e463c31261a0e02000000000000000000000000000000000b17222d38424a5154555555555555555555555555555555555555555555555555555555555555555555555555555554504941372c21150a000b17222d38424a5154555555555555555554514a42382d22170b00000814202d3945515d6a76828d99a5b0a89e948a827b75726f6e6d6e6f7174787e848c9491867b85929eaba3968a7d7063564a3d3023170a00000814202c37434e5a65707b87919ca6afa89f968e87807b7774737374777b81888f98a1aba9a0968b80756a5f53483c3024190d010000111e2a3744515d6a7784919eaaada094877a6d6154473a2e2114070013202c3946535f6c7986919191919191887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000000000910181f252b31363a3d404344464646464543413e3b37322d27211a120a02000000000000000000000013202c3946535f6c79869292929292929292949ca69e9592929292929292928b7e7164574b3e3124180b00000000000008121b242e37414a545d677079838c969fa49b91887e756b62584f453c32281e130800000000000000000002080d101213131313131312100c07010000000000000000000000000000000b1825313e4a5763707c8996a2aeaca094877b6e62564a3e32261a0e02000000000000000000000000000000000000010c17222d3841494f52524e49433d38322c26211b140c0300000013202c3946535f6c798693a0acaca09386796c6060606060606060606060606060606060606060606060606060606060606060605d564c42372b1f1307000000000013202c3946535f6c798693a0acaca09386796c6060606060606060606060606060606060606060606060606060606060606060605d564c42372b1f1307000000000000000000000000000000000b16212c37424c566069727a81888d91959d9b9693908e8275695c4f4236291c0f0000000000000000000000000001080e13161925323f4c5865727e8c9386796c5f5346392c20130013202c3946535f6c798693949494949494949999949494949494949386796c5f5346392c20130000000000000000000000000000000000000000000205080b0d0f101112121211100f0e0c090603000000000000000000000000000000000000000000000000000000020b131b232b32383e44494d5155575a5b5d5e5e5e5e5d5c5a5855524e49443f39322c241d150d040000000000000000000000000000000000000000000000000000000004111d2935414c575f6565656565656560584d42362a1e1205000000000000000000000000000000000f1b27333f4a545c616161616161616161616161616161616161616161616161616161616161616161616161616161605b53493d32261a0e000f1b27333f4a545c616161616161616161615c544a3f33281b0f03000a1723303c4855616d7a86929eaaaea2978c8278706965636161616264686d737a828a948d8285929faca3968a7d7063564a3d3023170a00000c1824303c48545f6b76828d98a3adaaa0968d847c756f6a676666686b70767d868f99a3aea79d92877b7064594d4135291d11050000111d2a3744505d6a7784909daaada094877a6d6053473a2d2014070013202c3946535f6c7984848484848484847b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000060d141a20252a2e3134363839393939383735322f2b27211c160f080000000000000000000000000013202c3946535f6c798686868686868686868a96a2988c8686868686868686867e7164574b3e3124180b0000000000000009121c252f38424b555e67717a848d97a0a39a90877d746a61574e443a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404c5966727e8b98a4b1aa9d9184786b5f53463a2e211509000000000000000000000000000000000000000006111c262f373e434645433d38322c26211b151009020000000013202c3946535f6c798693a0acaca09386796c5f5353535353535353535353535353535353535353535353535353535353535353514b443b30251a0f03000000000013202c3946535f6c798693a0acaca09386796c5f5353535353535353535353535353535353535353535353535353535353535353514b443b30251a0f0300000000000000000000000000000004101c27323e49535e68727b848c93999d9c958f8a8684828175695c4f4236291c0f000000000000000000000000020b12191f232526323f4c5865727e8c9386796c5f5346392c20130013202c3946535f6c798687878787878787889191888787878787878786796c5f5346392c201300000000000000000000000000000000000001050a0e1115171a1b1d1e1e1e1e1e1d1c1a1816130f0c07030000000000000000000000000000000000000000000000010b141d252d353c434a4f55595d616466686a6a6b6b6b6a696764615e5a55504a443d362f271f160e050000000000000000000000000000000000000000000000000000000613202c3945515d69717272727272716a5f53463a2d21140700000000000000000000000000000000121e2b37434f5b666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d655a4e4236291d1000121e2b37434f5b666d6e6e6e6e6e6e6e6e6d665b5044372b1f1205000d1926323f4b5864717d8a96a2aea99d91867a70665e595655545455585c61687078828b938a8a94a0aca3968a7d7063564a3d3023170a0004101c2835414d5964707c88939eaaaea3998e857b726a635e5b595a5b5f646b747d87919ca7aea3988c8175695d5145392d2114080000101d2a3743505d697683909daaada09386796d6053463a2d20130700131f2c3945525e6b757777777777777777766d6154483b2e221508000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000000000000000003090f14191e2125272a2b2c2c2c2c2b2a2826231f1b16100b040000000000000000000000000000131f2c3946525f6b7679797979797979797b8895a2978a7d7979797979797979786f63574a3e3124170b00000000000000000a131d263039434c555f68727b858e98a1a2998f867c736960564c4135291d11050000000000000000000003060809090909090908060200000000000000000000000000000000000f1b2835414e5b6774818d9aa7b3a79b8e8275695c5043372a1e12050000000000000000000000000000000000000000000a141d252d3337393936322c26211b15100a0400000000000013202c3946535f6c798693a0acaca09386796c5f534646464646464646464646464646464646464646464646464646464646464645403a32291f140900000000000013202c3946535f6c798693a0acaca09386796c5f534646464646464646464646464646464646464646464646464646464646464645403a32291f1409000000000000000000000000000000000915202c38444f5a65707a848d969da49b928a847e7a77757470665a4e4135281b0f0000000000000000000000020b141d242a2f3232323f4c5865727e8c9386796c5f5346392c20130013202c3946525f6b777a7a7a7a7a7a7a7a839090837a7a7a7a7a7a7a7a776b5f5246392c20130000000000000000000000000000000001070c11161a1e21242628292b2b2b2b2b2a282725221f1c18130f090400000000000000000000000000000000000000000009131d262f373f474e555b60656a6d7073757677787877777573716e6a65615b554f484139312820170e0400000000000000000000000000000000000000000000000000050a14202d3a4753606d7a7f7f7f7f7f7b6e6155483b2e2215090400000000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b766a5e5145382b1e120013202c3946525f6c777b7b7b7b7b7b7b7b786c5f5346392d201306000e1b2834414e5a6773808c99a5b1a5988c8174695e544d4a484747494c50565e667079848e95959ba5b0a3968a7d7063564a3d3023170a000814202c3945515d6975818d98a4b0a89d92877c72696058524e4d4d4f535a626b75808b96a1ada99d9186796d6155493d3024180b0000101d2a3643505d697683909ca9aca09386796c5f5346392d20130600111d2a36424e59636a6b6b6b6b6b6b6b6b6a655b5044382c201307000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000000000000000003090d1215181b1d1e1f2020201f1d1c1916130f0a0500000000000000000000000000000000111e2a36434f5a646b6c6c6c6c6c6c6c6e7b8895a2978a7d716c6c6c6c6c6c6c6c675e53473b2f2216090000000000000000010b141e27313a434d566069737c868f99a0a0988e857b72685d5245392d2013070000000000000000050b0f131515151515151514120e0903000000000000000000000000000000101d293643505c6975828f9ca8b2a6998c8073665a4d4134281b0f02000000000000000000000000000000000000000000020b131b22272a2c2c2a26211b15100a04000000000000000013202c3946535f6c798693a0acaca09386796c5f53463a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a38342f2820170d0200000000000013202c3946535f6c798693a0acaca09386796c5f53463a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a38342f2820170d02000000000000000000000000000000000d1925313d4954606b76818c969fa79c92898079726e6a6867655e54493e3225190d00000000000000000000020b141d262e363b3e3f3e3f4c5865727e8c9386796c5f5346392c201300111e2a37434f5a656c6d6d6d6d6d6d6d7683909083766d6d6d6d6d6d6d6c655a4f43372a1e11000000000000000000000000000000060c12181d22262a2d303335363738383837363533312e2b28241f1a150f090200000000000000000000000000000000000007111b252f384149515960666c71767a7d808283848585848482807d7a76716c66605a524b433a322920160d0300000000000000000000000000000000000000000000050b11161b202d3a4753606d7a878c8c8c887b6e6155483b2e221a150f09030000000000000000000000000013202c3946535f6c798688888888888888888888888888888888888888888888888888888888888888888888888885786b5e5145382b1e120013202c3946535f6c798688888888888886796d6053463a2d20130700101d2936434f5c6975828f9ba8aea195897c7064584c423d3b3a3b3c3f454c545e68727d88949fa6adb0a3968a7d7063564a3d3023170a000b1723303c4855616d7985919da9afa3978c81756b60574e4742404043485059636e7985919da9aea2968a7d7165594c4033271a0e0200101c2936434f5c697683909ca9ac9f9286796c5f5346392c201306000e1a26323d4751595d5e5e5e5e5e5e5e5e5e5a53493f34281c1004000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000000000000000000000105090c0e10121313131312110f0d0a07030000000000000000000000000000000000000e1a26323d48525a5e5f5f5f5f5f5f616e7b8895a2978a7d71645f5f5f5f5f5f5f5c554c42362b1f1307000000000000000000020c151f28313b444e57616a747d8790939393938d847a6e6154473b2e211408000000000000000810161b1f22222222222222211e1a150e060000000000000000000000000000111e2b3744515d6a7784909daab1a4978b7e7165584b3f3225190c0000000000000000000000000000000000000000000000010910161b1e201f1e1a15100a040000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c28241d160e050000000000000013202c3946535f6c798693a0acaca09386796c5f5346392d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c28241d160e050000000000000000000000000000000003101c2935414d5965717d88939ea8a1958b80766e67625e5c5b59544c42382d211509000000000000000000030c141d262f3840474b4c4a454c5865727e8c9386796c5f5346392c2013000f1b27333e49535b606060606060606976839090837669606060606060605b53493e33271b0f00000000000000000000000000020a11171e23292e32363a3d3f414344454545444342403e3b3834302b26201a140d0600000000000000000000000000000000040e19232d37414a535b636a71777d8286898c8e9091919291908f8c8a86827d78726b645d554c443b32281f150b0100000000000000000000000000000000000000020910161c22272b2f3a4753606d7a87949995887b6e6155483b2f2a26201b150e0700000000000000000000000013202c3946535f6c798693959595959595959595959595959595959595959595959595959595959595959595959285786b5e5145382b1e120013202c3946535f6c798693959595959386796d6053463a2d20130700111e2b3744515d6a7784909daaac9f9286796d6054483c312f2e2e30343a424c56606b77828e9aa6b2b0a3968a7d7063564a3d3023170a000e1a26333f4c5864717d8995a2aeaa9e92867b6f64594f453c363334373e47525d6874818c99a5b1a69a8d8174685b4f4336291d1004000f1c2936424f5c6975828f9ca9ac9f9286796c5f5246392c1f1306000915202b363f474d515151515151515151514e4841372d22170c00000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3640484e52525252525255616e7b8895a2978a7d716457525252525252504b433a30251a0e0200000000000000000000030d161f29323c454f58626b757e868686868686867b6e6154483b2e21150800000000000009121a21272c2e2f2f2f2f2f2f2e2b262018100600000000000000000000000000121f2c3845525e6b7885919eabb0a396897d7063574a3d3124170a00000000000000000000000000000000000000000000000000050a0f111313110e0a0400000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c202020202020202020202020202020202020202020202020202020201f1c18120c04000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c202020202020202020202020202020202020202020202020202020201f1c18120c04000000000000000000000000000000000006131f2c3844515d6975828d99a4a79b8f84796e655c56524f4e4c48423a31261b10050000000000000000030c151e262f38414a52575956504c5865727e8c9386796c5f5346392c2013000a16212d3741494f5353535353535c69768390908376695c5353535353534f4941372d21160a000000000000000000000000050c141b22292f34393e4246494c4e505151515151504e4d4a4744403c37312c251f1810090100000000000000000000000000000a15202b353f49535c656d757c83898e9296999b9c9e9e9e9e9d9b9996928e89837d766e675e564d443a31271d1309000000000000000000000000000000000000050d141b21282d33373c3f4753606d7a8794a095887b6e6155483f3b36312c262019120a020000000000000000000013202c3946535f6c798693a0a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e9285786b5e5145382b1e120013202c3946535f6c798693a0a2a2a09386796d6053463a2d20130700121f2c3845525f6b7885929eabaa9d9084776b5e5145382c2221212328303a444f5a66727d8a96a2aeb0a3968a7d7063564a3d3023170a00101d2936424f5b6774818d99a0a3a59a8e82766a5e53473d332a27272c35404c5864707c8995a2aea99d9084776a5e5145382c1f1206000f1c2935424f5b6875828f9ca8ac9f9285786b5f5245382c1f12050008141f29343d444a4d4e4e4e4e4e4e4e4e4e4b463e352b21160a00000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000206090b0d0f10101010100f0d0b090603000000000000000000000000000000000004101a242e363d4245464646464855616e7b8895a2978a7d7164574a4646464645443f3931281e1409000000000000000000000000040d17202a333d465059626c7579797979797979776d6054473a2e211408000000000007111b242c33383b3c3c3c3c3c3c3a37312a22180f04000000000000000000000000131f2c3946525f6c7985929facafa295887c6f6255493c2f231609000000000000000000000000000000000000000000000000000000020506060502000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013131313131313131313131313131313131313131313131313131312100c070100000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013131313131313131313131313131313131313131313131313131312100c07010000000000000000000000000000000000000815212e3b4754606d7985929eaaa3978b7e73685d534b464341403d3730281f150a0000000000000000030c151e273039424a535c6365625a515865727e8c9386796c5f5346392c20130005101b252f373e4446474747474f5c69768390908376695c4f4747474746443e372f251b10050000000000000000000000060e171e262d343a40454a4e5256585b5c5d5e5e5e5d5d5b595754504c47423d373029221b130a0200000000000000000000000006111c27323c47515b656e777f878e94999ea2a5a7a5a3a2a2a2a3a6a5a29e9a948e88807970685f564c43392f251a100500000000000000000000000000000000070f171e262c33393e43484c4f53606d7a8794a095887b6e61554f4b47423d37312a231c140c0400000000000000000013202c3946535f6c798693a0acaeaea9a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59e9285786b5e5145382b1e120013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946525f6c7986929faca89c8f8276695c5043362a1d1415171e28333e4955616d7986929eabb0a3968a7d7063564a3d3023170a00121f2b3845515e6a77839092949698968a7e7265594d42362b211a1a24303c4854616d7a86939facac9f9286796c6053473a2d211407000f1c2835424f5b6875828e9ba8ab9e9285786b5e5245382b1f1205000d1925303b454f565a5b5b5b5b5b5b5b5b5a5750473d32271b0f03000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000000000000000000000001060a0e1215181a1b1c1d1d1d1c1b1a1815120f0b070200000000000000000000000000000008121c242c3236383939393b4855616e7b8895a2978a7d7164574a3e3939393937342e271f160c0200000000000000000000000000050e18212b343e47505a636b6c6c6c6c6c6c6c6c655b5044382c1f130600000000030e19232d363e444748484848484847423c342a20160b00000000000000000000000013202c3946535f6c7986939facaea295887b6e6155483b2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130707070707070707070707070707070707070707070707070707060606040100000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2013070707070707070707070707070707070707070707070707070706060604010000000000000000000000000000000000000a1623303c4956626f7b8895a1aca093877a6e62564b413a363433312c261e160d0300000000000000030c151e273039424b545d656e726c635a5865727e8c9386796c5f5346392c2013000009131d252d33373a3a3a3a434f5c69768390908376695c4f433a3a3a3a37332d251d13090000000000000000000000060f18202830383f454b51565a5e626567696a6b6b6b6a69686663605c58534e48423b342d251c140b0200000000000000000000000b17222d38434e59636d76808991999fa5aaa49f9b989695959697999ca0a5a5a099928b837a71685e554b41362c21170c010000000000000000000000000000071019212930373e444a4f54585b5e616d7a8794a095887b6e615e5b57534e48423c352e261e160d04000000000000000013202c3946535f6c798693a0acb3a89f99989898989898989898989898989898989898989898989898989898989285786b5e5145382b1e120013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca89b8e8275685b4f4235281c0f080c16212d3945515e6a76838f9ca8b0a3968a7d7063564a3d3023170a0013202c3946535f6c7981838587898c8e877a6e6255493d31251a0f13202c3945525e6b7884919eaaada194877b6e6155483b2f221508000f1b2835424e5b6875828e9ba8ab9e9184786b5e5145382b1e120500101d2935414d57616767676767676767676762594f43372b1f1306000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000070c12161b1e22242628292a2a2a29282624221f1b17120d080200000000000000000000000000000a121a21262a2c2c2c2e3b4855616e7b8895a2978a7d7164574a3e312c2c2c2b28231d150d04000000000000000000000000000000060f19222c353e4851595e5f5f5f5f5f5f5f5f5b534a3f34281c1004000000000915202a353f484f54555555555555534d463c32271c1004000000000000000000000013202c3946535f6c798693a0acaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20131313131313131313131313131313131313131313131313131313131312110d09040000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20131313131313131313131313131313131313131313131313131313131312110d0904000000000000000000000000000000000a1724313d4a5764707d8a97a3aa9d9184786b5f52463a2f2a282724201b140c0400000000000000030c151e273039424b545d666e777e756c635a65727e8c9386796c5f5346392c201300000b151f282f363a3d3d3d3d434f5c69768390908376695c4f433d3d3d3d3a362f281f150b00000000000000000000060f18212a323a424950565c62666b6e71747577777878777674726f6c68645f59534d463e372e261d140b0100000000000000000005111c28333f4a55606a757f89929ba3aaa59f98938f8c8a8988898a8d90959aa0a7a49c958c837a70675d53483e33281d120700000000000000000000000000071019222b333b42494f555b6064686b6d6f7a8794a095887b6f6d6a67635f59544d47403830281f160d030000000000000013202c3946535f6c798693a0acaea2968d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b85786b5e5145382b1e120013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675b4e4134281b0e0105111d2935424e5b6774818d9aa6b0a3968a7d7063564a3d3023170a00121f2b3845515d68717477797b7d7f8183786b5f52463a2d211509111d2a3743505d697683909ca9afa295897c6f6255493c2f231609000e1b2834414e5b6774818e9ba8aa9e9184776b5e5144382b1e110500121f2c3845515d69727474747474747474736b6054473b2e211508000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000000000000040b12181d22272b2e31333536363636363533312e2b27231e19130d060000000000000000000000000000080f151a1d1f1f222e3b4855616e7b8895a2978a7d7164574a3e31241f1f1e1b17120b03000000000000000000000000000000000007101a232c363f484e5253535353535353524f4941382d23170c00000000040f1b26313c47515a606262626262625f584e44382d201408000000000000000000000013202c3946535f6c798693a0acaea195887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1a150f0700000000000013202c3946535f6c798693a0acaca09386796c5f5346392c201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d1a150f070000000000000000000000000000000b1724313e4a5764717d8a97a4a89c8f8276695c5043372a1e1b1a18140f090200000000000000040c151e273039424b545d666f7881877e756c6265727e8c9386796c5f5346392c20130006121d27313a41474a4a4a4a4a4f5c69768390908376695c4f4a4a4a4a4a47413a31271d12060000000000000000040e18212a333c444c545b62686d72777a7e8182848485848483817e7c7874706a655e57504840382f261d13090000000000000000000a16222d3944505b66717c87919ba4ada49b948d8783807d7c7b7c7d8184898f959da5a69e958c83796f645a4f453a2f24190d020000000000000000000000060f19222b343d454c545a61666b7074777a7c7e8794a095887e7c7a77736f6a655f58514a423a31281f150c0200000000000013202c3946535f6c798693a0acaca093867e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e786b5e5145382b1e120013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01010d1a26333f4c5965727e8b98a5b0a3968a7d7063564a3d3023170a00101c2935414c576066686a6c6e7072747673695d5044372a1e1105101c2936434f5c6975828f9ca9b0a396897c6f6356493d3023160a000e1b2734414e5a6774818e9aa7aa9e9184776a5d5144372a1e11040013202c3946535f6c7981818181818181817b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000070f161d23292e33373a3d3f41424343434341403d3b37332f2a241e1710090100000000000000000000000000040a0e111215222e3b4855616e7b8895a2978a7d7164574a3e31241713120f0b06000000000000000000000000000000000000000008111a242d363d42454646464646464646433e382f261c1106000000000915202c37424d58636c6f6f6f6f6f6f6a6055493d3024170b000000000000000000000013202c3946535f6c7986929facaea295887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c292520191109000000000013202c3946535f6c798693a0acaca09386796c5f5346392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c29252019110900000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8275685b4e4235281c0f0d0b08040000000000000000040d161e273039424b545d666f78818a90877e746765727e8c9386796c5f5346392c2013000b17232e39434c525657575757575c69768390908376695c575757575756524c43392e23170b00000000000000020c16202a333c454e565e666d73797e83878a8d8f90919291918f8e8b8885817b767069625a524a41382f251b110700000000000000030e1a26323e4a55616c77838e98a3ada49b9289827c7773706f6f6f7174787d848b939ba4a79e958b81766c61564b40352a1e130800000000000000000000030e18212b343d464f575e656c72777c808486898a8d97a2988e8b898683807b76706a635c544c433a31271e140a00000000000013202c3946535f6c798693a0acaca093867971717171717171717171717171717171717171717171717171717171716f675b4f43372a1d110013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000b1825313e4b5764717d8a97a4b0a3968a7d7063564a3d3023170a000c1824303a454e55595b5d5f626466686a6961574c4034281c0f030f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000e1a2734414d5a6774818d9aa7aa9d9084776a5d5044372a1d11040013202c3946535f6c79868e8e8e8e8e8e887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000009111921282e343a3f43474a4c4e4f5050504f4e4c4a47443f3b353029221b130b02000000000000000000000000000000000815222e3b4855616e7b8895a2978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000008121b242b323639393939393939393937332d261d140a00000000020e1a26313d48545f6a757b7b7b7b7b7b7165584b3f3225180c0000000000000000000000121f2c3945525f6b7885929fabafa296897c6f6356493c3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f534639393939393939393939393939393939393939393939393939393939393939393836312b231b11070000000013202c3946535f6c798693a0acaca09386796c5f534639393939393939393939393939393939393939393939393939393939393939393836312b231b1107000000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e0100000000000000000000030d161f283039424b545d666f78818a938c847b726665727e8c9386796c5f5346392c2013000f1c28343f4b555d636363636363636976839090837669636363636363635d554b3f34281c0f0000000000000009141e28323c454e57606870777e848a8f9397999c9d9e9e9e9d9c9a9895918c87817b746c645c534a41372d23190f0400000000000007131f2b37434f5a66727d89949faaa69c92898077716b676462626365686c72798189929ba5a79d92887d73685d52463b3024190d010000000000000000000b151f2a333d464f58616970777d83888c90939597999fa8a099979593908c87827b756d665e554c433930261b1106000000000013202c3946535f6c798693a0acaca09386796c65656565656565656565656565656565656565656565656565656565645e554a3f33271b0e0013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1724303d4a5763707d8a96a3b0a3968a7d7063564a3d3023170a0008131e29333c44494d4f51535557595b5d5c574f463b3024180c000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000d1a2734404d5a6773818d9aa6aa9d9083766a5d5043372a1d11040013202c3946535f6c7986939b9b9b9b95887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000000000009121b232b323940454a4f5356595b5c5d5d5d5c5b595653504b46413b342d251d140b020000000000000000000000000000010815222e3b4855616e7b8895a2978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2b27221b140b020000000007131f2b37424e5965707b86888888857a7064574b3e3225180b0000000000000000000000121e2b3845515e6b7784919eaab0a3968a7d7064574a3e3124180b000000000000000000000000000000000000000000000000000306080908050200000000000000000000000000000013202c3946535f6c798693a0acaca09386796c5f5346464646464646464646464646464646464646464646464646464646464646464645423c352d23190e0300000013202c3946535f6c798693a0acaca09386796c5f5346464646464646464646464646464646464646464646464646464646464646464645423c352d23190e030000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000b151f28313a424b545d666f78818a938c837a72696065727e8c9386796c5f5346392c201300121e2b3844505c676f70707070707070768390908376707070707070706f675c5044382b1e1200000000000006101b26303a444e576169727a828990969b9fa3a6a5a3a2a2a2a3a5a7a4a19d98928c867e766e655c53493f352b20160b0000000000000a17232f3b47535f6b77838e9aa5aa9f958a80766d665f5a57565556585c61676f778089939da8a49a8f84796e63574c41352a1e1206000000000000000007121c27313b454f58616a737a82888e94989c9fa2a4a5a6a6a6a6a4a29f9c97928d86807870675e554b41372d23180d020000000013202c3946535f6c798693a0acaca09386796c5f58585858585858585858585858585858585858585858585858585857534c43392e22170b0013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00020d17212a32383d40424446484a4d4f51504c463d34291e1307000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000d1a2633404d596673808d9aa6a99c908376695d5043362a1d10030013202c3946535f6c798693a0a8a8a295887b6f6255483c2f221509000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110400000000000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000008121b242d353d444b51565b5f6265676969696969676563605c57524c453e372f261d140b010000000000000000000000050a0d0f15222e3b4855616e7b8895a2978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000080f151a1e1f20202020202020201e1b16110a0200000000000b17232f3b47535f6a76818d9594897e73685e53473b2f23160a0000000000000000000000111d2a3744505d6a7683909ca9b1a4988b7e7265584c3f3326190d0000000000000000000000000000000000000000000000050b0f13151514120e0a060200000000000000000000000013202c3946535f6c798693a0acaca09386796c5f53525252525252525252525252525252525252525252525252525252525252525252524e473f352b20140800000013202c3946535f6c798693a0acaca09386796c5f53525252525252525252525252525252525252525252525252525252525252525252524e473f352b2014080000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e0100000000000000000006111c27313a434c545d666f78818a938c837a7168605e65727e8c9386796c5f5346392c20130013202c3946535f6c787d7d7d7d7d7d7d7d839090837d7d7d7d7d7d7d7d786c5f5346392c20130000000000010c17222d37424c566069737b848c949ba1a6a5a09c999795959697999ca0a5a9a49e97908880776e655b51473d32271c110600000000000e1a26333f4b57636f7b87939fa0a2998e83786e645b544e4b4948494c50565d656e77818b96a1aba1968b8074695d52463a2f23170b00000000000000020d18232e39434d57616a737c858c939a9fa4a7a39f9c9a9999999b9da0a4a8a39e98918a827970675d53493f34291f13080000000013202c3946535f6c798693a0acaca09386796c5f534b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b47413a31271c11060013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000050f1820272d313336383a3c3e40424443403b342b22180d02000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000d1a2633404c596673808c99a6a99c908376695c4f4336291c10030013202c3946535f6c798693a0acafa295887b6f6255483c2f221509000000000001101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d110d0b070200000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000006101a242d363f474e565c62676b6f7274757676767574726f6c68635d57504941382f261d1309000000000000000000030a11161a1c1c222e3b4855616e7b8895a2978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000040a0e11131313131313131313110f0b05000000000000030f1b2734404c58646f7b87929a8e83786d62574c42372b1f13070000000000000000000000101c2936424f5c6875828e9ba8b3a6998d8074675a4e4135281c0f030000000000000000000000000000000000000000000810161b1f2122211e1a16120e0a060200000000000000000013202c3946535f6c798693a0acaca09386796c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5951473c3125190d00000013202c3946535f6c798693a0acaca09386796c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5951473c3125190d0000000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e010000000000000000000b17232e39434c555e666f78818a948b8279716b6b6b6b6b727e8c9386796c5f5346392c20130013202c3946535f6c79868a8a8a8a8a8a8a8b93938b8a8a8a8a8a8a8a86796c5f5346392c2013000000000007131e29343e49545e68727b858e969ea5a7a09a94908c8a8988898a8c9094999fa6a9a29a928980776d63594e44392e23170c0100000000101c2936424f5b6773808c9092949694887d71665c524a433e3c3c3d3f444b535c656f7a848f9aa5a79c91857a6e63574b3f33271b0f0300000000000008131f2a35404a555f69737c868e969ea5a9a29c9793908d8c8c8c8e9094989da4a9a39c948b82796f655b51463b3025190e0200000013202c3946535f6c798693a0acaca09386796c5f53463e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3b3630281f150b000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000060e161c212527292b2d2f31333637373430292219100600000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000d192633404c5966727f8c99a6a99c8f8275695c4f4236291c10030013202c3946535f6c798693a0acafa295887b6f6255483c2f22150900000000050c121c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1b1a17130d06000000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000030e18222c363f48515960676d73777b7e818283838382817e7c78746e68625a534a41382e251a100600000000000000040d151c22262829282e3b4855616e7b8895a2978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3744505c6874808c9894897d72665b50453a30251a0f0300000000000000000000000e1b2734414d5a6773808d99a6b2a89b8f8276695d5044372b1f1206000000000000000000000000000000000000000009121a21272c2e2f2e2a26221e1a16120e0a060100000000000013202c3946535f6c798693a0acaca09386796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a63584d4135291c1003000013202c3946535f6c798693a0acaca09386796c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a63584d4135291c100300000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e010000000000000000000f1b27333f4a555e677078828b948b827978787878787878787e8c9386796c5f5346392c20130013202c3946535f6c798693939393939393939393939393939393939386796c5f5346392c201300000000020d19242f3a45505b65707a848d97a0a8a49c958e8984807d7c7b7c7d8084888e949ca3aca49b92897f756b60554a3f34291d120600000000101d2a3643505d69768081838587898b83776c60554a403832302f303339414a535d68737e8994a0aba2968b7f73675c5044382c2014070000000000020e1925303b46515c67717b858f98a0a8a79e97918b878381807f808184888c9299a0a8a69d948b81776d62574c41362b1f130800000013202c3946535f6c798693a0acaca09386796c5f534639323232323232323232323232323232323232323232323232312f2b251e160d03000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000040b1015181a1c1e21232527292a2a28241e1810070000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000c1926323f4c5965727f8c99a5a89c8f8275685c4f4236291c0f030013202c3946535f6c798693a0a7a7a295887b6f6255483c2f221509000000070f171d222936434f5c697683909ca9aa9d9084776a5d5044372a282826231e1811090000000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000a151f2a343e48515a636b72787e83878b8d8f9090908f8d8b8884807a736c655c534a40362c22170c010000000000030d161f272d32353635313b4855616e7b8895a2978a7d7164574a3e3124170b000000000000000000000000000001070b0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0b07010000000000000915222e3b4753606c7884909b8f84786c61554a3f34291e14090000000000000000000000000c1926323f4b5865717e8a97a3b0aa9e9185786c6053473b2e22160a0000000000000000000000000000000000000007111b242c33383b3c3a36322e2a26221e1a16120c05000000000013202c3946535f6c798693a0acaca093867979797979797979797979797979797979797979797979797979797979797979797979797975695d5144372b1e1104000013202c3946535f6c798693a0acaca093867979797979797979797979797979797979797979797979797979797979797979797979797975695d5144372b1e110400000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000111e2b3744505c677079828b94958a85858585858585858585858d9386796c5f5346392c20130013202c3946535f6c798686868686868686868686868686868686868686796c5f5346392c20130000000007131e2a35404c57626c77828c969fa9a49b938b837d7874716f6f6f7174787d838a929aa3aca49b91877c72675c50453a2e23170b000000000f1c2935424e5a656f737577797b7d7e7f73675b4f44392e26232224282f38414c56616c78838f9aa6a79c9084786c6054483c3024170b000000000007131f2a36414c58636e78838d97a1aaa69d958d86807a777473727375787b81878e969fa8a69d93897e74695e53473c3024180c00000013202c3946535f6c798693a0acaca09386796c5f5346392c252525252525252525252525252525252525252525252525231f1a130c0400000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000005090c0e10121416181a1c1e1d1b18130d06000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000c1925323f4c5865727e8c98a5a89b8f8275685b4f4235281c0f020013202c3946535f6c7986939a9a9a9a95887b6f6255483c2f221509000006101921282e3236434f5c697683909ca9aa9d9084776a5d504437353535332f2a231b120800000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000005101b26313c46505a636c757c848a8f94979a9b9b9b9b9c9a9894908b857e766e655c52483e34291e130800000000000a151f2831383e4243413d3b4855616e7b8895a2978a7d7164574a3e3124170b00000000000000000000000000060d12171a1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a17120d0600000000000b1824313d4a56636f7b8894978b7f73675b5044392d22170c020000000000000000000000000a1724303d4956626f7b8894a1adada194887b6f63574b3e32261b0f030000000000000000000000000000000000020e19232d363e44474846433e3a36322e2a26221d160f060000000013202c3946535f6c798693a0acada0948986868686868686868686868686868686868686868686868686868686868686868686868684776b5e5144382b1e1105000013202c3946535f6c798693a0acada0948986868686868686868686868686868686868686868686868686868686868686868686868684776b5e5144382b1e110500000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000121f2c3945525f6c78828b949d9b949292929292929292929292959386796c5f5346392c201300131f2c3946525f6b767979797979797979797979797979797979797979766b5f5246392c1f13000000010c18242f3b46525d68737e89939ea8a59b92898179726c676462626364676c71788088919ba4ada3998e83786d62564b3f33271c10040000000d1926323e49545d6366686a6c6e7072736d63574b3f332a2b2b2a2a2927303a45505b66727e8a95a1aca094887c7064584c4034271b0f02000000000c18242f3b47525e69747f8a959fa9a89e948b837b746e6a68666566686b70757c848d96a0aba59b90857a6f64584c4135291d1105000013202c3946535f6c798693a0acaca09386796c5f5346392c20181818181818181818181818181818181818181818181816130e09020000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000000000000000000030507090c0e1011110f0c070200000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000c1825323e4b5865717e8b98a5a89b8e8275685b4e4235281b0f020013202c3946535f6c79868d8d8d8d8d8d887b6f6255483c2f22150900020d18222b333a3f41434f5c697683909ca9aa9d9084776a5d5044424242413f3b342d241a0f05000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0000000b16222d38434d58626c757e878e959b9c9793908e8e8e9092969b9c96908980776e645a50453a2f24190d0200000004101b26313a434a4e4f4e49424855616e7b8895a2978a7d7164574a3e3124170b0000000000000000000000000710171e2327292929292929292929292929292929292929292929292927231e171007000000000d1a2733404c5965727e8b9794877b6f63574b423b32281e13080000000000000000000000000815212e3a4753606c7985919eaab0a4988b7f73675b4f43372b201409000000000000000000000000000000000008131f2a353f484f5455534f4b47433e3b37332e2821180f0500000013202c3946535f6c798693a0acb0a59b9492929292929292929292929292929292929292929292929292929292929292929292929184776b5e5144382b1e1105000013202c3946535f6c798693a0acb0a59b9492929292929292929292929292929292929292929292929292929292929292929292929184776b5e5144382b1e110500000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000121f2b3845515e69747d868f98988e8b8b8b8b8b8b8b8b8b8b8b8b8b86796c5f5346392c201300111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e1100000005111d2935404c57636e7985909ba5a89d938980776f67605b58565556585b60666e767f89939da8aaa0958a7e73675b5044382c2014080000000915212d38424b52575a5b5d5f61636567635b51463a353737383737353432333f4a56616d7985919da9a5998d8174685c5043372b1e120600000004101c2834404c58636f7a86919ca6aca1968c82797169635e5b59595a5c5f646b727b848e99a4ada2978c8074695d5145392d211508000013202c3946535f6c798693a0acaca09386796c5f5346392c20130b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a070300000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000b1825323e4b5864717e8b98a4a89b8e8174675b4e4134281b0e020013202c3946535f6c7981818181818181817b6f6255483c2f2215090008141f2a343d454b4e4e4f5c697683909ca9aa9d9084776a5d504e4e4e4e4e4b463f362c21160a000013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000004101c27333e49545f6a747e879099a098918b868382818283868a8f969e9a928a80766c61574c41352a1e13070000000915212d38434c555a5c5a534c4855616e7b8895a2978a7d7164574a3e3124170b000000000000000000000006101922292f333536363636363636363636363636363636363636363635332f29221910060000000f1c2835424e5b6874818d9a9184786b5f56534c443a3025190d01000000000000000000000006121f2b3844505d6975828e9aa7b3a79b8f83776b5f54483c31261b1006000000000000000000000000000000020d1824303b47515a60625f5b57534f4b47433f3a332a21170d02000013202c3946535f6c798693a0acb3ada5a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9184776b5e5144382b1e1105000013202c3946535f6c798693a0acb3ada5a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9184776b5e5144382b1e110500000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000101d2935414d58626b747d868f95887e7e7e7e7e7e7e7e7e7e7e7e7e7e796c5f5346392c2013000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e0000000a16222d3945515d6874808b96a1aca1968c81776e655d554f4b4948494b4f555c646d76818b96a1aca69b8f84786c6054483c3024180b00000005101b26303941474b4d4f51535557595a5751493f4042434444444342403e3b3945515c6875818d99a5a99d9084786c5f53473a2e2115090000000814202d3945515c6874808b97a2ada69a8f857a70675f58524f4d4c4d4f53596069727d88939eaaa89d9185796d6155493d3124180c000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000b1824313e4b5764717e8b97a4a79a8e8174675a4e4134281b0e0100121f2c3845515d69727373737373737373736b5f53473a2e211508000d1925303b464f565a5b5b5c697683909ca9aa9d9084776a5d5b5b5b5b5b5b5750483d32271b0f030013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00000915212c38444f5b66717b869099a2988f87807a7775747576797e848c949e9c92887e73685d52463b2f23180c0000000c1825313d49545f6669655e575055616e7b8895a2978a7d7164574a3e3124170b00000000000000000000030e18222c343a3f42424242424242424242424242424242424242424242423f3a342c22180e030000101d2a3743505d6976838f9b8e82756963625e564c41362a1e11050000000000000000000000030f1c2835414d5a66727e8a97a3afab9f93887c7064594d42372c22180e0500000000000000000000000000010a141f2a35404c58636c6e6b67635f5b57534f4b443c33291e1307000013202c3946535f6c798693a0a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79e9184776b5e5144382b1e1105000013202c3946535f6c798693a0a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a79e9184776b5e5144382b1e110500000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e010000000000000000000d1925303c465059626b747d868f8f877e75717171717171717171717170685c5044382b1f12000a16212c3740484f525353535353535353535353535353535353535353524f4840372c21160a0000020e1a26323e4a56626d7985919ca7a69b8f857a6f655c534b443f3c3c3d3f444a525b656f7a85909ba7aca094897c7164584c4034271b0f020000000a141e272f363b3e40424446484a4c4d4b47484b4d4f50515151504f4d4a4744404c5864717d8995a2aca094887b6f62564a3d3124180b0000000c1824303d4955616d7985919ca8aca095897e73685e554d4642403f4043484e57606b76828d99a5ada2968a7d7165594d4034271b0e020013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000b1724313e4a5764717d8a97a4a79a8d8174675a4d4134271a0e0100101c2935414c57606667676767676767676661594e43372b1f120600101d2935414d586167686868697683909ca9aa9d9084776a68686868686867625a4f43382b1f13060013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a00010d1925313d4955606c77828d98a29a90867c756e6a6867686a6d737a828c96a19a90857a6e63574c4034281c100400000e1a2734404d596571767069615a55616e7b8895a2978a7d7164574a3e3124170b0000000000000000000009141f2a343e454b4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4b453e342a1f14090000121e2b3844515e6b7784919a8d81736f6f6f685e52463a2d2114070000000000000000000000000c1925313d4a56626e7a86929eaab0a4988d81756a5f54493e342a20170f070100000000000000000000040b131c26303b46515d69747b77736f6b67635f5b564e453b2f24180c000013202c3946535f6c7986939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9184776b5e5144382b1e1105000013202c3946535f6c7986939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9184776b5e5144382b1e110500000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e0100000000000000000008141f2a343e475059626b747c868f90877e756d656565656565656565645e564b4034281c100005101a252e373e4346464646464646464646464646464646464646464646433e372e251a1005000005111e2a36424e5a66727e8a96a1aca095897e73685e534a413933302f3033384049535d68737f8b96a2aea5998d8174685c5043372a1e1205000000020c151d252b2f323436383a3c3e42474c5054575a5b5d5d5e5d5d5b595754504c4855616d7a86929faba3978b7e7265594c4033271a0e0100030f1b2834404d5965717d8995a1ada79b8f84786d61574c433b36333334373d454f5a65717c8995a1a2a19a8d8175685c4f43362a1d11040013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000a1724303d4a5763707d8a97a4a79a8d8173675a4d4034271a0d01000d1924303b454e55595a5a5a5a5a5a5a5a5a5650473d32261b0f0300121f2c3845515e6973757575757683909ca9aa9d90847775757575757575746b6054473b2e2115080013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a0004111d2935414d5965717d88949f9f94897e746b635e5b5b5b5e6168707a85909ba1968b8074685c5044382c20140700000e1b2834414e5b6774817a736c655e616e7b8895a2978a7d7164574a3e3124170b000000000000000000000d1925313c4650575b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5750463c3125190d0000121f2c3845525f6b788592998c807c7c7c7a6e6255483b2f2215090000000000000000000000000915212e3a46525e6a76828e9aa5b1a99d92877b70655a50463c32292119120d0805030101010203060a0f151c252e38424c57636e7985837f7b77736f6b6760574c4034281c0f030013202c3946535f6c79868d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d84776b5e5144382b1e1105000013202c3946535f6c79868d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d84776b5e5144382b1e110500000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000030e18222c353e475059626a737c868f90887f766d645b58585858585857534d443a2f23180c000009131c252c32373939393939393939393939393939393939393939393937322c251c13090000000915212d3a46525e6a76838f9aa6a79b9084786d61574c42382f27232223272e37414c57626e7a86929eaaa99d9184786b5f53463a2d21140800000000030b13191f2325272a323940474d53585c60636668696a6b6a69686663605c5853515e6a7783909ca9a69a8d8174685b4f4236291d10040006121e2b3744505c6975818d9aa6afa3978b7f73675c50453b312a2726272b333d4854606c788591969594939184776b5e5245392c1f13060013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000a1724303d4a5763707d8a96a3a69a8d807366594d4033271a0d000008131e29333c444a4d4d4d4d4d4d4d4d4d4d4a453e352b20150a000013202c3946535f6c79828282828284909ca9aa9d918482828282828282827b6f6255483c2f2215090013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3aca3968a7d7063564a3d3023170a000814202d3945515e6a76828e99a59a8f83776c6259524f4e4f51565e68737e8a96a29c9085786c6054483c3023170b00000e1b2834414e5b677481857e766f68616e7b8895a2978a7d7164574a3e3124170b00000000000000000000111d2936424d5862686969696969696969696969696969696969696969696862584d4236291d110000131f2c3946525f6c7986929b90898989887b6f6255483c2f22150900000000000000000000000005111d2a36424e5a65717d8994a0abaea3988d82776c62584e443b332b241e1915110f0e0e0e0e1013161b20272e374049545e69747f8b8f8b87837f7b7772685d5044372b1e11050013202c3946535f6c79818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181776b5e5144382b1e1105000013202c3946535f6c79818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181776b5e5144382b1e110500000000000000000000000b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e010000000000000000000006101a232c353e475058616a737c868f91887f766d64584c4b4b4b4b4b48423b32281d12070000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a010000000c1825313d4a56626e7a87939faba3978b7f73675c50453a30261d1715171c252f3a46525d6a76828e9ba7aca094877b6e6255493c2f23160a000000000001080e1319222b343c444b52585e64686c70737576777777767573706c68635e595b6774818d9aa6a99c9083776a5e5145382b1f1206000815212e3a47535f6c7885919da9ac9f93877b6e62574b3f34291f1a191b212c3844505d6975828a8988878686857a6d6054473a2e2114070013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000a1723303d4a5663707d8996a3a6998c807366594d4033261a0d00000915202b363f474d515151515151515151514e4841372d22170c000013202c3946535f6c79868e8e8e8e8f95a0acaca1968f8e8e8e8e8e8e8e887b6f6255483c2f2215090013202c3946535f6c798693a0a0a09a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a0a0a0968a7d7063564a3d3023170a000a1723303c4955616e7a86929ea2968a7e72665b5047424142454c57626d7985929ea195897d7064584b3f33261a0d01000e1b2834414e5b6774818e88817a736b6e7b8895a2978a7d7164574a3e3124170b00000000000000000000121f2c3845525e6a73757575757575757575757575757575757575757575736a5e5245382c1f12000013202c3946535f6c798693a099969695887b6f6255483c2f221509000000000000000000000000010d1925313d4955616c78838f9aa5b0a99e93897e746960564d453d352f2925211e1c1b1a1a1b1d1f22262b32394049525b65707a85909b97938f8b8783786b5e5145382b1e120500121f2c3845515d697273737373737373737373737373737373737373737373737373737373737373737373737373737373737373737371675c5043372a1d11040000121f2c3845515d697273737373737373737373737373737373737373737373737373737373737373737373737373737373737373737371675c5043372a1d11040000000000000003070a0b0b1724313e4a5764717d8a97a4a89b8e8174675b4e4134281b0e01000000000000000000000007101a232c353e464f58616a737c858e91898074685b4e423e3e3e3e3c37302920160c01000000010910161a1e1f20202020202020202020202020202020202020201f1e1a16100901000000020f1b2834404d5965727e8a97a3aca093877b6f63574b3f34291e140b090b131e2935414d5a66727f8b98a4afa3968a7d7064574b3e3125180b000000000000050f18222b343d464e555d636a6f74797c7f828384848483817f7c78746f6a645d65727e8b98a4ab9f9286796c6053463a2d211407000a1723303d4956626f7b8894a0ada99c9084776b5f52463a2e23170e0c0f1c2834414d5a67737e7d7c7b7b7a7978766c6053473a2d2114070013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a00091623303c4956636f7c8996a3a6998c807366594c403326190d00000e1a26323d4751595d5e5e5e5e5e5e5e5e5e5a53493f34281c10040013202c3946535f6c7986939b9b9b9ba0a8b2b2a8a09c9b9b9b9b9b9b95887b6f6255483c2f2215090013202c3946535f6c798693939393938e8174675a4d4134271a0e01000a1723303d4a5663707d8a93939393938a7d7063564a3d3023170a000d1926323f4b5864717d8a96a29f93877a6e62564a3e3634353a45515d6975828e9ba5998c8074675b4e4235291c1003000e1b2834414e5b6774818e938b847d766f7b8895a2978a7d7164574a3e3124170b0000000000000000000013202c3946535f6c79828282828282828282828282828282828282828282796c5f5346392c2013000013202c3946535f6c798693a0a5a3a295887b6f6255483c2f221509000000000000000000000000000915212d3844505b67727d89949faab0a59a90857b72685f574e47403a35312d2b2928272728292b2e32373d434a525b646d77828c97a2a39f9b958a7e73675b4f43372a1d110400101c2935414c576066676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767655f564b3f33271b0f020000101c2935414c576066676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767655f564b3f33271b0f02000000000002090f131618181825313e4b5864717e8b98a4a89b8e8174675b4e4134281b0e0100000000000000000000000007101a232c343d464f58616a737c858c837970665a4d41343232312f2b261f170e04000000000000050a0e1113131313131313131313131313131313131313131313110e0a05000000000005111e2a3743505c6975818e9aa6a99d9084776b5f53463a2e23170c0200010d1925313e4a5763707d8996a2afa5988c7e7265594c3f3326190d0000000000020c17212a343d464f5860676e757b8085898c8e90919191908e8c8885807b756f6863707c8996a2ada194877b6e6255483c2f221609000c1926323f4b5864717e8a97a3b0a69a8d8174685b4f43362a1e1206000d1926323f4b57636d71706f6f6e6d6c6b6a645a4f43372b1f12060013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000916232f3c4955626f7c8996a2a5998c7f7265594c3f3226190c0000111d2a36424e59636a6b6b6b6b6b6b6b6b6a655b5044382c2013070013202c3946535f6c7986939e9e9e9ea0a7b0b4aaa29e9e9e9e9e9e9e95887b6f6255483c2f2215090013202c3946535f6c79868686868686868174675a4d4134271a0e01000a1723303d4a5663707d868686868686867d7063564a3d3023170a000f1b2835414e5a6773808c99a59d9084776b5e5246392d282935414d5966727f8b98a59c8f83766a5d5144382b1e1205000e1b2834414e5b6774818e97968f8881797b8895a2978a7d7164574a3e3124170b0000000000000000000013202c3946535f6c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c5f5346392c2013000013202c3946535f6c798693a0acafa295887b6f6255483c2f2215090000000000000000000000000004101c28333f4a56616c77828d98a2adaca1978d847a71696059524b46413d3a37353434343536383b3e43484e555c646d768089939ea8b0a59a8f84796d62564b3f33271b0e02000d1924303b454e55595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5f646464646464615b5a5a5a5a5a5a5a5a5a5a5a5a5a5a59544d44392e23170b0000000d1924303b454e55595a5a5a5a5a5a5a5a5a5a5a5a5a5a5d636464646464635d5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59544d44392e23170b0000000000050d141a1f2325252526333f4c5965727e8c98a5a89b8e8174675b4e4134281b0e010000000000000000000000000007101a222b343d464f58616a737c837a71675e54493d31252525231f1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525f6b7884919daaa79a8e8175685c4f43362a1e12060000000916222f3c4855626e7b8894a1aea69a8d8173675a4d4134271a0e000000000009141e28323c464f58616a727980868c9195989b9c9d9e9d9c9b9895918c86817a736b6e7b8894a1ada296897c7063564a3d3024170a000e1b2734414d5a6673808c99a6b1a4988b7e7265594c4033271a0e02000a16232f3b46515b626464636261605f5f5d5952483e33271b0f030013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000916222f3c4955626f7b8895a2a5988c7e7265584c3f3225190c0000131f2c3945525e6b757777777777777777766d6154483b2e2215080013202c3946535f6c79869191919191959ea9ada2989191919191919191887b6f6255483c2f22150900131f2c3946525f6b76797979797979797972665a4d4034271a0e01000a1623303c4956626e7879797979797979786e6256493c3023160a00101d2a3643505c6975828f9ba79b8e8275685c4f43362a1d25313e4a5764707d8a96a39e9285796c5f5346392d201307000e1b2834414e5b67747e858c9399928b847c8895a2978a7d7164574a3e3124170b0000000000000000000013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9386796c5f5346392c2013000013202c3946535f6c798693a0acaca295887b6f6255483c2f22150900000000000000000000000000000b17222e3944505b66717b86919ba5afa99f968c837a726a635d57514d49464442414041414345474b4f545960666e767f88919ba5b0a99e94897e73685c51453a2e22170b000008131e29333c444a4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d545b626a7071717171716c63574d4d4d4d4d4d4d4d4d4d4d4d4d4c49433b32281d120600000008131e29333c444a4d4d4d4d4d4d4d4d4d4d4d4d4d4f5b666f71717171716f676059524d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4c49433b32281d120600000000040e171f262b2f3132323236424e5b6774818d9aa6a79a8e8174675b4e4134281b0e010000000000000000000000000000071019222b343d464f58616a737971685f554c42382d21181816130f0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4855616e7a8793a0aca5988c7f7366594d4034271b0e020000000714212d3a4754606d7a8793a0ada79b8e8174675b4e4135281b0e0000000005101b25303a444e58616a737c838b91979da1a4a7a6a4a2a1a1a1a2a19c97928b857d756d798693a0aca4978b7e7164584b3e3225180c000f1c2935424f5b6875828e9ba7afa296897c7063574a3d3124180b000007121e2a353f4950565757565554535352514e4840362c21160b000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000915222f3c4855626f7b8895a2a5988b7e7165584b3f3225180c000013202c3946535f6c7984848484848484847b6f6255483c2f2215090013202c3946535f6c798484848484848d99a5aa9e918684848484848484847b6f6255483c2f22150900111e2a37434f5a646b6c6c6c6c6c6c6c6c6960564a3e3225190c00000815212e3a46525d676c6c6c6c6c6c6c6c6c675d52463a2e21150800111e2b3844515e6a7784909da6998d8073675a4d4134271b232f3c4955626f7b8895a1a094877a6d6154473b2e211508000d1a26333f4b57636c737a81888f96968e878a96a2978a7d7164574a3e3124170b0000000000000000000013202c3946535f6c798693a0a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a09386796c5f5346392c2013000013202c3946535f6c798693a0a0a0a095887b6f6255483c2f221509000000000000000000000000000006111d28333e49545f6a747f89939da6b0a89e958d847c756e68625d595552504f4e4d4d4e4f5154575b5f656b71788088919aa3adaba1978d82776c61564b4034291d12060000020d17212a32393d40404040404040404040404040404040414850575e666d747c7d7d7d7d7d74675a4d414040404040404040404040403d38312920160b01000000020d17212a32393d40404040404040404040404045515e6b777d7d7d7d7d79726b635c554d4640404040404040404040404040404040403d38312920160b01000000010c16202930373c3e3e3e3e4046525e6a76838f9ca8a69a8d8073675a4d4034271a0e01000000000000000000000000000000071019222b343d464f5861696c675f564d433a31261b100b0a07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4a5763707d8996a2afa4978a7e7164584b3e3225180c000000000713202d3a4653606d798693a0aca89b8e8275685b4e4235281c0f000000000b16212c37424c56606a737c858e959ca3a8a8a39e9a979594949496989b9f9d968f877e757885929eaba5988c7f7266594c3f3326190d00111d2a3743505d6a7683909ca9aea194887b6e6255483c2f2216090000020d18232d373f45494b4a49484847464544423d362e251a1005000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000815222e3b4855616e7b8895a1a4988b7e7165584b3e3225180b000013202c3946535f6c7986919191919191887b6f6255483c2f22150900131f2c3945525e6a7577777777777d8a96a3aa9d90847777777777777777766d6154483b2e221508000e1a26323e48525a5f5f5f5f5f5f5f5f5f5d574e44392d221609000005121e2a35414b555c5f5f5f5f5f5f5f5f5f5c554b41352a1e120500121f2c3845525f6b7885929ea5988c7f7265594c3f332619212e3b4754616d7a8794a0a195887b6e6255483c2f221509000b17232f3b46515a61686f767d848b929993959ca4978a7d7164574a3e3124170b0000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09386796c5f5346392c2013000013202c3946535f6c7986939393939393887b6f6255483c2f2215090000000000000000000000000000000b17222d38434d58636d77818b949ea7afa89f968e878079736e6965625f5d5b5b5a5a5b5c5e6063676b70767c838a929aa3acaca2998f857b70665b50453a2f23180c01000000050f1820272d3133343434343434343434343434363d444c535a616970777f868a8a8a8a8174675a4d41343434343434343434343433312c271f170e040000000000050f1820272d3133343434343434343434343845515e6b78838a8a8a8a847c756e665f585149423b3434343434343434343434343433312c271f170e040000000007121d28323b42484b4b4b4b4c5058636e7a86929faba5988b7e7265594c3f3326190d0000000000000000000000000000000000071019222b343d464f585e5f5c554d433a31281f150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a26333f4c5965727e8b98a4b0a3968a7d7063574a3d3024170a000000000713202d3a4653606d798693a0aca89b8f8275685b4f4235281c0f00000006111c28333e49535e68727c868f97a0a7aba39d97928e8b89888788898c8f93989d9991887e7784919eaaa69a8d8073675a4d4034271a0e00121e2b3844515e6b7784919eaaada093867a6d6054473a2d21140700000007111b242d34393d3e3d3d3c3b3a39383735312b241c130900000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000815212e3b4854616e7b8894a1a4988b7e7164574b3e3124180b000013202c3946535f6c7986939e9e9e9e95887b6f6255483c2f22150900111d2a36424e5963696a6a6a6a6e7a8794a0aa9d9084776a6a6a6a6a6a6a6a645b5044382c201307000a16212c3740484f525353535353535353514c453c32281d11050000020d19242f39434a50535353535353535353504a43392f24190d020013202c3946525f6c7986929fa5988b7e7165584b3f322518202d3a4753606d798693a0a296897c6f6255493c2f2216090007131e2a353f4850575e656c737a81888f969da0a0978a7d7164574a3e3124170b0000000000000000000013202c3946535f6c79869393939393939393939393939393939393939386796c5f5346392c2013000013202c3946535f6c7986868686868686867b6f6255483c2f22150900000000000000000000000000000005101b26313c46515b656f79828c959da6aea8a098918b847e7a75716e6c6a6867676767696a6c6f73777c81878e959ca4acaba29a90877d73695f54493e33281d12070000000000060e161c2125272727272727272727272a313940474f565d656c737a82899197938a81776e64584c4033272727272727272727272624211b150d0500000000000000060e161c2125272727272727272727272a3743505c67717a848d96968e878078716a625b544c453e362f282727272727272727272624211b150d0500000000000c18232f3a444d5357585858595c616a74808b97a3afa296897d7064574a3e3125180b000000000000000000000000000000000000071019222b343d464d5153504b433a31281f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5a6774818d9aa6b0a396897c7063564a3d3023170a000000000814212e3a4754606d7a8793a0ada89b8e8275685b4e4235281b0f0000000b16222d39444f5a65707a848e97a1a9a9a199928c86827e7c7b7a7b7d7f83878c92999a90867c84909daaa79a8e8174675b4e4134281b0e00121f2c3845525f6b7885929eabac9f9286796c5f5346392c2013060000000009121b22292d303131302f2e2d2c2c2b2925201a120a0100000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000814212e3b4754616d7a8794a1a4978a7d7164574a3e3124170b000013202c3946535f6c798693a0ababa295887b6f6255483c2f221509000e1a26313d4751585d5d5d5d5f6b7884919daa9d9084776a5d5d5d5d5d5d5d5952493f34281c10040005101a252e373e4346464646464646464645413b332a21160b0000000008131d2731393f44464646464646464646443f3931271d1308000013202c3946535f6c798693a0a5988b7e7165584b3e322518202d3a4653606d798693a0a296897c6f6356493c3023160900020d18232d363e454c535a61686f767d848b929393938a7d7164574a3e3124170b0000000000000000000013202c3946535f6c79868686868686868686868686868686868686868686796c5f5346392c20130000131f2c3946525f6b767979797979797979786d6155483b2f221508000000000000000000000000000000000a15202a353f49535d677079838b949ca4abaaa39c96908a86817e7b787675747373747577797c7f83888d92989fa6aea9a19990887e756b61574d42382d22170c01000000000000040b1115181a1a1a1a1a1a1a1f262d353c434b525960686f767e858c949b948a81786f655c52473c30241a1a1a1a1a1a1a1a1a1a1815100a03000000000000000000040b1115181a1a1a1a1a1a1a1a1a1b2834404b565f68717b848d9799918a837b746d655e574f48413a322b241c1a1a1a1a1a1a1a1815100a03000000000000101c2834404b565e6465656566686c737c86919ca7ab9f93867a6d6155483c2f23160900000000000000000000000000000000000000071019222b343b41454644403931281f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936424f5c6875828e9ba8b0a3968a7d7063564a3d3024170a000000000a16232f3c4855626e7b8894a1aea79a8d8174675a4e4134281b0e000004101c27333f4a55616c76818c96a0a9aaa0978f87807a75726f6e6d6e7073767b81878e96988d8283909da9a89b8e8275685b4e4235281c0f00131f2c3946525f6c7986929facac9f9285786b5f5245392c1f120600000000000911171d2124242423222121201f1e1c19150f08000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000714212e3a4754616d7a8794a0a4978a7d7063574a3d3124170a000013202c3946535f6c798693a0acafa295887b6f6255483c2f221509000915202b353f474d505151515c6975828e9ba79d9084776a5d5151515151504e4840372d22170b00000009131c252c32373939393939393939393835302921180f0400000000010c151f272e343739393939393939393937342e271f150c01000013202c3946535f6c7986929fa5988b7e7165584b3e322518202d3a4653606d798693a0a296897c6f6255493c2f231609000007111b242c343a41484f565d646b72798086868686867d7164574a3e3124170b00000000000000000000131f2c3946525f6b76797979797979797979797979797979797979797979766b5f5246392c1f130000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c665c5145392d20140700000000000000000000000000000000030e18232d37414b555e677079828a9299a0a7ada7a19b96928d8a8785838281818181828486888b8f93989ea4aaaca59e978f877e756c63594f453b31261b110600000000000000000005090c0d0d0d0d0d17202930383f464e555c646b727981888f979d948b81786f665d534a41362b1f140d0d0d0d0d0d0d0d0d0b08040000000000000000000000000005090c0d0d0d0d0d0d0d0d0d17232e39444d565f69727b858e979c958d867e777069615a534b443d352e261d140d0d0d0d0d0b08040000000000000000121f2b3844505c68707171717274787e858e98a2ada69a8e82766a5e5245392d2014070000000000000000000000000000000000000000071019222a3035383938342f281f160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3743505d6a7683909ca9b0a4978a7d7164584b3e3225190d050202040e1a26323e4b5764707d8996a3afa5998c807366594d4033271a0d00000814202c38444f5b66727d88939ea8aca2988e857d756f69656361616263666b70767c848c95948883909ca9a89c8f8275685b4f4235291c0f0013202c3946535f6c7986929facab9e9285786b5e5145382b1f1205000000000000060c111517181716161514131211100d090400000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000714202d3a4753606d7a8794a0a3968a7d7063574a3d3024170a000013202c3946535f6c798693a0acafa295887b6f6255483c2f22150900040f19232d353c414444444d5966727f8b98a49d9084776a5d504444444444423d362e251b1106000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29241f170f06000000000000030d151c23282b2c2c2c2c2c2c2c2c2c2b28231c150d03000000121f2c3945525f6b7885929fa5988c7e7265584c3f322619212e3a4754606d7a8794a0a295887b6f6255483c2f22160900000009121a222930373e454c535a61686f757979797979796f63574a3d3124170a00000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e1100000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5b544a4034291d1104000000000000000000000000000000000007111b252f39434c555e67707880888f959ca2a7aca7a29e9a969491908e8e8d8d8e8f909295989b9fa4a9aba6a09a948d857d756c635a51473d33291f140a0000000000000000000000000000000009141f29323b424951585f676e757d848b939a9e948b82786f665d544b41382f241a0e03000000000000000000000000000000000000000000000000000000000000000000000007121d28323b444d576069727b858e979f989089827a736c645d564e4740382f251b1005000000000000000000000000000013202c3946535f6c797e7e7e7f8184898f97a0aaa99f94897d72665a4e4236291d11040000000000000000000000000000000000000000000710181f25292c2c2b28231d160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3844515e6b7784919eaab2a5998c8073665a4e41352a1f16110f0f10161f2a36424e5a6773808c98a5b0a3978a7e7164584b3f3225190c00000c1825313d4954606c78838e9aa5afa59a90867c736b645e5956555455575a5f646b727a838d97908d949faba99c8f8275695c4f4236291c0f0013202c3946535f6c7986939facab9e9285786b5e5145382b1e12050000000000000004080b0d0d0c0b0a09080706050401000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000713202d3a4653606d7986939797968a7d7063564a3d3023170a000013202c3946535f6c798693a0a4a4a295887b6f6255483c2f221509000007111b232a303537373e4a5763707c8995a19d9084776a5d50443737373735312c251c13090000000000010910161a1e1f20202020202020201f1d19130d060000000000000000030b12171c1e2020202020202020201e1c17120b0300000000121e2b3845515e6b7784919da6998c807366594d4033271a222f3b4855616e7b8894a1a194877b6e6154483b2e221508000000000910171e252c333a41484f565d646b6c6c6c6c6c6c675e53473b2e221609000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e00000a16212c3740484f52535353535353535352504a42382e23180c0000000000000000000000000000000000000009141d27313a434c555e666e767d848b91969ca1a5a9aaa6a3a09e9c9b9a9a9a9a9b9d9fa1a4a7aba8a49f9a958f89827b736b635a51483f352b21170d03000000000000000000000000000000020e1a25303b444d545b626a717880878e969d9e958c827970665d544b42392f261d1308000000000000000000000000000000000000000000000000000000000000000000000000010c162029323b454e576069737c858e98a19b938c857d766f676059524a41372d21160a000000000000000000000000000013202c3946535f6c79868b8b8c8d90949aa1a9a9a1978d83786c61554a3e3226190d0100000000000000000000000000000000000000000000060d14191d1f201f1c18120b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb4a89b8f82766a5e52463b3128211d1c1b1d2128313c47535e6a76838f9ba8ada194887b6f6256493d3024170a0004101c2935414d5965717d8994a0aba99e93887e746a6159524d4a4847484a4e53596068717b858f9a9a9ea6b1a99c8f8275695c4f4236291c0f00131f2c3946525f6c7986929facab9e9285786b5f5245382c1f12050000000000030a101518191a1918171615141312100d090300000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0aca79a8e8174675a4d4134271a0e01000a1723303d4a5663707d8a96a3b0a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000613202d3946535f6c79868a8a8a8a897c6f6356493c30231609000013202c3946535f6c7986939797979795887b6f6255483c2f2215090000000911191f25282a2f3b4854606d7986929f9d9084776a5d5044372a2a2a2925201a130a0100000000000000050a0e1113131313131313131312100d08020000000000000000000000060b0f12131313131313131313120f0b06000000000000111d2a3743505d6976838f9ca79a8e8174685b4e4235291c24303d4a56636f7c8995a29f9386796d6053473a2d2014070000000000060d131a21282f363d444b52595e5f5f5f5f5f5f5c554c41362b1f1206000000000000000000000a16212c3740484f52535353535353535353535353535353535353535353524f4840372c21160a000005101a252e373e4346464646464646464646433f3830261c120700000000000000000000000000000000000000020c151f28313a434c545c646b727980858b9095999da0a3a5a7a9a9a8a7a7a7a7a8a9a9a7a5a29f9c98948f8a847e777069615951483f362d231910050000000000000000000000000000000005121e2a36424c565e666d747c838a9299a09e958c837970675e544b423930261d140b0100000000000000000000000000000000000000000000000000000000000000000000000000040e172029333c454e57616a737c868f98a19e978f888179726b635c53493e32261a0e020000000000000000000000000013202c3946535f6c79869398989a9ca0a5a8a49e978f857b71665b5044392d21150900000000000000000000000000000000000000000000000002080d10121312100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7986929facb7aa9e92867a6e63574d433a322d2a2828292d323a434d58636f7b87939fabaa9e9185796c6053473a2e211508000713202c3845515d6975818d99a5afa4988d82766c62584f47413d3b3b3c3e42484f565f69737d88949faab0b5a99c8f8275695c4f4236291c0f00121f2c3945525f6b7885929eabac9f9285786c5f5245392c1f130600000000050e151b21242626252423232221201f1d19140e07000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c798693a0a6a69a8e8174675a4d4134271a0e01040a1723303d4a5663707d8a96a3a6a3968a7d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000613202c3946535f6c787d7d7d7d7d7d7b6f6255493c2f231609000013202c3946535f6c79868a8a8a8a8a8a887b6f6255483c2f22150900000000070e14191c1f2c3845515e6a7783909c9d9084776a5d5044372a1e1e1c19150f08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424e5b6774818d9aa69c8f83766a5d5144382c2527333f4c5865717e8b97a49d9184776b5e5245382c1f1206000000000000020910171e252c333a41484e52535353535353504b433a30251a0e020000000000000000000005101a252e373e434646464646464646464646464646464646464646464646433e372e251a100500000009131c252c32373939393939393939393937332d261e140b000000000000000000000000000000000000000000030d161f28313a424a525961676e747a7f84898d909496999b9c9e9e9f9f9f9f9e9d9c9a989693908c88837e78736c665f574f473f362d241b110800000000000000000000000000000000000814212e3a46525e6870777f868d959ca09f958c837a70675e554c423930271e140b02000000000000000000000000000000000000000000000000000000000000000000000000000000050e17212a333c454e58616a737c868f98a0a09a928b847c756e655a4f42362a1d10040000000000000000000000000013202c3946535f6c798693a0a0a0a09f9e9b98938c857c73695f554a3f33281c1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939facb9aea2968b7f74695e554c443e3936353536393d444c555f6a75808c97a3afa69a8e8275695d5044382b1f1206000a16232f3b4854616d7985929eaaab9f93877b70655a50463d36312e2e2f32373d444d57616c77828e9aa5b2b5a89c8f8275695c4f4236291c0f00121e2b3845515e6b7784919eaaac9f9386796c5f5346392d201307000000040e171f272c3133333231302f2e2d2c2b29251f1911080000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c7986939a9a9a9a8e8174675a4d4134271a120c0f151923303d4a5663707d8a969a9a9a968a7d7063564a3d3023170a0000000000000000000000000000000000000000000005090c0d0d0d0f1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a0005121e2b3844505c676f70707070707070695e53473a2e211508000013202c3946535f6c787d7d7d7d7d7d7d7d7b6e6255483c2f221509000000000003080c101d2936424f5b6774818d93939084776a5d5044372a1d11100d090400000000000000000000000000000000000000000004060707050300000000000002050708080603000000000000000000000000000000000000000000000d1a26333f4c5865717e8a97a39e9285796d6054483c33323237434f5b6874818d99a69a8e8275685c4f43362a1d11040000000000000000050c131a21282f363d424546464646464644403931281e130800000000000000000000000009131c252c3237393939393939393939393939393939393939393939393937322c251c130900000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b27221c140c0200000000000000000000000000000000000000000000040d161f28303840484f565d63696e73787c8184878a8c8e9091929292929292908f8e8c898683807c77726d67615b544d453d352d241b12090000000000000000000000000000000000000916222f3c4955626f7a82899193939393938d837a71685e554c433a30271e150c020000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18212a333c464f58616a747d869093939393938e8780776b5e5145382b1e12050000000000000000000000000013202c3946535f6c7986939393939392918f8c87827b736a61584d43382d22170b000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f0f0f0f0f0f0f0f0f0f0d0a0500000000000000000000000001070b0d0f0f0f0f0f0f0f0f0f0e0c090400000000000000000013202c3946535f6c798693a0acb5ada79c90857b70675e564f49454342424345494e565e67717b86919da8aca195897d7165594d4134281c0f03000c1925323e4b5764707c8995a1aea79b8e82766b5f54493e342b25222122262b323b454f5a66717d8995a1aeb5a89b8f8275685b4f4235281c0f00111e2a3744505d6a7683909da9ada093877a6d6054473a2e2114080000010c16202931383d40403f3e3d3c3b3a393835312a231a110700000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c79868d8d8d8d8d8d8174675a4d413427231d171b212528303d4a5663707d8a8d8d8d8d8d8a7d7063564a3d3023170a0000000000000000000000000000000000000000040b1115181a1a1a1a1c2936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a00030f1c28343f4b555d63636363636363635f574d42362a1e12060000121e2b3844505c676f707070707070707070695e52463a2d21140800000000000000010e1a26333f4c5865717e8686868684776a5d5044372a1d110400000000000000000000000000000000000000000001070c10131414120f0a05000002080e11141514130f0b0500000000000000000000000000000000000000000b1724303d4956626e7b87939fa195897c7065594e44403e3f424954606b7784909ca3978b7e7266594d4034271b0e0200000000000000000001080f161d242b32363939393939393938342e271f160c02000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a010000000000010910161a1e1f2020202020202020201e1b17110a02000000000000000000000000000000000000000000000000040d161e262e363d444b51575d63686c7074787b7d808283848586868685858483817f7d7a77736f6b67615c565049423b332b231b1209000000000000000000000000000000000000000916222f3c4955626f7c8686868686868686847a71685f564c433a31281e150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a343d464f58626b747d868686868686868685786b5e5145382b1e12050000000000000000000000000013202c3946535f6c79868686868686868482807b76706961584f463c31271c110600000000000000000000000000000000000000000000000000000000000000000000040b1116191b1c1c1c1c1c1c1c1c1b1916110b04000000000000000000060d12171a1c1c1c1c1c1c1c1c1c1b19151009020000000000000013202c3946535f6c798693a0acada39b98978c82797068605a5552504e4e4f51555a60677079838d98a3aea69b9084786d6155493d3125180c00000e1b2734414d5a66737f8c98a5b0a3978b7e72665a4e42372c22191514161a2129333e4955616d7985929eabb4a89b8e8174685b4e4235281b0f00101c2936424f5c6875828e9ba8aea194887b6e6255483c2f221609000007121d28323b43494c4d4b4b4a4948474645413c352c23180e02000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070013202c3946535f6c79808080808080808074675a4d4135332e2821252c3134363d4a5663707d808080808080807d7063564a3d3023170a00000000000000000000000000000000000000070f161c212526262626262936424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a00000b17232e39434c525657575757575756534d453b31251a0f0400000f1c28343f4b555d636363636363636363635f574d42362a1e120500000000000000000b1724303d4956626e78797979797974695c5043362a1d10040000000000000000000000000000000000000000050c12181c1f21201e1b161008050d14191e2022211f1b161009030000000000000000000000000000000000000815212d3a46525e6b77838f9aa5998d81756a5f56504c4b4c4e535b65707c8894a09e93877b6e62564a3d3125180c000000000000000000000000050c131a20262a2c2c2c2c2c2c2c2b28231d150d040000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020201f1e1a161009010000000000000000050a0e1113131313131313131313120f0b06000000000000000000000000000000000000000000000000000000040c141c242b333a40464c52575c6064686b6e717375767778797979797877767472706d6a67635f5b56514b453e383129211a110900000000000000000000000000000000000000000916222f3c4855616e7879797979797979797971685f564d433a31281f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222b343d475059626b75797979797979797979756a5e5144382b1e120500000000000000000000000000131f2c3946525f6b76797979797979797876736f6b655e574f463d342a1f150a00000000000000000000000000000000000000000000000000000000000000000000050e151c22262828282828282828282826221c160e06000000000000000810181e23262828282828282828282825201b140c0300000000000013202c3946535f6c798693a0aca89c918b91948b8279726b66615e5c5b5b5c5e61656b7279828b959fa9aa9f958a7e73685c5044392d2115080000101c2936424f5c6875828e9ba7ada194887b6f62564a3e32261b1009080a0f17222d3945515d6976828f9ca8b3a79a8d8174675a4d4134271b0e000e1b2834414e5a6773808d99a6afa396897d7063574a3e3124180b00000c18232f3a444d54595958575655545352514d473e342a1f1408000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d20130700121f2b3845515d687173737373737373736e64584c42423f3a332b2f373d4142424854606b7373737373737373736b6054483c2f22160900000000000000000000000000000000000006101921282d3133333333333336424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a0005101b26303941474b4c4c4c4c4c4c4c4c4b49443d352b21160b00000b17232e39434c5256575757575757575756534d453b30251a0e0200000000000000000815212d3a46525d666c6c6c6c6c6c6a62584c4034281b0f02000000000000000000000000000000000000030910161d23292c2e2d2b27211a120f171f252a2d2e2e2b27211b140e07000000000000000000000000000000000005121e2a36424e5a66727e8a95a09e92877c7168615c5958585a5e646d77828d99a4998e82766a5e52463a2e2215090000000000000000000000000001080f151a1d1f2020202020201f1c17120b040000000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313110e0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a21282f353b41464b5054585c5f62646668696b6b6c6c6c6c6b6a69686664615e5b57534f4a453f3a332d261f1710080000000000000000000000000000000000000000000714202d3945515c666c6c6c6c6c6c6c6c6c6c685f564d443b31281f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b343e475059626a6c6c6c6c6c6c6c6c6c6b63594e4235291d100300000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6b6967635f5a544d453d342b22180e03000000000000000000000000000000000000000000000000000000000000000000040e1720272d3235353535353535353535322e2720180e04000000000007111a22292f3335353535353535353534312c251e150c01000000000013202c3946525f6c7986929faca6998c808a95948b847d76726e6b696868696a6d71767c848b949da7aca2988e83786d62574b4034281c10040000111e2b3744515d6a7783909da9ab9f9285796c6053473a2e22150a00000005101c2835414e5b6774818d9aa7b2a6998c807366594d4033271a0d000d1926323f4c5865717e8b97a4b0a4988b7e7265594c4033271a0e02030f1c2834404b565f65666564636261605f5e5850463b3024180c000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d20130700101c2935414c5760656666666666666666645c524f4f4e4b453d333941494d4f4f4f4f596266666666666666666662594f44382c2014070000000000000000000000000000000000030e18222b32393d40404040404040424f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000a16212d38424b5357585858585858585858554f473d32271c10040006121d27313a41474a4a4a4a4a4a4a4a4a4a47423b33291f140900000000000000000005111d2935404b545c5f5f5f5f5f5f5e5950463b3024180c000000000000000000000000000000000000070e141b21282f34383a3a37322c241b17212930363a3b3a38332c261f18120b05000000000000000000000000000000020e1a26323e4a56616d78848e99a3988d837a726c68666565676a6f767f89939e9e93887d71655a4e42362a1e120600000000000000000000000000000004090e1113131313131313120f0c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f161d242a30353a3f44484c4f5255585a5b5d5e5f5f5f5f5f5e5e5c5b595755524f4b47433e39342e28221b140d050000000000000000000000000000000000000000000005111d2935404b545b5f5f5f5f5f5f5f5f5f5f5d564e443b32291f160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222c353e4750595e5f5f5f5f5f5f5f5f5f5e5951473d3125190d01000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5e5d5a57534e48423b332b22191006000000000000000000000000000000000000000000000000000000000000000000000b16202931393e414242424242424242413e39322a20160c01000000030e19232c343a3f424242424242424242413d3730271d13090000000000121f2c3945525f6b7885929faba6998c80838d98968e88827d7a7775757575777a7d82878e959da6aca39a90867c71675c51453a2f23170c000000121f2c3845525e6b7885919eabaa9d9084776a5e5144382b1f1206000000000d1a2733404d596673808c99a6b1a5988b7e7265584c3f3225190c000b1724303d4956626f7b8894a1ada69a8d8174685b4f43362a1e120b0a121e2b3744505c6871737271706f6e6d6c6a62584d4134281c0f030013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000c1824303a454e555959595959595b5c5c5c5c5c5c5c5b564f453b414b53595c5c5c5c5c5c5c5c595959595959595650473d33271c1004000000000000000000000000000000000009141f2a343d444a4c4d4d4d4d4d4d4d4f5c6975828f9ca9b0a3968a7d7063564a3d3023170a000d1a26323e49545d6465656565656565656561594f44382c201407000b17222d38424a5155555555555555555555524c433a2f24190d010000000000000000010d19242f39424a50535353535353524e473e352a1f140800000000000000000000000000000000030b12181f262c333940454746433e362d241f29333b41464847443e37312a231d160f080000000000000000000000000000000a16222d3945505c67727d87929b9f958c847d787472717273767a8188919b9f968c81766b6055493d32261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090c0d0d0d0d0d0d0d0d0d0c090500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12191e242a2f34383c404346494b4d4f505152525352525251504e4d4b4845423f3b37322e28231d17100a030000000000000000000000000000000000000000000000010d18242e39424a5053535353535353535353514c443c322920170d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a232c353e474e52535353535353535353524e483f362b20150900000000000000000000000000000a16212c3740484f525353535353535352504e4b47423d373029211910070000000000000000000000000000000000000000000000000000000000000000000006111c27323b434a4e4f4f4f4f4f4f4f4f4e4a443c32281d12060000000915202b353e464b4e4f4f4f4f4f4f4f4f4d4942392f251a0f0300000000121f2b3845515e6b7885919eaba69a8d807c868f9999938e8a8684828282828486898e9399a0a7aaa29a91887e746a60554a3f34291e1207000000131f2c3946525f6c7986929faca99c8f8276695c504336291d1003000000000d1a2633404d596673808c99a6b0a3968a7d7064574a3e3124180b000815212e3a4753606c7885919eaaa99c9084776b5f53463a2f231a171718222e3a46535f6c78807e7d7c7b7b797974695d5043372a1d11040013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070008131e29333c43494c4d4d4e586268696969696969696761574c4047525d656969696969696969645c514d4d4d4d4a453e352c21160b0000000000000000000000000000000000010e1a25313b464e555959595959595959595c6975828f9ca9b0a3968a7d7063564a3d3023170a00101c2935424e5a666f7272727272727272726b6054483c2f231609000f1b27333f4a545c616262626262626262625d564c41352a1d110500000000000000000007121d2730383f4446464646464645423c352c23180e02000000000000000000000000000000030c151d232a31373e444b5154534f4840362b26313b454c5255544f49423b352e28211a1209000000000000000000000000000005111d28343f4a56606b758089929a9e968f8984817f7e7e8082868c929a9e968d847a70655a4f44382d211509000000000000000000000000000000000206090c0f1112121212110f0d0a0602000000000000000000000000000000000000040b1115181a1a1a1a1a1a1a1a1a1815110b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d13191e23282c3033373a3c3e40424344454646464645444342403e3c3936332f2b27221d18120c06000000000000000000000000000000000000000000000000000007121d2730383f444646464646464646464644403a322a20170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232c353c424546464646464646464645423d362d24190f04000000000000000000000000000005101a252e373e4346464646464646464544413f3b37322c261f170f0700000000000000000000000000000000000000000000000000000000000000000000000a16222e39434d555a5b5b5b5b5b5b5b5b5a554e443a2e23170b0000020e1a26313c4750575b5b5b5b5b5b5b5b5b59534b41362b1f140700000000111e2b3744515d6a7784909daaa79a8d81747d878f979e9a9693918f8e8e8f9092969a9ea4aaa69f9890887f766c62584e43392e23180c0100000013202c3946535f6c798693a0aca89c8f8275685b4f4235291c0f02000000000e1a2734404d5a6773808d9aa6aea195887b6f6256493c3023160a0006121f2b3844505d6975828e9aa6aca093877b6f63574b40352b2624242529333e4a56626f7b878b8a8988878683766a5d5044372a1e11040013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d20130700020d17212a32383d404045525e6a747575757575757573695d50444b57636f75757575757575756e62564a4040403e3a342c231a0f05000000000000000000000000000000000005111e2a36424d5860666666666666666666666975828f9ca9b0a3968a7d7063564a3d3023170a00111d2a3744505d6a767e7e7e7e7e7e7e7e7d7063574a3d3024170a00121e2b3743505b666d6f6f6f6f6f6f6f6f6e685d5246392d211407000000000000000000010b151e272e33373939393939393936312b231a1107000000000000000000000000000000000b151e272e353c42494f565c605f5a52483d322c38434d575e61605a544d464039332c241b110600000000000000000000000000000c17232e39444f59646d77808990979d9a94908d8c8b8b8c8f92979d9a948c847b72685e53483d32271c1004000000000000000000000000000003090e1216191b1d1e1f1f1f1d1c1916130e0904000000000000000000000000000000060e161c212527272727272727272725211c160f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d12171c2024272a2d30323435373838393939393837363533312f2d2a26231f1b16110c0601000000000000000000000000000000000000000000000000000000000b151e262e33373939393939393939393938352f2920170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b3136393939393939393939393936322b241b12080000000000000000000000000000000009131c252c32373939393939393939383735322f2b26211b140d050000000000000000000000000000000000000000000000000000000000000000000000000d1a26323e4a555f6668686868686868686760564b3f33271b0e020005111e2a36424e5862676868686868686868655d53483c3023170b00000000101d2a3643505d6976838f9ca9a89b8e8174747d858d949a9f9f9d9c9b9b9c9d9fa2a6a8a49f9a948d867e766d645a51463c32271c11060000000013202c3946535f6c798693a0aca89c8f8275685b4f4235291c0f02000000020f1b2835414e5b6774818e9aa7ac9f93867a6d6054473b2e21150800030f1c2834414d5965727e8a96a2ada3978b7f73685c51473d3632313031343b45505b66727e8b97979695948c8073675a4e4235291c10030013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000050f1820272d31333a4653606d7982828282828282786b5e51454c5965727f8282828282827e7164574b3e3333322e29221a11080000000000000000000000000000000000000713202d3946525e69727373737373737373737375828f9ca9b0a3968a7d7063564a3d3023170a00111d2a3744505d6a77848c8c8c8c8c8c8a7d7063574a3d3024170a0013202c3946525f6c787b7b7b7b7b7b7b7b7a6e6255483b2f22150800000000000000000000030c151c23282b2c2c2c2c2c2c2c2a26201911080000000000000000000000000000000007121d27303940464d545a61676d6b64594e4338333e49545f696e6c655e58514b443d362d23180d020000000000000000000000000006121d28333d48525c656e767e868c91969a9c9a989898999b9b98948f89827a726960564c42372c21160b0000000000000000000000000002090f141a1e2225282a2b2c2c2b2a2826221f1a15100a03000000000000000000000000050f1820272d31333434343434343433312d2820180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070b1014171b1e21232527292a2b2c2c2c2c2c2c2b2a28272523201d1a17130f0a0500000000000000000000000000000000000000000000000000000000000000030c141c22272b2c2c2c2c2c2c2c2c2c2c2b29241e170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111920262a2c2c2c2c2c2c2c2c2c2c2c2a26211a12090000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2a2826231f1a150f0902000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424e5b6771757575757575757572675b4f4336291d1003000713202d3946525e6a7375757575757575756f64584c3f3226190c000000000f1c2935424f5b6875828e9ba8a89c8f82756b737b82898e93989b9ea0a1a2a2a1a09e9b98948f89837c746c645b52483f352a20150b000000000013202c3946525f6c7986929faca99c8f8275695c4f4336291d100300000005111e2a3743505c6976828f9ca8aa9d9184786b5e5245392c1f130600000c1825313d4955616d7985919da8a79c9084796d63584f48423f3d3d3e40454d57616c77838f9ba4a3a094887c7064574b3f3226190d010013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000060e151c21242d3a4653606d79868f8f8f8f8f85786b5e51454c5965727f8c8f8f8f8f8b7e7164574b3e312625221d171008000000000000000000000000000000000000000714212e3a4754616d7a8080808080808080808080838f9ca9b0a3968a7d7063564a3d3023170a00111d2a3744505d6a77849098989898978a7d7063574a3d3024170a0013202c3946535f6c7986888888888888887b6f6255483c2f2215090000000000000000000000030a11171b1e2020202020201f1d1a150e0700000000000000000000000000000000000c18232e39424b51585e656c7279756b60554a3f39444f5a65707a767069635c564f483f342a1e130700000000000000000000000000000b16212b36404a535c656d747b81868a8d909192939392908e8b88837d77706860574e443a30251b1005000000000000000000000000060d141a20252a2e323437383838383735322f2b26211b150e0700000000000000000000020d17212a32393d4040404040404040403e39322a21180f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070b0e111417191b1c1d1e1f1f201f1f1f1e1d1c1a181614110e0a070300000000000000000000000000000000000000000000000000000000000000000000020a11171b1e202020202020202020201f1c18130c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151a1d1f2020202020202020201f1e1a150f0800000000000000000000000000000000000000010910161a1e1f202020202020201f1e1c1916130e0a04000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768282828282828282776a5d5044372a1d1104000714202d3a4753606d7a82828282828282807366594d4033261a0d000000000e1b2734414d5a6773808d99a6a99d9083776a6970777d83888c8f91939595959493918f8c88837e78716a625a524940362d23190e040000000000121f2c3845525f6b7885919eabaa9d9084776a5d5144372b1e12050000000814212d3946525f6b7884919daaa79b8e8275695c5043372a1d110400000915212d3945515d6975808c97a3aca1958a7f746a6159534e4c4a4a4b4d51575f69737d89949faba79b9084786c6054483b2f23160a000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d20130700000000040b1015202d3a4653606d7986939c9c9c9285786b5e51454c5965727f8c999c9c988b7e7164574b3e31241816120c0600000000000000000000000000000000000000000714212e3a4754616d7a878d8d8d8d8d8d8d8d8d8d8d949fabb0a3968a7d7063564a3d3023170a00111d2a3744505d6a7784909da5a5a4978a7d7063574a3d3024170a0013202c3946535f6c7986939595959595887b6f6255483c2f22150900000000000000000000000000060b0f1213131313131313110e0903000000000000000000000000000000000004111d2935404b545c636970777d847c71665b5146404b56616c7782827b746e67605a50463b2f23170b0000000000000000000000000000050f1a242e38414a535b62696f757a7d8183858686868584827f7b77726c665e564e453c32281e14090000000000000000000000000810171f252b31363a3e41434545454543413e3b37322c261f18110901000000000000000008131e29333c444a4d4d4d4d4d4d4d4d4d4a443c332a21170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080a0c0e0f111212131313131211100f0d0c0a070401000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121313131313131313131312100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e111313131313131313131313110e0a0400000000000000000000000000000000000000000000050a0e11131313131313131312110f0d0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976838f8f8f8f8f8f84776a5d5044372a1d1104000714202d3a4753606d7a878f8f8f8f8f8d807366594d4033261a0d000000000d1926333f4c5865727e8b98a4ab9e9185786b5f666c72777b8082858788888888868582807b77726c665f58504840372e241b1107000000000000111e2b3744515d6a7784909da9ab9e9285786c5f53463a2e2115090000030e1925313d4955616e7a8793a0aca4988b7f73665a4d4134281b0f02000005111d2935404c58646f7b86919ca7a69b91867c736b645f5b58575757595d6269717a858f9aa5aca1968a7f73675c5044382b1f1307000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000713202d3a4653606d798693a0a99e9285786b5e51454c5965727f8c99a6a4988b7e7164574b3e3124180b06010000000000000000000000000000000000000000000714212e3a4754616d7a87949a9a9a9a9a9a9a9a9a9a9ea6b0b0a3968a7d7063564a3d3023170a00111d2a3744505d6a7784909daab0a4978a7d7063574a3d3024170a0013202c3946535f6c798693a0a2a2a295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945515c666e747b82888e83786d62574c46515c67727d888c868079726b62574b3f33261a0d01000000000000000000000000000008121c262f38414950585e64696d71747678797979787775736f6b66615b544c443c332a20160c02000000000000000000000009121a222930373c42464a4d5051525251504e4b47423d37312a231b130a01000000000000000d1924303b454e55595a5a5a5a5a5a5a59554e453c332920170d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c697683909c9c9c9c9084776a5d5044372a1d1104000714202d3a4753606d7a87949c9c9c9a8d807366594d4033261a0d000000000b1824313d4a5763707d8996a2aca093867a6d615b61666b6f7376787a7b7b7b7b7a7876736f6b66615b554e463e362e251c120900000000000000101d2936434f5c6875828e9ba7ada094877b6f62564a3d32261b1009080b151f2a36414d5965717d8a96a3ada195887c7063574a3e3225190c000000000c1824303c47535e6975808b95a0aaa2988f857d766f6b676563636466696d737b838d96a1aba59a8f85796e62574b3f33271b0f03000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000713202d3a4653606d798693a0ab9e9285786b5e51454c5965727f8c99a6a4988b7e7164574b3e3124180b00000000000000000000000000000000000000000000000714212e3a4754616d7a8794a1a6a6a6a6a6a6a6a6a6a9acacaca3968a7d7063564a3d3023170a00111d2a3744505d6a7784909daaaca4978a7d7063574a3d3024170a0013202c3946535f6c798693a0acafa295887b6f6255483c2f2215090000000000000000000003060809090909090908060200030608090909090909080602000000000000000000000815222e3b4854616d7880868c93948a7e74695e534d58636e79848f97918a847d74675b4e4135281b0e020000000000000000000000000000000a141d262f373f464d53585d6165686a6b6c6c6c6c6a6966635f5b565049423b322a21180e04000000000000000000000009121b242c343b42484d52565a5c5e5f5f5e5d5a57534e49423c352d251c130a01000000000000101c2935414c576066676767676767676660574e453b32291f160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040507070808080706050301000000000000000000000000000000000000000000000103050607070808080706050402000000000000000000000000000000000000000000000000000000000000000000000000000000000204060708080807070504020000000000000000000000000000000002020202020100000000000000000000000000000000000000000000000000000000000000000000000203050607080808070605030100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002040506070808080707060403010000000000000000000000000000000000000000000000101c2936434f5c697683909ca8a89d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0a8a69a8d807366594d4033261a0d000000000916222f3c4855616e7a8794a0ada295897c6f6356555a5f6367696c6d6e6f6f6e6d6b6967635f5b56504a433c342d241c130b05000000000000000e1b2734414d5a6673808c98a5b0a3978a7e72665a4e42372c221a1615171d27313c47525e6975818d9aa6a99d9185796c6054473b2f2216090000000008131f2b36424d58636e79848e98a2aaa1978f87817b7773717070717275797e858d959fa8a69d93897e73685d51463a2f23170b00000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000713202d3a4653606d798693a0a09e9285786b5e51454c5965727f8c99a0a0988b7e7164574b3e3124180b00000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0968a7d7063564a3d3023170a00111d2a3744505d6a7784909da0a0a0978a7d7063574a3d3024170a0013202c3946535f6c798693a0acafa295887b6f6255483c2f2215090000000000000000050b0f131515151515151514120e0b0f131515151515151514120e090300000000000000000815212e3b4754616d78828c969e9b90857a6f645a535e69747f8a95a09b91877c72665a4e4134281b0e02000000000000000000000000000000020b141d252d343b42474d5155585b5d5f5f5f5f5f5e5c5a57534f4a443e38302921180f06000000000000000000000008121b242d363e454c53595e6366696b6b6b6b6967635f5a544d463f372e251c1309000000000000121f2c3845515d697273737373737373726a60574d443b31281f150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090c0e10121314151514141311100d0b08050100000000000000000000000000000105080b0d0f11131414151514141312100f0c0a0704000000000000000000000000000000000000000000000000000000000000000002060a0d0f111314141515141312100e0c090602000000000000000105090b0d0e0f0f0f0e0d0c0a08060300000000000000000000000000000000000000000000000000000205090c0e10121314141514141312100e0b0805010000000000000000000000000000000000000000000000000000000000000000000000000003070a0c0e10121314141515141312110f0d0b08050200000000000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000714202d3946525f6b7885919eaaa4978b7e7265594c4f53575a5d5f6161626261605f5d5a57534f4a453f38312a23211f1b17110a0200000000000c1925323e4b5764707d8995a2aea69a8e82766a5f54493e342c25222223282f39434d58636e7a86929eaaa5998d8175695d5044382b1f130600000000030e1a25303c47525d67727c869099a1a9a199928c8783807e7d7d7d7f82858a90979fa8a69e958b81776c61574b4035291e120600000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000713202d3a4653606d7986939393939285786b5e51454c5965727f8c939393938b7e7164574b3e3124180b00000000000000000000000000000000000000000000000714212e3a4754616d7a8793939393939393939393939393939393938a7d7063564a3d3023170a00111d2a3744505d6a77849093939393938a7d7063574a3d3024170a0013202c3946535f6c798693a0acaca295887b6f6255483c2f221509000000000000000810161b1f22222222222222211e1a161b1f22222222222222211e1a150e06000000000000000713202c3845505c66707a848e99a2978c81766b6059646f7a86919c9e94897f756a60564a3e3226190d0000000000000000000000000000000000020b131b232a30363c4145494c4f505253535352514f4d4a47433e39332d261f170f06000000000000000000000006101a242d363f4850575e646a6f73757778787776736f6b655f58514940372e251b1107000000000013202c3946535f6c79818181818181817c72695f564d433a31271e150b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090d1115181b1d1f2021212121201f1e1c1a1714110d09040000000000000000000004090d1114171a1c1e1f202121212121201f1d1b191613100c0803000000000000000000000000000000000000000000000000000000040a0e1216191c1e1f2021212121201f1d1b1815120e090500000003090d1215181a1b1c1c1c1b1a191715120f0b0600000000000000000000000000000000000000000000050a0e1215181b1d1e202121212121201e1d1a1814110d0804000000000000000000000000000000000000000000000000000000000000000002070b0f1316191b1d1f202121212121201f1e1c1a1815120e0a060100000000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000005111e2a3743505c6975828e9ba7a69a8d8175685c5043474b4e505254555555555452504e4b47433e3b39373432302e2b27221b140b02000000000a16232f3c4854616d7986929eaaaa9f93877b70655a50463e36322f2e303339414a545f6974808b97a2aca195897d7165594d4034281c1003000000000009141f2a35404b56606a747d878f989fa6a49d98938f8d8b8a8a8a8c8e91969ba1a9a39c948c83796f655b50453a2f24180d0100000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000713202d3a4653606d7986868686868685786b5e51454c5965727f8686868686867e7164574b3e3124180b00000000000000000000000000000000000000000000000714212e3a4754616d7a868686868686868686868686868686868686867d7063564a3d3023170a00111d2a3744505d6a7784868686868686867d7063574a3d3024170a0013202c3946535f6c798693a0a0a0a095887b6f6255483c2f22150900000000000009121a21272c2e2f2f2f2f2f2f2e2b2621272c2e2f2f2f2f2f2f2e2b262018100600000000000004101c28343f4a545e68727c87919b9d93887d7267606b76818c97a0968c82776d63594e44392e22160a000000000000000000000000000000000000010911181f252b3035393d40424445464646454443413e3b37332e28221b140d050000000000000000000000020d18222c363f485159616970757b7f8284858584827f7b76706a625b524940372d23190f040000000013202c3946535f6c79868d8d8d8d8d8d847b71685f554c433930271d140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f14191d2125272a2c2d2e2e2e2e2d2c2b292624211d1915100b05000000000000050b1015191d212426292a2c2d2e2e2e2e2d2c2b2a282523201c18140f0a040000000000000000000000000000000000000000000000040a10151a1e2225282a2c2d2e2e2e2e2d2b2a2725221e1a15100b05080e14191e2124262828282828272524211f1c17110a03000000000000000000000000000000000000060b11161a1e212527292b2c2d2e2e2e2d2c2b292724211d19140f0a040000000000000000000000000000000000000000000000000000000003090e13171b1f2225282a2b2d2d2e2e2e2e2d2c2a292724211e1a16110d07010000000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000020f1b2834414d5a66737f8b98a4a99d9184786c5f53473b3e41444647484848484746444143484b4a484643413f3d3a38332d251d1309000000000713202c3845515d6975818d99a5afa3988d81766c62584f48423e3c3b3c3f444b535d66707b86919ca8a79c9084786c6155493c3024180c000000000000030e19242f39444e58626b757d868d959ba1a6a39f9c9998979697989a9da1a6a49f99928a827970675d53493e34291e12070000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000613202d3946535f6b7679797979797979756a5e51444b58657179797979797979797063574a3e3124170b00000000000000000000000000000000000000000000000714212d3a4753606c7779797979797979797979797979797979797979786e6256493c3023160a00101d2a3643505c69747979797979797979786f63564a3d3023170a0013202c3946535f6c7986939393939393887b6f6255483c2f221509000000000007111b242c33383b3c3c3c3c3c3c3a37312c33383b3c3c3c3c3c3c3a37312a22180f040000000000000c17232e38424c56606b757f89939d998e83786e66717c87929d998f847a70655b51473d32281d11050000000000000000000000000000000000000000060d141a1f24292d303335373839393939383634322f2b27221d17100a0200000000000000000000000009141f29343e48515a636b737a81878b8e919292918f8b87827b746d645b52493f352b20160b00000000121f2c3845515e69747d8790999a9a968d847a71675e554b42392f261d130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a20252a2e31343638393a3b3b3a3a39373533302d2925201b16100a030000030a10161c2125292d30333537393a3a3b3b3b3a39383634322f2c2824201b15100a030000000000000000000000000000000000000000070e151b21262a2e323537393a3a3b3b3a39383634312e2a26211c1610131a20252a2e313335353535353432302e2b28231c140c03000000000000000000000000000000040b11171c21262a2e31343638393a3b3b3b3a39383633302d2925201b150f090200000000000000000000000000000000000000000000000001080e141a1f23282b2f32343638393a3b3b3b3a3a39373533312e2a26221d18130d0600000000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000c1925323e4a57636f7c8894a0aca094887b6f63574b40343537393b3b3c3c3b3a393b454e5457575452504e4b4947443e372f251b100500000004101c2935414d5965717d88949faba99e93887e746a615a534e4a4848494b50565d656e78828d97a2aca1968b7f73685c5044382c2014080000000000000008121d28323c465059626b747b838a90959a9ea1a3a5a4a4a3a4a5a5a3a09d98938e87807870675e554b41372d22170c010000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d20130700000000000005121e2b37434f5a646b6c6c6c6c6c6c6c6b63594e4248545f686c6c6c6c6c6c6c6c675e53473b2f221609000000000000000000000000000000000000000000000006121f2b3844505b656b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c675d52463a2e211508000f1b2834404c58626a6c6c6c6c6c6c6c6c6c675d52473a2e2215090013202c3946535f6c7986868686868686867b6f6255483c2f22150900000000030e19232d363e444748484848484847423c363e444748484848484847423c342a20160b00000000000006111c26303a444f59636d77818b96a0958a7f746d78838e999c91877d72685e54493f352b20160b0000000000000000000000000000000000000000000002090e14191d212427292a2c2c2c2c2c2b2a2825221f1b16110b0500000000000000000000000000040f1a26303b46505a636c757d858c92979b9a99999a9b98938d867e766d645b51473c32271c1105000000101d2935414d58626b747e87919aa39f968c837970675d544b41382f251c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181f252b31363a3d4043454647484847474544423f3c3935312c27211b150e07070e151b21272c3135393c3f424445464748484747464543413e3c3834302c26211b150e070000000000000000000000000000000000010a121920262c32363b3e4143454747484847464543403d3a36322d27211b1d242b31363a3d404142424241403f3d3a38342e261e150b0000000000000000000000000000080f161c22282d32363a3d404244464747484747464442403d3935312c26201a130c0500000000000000000000000000000000000000000000050c13191f252a2f34383b3e41434546474748484746454442403d3a36322e29241e18110a030000000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000916222e3b4753606c7884909ca9a4988c8074685c5045392e2b2c2e2f2f2f2e2e36424d575f6463615f5c5a585653504941372d22160b000000000c1925313d4954606c77838e99a4aea49a90867c736b645e5a57555555585b61676f77818a949ea9a69b9085796e62574b3f34281c100400000000000000010b16202a343e475059626a71787e84898e919497989aa0a9a19b989694908c88827c756e665e554c43392f251b1006000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000020f1b27333e49525a5f5f5f5f5f5f5f5f5e5951473d434d565d5f5f5f5f5f5f5f5f5c554c42372b1f13070000000000000000000000000000000000000000000000030f1c28333f49535b5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c554b41352a1e1205000c1824303b4650595e5f5f5f5f5f5f5f5f5f5c554c41362a1e120600131f2c3946525f6b767979797979797979786d6155483b2f221508000000000915202a353f484f54555555555555534d463f484f54555555555555534d463c32271c100400000000040b11161e28333d47515b656f7a848e989c91867b737e89949e948a80756b61564c42382d231915100a030000000000000000000000000000000000000000000003080d1114171a1c1e1f2020201f1e1d1b1916130f0a050000000000000000000000000000000915202c37424d57626c757e878f979a95908d8c8c8d90949a98908880766d63594e43382d22160b0000000d1925303c465059626c757e88929ba49e958c82796f665d534a41372e241b12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121b222a30373c41464a4d4f5153545454545352514e4c4945413d38322d26201911111920262d33383d4145494c4e50525354545454535351504d4b4844403c37322c261f181109010000000000000000000000000000020b131c232b32383d42474a4e5052535454545453514f4d4a46423d38332c26272f363c42464a4c4e4f4f4f4e4d4b4947443f3830271d12070000000000000000000000020a121920272e33393e42464a4d4f5153535454545352514f4c4945413d37322c251e170f070000000000000000000000000000000000000000070f171e242b30363b4044474b4d4f515353545454545352504e4c4946423e3a352f29231c150d0500000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000006121f2b3743505c6874808c98a4a89c9084786d61564b40352b2121222222232f3b47535e6970706d6b69676462605b53493e33271b0f030000000814202c38444f5b66717d88929da7aca2988e867d766f6a666362616264676c7279818a939ca6a99e94897e73685d51463a2f23170b000000000000000000040e18222c353e4750585f666d73787d8285888a8c8e97a3988f8c8a8784817c77716b645c544c433a31271d130900000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000a16212c3740494f5253535353535353524e483f363b444c515353535353535353504b433a30251a0e030000000000000000000000000000000000000000000000000b17222d3741494f525353535353535353535353535353535353535353504a43392f24190d020008141f2a353e474e52535353535353535353504b433a2f25190e0200111e2a37434f5a646b6c6c6c6c6c6c6c6c6c665c5145392d201407000000040f1b26313c47515a606262626262625f584e47515a606262626262625f584e44382d201408000000060e161d2225292c353f49535e68727c86909a978c8279858f9b978c82786e63594f443a302b2825211b140d0400000000000000000000000000000000000000000000000105080b0e1011121313131212100e0c09060300000000000000000000000000000000020e1a26313d48535e69747e879199978f8984817f7f8184898f969a92897f756a60554a3e33271c1004000008141f2a343e47505a636d768089929ca59e948b81786f655c524940362d241a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242d343b42484d5256595c5e6061616161605f5d5b5855524d49443e38312a231b1b232a31383e44494d5255585b5d5f6061616161605f5e5c5a5754514d48433d37312a231b130b02000000000000000000000000010b141d252e353c43494e53575a5d5f60616161605f5e5c5956524e49443e3730313941474d5256595b5b5b5b5b5a585653504a42392e23180c01000000000000000000030b141c242b32393f444a4e5256595c5e5f60616161605f5e5b5955514d48433d3730292119110800000000000000000000000000000000000009111921282f363c42474c5054575a5c5e5f6061616161605f5d5b5956524f4a45403a342e261f170f07000000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000030f1b2734404c5864707c88949faba195897e72675c51473d332b252222242a35404b57636f7b7c7a787573716f6c655b4f43372b1e120500000004101c27333e4a55606b76818b959fa8aaa0978f88817b7672706f6e6f7073787d848b939ca5aaa1978d82786d62574c4035291e12070000000000000000000007101a232c353e464e555c62686d7175787b7d7f8794a095887f7d7b7874706b666059524a423a31281f150b0100000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d2013070000000000000005101b252e373e43464646464646464645423d362d323a4044464646464646464644403931281e14090000000000000000000000000000000000000000000000000006111b262f373e43464646464646464646464646464646464646464646443f3931271d13080000020e18232c353c4245464646464646464646443f3931281e130800000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5b544a4034291d11040000000915202c37424d58636c6f6f6f6f6f6f6a60554d58636c6f6f6f6f6f6f6a6055493d3024170b0000050f1820282e3235383b3f424c56606a747e89939d9388808b96998f857a70665c5147413e3b3734312c261f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37424e5965707b859099968d857e7874727274787d848c959b91877c71665b4f44382c2014080000030e18222c353e48515b646d77808a939ca69d948a81776e645b52483f362c231a1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c252e363e464d53595e6266686b6c6d6e6e6d6d6b6a6765615e59544f49433c352d25252d353c43494f54595e6165676a6b6d6d6e6e6d6d6c6b696664605d59544e49423c352d251d140b02000000000000000000000009131d262f373f474e545a5f6366696b6d6d6e6e6d6c6a6866625e5a554f49423b3a434b52595e62656768686867666562605c544b4035291d11040000000000000000030c151d262e363d444a50555a5e6265686a6c6d6d6e6d6d6c6a6865625d59544e48413a332b231a11080000000000000000000000000000000009121b232b333a41474d53585c606366696b6c6d6d6e6e6d6c6b6a6865625f5b56514c463f383129211910070000000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000b17232f3c48545f6b77838f9aa6a69a8f84786e63594f453d36312f2f30353c46515c68738089878482807d7b776c5f5346392d201306000000000b16222d38444f5a646f79838d969fa7a9a199928c87827f7d7b7b7b7d8084898e959da5aaa1988f857b70665b50453a2f24180d01000000000000000000000008111a232c343c434a51575c6165696c6f717a8794a095887b716e6b68645f5a544e47403930281f160d030000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acada09386796d6053463a2d201307000000000000000009131c252c323739393939393939393936322b24282f3438393939393939393938342f281f160c0200000000000000000000000000000000000000000000000000000a141d252d333739393939393939393939393939393939393939393937342e271f150c0100000007111a232b31363939393939393939393938342e271f160c0100000a16212c3740484f52535353535353535352504a42382e23180c000000020e1a26313d48545f6a757b7b7b7b7b7b716558545f6a757b7b7b7b7b7b7165584b3f3225180c00020d17212a32393e4145484b4e515558626d77818b959a8f8b929c92877d73695e5754504d4a4744413d3830281f150a0000000000000001050809090909090909090909080602000000000000000000000000000000000000000000000000000000000000000000000a16232f3b47535f6a76818c97978d847b736d686666686c727a838c96998e83776c6054483c3024180b00000006101a232c363f49525b656e77818a949da69c938980766d645a51483e352c2219100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a242e37404850585e646a6e727577797a7b7b7a79787674716e6a65605a544e473f372f2f373f474e545b60656a6e71747678797a7b7b7a7a79777573706d69645f5a544d463f372f261d140b0100000000000000000007111b252f38414951595f656b6f737678797a7b7b7a797775726e6a66605a544d45424c555d646a6e72747575757473716f6c665c5145392d20140700000000000000020b151e272f3840474e555b61666b6e727577797a7a7b7a7a797774716e69655f59534c453d352c231a1108000000000000000000000000000009121b242d353d444c52585e63686c70737577797a7a7b7b7a79787674726e6b67625d57514a433b332b22190f0600000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000007131f2b37434f5b66727e8995a0aba0958a7f756a61574f47413d3b3b3d40464e58626d79849093918f8c8a84786c5f5346392d2013060000000005111c27323d48525d67717a848d959da4aba49d97928e8b898888888a8c90949aa0a7a7a0988f867d73695f544a3f34291e13070000000000000000000000000008111a222a31383f454b5055595d60626d7a8794a095887b6e625f5c58544f49433d362e271e160d04000000000000000013202c3946535f6c798693a0acaca09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0acaca09386796d6053463a2d2013070000000000000000010a131b21272a2c2c2c2c2c2c2c2c2c2a26211a1e24282b2c2c2c2c2c2c2c2c2b28231d160d04000000000000000000000000000000000000000000000000000000020b131b22272a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2b28231c150d03000000000008111920262a2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000005101a252e373e4346464646464646464646433f3830261c120700000007131f2b37424e5965707b86888888857a7064575965707b86888888857a7064574b3e3225180b0008131e29333c444a4e5154575b5e6164676b6f79838d989a989b948a80756d6a6663605d5a5653504d49423a31271c11050000000001070d11141616161616161616161615120e090200000000000000000000000000000000000000000000000000000000000000000d1a26323f4b57636f7b87939b90857b7269615c59595b6168707a848f9a94887d7165584c4034271b0e0200000008111a242d374049535c656f78828b949ea59b928980766c635a50473e342b22180f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18222c364049525a626970757a7e82848687888887868583817d7a76716b665f585149413838414951585f666c71767a7d818385868788888786858482807c7975706b655f58514941382f261d13090000000000000000030e18232d37414a535b636a71767b7f828486878887878684827e7b76716c655e574f4a545e676f757a7e8182828281807e7b786d6155483b2f221508000000000000000a141d273039414a525960666c72777b7e81848586878887868583817e7a75706b645e564f473e352c231a100600000000000000000000000007111b242d363f474f565d64696f74787c7f8284868787888787868583817e7b77736e68625c544d453d342b21180e04000000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000030f1b27323e4a56616d78848f9aa5a69c91877c73696159524d4a4848494c5158606a747f8a95a09d9b988c8074685c4f43372b1e120500000000000b16212c36414b555f68717a838b9399a0a5a9a39e9b989695959596999ca0a5a8a39c958e867d746b61574d43382d23180d01000000000000000000000000000008101820272e343a4045494d5053606d7a8794a095887b6e6155504c48433e38322b241c150c0400000000000000000013202c3946535f6c798693a0a0a0a09386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a09386796d6053463a2d201307000000000000000000010910161b1e1f202020202020201f1e1a150f13181c1f20202020202020201f1c18120b040000000000000000000000000000000000000000000000000000000000010910161b1e2020202020202020202020202020202020202020201e1c17120b0300000000000000070e151a1d1f2020202020202020201e1c17120b03000000000009131c252c32373939393939393939393937332d261e140b000000000b17232f3b47535f6a76818d9594897e73685e535f6a76818d9594897e73685e53473b2f23160a000c1824303b454e565a5d6064676a6d7074777a7d818a96a3a49e9285807c797673706c696663605c59544c43382d22160a000000030b12191d2123232323232323232323211e1a140d05000000000000000000000000000000000000000000000000000000000000000f1c2935424e5a6773808c98968a7e74696057504c4c4f565e68727d8994998d8175685c4f43362a1d11040000000008121b242e37414a535d666f79828c959ea49b91887e756c625950463d342a21170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29343e48525b646c747b81868a8e91929494949493918f8d8a86827c77716a635b534a42414a535b636a71777d82868a8d8f9193949494949392918f8c8985817c76706a635b534a42382f251b11070000000000000009141f2a353f49535c656d757c82878b8f91939494949392908e8b87827d7770696159515c66707980868b8d8f8f8f8e8c8a887b6f6255483c2f22150900000000000007111c252f39424b535c636b72787d83878b8e9092939494949392908d8a86817c766f68615950473e352c22180d0300000000000000000000050f19232d363f48515961686f757b8084888c8e909293949494949391908d8a87837e79736d665f574e463d332a20160c010000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000000a16222d3945505b67727d88939ea8a3988e857b736b645e5956555556585d626a727c86919ba6a99e92877b6f63574b3f33271b0f020000000000040f1a242f39434d565f68717981888e949a9ea2a5a7a4a3a2a2a2a3a5a8a5a19d97918b847c746b62594f453b31261c110600000000000000000000000000000000060e151c23292f34393d414753606d7a8794a095887b6e615548403c37322d272019120b030000000000000000000013202c3946535f6c798693939393939386796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693939393939386796d6053463a2d2013070000000000000000000000050a0e11131313131313131313110e0a04070c1012131313131313131312100c07010000000000000000000000000000000000000000000000000000000000000000050a0f11131313131313131313131313131313131313131313120f0b060000000000000000000003090e1113131313131313131313120f0b0600000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b27221c140c02000000030f1b2734404c58646f7b87929a8e83786d625758646f7b87929a8e83786d62574c42372b1f130700101c2935414c5760666a6d7073767a7d8083878a8d919ba6aea2978f8c8986827f7c7975726f6c69655e554a3e32261a0d0000030c151d24292d2f3030303030303030302e2a251e170e05000000000000000000000000000000000000000000000000000000000000111e2b3744505d6a76838f9b9285796d62574e454040444c56616c7884909d9084776b5e5245392c1f1306000000000009121c252f38414b545d67707a838c969fa39a91877e746b62584f463c332920170c0200000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303b46505a646d767e868c92979a9d9fa0a1a1a0a09e9c9996928d88827c746d655d544b4a535c656d747c82888d9296999c9e9fa0a1a1a1a09f9d9b9895918d88827b746d655c544a41372d23180e030000000000030f1a26313c46515b656e7780878d93979b9e9fa1a1a1a09f9d9a97938e88827b736b6259636e78828b92979a9b9c9b9a9995887b6f6255483c2f2215090000000000040e19232d37414b545d656e757c83898e93979a9d9fa0a1a1a1a09f9c9a96928d87817a736b625950473e34291f150a000000000000000000020c17212b353f48515a636b727a80868c9095989b9d9fa0a1a1a1a09f9e9c9a97938f8a857e78716961584f453c32281d13080000000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000005111d28343f4a56616c77818c96a1aaa0978e857c756f69666362616265686e747c858e98a2ada3988d81766a5f53473b2f23170b0000000000000008131d27313b444d565f676f767d83898e9296999b9d9e9f9f9f9e9d9b9895918c868079726a625950473d33291f150a000000000000000000000000000000000000030b11181e23282d313a4753606d7a87939393887b6e6155483b302b27211b150f0800000000000000000000000013202c3946535f6c798686868686868686796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000013202c3946535f6c798686868686868686796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f2020202020202020201e1b17110a020000000006121f2b3744505c6874808c9894897d72665b505c6874808c9894897d72665b50453a30251a0f0300121f2b3844515d697276797c808386898c909396999b9a9fa89f9b9b9895928f8c8885827e7b787570665a4e4235281c0f00000a151e272f353a3c3c3c3c3c3c3c3c3c3c3a36302920170c020000000000000000000000000000000000000000000000000000000000121f2c3945525f6b7885919b8f8276695d51463c34333a44505c6874818e9a9386796d6053473a2d2014070000000000000a131d262f39424b555e68717a848d97a0a39990877d746a61574e453b32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2b36424d57626c76808890979ea3a6a7a29f9c9a9a9a9a9c9ea19e99948d867f776e665d53525c656e777f868d94999ea2a6a29e9c9b9a9a9a9b9d9fa2a5a19d98938d867f776e665c53493f352a1f140900000000000814202b37424d58626d77808991989ea3a7a6a19e9b9a9a9a9b9d9f9f99938c857d746b626974808a949da3a6a7a09b999895887b6f6255483c2f22150900000000000a15202b353f49535d666f7780878e949a9fa3a6a3a19f9e9e9e9fa1a4a6a29e98928c857d746b62594f463b31261b1005000000000000000009131e29333d47515a636c757d848b92979ca1a4a3a09d9b9a9a9a9b9c9ea0a4a39f9b96908a827b736a61574e443a2f241a0f0400000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000c17222e39444f5a65707a858f98a2a9a0978e87807a7572706e6e6f7174797f868e97a0aaa69b91867b7065594e42362b1f130700000000000000010b151f29323b444d555d646b72787d8286898c8f909192929292908e8c8985807b756e67605850473e352b21170d030000000000000000000000000000000000000000060c12171c212d3a4753606d7a86868686867b6e6155483b2e221b16100a0400000000000000000000000000131f2c3946525f6b767979797979797979766b5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000131f2c3946525f6b767979797979797979766b5f5346392d201306000000000000000000000000000000010407090a0c0c0d0d0d0c0b0a0805030000000000000000000000000000000000000000000000000000000000000000000004090c0d0d0d0d0d0d0d0d0d0c0a060100000001060a0c0d0d0d0d0d0d0d0d0d0b08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131313120f0b060000000000000915222e3b4753606c7884909b8f84786c615553606c7884909b8f84786c61554a3f34291e14090000131f2c3946525f6c798286898c8f9296999c9d98948f8e96a0968f90959a9e9b9895928e8b88858276695c4f4336291c100006111c27303940464949494949494949494947423b32281e1308000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939a8e8174675a4e41352a2833404d596673808c9994877a6d6154473a2e211407000000000000010b141d27303a434c565f68727b858e97a1a2998f867c736a60574d443a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303c47535e69747e88919aa2a9a9a19b96928f8e8d8d8e8f9194989c9f98918981786f655c5a646e77808991989fa5a59f9a9592908e8d8d8d8e9092969a9ea4a49e98918981786e655b51463c31261b1004000000010d1925313c48535e69747e89929ba3aaa8a09a95918f8d8d8d8e9093969a9e978f867d746a6d7985919ca6aea69d958f8c8b8b887b6f6255483c2f2215090000000005111c27323c47515b656f78818a9199a0a6a6a09b9794929191919395989ca2a8a49d968f877e756b61574d43382d22170b00000000000000040f1a25303a454f59636c757e878f969da3a7a19b9793908e8d8d8d8e8f9194989ca1a7a19b948d857c736960564b41362b20150a00000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000000006111d28333e49535e68737d879099a2a9a099928b86827e7c7b7b7c7e81858a9098a0a9a69d948a80756a5f54483d31261a0e020000000000000000030d172029323b434b535a60666c7176797d80828485868686858482807c79746f6a645d564e463e352c23190f050000000000000000000000000000000000000000000001070c14202d3a4653606c777979797979776d6154483b2e21150a05000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a4f43372a1e1105000000000000000000000000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6b645a4f43372b1e120500000000000000000000000001060a0e111315171819191a1919181614120f0b07030000000000000000000000000000000000000000000000000000000000030a1015181a1a1a1a1a1a1a1a1a1916120c0500060d1216191a1a1a1a1a1a1a1a1a1815100a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4a56636f7b8894978b7f73675b5056636f7b8894978b7f73675b5044392d22170c020000121e2b3844505d6975818d95989b9f9f9b96918c888385919d908484898e92979ca09e9b97948a7e72665a4e4135281c0f000b17232e38424b5255565656565656565656534c443a3025190d010000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939a8e8174675a4e4135292833404c596673808c9994877a6d6154473a2e21140700000000000000020b151e27313a444d566069737c858f98a2a1988e857c72695f564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414d58646f7a85909aa3aca89f97908a8683818181818385888c91969c9b938a81776e64626c768089929ba3a9a19a948e89868381818181828486898e9399a0a7a29b938a81776d62584d42372c21150a00000005111d2935414d5964707b86919ba4ada79e968f8985828181818284868a8e9399988f867c72717d8a96a2ada99e948b84807e7e807b6f6255483c2f221509000000000b16222d38434e59636d77818a939ba3aaa29b958f8b888584848486898c91969da4a8a19890877d73695f54493e33281c11050000000000000a15202b36414c57616b757e889099a0a8a49c96908b878482818181818385888b90969ca3a69f978e857b72675d52483d32261b0f04000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000b16212c37424c57616b747e879098a0a7a39d97928e8b898888898a8d91969ba2aaa59d948b82786d63584d42372c20150900000000000000000000050e172029313941484f555b61656a6d707375777879797978777573706c68645e58524b443c342c231a11070000000000000000000000000000000000000000000000000005121f2b37444f5b656b6c6c6c6c6c6c665c5145382c201307000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e020000000000000000000000000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5a52493e33271b0f020000000000000000000002080d12161a1d2022242526262626262423211e1b18130f09040000000000000000000000000000000000000000000000000000050e151c212527272727272727272725221d17100811181e222527272727272727272624211b150d05000000000000000005090c0d0d0d0d0d0d0d0d0d0c09050000000002070a0c0d0d0d0d0d0d0d0d0d0b0803000000000000000000000000000000000000000000000d1a2733404c5965727e8b9794877b6f63574c5965727e8b9794877b6f63574b423b32281e13080000101c2834404c5965717d8995a19d98948f8a85817c7885929d9084787d82868b9094999e9e92867a6e62564a3d3125190d000f1b28333f4a545d626363636363636363625e564c41362a1e110500000000000000000000000000000000000000000000000000000000121f2c3945525f6b7885919b8f8275695d51453b33333a444f5b6874818d9a9386796d6053473a2d2014070000000000000000030c151f28323b444e57606a737d869099a2a0978e847b71685e52463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000815212d3945515d6975818c97a2aca99f968d857f7a767473737476787c80858b91989c938a80766c69747e88929ba4a9a0978f89827d79767473737475777a7d82878e959da6a49c92897e746a5f54493d32261b0f0300000815212d3a46525e6a75818c97a2ada89e958c847d797574737475777a7e83888e95988e847a74818d99a6b0a3988c827973717273746c6054473b2e21150800000005111c28333e4a55606a757f89939ca5a9a0989089847f7b79777778797c80858b929aa2aaa2998f857b71665b5044392d22160a0000000000040f1b26323d48535e68737d87919aa2aba29a928b847f7b77757473737476787b80858b9299a1a9a0978e84796f64594e43372c201509000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000005101b25303a454f59626c757e868e969da3a8a29e9a979695959597999da1a7a7a19a938b827970665c51473c31261b0f040000000000000000000000050e171f272f373d444a5055595d616466696a6b6c6c6c6b6a696664605c58534d474039322a221a11080000000000000000000000000000000000000000000000000000030f1b27333e49535a5f5f5f5f5f5f5f5b544a3f34281c1004000000000000000000000000000000000a16212c3740484f525353535353535353524f4840372c21160a000000000000000000000000000000000000000000000000000000000000000a16212c3740484f525353535353535353524f4940372c21160a00000000000000000000070d13191e2226292c2f30323333333332312f2d2b27241f1a150f08010000000000000000000000000000000000000000000000050e1720272d31333434343434343433322e29221a121a22292e32343434343434343433312c261f170d040000000000040b1115181a1a1a1a1a1a1a1a1a1916110c0500070d1317191a1a1a1a1a1a1a1a1a17140f090200000000000000000000000000000000000000000f1c2835424e5b6874818d9a9184786b5f56535b6874818d9a9184786b5f56534c443a3025190d01000c1824303c4855616d79859196918c88837e7975707986929e91847771767a7f84888d92968e82766a5e5245392d21150900121e2b3744505c666e6f6f6f6f6f6f6f6f6f685e52463a2d21140700000000000000000000000000000000000000000000000000000000111e2b3744515d6a76838f9c9185796d62574d443f3f434c55606c7884909c9184786b5e5245392c1f1306000000000000000000030d162029323c454e58616b747d87909aa3a0968d847a6e6255483b2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000b1824313d4955626e7a86929da8ada2978d847b736e6a68676768696c6f747980868e969b92887e736f7a85909aa4aaa0978e857e77716d6a68676767686a6d71767c838b949da6a49b90867b70655a4e43372b20140800000b1824313d4956626e7a86929ea9ada1978c837a726d69676767686b6e72777d838a92968c8176838f9ca8ac9f93877b706764656768635a4f44382c1f13060000000a16212d39444f5b66717c87919ba5aba1978e867e78736f6c6b6a6b6d70747a8188909aa3aba1978d82776c61554a3e33271b0f03000000000914202c37434e59646f7a858f99a2aca29990888079736e6b6867676768696c6f747980878f98a1a99f958b81756a5f54483d3125190e020000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000009141e29333d47505a636c747c848b92979da1a5a7a4a2a2a2a2a4a6a7a4a09b969089817970675e544a3f352a1f140900000000000000000000000000050d161d252c33393f44494d5155585a5c5d5e5f5f5f5f5e5c5a5754504c47423c362f2820181008000000000000000000000000000000000000000000000000000000000b16222d3741494f525353535353524f4a42382e23180c000000000000000000000000000000000005101a252e373e4346464646464646464646433e372e251a10050000000000000000000000000000000000000000000000000000000000000005101a252e373e4346464646464646464646433e372e251b10050000000000000000020a11181f242a2e3236393b3d3e3f4040403f3e3c3a3734302b26201a130c04000000000000000000000000000000000000000000040d17202931383d4040404040404040403e3a332c231b242c343a3e4040404040404040403d3831291f160b00000000060e161c212527272727272727272725221d170f0911191e232627272727272727272624201a130c0300000000000000000000000000000000000000101d2a3743505d6976838f9b8e82756963625e5d6976838f9b8e82756963625e564c41362a1e1105000814202c3844515d6975818d8a85817c77726e696c7986939e9185786b6a6f73787c81868a8a7e7266594d4135291d11050013202c3946535f6c787c7c7c7c7c7c7c7c7a6e6255483b2f22150900000000000000000000000000000000000000000000000000000000101c2935424e5b6773808c98968a7e73695f564f4c4c4f555e67727d8894998d8175685c5043372a1d110400000000000000000000040e17202a333c464f59626b757e88929ea89f95887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000e1a2733404c5965727e8a96a2aea89c91867b7169625e5b5a5a5b5d6063686e757c848c959a8f857a76818c97a1aca2988e857b736c66615d5b5a5a5a5c5e61656b7279818a949ea8a2988d82766b5f54483c3024180b00000e1a2733404c5965727e8a96a2aea79c90857a7068615d5a5a5a5c5e62666b727980899193887d84919eaaa99c9084776b5f58585a5b5851483e33271b0f030000020e1a26323e4a55616c77838e98a3ada3998f857c746d6763605e5d5e6064686f767e88919ca6a99f94897d72665b4f43372b1f1307000000010d1925313d48545f6b76818c96a1aba59a90877e766e68635f5c5a5a5a5b5d5f63686e757d868f99a3a79d92877c7065594e42362a1e11050000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000000020c17212b353e48515a626a727980868c9195989b9d9e9f9f9f9e9c9a97948f8a857e776f675e554c42382e23190e030000000000000000000000000000040c131a21282d33383d4145484b4d4f515252535252514f4d4b4844403b36312b241d160e06000000000000000000000000000000000000000000000000000000000005101b252f373e4346464646464646433f382f261c110600000000000000000000000000000000000009131c252c32373939393939393939393937322c251c130900000000000000000000000000000000000000000000000000000000000000000009131c252c32373939393939393939393937322c251c13090000000000000000040c141c232a30353a3e4245484a4b4c4c4d4c4c4a494643403c37312b251e160e0500000000000000000000000000000000000000030d161f29323b43494d4d4d4d4d4d4d4d4d4a453e352b232d363e464b4d4d4d4d4d4d4d4d4c49433b31271d11060000050f1820272d31333434343434343433322e282119131b232a2f32343434343434343433302b251e150c02000000000000000000000000000000000000121e2b3844515e6b7784919a8d81736f6f6f685e6b7784919a8d81736f6f6f685e52463a2d2114070004101c2834404c5965717d837e7975706b6662606d7a86939f9285786c5f63676c71757a7e837a6d6155493d3125190d010013202c3946535f6c7986898989898989887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000d1a26323f4b57636f7b87939b90857a7168615b59585b60677079838e9994897d7165594c4034271b0f0200000000000000000000020b151e27313a444d57606a737c86919eaaa195887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000101c2936424f5b6874818d9aa6afa3978b8074695f57514e4d4d4e5053585d636a727a838d96978c817b87929da8a69b90867c7269615b55514e4d4d4e4f51555a60676f78828c969f9c9893877c7064584c4033271a0d0100101c2936424f5b6874818d9aa6afa3978b7f73685e56504e4d4e4f52555a60676e767f88928f8485929faba79a8e8174685b4f4c4e4f4c463f362c21160b00000007131f2b37434f5a66727d89949faaa89d92877d736a625b565351515254585d646c75808a95a0aca59a8f83776b5f53473b2f23160a00000006121e2a36414d5965707c87929da8a99e93897e756c645d57524f4e4d4d4e5053575d636b747d87919c9e9a978d82766a5e5246392d2014070000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000000050f19232c363f48505860686f757b8085898c8f909292929291908e8b88847e79736c655d554c433a30261c120700000000000000000000000000000000010910161c22282d3135393c3f41434445464646454443413e3b3834302b251f19130c040000000000000000000000000000000000000000000000000000000000000009131d252d33373939393939393937332d261d140a00000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a26211a130a01000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2a27211b130a0100000000000000040d161e262e353b41464a4e525456585959595958575553504c48423d362f2820170f050000000000000000000000000000000000030c151f28313b444d55595a5a5a5a5a5a5a5a5650473d322c353f4850575a5a5a5a5a5a5a5a59544d43392e22170b00020d17212a32393d4040404040404040403e39332b221b252d353b3f40404040404040403f3c372f271e140b020000000000000000000000000000000000121f2c3845525f6b788592998c807c7c7c7a6e626b788592998c807c7c7c7a6e6255483b2f22150900000c1824303c4854616d7777726e69645f5b56616d7a87949f9286796c5f575b6065696e737774695d5145392d211509000013202c3946535f6c7986939696969695887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000a17232f3b47535f6b76828d98978d837a726c676565676b7179828b95998e83786c6055493c3024180c00000000000000000000010a141d273039434c565f69727c858f98a2a2988f857b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515d6a7783909ca9aca094877b6f63584d464240404244474c52586068717a858f999388818c98a3aba0958a7e746a6057504945424140414245494e555d66707a859093908c89858174675b4e4134281b0e0100111e2b3744515d6a7783909ca9aca093877b6e63574c4541404143454a4f555c646d76808a948e8f97a2aea6998c8073665a4d404142403b352d241a10050000000a17232f3b47535f6b77838e9aa5aea2978b80756b6158504a47454445484c525a646e78848f9ba7ab9f94887c7063574b3f32261a0d0100000916222e3a46525e6a75818d98a4aea3978c81776c635a524b46434140414244474c5259626b75808a95918e8a87837a6e6154483b2e2115080000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000000000007111a242d363e474e565d646a6f74797c808284858686858483817e7b77736e68625b534b433a31281e140a00000000000000000000000000000000000000050b11171c2125292c2f323436373839393938383634322f2c28241f1a140e08010000000000000000000000000000000000000000000000000000000000000000010b131b21272a2c2c2c2c2c2c2c2b27221c140b020000000000000000000000000000000000000000010910161a1e1f20202020202020201f1e1a161009010000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f20202020202020201f1e1b1610090100000000000000020c161f2830383f464c52575b5e616364656666666564625f5c58534e48413a322921170e04000000000000000000000000000000020b151e27313a434d565f65676767676767676661594e4337353e47515a626667676767676767655f554a3f33271b0e0008131e29333c444a4d4d4d4d4d4d4d4d4d4a453d342b232d373f464b4d4d4d4d4d4d4d4d4c48413930261d140a0100000000000000000000000000000000131f2c3946525f6c7986929b90898989887b6f626c7986929b90898989887b6f6255483c2f22150900000814202c3844505b656c6b67625d58544f55616e7b8894a09386796d60535054595d62676b6a62584d4135291d1105000013202c3946535f6c798693a0a3a3a295887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000007131f2b37434e5a65707b86909a958c847d7874727274777c838b949b91877d72675b5044382c2014080000000000000000000009131c262f39424b555e68717b848e97a1a39990867d736a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3945525f6b7885929eabaa9e9185786b5f53473b35343435373b40474e565f69727d8892998f8b929da9a69b8f84786d62584e453e393534343436393d444b545e68737e8a8783807c79756f65594d4034271a0e0100121f2c3945525f6b7885929eabaa9e9185786b5f52463a35343436393e444b525b646e78828d989ba0a9b2a6998c7f7265594c3f3535332f2a231b1208000000010e1a26333f4b57636f7b87939faba99d91857a6f64594f463f3a3837383b4148525c67737e8a96a2a6a4988c8073675b4e4235291c100300000d1925323e4a56626e7a86929ea9a99d91867b70655b5148403a3634343435373b40475059636e79848985827e7a77736a5f53463a2d2114070000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000000000008121b242c353d444b52595e64686d7073757778797979787674726f6b67625d575049413931281f160c02000000000000000000000000000000000000000000060b1015191d20232628292b2c2c2c2c2c2b292825231f1c18130e09030000000000000000000000000000000000000000000000000000000000000000000000010910161b1e202020202020201e1b17110a020000000000000000000000000000000000000000000000050a0e1113131313131313131313110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1113131313131313131313110e0a050000000000000000000a141e28313a424a51585d62676a6d6f717273737372706e6c68645f59534b443b332920160c0100000000000000000000000000010a141d273039434c565f687173737373737373736b5f53473a3d475059626c737373737373737371675b4f43362a1d10000d1924303b454e55595a5a5a5a5a5a5a5a564f463d342a343f4951575a5a5a5a5a5a5a5a58534b42392f261c130a0000000000000000000000000000000013202c3946535f6c798693a099969695887b6f626c798693a099969695887b6f6255483c2f221509000004101c28343f4a535b5f5f5b56514c484855626f7b8895a094877a6d615447484d52565b5e5e5950473c3025190d01000013202c3946535f6c798693a0acafa295887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000030f1a26323d49545f6a747e88919a968f8984817e7e8083888e959b928980756b60554a3f33281c100400000000000000000008121b252e38414b545d67707a838d96a0a49a91877e746b61584d42372b1e1206000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986939faca99d9083766a5d5044372a2727282b2f353c444d57616b76818c989a979ba4aea2968a7e72675c51463c332d29272728292d3239424c57626e797e7a7774706d69655d53483d3124180c000013202c3946535f6c7986929facaa9d9083766a5d5044372a27272a2d32394049525c66717b87929da9b2b2a6998c7f7265594c3f322827241f1811090000000004111d2a36424f5b6773808c98a4b0a4988c8175695d52473d342e2b2b2c3036404b56626e7a86939a9a99988f83766a5d5144382b1f12050004101c2935424e5a66727e8b97a3aea4988c8175695e53493f362f2a282727282b2f363e47515c6874807c7975726e6b6762594e43372b1e12050000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d000000000000000000000000000009121a232b323a41474d53585c606466696a6b6c6c6c6b6a6866635f5b56514b453e372f271f160d0400000000000000000000000000000000000000000000000004090d101417191b1d1e1f1f201f1f1e1d1b191613100c0703000000000000000000000000000000000000000000000000000000000000000000000000000000050a0f1113131313131313120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c26303a434c545c63696e73777a7c7e7f8080807e7d7b7874706a645d564d453b32281d1308000000000000000000000000000a131d262f39424b555e68717a818181818181817b6f6255483c464f59626b757e81818181818181776a5d5144372a1e1100101c2935414c576066676767676767676661584f453c333a45515b636767676767676767645d544b41382e251c120900000000000000000000000000000013202c3946535f6c798693a0a5a3a295887b6f626c798693a0a5a3a295887b6f6255483c2f2215090000000c17232d3841495053524f4a45413c4955626f7c8995a194887b6e6154483c41464a4f52514d473e352a1f140800000013202c3946535f6c798693a0acafa295887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000a15212c37424d58626c767f8890989a94908d8c8c8d8f949999918981776d64594f44392e22170b00000000000000000007111a242d37404a535d666f79838c959fa49b92887e756c62594f463c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798693a0aca99c908376695d5043362a1d1a1c1f242a323b454f5964707b87929ea4a7adaa9e9286796d62564a3f342a221c1a1a1b1d2127303a45515d6871726e6b6764605d59544b42372c201408000013202c3946535f6c798693a0acaa9d908376695d5043362a1d1b1d21272f37404a545f6a75818c98a4b0b2a6998c7f7265594c3f32261a17130d0700000000000714202d3945525e6b7783909ca8ada194887c7064584c41362b231f1e1f242e3a46525e6a77838e8e8d8c8b8a85796c6053463a2d2013070007131f2c3845515d6a76828f9ba7aca094887c7064584d42372d241e1b1a1a1c1f242c35404b57636d73706c6965625e5b5750473c32261a0e020000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1d1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000000000000000008111921282f363c42474c5054575a5c5e5f5f5f5f5e5d5b5956534f4b46403a342d251d150d040000000000000000000000000000000000000000000000000000000104070a0c0e1011121313131211100e0c0a07030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407080909090909080705010001050708090909090908070401000000000000000000000000000000000407080909090909080705010000000000000000000000000000000000000000000000000000020d18232e38424c555e666d747a7f8386898b8c8c8c8c8b8a8784817b766f675f574d44392f24190e03000000000000000000000009121c252f38414b545d67707a838c8d8d8d8d8d887b6f625548454e58616b747d878d8d8d8d8d8d84776a5d5144372a1e1100121f2c3845515d697273737373737373726a61574e453b3d4a56626d73737373737373736f665d534a40372e241b1208000000000000000000000000000013202c3946535f6c798693a0acafa295887b6f626c798693a0acafa295887b6f6255483c2f22150900000006111c262f383f444646433e3a353d4956636f7c8996a295887b6e6255483c353a3e434545413c352c23190e0300000013202c3946535f6c798693a0acaca295887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000004101b26313c46505a646d767e868d93989b9a9898999c98948e8780776e655c52483d32271c11060000000000000000071019232c363f49525c656f78828b959ea59c928980766c635a50473d342a20150900000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facaa9d9084776a5d5144382b211c1917192029333d48535e6a76828e9aa6b2b3a79b8e8276695d5145392e2322222222222222222935414c57606565625e5b5854504d49423930251b0f04000013202c3946535f6c7986929facaa9d9084776a5d5144382b1f1a17161d252e38434d5964707b87939fabb2a6998c7f7265594c3f3226190c07020000000000000a16232f3c4855616e7a87939facaa9d9185786c6054483c3024191211131d2936424f5b6874818281807f7e7d7d796d6053473a2d201407000916222f3b4854606d7986929eaba99d9084786b5f53483c30252222222222222222232f3b46515b636664605d5956524f4b453e352b20150a000000101c2936434f5c697683909ca9aa9d9084776a5d5044372a1e1104000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d00000000000000000000000000000000070f161d242b31363b4044484b4d4f515252535252504f4d4a47433f3a352f29221b130c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0e1010101010100f0d09090d0f1010101010100e0b070a0e101010101010100d0a05000000000000000000000000000000000000070c11141515151515151514110d080d11141515151515151514110c0700000000000000000000000000070c11141515151515151514110d080100000000000000000000000000000000000000000000000008131e2a353f4a545e6770787f858b8f93959798999999989694918c87817971695f564b41362b1f14080000000000000000000008121b242e37414a535d666f79828c959a9a9a92887f756c6054474e57616a737c868f999a9a988e857b72685c5043362a1d100013202c3946535f6c79818181818181817c736a60574d443e4b5865717e81818181818181786f655c524940362d241a11080000000000000000000000000013202c3946535f6c798693a0acaca295887b6f626c798693a0acaca295887b6f6255483c2f221509000000000a141d262d3337393937322e303d4a5763707d8a96a095897c6f6255493c2f2e3336383835312b231a11070000000013202c3946535f6c798693a0a0a0a095887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000a141f2a343e48525b646c747b82878c8f919292918f8c88827c756d655c534a40362b21160b0000000000000000060f19222b353e48515b646e77818a949da69d938a80776d645b51483e352b22180e03000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6b7885919eabab9e9285796c6054483c322c2825232221212c37424e5965717d8a96a3afb1a4988b7f72665a4d41352e2e2e2e2e2e2e2e2e2e2e303a454e55595956524f4b4844413d3730271e140a010000121f2c3845525e6b7885919eabab9e9285796c6053473b312a262422212126313c48535f6b77838f9ca8b2a6998c7f7265594c3f3226190c00000000000000000c1825313e4b5764707d8996a2afa79a8e8275695c5044372b1f1308040e1a2733404c59657076757473727271706e675c5144382c1f1306000b1824313e4a5763707c8995a1aea69a8d8174685c4f43372e2e2e2e2e2e2e2e2e2e2e2e3540495157595754504d4946423f3a342c23190f05000000101c2936434f5c697683909ca9aa9e9184776b5e5145382b1f1205000714202d3a4753606d7a8794a0ada69a8d807366594d4033261a0d0000000000000000000000000000000000040c131920252b3034383c3e41434445464646454442403d3a37332e29241e17100902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060707070707070707050200000000000000000000060d13181b1d1d1d1d1d1d1c191515191c1d1d1d1d1d1d1b1713171a1c1d1d1d1d1d1c1a16110b030000000000000000000000000000020b12181d2022222222222222201d1913181d2022222222222222201d18120b03000000000000000000020b12181d2022222222222222201d19130c0400000000000000000000000000000000000000000000010d1824303b46515c667079828a91969b9c97949291919193959a9d98928b837b71675d52473c3025190d01000000000000000007111a242d364049525c656f78828b949ea59c928980766d635a4f4d566069737c858f98a1a2988f867c736960564b4034271b0f0013202c3946535f6c79868d8d8d8d8d8d857c72695f564d434b5865717e8a8d8d8d8d8d8a81776e645b52483f362c231a100700000000000000000000000013202c3946535f6c798693a0a0a0a095887b6f626c798693a0a0a0a095887b6f6255483c2f22150900000000020b141b22272b2d2c2a2724313e4a5764717d8a939393897c6f6356493d3023272a2c2b292520191108000000000013202c3946535f6c7986939393939393887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000030e18222c364049525a626a70767b80838586868583807c77716a635b534a41382e241a0f0400000000000000050e18212b343d47505a636d768089939ca69e948b81786e655b52493f362c2319100600000000000000000000000000000000000000000000000000000000000000000000000000000000111e2a3744505d6a76838f9ca8ada195887c7064594e443d383432302f2e2d2d313d4955616e7a8793a0acafa296897c7063574a3e3b3b3b3b3b3b3b3b3b3b3b3b3b3b3c43494c4c4946423f3b3b3b3b38332d251c13090000111e2a3744505d6a76838f9ca8ada194887b6f63584d433b3633312f2e2d2d2d37434f5b6773808c99a5b2a6998c7f7265594c3f3226190c00000000000000000e1a2733404d5966727f8c98a5b1a5988c7f7266594d4034281b0f03000b1824303c48545e666968676766656463625d554b4034281c1004000d1a2633404c5965727e8b98a4b0a4978b7e7265594c403b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3f464b4c4b4844413d3b3b3b3a36302921170d030000101c2936434f5c697683909ca9ab9f9285796c5f53463a2d201408000714212e3a4754616d7a8794a0ada69a8d807366594d4033261a0d00000000000000000000000000000000000001080e141a1f24282c2f323436383939393938373533312e2b27221e18120c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131414141414141414120f0a04000000000000000811181f2427292a2a2a2a2a2825202125282a2a2a2a2a2927231e2227292a2a2a2a2a2926221c150d04000000000000000000000000020c141c23292d2f2f2f2f2f2f2f2d29241e24292d2f2f2f2f2f2f2f2d29231d150c0300000000000000020c141c23292d2f2f2f2f2f2f2f2d29241e160d0400000000000000000000000000000000000000000005111d2935414c57636d78828b949b9d96908b888584848586898e949b9d958d83796f64584d41362a1e12060000000000000007101a232c363f48525b646e77818a949da69d938a81776d645b514c565f68727b858e97a1a29990867d736a61574e443a2f23170b00121f2c3845525e6a747d8790999a9a978e847b71685f554c4a56636e77818a949a9a9a938980766d645a51483e352c22191006000000000000000000000013202c3946535f6c7986939393939393887b6f626c7986939393939393887b6f6255483c2f2215090000000000020a11171b1e20201e1b25313e4b5764717e86868686867d7063574a3d30241b1d1f1f1d19140e0700000000000013202c3946535f6c7986868686868686867b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000006111b242e37404850585f656b6f7376787979787673706b666059514941382f261c120800000000000000040d17202a333c464f59626c757f88929ba59e958c82786f665c534940362d241a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424e5b6774808c99a5b1a4988c81756a60564f4944413e3d3b3a3a3a393946525f6b7885919eabada194877a6e61554848484848484848484848484848484848484848484848484848484847443f372e251a0f04000f1c2935424e5b6774808c99a5b0a4988c8074695f554d47423f3d3c3b3a3a39393f4b5864717d8a97a3b0a6998c7f7265594c3f3226190c00000000000000000f1c2835424e5b6874818e9aa7afa3968a7d7064574a3e3125180c00000814202c37424c545a5c5b5b5a5958575655524b43392e23180c00000f1b2835414e5b6774818d9aa6afa295897c6f63564a4848484848484848484848484848484848484848484848484848484846413b33291f14090000101c2936434f5c697683909ca9ada094877b6e6155493c3024170c000814212e3b4754616d7a8794a1aea69a8d807366594d4033261a0d000000000000000000000000000000000000000003090e13181c202325282a2b2c2c2c2c2b2a292725221e1b17120d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2021212121212121201e1b160f08000000000007111a222a303436363636363635312c2c3135363636363636342f292e3336363636363635322d271f160d0300000000000000000000000a141e262e34393b3c3c3c3c3c3b39352f282f35393b3c3c3c3c3c3b39352e271e140a000000000000000a141e262e34393b3c3c3c3c3c3b39352f281f160c0100000000000000000000000000000000000000000915222e3a46515d69747f8a949d9d948b857f7b797777787a7d8289929b9f958b8075695e52463a2e221509000000000000060f19222c353e48515a646d768089939ca69d948b81786e655b524c555e68717a848d97a0a39a90877e746b61584f453c32281d120700111d2936424d58626b757e87919aa4a0968d847a71675e544b525c656f78828b949ea59b928980766c635a50473e342b22180f060000000000000000000013202c3946535f6c7986868686868686867b6f626c7986868686868686867b6f6255483c2f22150900000000000000060b0f121313111825313e4b576470797979797979786f63564a3d302317111212100d090300000000000000131f2c3946525f6b767979797979797979786d6155483b2f221508000000000000000000000000000000000000000000000000000000000000000009121c252e363e464d545a5f6367696b6c6c6b6a67645f5a554e473f372f261d140a00000000000000030c161f29323c454e58616b747e87919aa49f968c837970665d544a41372e241b12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a26333f4c5864707d8995a1aca99d92877c7268605a54504d4b4948474746464646505d6a7784909daaac9f9386796c60555555555555555555555555555555555555555555555555555555555554504940362c211509000d1a26333f4b5864707d8995a1aca89c91867b70675f58524f4c4a484747464646464956626f7c8996a2afa6998c7f7265594c3f3226190c0000000000000000101d2a3643505d6976838f9ca9aea195887b6f6255493c2f23160a0000040f1b26303a42494e4f4f4e4d4c4b4b4a4946413a31271d12070000101d293643505c6975828f9ca8ada094877a6e61555555555555555555555555555555555555555555555555555555555555524c453b31261b0f0300101c2936434f5c697683909ca9afa3968a7d7164584c4034281d120b0915222f3b4855616e7b8894a1aea6998c807366594d4033261a0d0000000000000000000000000000000000000000000003070c101316191b1d1e1f1f201f1f1e1c1a1815120f0a06010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24292c2e2e2e2e2e2e2e2d2b27211a1209000000030e19232c343b40434343434343413d36373d41434343434343403b34393f424343434343423e3931281f150a0000000000000000000006111c26303840454848484848484846413a313940454848484848484845403930261c1106000000000006111c26303840454848484848484846413a31281e130800000000000000000000000000000000000000000c1925313e4a56626e7a85919b9f958b8179736f6c6b6a6b6d71778089949f9d92867a6e62564a3d3125180c0000000000050f18212b343e47505a636c768089929ba59e958b82786f665c534b545e67707a838d969fa49a91887e756b62594f463d332a21160c01000d1925313c465059626c757e88929ba49f958c837970665d544a535d666f79828c959ea49b91887e756c625950463d342a21180e05000000000000000000131f2c3946525f6b767979797979797979786d616b767979797979797979786d6155483b2f221508000000000000000000030506060a16232f3c48535e686c6c6c6c6c6c6c675d52473a2e22150900000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c665c5145392d2014070000000000000000000000000000000000000000000000000000000000000000000a131c242c343c42494e53575a5d5e5f5f5f5d5b58544f49433c352e251d140b02000000000000000a151e28313b444e57616a737d879099a3a0978d847a71675e554b42382f251c1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1723303c4854606c7884909ba6aea3988e847a726b65605d5a585655545353535252525d697683909daaab9e9285786b616161616161616161616161616161616161616161616161616161616161605b52483d32261a0d000b1723303c4854606c7884909ba6ada2978d83797169635e5b5856555453535353525255626f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000111e2b3844515e6a7784919daaada093877a6d6154473a2e21140800000009141e2831383e4243424140403f3e3d3c3a352f281f150b010000111e2b3744515d6a7784909daaaca09386796d616161616161616161616161616161616161616161616161616161616161615e574d42372b1f130700101c2936434f5c697683909ca9b2a5998d8174685c5045392e241c17161723303d4956636f7c8995a2afa6998c7f7266594c403326190d0000000000000000000000000000000000000000000000000004070a0c0f1012121313131211100e0c09060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161f282f35393a3a3a3a3a3a3a3a37322c241b110700000914202b353e464c4f50505050504d484141494e50505050504f4c453d444a4f50505050504e4a433a31261b10040000000000000000000b17222d38424a5155555555555555524b433a424b5155555555555555514b42382e23180d02000000000b17222d38424a5155555555555555524b433a2f24190e03000000000000000000000000000000000000000f1c2835414d5a66727e8a96a2998e83786f6863605e5d5e61666d77828d99a3978b7e7266594d4034271b0e00000000050e17212a333d465059626c757e88919ba49f958c837970665d544a545d667079838c959fa49b92897f766c635950473d342b21180f05000009141f2a343e47505a636d768089929ca59e958b82786f665c534b545d67707a838c969fa39a91877e746b62584f463c332a20170e040000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c665c646b6c6c6c6c6c6c6c6c6c665c5145392d2014070000000000000000000000000007131f2b37424d565c5f5f5f5f5f5f5f5c554c41362a1e1206000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5b544a4034291d1104000000000000000000000000000000000000000000000000000000000000000000010a121b222a31373d42474b4e5052525252504e4b47433e38322b231c130b020000000000000006111c26303a434d566069737c868f98a2a1988e857b72685f554c433930261d130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c3844505c68737e8a959fa9aa9f968c847d76716c69666463616160605f5f5f5f5e697683909daaab9e9184776e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6c645a4e4236291d10000714202c3844505c68737f8a959fa9a99e958b837b746f6a676563626160605f5f5f5f5f626f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000121f2c3845525f6b7885929eabac9f9286796c5f5346392d201306000000020c161f262d323536353534333231302f2d2a241d160d03000000121f2b3845525e6b7885919eabac9f9286796e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e695f54483b2f22160900101c2936434f5c697683909ca9b5a99d9185786d61564b40362e2724232326323f4b5864717d8a97a4b0a5988b7e7265584b3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a40454747474747474746433d362d23190e03000d1a25313c4750585c5d5d5d5d5d59524a4a535a5d5d5d5d5d5c574f464d565b5d5d5d5d5d5b554c43382d2115090000000000000000000f1b27333f4a545c616262626262615d554c414a545d616262626262615c544a3f34291e1307000000000f1b27333f4a545c616262626262615d554c41362b20140900000000000000000000000000000000000000111e2b3744505d6975828e969795897d71675d5753515152555b66717d8995a29a8e8175685b4f4236291c10000000040d172029333c454f58626b747e87919aa3a0968d837a71675e544b535c666f78828b959ea59c928980766d645a51473e352b22190f06000000030e18222c353e48515b646d77808a939ca69d948b81786e655b524b555e68717a848d97a0a39990877d746a61584e453c322920160d04000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5b545a5f5f5f5f5f5f5f5f5f5f5b544a4034291d110400000000000000000000000000030f1a26303b444b5053535353535353504b433a2f25190e02000000000000000000000000000a16212c3740484f52535353535353535352504a42382e23180c0000000000000000000000000000000000000000000000000000000000000000000000000911181f262c32373b3f41444546464544423f3b37322d272019120a0100000000000000000b17222d38424c555f68727b858e98a1a2988f867c736960564d433a31271e140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28343f4b57626d78838d97a0a9a89f968e88827d797573716f6e6d6d6d6c6c6c6b6b6b7683909daaab9e91847b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b766a5e5144372b1e110004101c2834404b57626d78838e97a1aaa69d958d86807b777472706f6e6d6d6c6c6c6b6b6b6f7b8895a2afa6998c7f7265594c3f3226190c0000000000000000131f2c3946525f6c7986929facab9f9285786b5f5245392c1f120600000000040d151c212628292928272625242423211e19130c0400000000131f2c3946525f6c7985929facac9f92857b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a7063574a3d3124170a00101c2936434f5c697683909ca9b6ada195897e72675c52484038333130303136424e5b6773808c99a5b0a3978a7d7064574a3e3124180b00000000000001060a0c0e0e0e0e0e0e0e0d0c09040004080b0d0e0e0e0e0e0e0e0d0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303a434b5154545454545454534f483f352a1f140800111d2a36424e5962686969696969645c51525c6569696969696861584d555f676969696969665f54493d3125190d000000000000000000121e2b3743505b666d6f6f6f6f6f6e675d5247505c666e6f6f6f6f6f6d665c51463b2f24180d01000000121e2b3743505b666d6f6f6f6f6f6e675d52473c31251a0e03000000000000000000000000000000000000131f2c3946525f6b788588898a8c85786c60554c474544454955616d7a8693a09c9083766a5d5043372a1d100000030c161f29323b454e57616a747d879099a3a0978e847b71685f554c525c656e78818a949da69d938a80776d645b52483f352c23191007000000000006101a232c363f49525b656e77818a949da69d938a81776d645b514c565f68727b858e97a1a2998f867c736a60574e443b32281f160c030000000000000a16212c3740484f52535353535353535352504a4f52535353535353535352504a42382e23180c00000000000000000000000000000009141f29323a404446464646464646443f3931281e1308000000000000000000000000000005101a252e373e4346464646464646464646433f3830261c120700000000000000000000000000000000000000000000000000000000000000000000000000060e141b21262b2f323537383939383735332f2b27211c150f07000000000000000000000f1b27333f4a545e67717a848d97a0a39990877d736a61574e443b31281f150c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a45515c66717b858e979ea6a8a099938d898582807d7c7b7a79797979797878787783909daaac9f93898888888888888888888888888888888888888888888888888888888888888884776b5e5144382b1e1100000b17232f3a46515c67717c858f98a0a7a79f97918b8783817e7c7b7a7a79797979787878777b8895a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0acab9e9285786b5e5145382b1e12050000000000030a1016191c1c1c1b1a191918171614120d0801000000000013202c3946535f6c7986939facaca0948a88888888888888888888888888888888888888888888888888888888888888887d7164574a3e3124170b00101c2936434f5c697683909ca9b1a8a29a8f84796e645a524a44403d3c3d3e4148535e6a77838f9ca8aea195887b6f6256493c3023160a0000000000050c1216191a1a1a1a1a1a1a1a1815100a0f14181a1a1a1a1a1a1a1a1917120d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2a36414c555d606161616161615f5a51473c3024180c00131f2c3945525e6a7476767676766d625656636e767676767673695d515a667176767676767165594d4135291c1004000000000000000013202c3946525f6c787b7b7b7b7b796f64594d53606d787b7b7b7b7b786d62574c4035291e120600000013202c3946525f6c787b7b7b7b7b796f64594d42362b1f1308000000000000000000000000000000000000131f2c3946525f6b767a7b7c7d7e8076695d50443a38373945525f6b7885929f9d9184776a5d5144372a1e1100000a151e28313b444d576069737c868f99a2a1988e857c72695f564d525b646e77818a939da69d948a81786e655c524940362d231a11070000000000000008111a242d374049535c656f78828b949ea59c928980766d635a514d566069727c858f98a1a1988f857c726960564d443a31281e150b02000000000005101a252e373e4346464646464646464646433f4346464646464646464646433f3830261c1207000000000000000000000000000000020d1720282f34383939393939393938342e271f160c0100000000000000000000000000000009131c252c32373939393939393939393937332d261e140b000000000000000000000000000000000000000000000000000000000000000000000000000000030910151a1f2326282a2c2c2c2c2b2926231f1b16100a040000000000000000000000111e2a37434f5b667079838c969fa09a91877e746b61584e453c32291f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121e29343f4a555f69737c858d949ba1a6a49e9995918e8c8a89888786868686858585858485919daab0a59b959595959595959595959595959595959595959595959595959595959595959184776b5e5144382b1e11000007121e2934404a55606a737d868e959ca2a7a29c9793908d8b898887878686868685858584848a96a2afa6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0acab9e9285786b5e5145382b1e120500000000000000050a0d0f100f0e0e0d0c0b0a090805010000000000000013202c3946535f6c798693a0acb0a59c96959595959595959595959595959595959595959595959595959595959595958a7d7164574a3e3124170b00101c2936434f5c697683909ca9aa9f9692958a80766c645c55504c4a494a4b4d525a646f7b87939fabab9f9286796d6054473a2e211508000000000710171d2225272727272727272725211b151a2024272727272727272726231e18110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47525e676d6d6d6d6d6d6d6b63584d4034281b0f0013202c3946535f6c79838383837e7266595764717d83838383796d61555b6875828383838276695d5145392c2014080000000000000000131f2c3945525e6a75808888888880756a5e53535f6b7681888888887f73685d51463a2f23170b000000131f2c3945525e6a75808888888880756a5e53473c3024180c000000000000000000000000000000000000111e2a37434f5a646b6d6e7071727370665a4e413c3c3d3f45525f6b7885929f9d9084776a5d5044372a1e110006111c27303a434d565f69727b858e98a1a2998f867c736a60574d515a646d768089939ca59e958b82786f665c534a40372e241b110800000000000000000008121b242e37414a535d666f79828c959fa49b92887f756c6359504e57606a737c869099a2a1978e857b72685f564c433a30271d140b01000000000009131c252c3237393939393939393939393733373939393939393939393937332d261e140b0000000000000000000000000000000000050e161d23282b2c2c2c2c2c2c2c2b28231d150d0400000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b27221c140c020000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e1316191c1e1f1f201f1e1c1a17130f0a0500000000000000000000000000121f2c3845525f6b78828b9393939392887e756c62594f463d332a20170d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e38434d57616a737b82898f959a9ea2a5a19e9b99979694949393939292929291919197a2adb7ada6a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29e9184776a5d5144372a1e110000010d18232e39434e58616b737c838a91969b9fa3a39f9c999796959493939392929292929191939ba6b2a6998c7f7265594c3f3226190c000000000000000013202c3946535f6c798693a0acab9e9285786b5e5145382b1e1205000000000000060c1013151514131211100f0e0d0b08040000000000000013202c3946535f6c798693a0acb7aea6a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2978a7d7164574a3e3124170b00101c2936434f5c697683909ca9a69a8d868d92887e756d66605c5857565657595d636c76818c97a3afa89c8f83766a5e5145382c1f130600000007101922282e323434343434343433312d261f252c303334343434343434322f29231b1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d4956636f797a7a7a7a7a7a75695c504336291d1000121f2b3844515e6a778490908e8275695d56626f7c899090897d7165595a6673808c909086796d6155493c3024180c0000000000000000111d2a36424e59646e79848f9592867b6f64584f5a646f7a8590959085796e62574b3f33271b0f030000111d2a36424e59646e79848f9592867b6f64584c4035291d100400000000000000000000000000000000000e1a26323e48525a5f616263646567655e5449484848494b4f56626e7a8793a09b8f8275695c4f4336291d10000b17232e38424c555f68717b848e97a0a39990877d746a61574e505a636c767f89929ba59e958c837970665d544a41382e251b1209000000000000000000000009121c252f38414b545d67707a838c969fa49a91887e756b62584f4e58616b747d87909aa3a0978d847a71685e554c42392f261d13090000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2b272a2c2c2c2c2c2c2c2c2c2c2b27221c140c02000000000000000000000000000000000000040c12181c1f202020202020201e1c17120b03000000000000000000000000000000000000010910161a1e1f2020202020202020201e1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0d0f111213131211100d0a0703000000000000000000000000000000121f2c3845525f6b788586868686868680766d635a50473d342b21180e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313b454f58616970787e84898e9295989b9d9fa0a1a2a1a0a0a0a09f9f9f9e9e9e9ea2a9b3b3a9a09b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ba0a9aeaa9d9083776a5d5044372a1d1100000007121d27323c464f59616a727980858a8f9396999c9e9fa1a2a1a1a0a0a09f9f9f9e9e9e9e9fa5adb2a6998c7f7265594c3f3226190c0000000000000000131f2c3946525f6c7986929facab9e9285786b5f5245382c1f120500000000020a11171c20212221201f1e1d1c1b1a1814100a03000000000013202c3946525f6c7986929facb4aaa19c9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9ea5aeaea3968a7d7063574a3d3024170a00101d2a3643505c697683909ca9a5988c7f869191888078716c68656363636466696e757e88929da9afa3988c8073675b4e4236291d10040000030e19222b333a3e41414141414141403d38312930373c40414141414141413f3b342d241a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d87878787878376695d5043362a1d1000101d2a3643505c6975828f9c9285796d6155616e7a8794998d8175685c5865727e8b9895897d7165584c4034281b0f03000000000000000e1a26313d47525d68737e8995978c8175695d51535d68737e8a95968a7f73675c5044372b1f130700000e1a26313d47525d68737e8995978c8175695d5145392d21140800000000000000000000000000000000000a16212c3740484f5354555657595a5953535555555556585b6068737e8a96a2978b7f73665a4d4134281b0f000f1b28333f4a545e67717a838d96a0a49a91877e746b62584f4f59626b757e88919ba49f968c837a70675e544b42382f261c1309000000000000000000000000000a131d262f39424c555e68717a848d97a0a39990877d746a61584e4f59626b757e88919aa49f968c837a70675e544b42382f251b10040000000000010910161a1e1f2020202020202020201e1b1e1f2020202020202020201e1b17110a02000000000000000000000000000000000000000001070c101213131313131313120f0b0600000000000000000000000000000000000000000000050a0e1113131313131313131313120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3845515e6a7679797979797979776d645b51483e352b22190f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f29333d464f575f666d73787d8286898c8e91929495959696969797979798989898999da6b0aea2978f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8f97a2aea99c8f8376695c504336291d10000000000b15202a343d474f5860676e747a7e83878a8d8f919394959696969697979797989898989aa1aab2a6998c7f7265594c3f3226190c0000000000000000121f2c3845525f6b7885929eabac9f9285796c5f5246392c1f1306000000010b141c22282c2e2e2d2c2c2b2a29282724201b140d0400000000121f2c3845525f6b7885929eabafa398908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e939da8afa296897c6f6356493c3023160900101d2a3643505d697683909daaa5988b7e808a95918a837d787472706f707172757a8087909aa4afa99e93877b6f63574b3f32261a0d0100000915202b343d454a4d4d4d4d4d4d4d4d49433b313942484c4d4d4d4d4d4d4d4b463f362c22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8a949494908376695d5043362a1d10000f1b2835414e5b6774818d9a95897d7165585f6c7985929d9185786c605763707d8996998d8175685c5044382b1f1307000000000000000915202b36404b56616d78848f9b9185796d61554c57626d7984909b9084786c6054473b2f23160a00000915202b36404b56616d78848f9b9185796d6155493d3024180b000000000000000000000000000000000005101a252e373e434647484a4b4c4d4e575f626262626364676b727a858f9b9c91867b6f63574a3e3225190c00121e2b3744505c667079838c959fa49b92887f756c6259504a56616b747e87909aa3a0978d847a71685e554c423930261d140a0100000000000000000000000000010b141d27303a434c565f68727b858e97a1a2998f867c736a60574e5059636c757f88929ba49e958c837970665d544a41372c21150900000000000000050a0e1113131313131313131313120f1113131313131313131313120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2936424e59646b6c6c6c6c6c6c6c6b655b52493f362c231910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212b343d454d545b62676d7176797d80828486878889898a8a8a8a8a8a8b8b8b8b8c949fabac9f928681818181818181818181818181818181818181818181818186929faca89b8e8275685b4f4235291c0f00000000040e18222b353d464e555c63696e73777a7d80828486878889898a8a8a8a8a8b8b8b8b8c8f98a4b0a6998c7f7265594c3f3226190c0000000000000000111e2b3744515e6a7784909daaaca09386796d6053473a2d20140700000009131d262d34383b3b3a39383736353433312c261f160d03000000111e2b3844515e6a7784919daaada09387818181818181818181818181818181818181818181818181818c99a6aea194887b6e6255483b2f22150900101d2a3643505d697683909daaa4988b7e78838d97948e8984817e7d7c7d7d7f82858b9199a2acaca2988d82766a5f53473b2f23160a0000020e1a26313c464f565a5a5a5a5a5a5a59544d4339424b53595a5a5a5a5a5a5a5751483e33281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8a96a19d908376695d5043362a1d10000d1a2633404c5966727f8c98998d8174685c5e6a7784909d95887c706457626e7b88949d9185786c6054473b2f23170a00000000000000040f19242f3a45505b67737e8a96968a7d7165594d515c68737f8b9794887c7064574b3f3226190d0000040f19242f3a45505b67737e8a96968a7d7165594c4034271b0e02000000000000000000000000000000000009131c252c3237393a3c3d3e3f485460696f6f6f6f6f7173777d848d969c948a80756a5e52473a2e22160a0013202c3946535f6c78828b959ea69c928980766d635a50474c5966727d879099a2a1978e857b72685f564c433a30271e140b02000000000000000000000000000000020b151e28313a444d566069737c858f98a2a1988f857c72695f564c515a636d768089929ca59e948b82786f665c53483d32261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d101111111111110f0c080200000000000000000003090d10111111111111100d0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d48525a5f5f5f5f5f5f5f5f5f5a534940372d241a1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d242b333b434a50565c61656a6d70737577797a7b7c7c7d7d7d7d7d7d7e7e7e7e83909daaac9f93867974747474747474747474747474747474747474747474798693a0aca69a8d8073675a4d4134271b0e00000000030d151d242b343c444b51575d62676a6e71747678797a7b7c7c7d7d7d7d7d7e7e7e7e7e8895a2afa6998c7f7265594c3f3226190c0000000000000000101d2a3643505c6976828f9ca8ada194877a6e6154483b2e221508000005101b252f383f44474847464544434241403d3831281f150b000000101d2a3643505d6976838f9ca9ada094877a7474747474747474747474747474747474747474747474808d99a6aca093867a6d6054473a2e21140800111d2a3744505d6a7784909daaa4978b7e717b858e979994908d8b8a89898a8c8e92969ca3ababa39a90867b70655a4e42362b1f1306000005121e2a37424e586166676767676767655f554a3f49545d6567676767676767625a5044392d20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8a96a39d908376695d5043362a1d10000c1825323e4b5764717d8a979d9184786c605c6976828f9c988c8074675b606d798693a094887c7064574b3f33271a0e020000000000000008121d28343f4a56626e7a86929a8d8175685c504b57636e7a8793988c8073675a4e4135281c0f03000008121d28343f4a56626e7a86929a8d8175685c4f43372a1d11040000000000000000000000000000000000010a131b21272b2d2e2f30313e4b5864717b7b7b7b7c7d8083888e9698928a82786e63594d42362a1e12060013202c3946535f6c7986939da7a1958a80776d645b5148404c596673808c98a2a79b8f857c726960564d443a31281e150c020000000000000000000000000000000000030c161f28323b444e57616a737d869099a2a1978e857b71685e5248515b646d77808a939da69d948a81786e655a4e4235291c10000000000001070b0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0b070100000000000000000000000000000000000000000000000001090f151a1d1e1e1e1e1e1e1c18130d0600000000000000070e14191c1e1e1e1e1e1e1c19140e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b3640484e5253535353535353524f4941372e251b1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151f272f353a3c3e3f454b5055595d616466696b6c6d6e6f6f7070707071717171717683909daaada094877a6e67676767676767676767676767676767676767676f7b8894a1aea4988b7e7265594c3f3326190d000000000b151f272f353a3c3e40464c51565a5e626567696b6c6e6f6f707070707171717171717b8895a2afa6998c7f7265594c3f3226190c00000000000000000f1c2835424e5b6874818d9aa7afa295897c6f6256493d3023170a00000a16212c37414a50545554535251504f4e4c49423a31271c110600000f1c2835424e5b6874818e9aa7aea195887b6e67676767676767676767676767676767676767676875828e9ba8aa9e9185786b5f5245392c1f130600111e2a3744515d6a7784909da9a4978a7d70737c858e969d9c9a9796969697989a9ea2a7aaa5a09991887e746a5f54493d32261a0e0200000714212d3a46535f6a7374747474747471675b4f424d59656f747474747474736c6155493c2f23160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8a96a39d908376695d5043362a1d10000a1723303d4956636f7c8995a194887c70635b6774818d9a9c9084776b5f5f6b7885919e988c8073675b4f43362a1e1206000000000000030e19242d363e45515d6976828e9b9184786b5f5246525e6a76838f9b8f8276695d5044372b1e110500030e19242d363e46515d6976828e9b9184786b5e5245392c201306000000000000000000000000000000000000010910161b1e20212225323e4b5865717e888888898a8c8f9493908c8780786f665c52473c31251a0e020013202c3946535f6c7986939fa9a094887f756c62594f46404c596673808c99a4a79b8e847a71675e544b42382f251c120900000000000000000000000000000000000000030d162029323c454e58616b747d87909aa3a0968d847a6e62554849525b656e78818a949da69d938a80766a5d5144372a1e1100000000060d12171a1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a17120d0600000000000000000000000000000000000000000000020b131a2126292b2b2b2b2b2a28241f18100700000000000911192025292b2b2b2b2b2b2925201911090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a242e363d43454646464646464646433e372f251c13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121c2731394146494a4b4d4e4f50515254575a5c5e5f616262636363636364646465697683909daaaea295897c6f635b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b64717d8a96a3afa296897c7063574a3e3124180b00000006121c2731394146494a4b4d4e4f50515255585a5d5e606162626363636364646464656f7b8895a2afa6998c7f7265594c3f3226190c00000000000000000d1a2733404d5966727f8b98a4b0a3978a7d7164584b3f3226190d00020e1a26323e49535b6161605f5e5d5c5b5b59544c43392e22160a00000d1a2733404d5966727f8b98a4afa3968a7d70645b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5e6b7784909da9a89c8f8376695d5044372a1e110500111e2b3844515e6a7784919c9c9c96897d706a737c848b92979ca0a3a3a3a4a5a6a5a4a19e9a958e877f766c62584d42372c2115090000000815222e3b4854616e7b818181818181776a5d50444f5b68758181818181817d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8a96a39d908376695d5043362a1d10000815222e3b4854616e7a8794a0988c8073675b66727f8c98a093877b6f635d6a7683909c9c9083776b5f53463a2e22160900000000000008141f2b353f484f545a66727e8b9893867a6d615450545a6773808c989185786c5f5246392c2013070008141f2b353f484f545a66727e8b9893867a6d6154473b2e2115080000000000000000000000000000000000000000050a0f1213141825323e4b5865717e8b959596979990898784817b756e665d544a40362b201409000013202c3946535f6c79848d97a0a59a91877e746b61584e454c5966737f88929ba4a0968c837970665d544a41372e241b120800000000000000000000000000000000000000040e17202a333c464f59626b757e88929ea89f95887b6f6255484049535c666f78828b97a3a59c9184776a5d5144372a1e110000000710171e2327292929292929292929292929292929292929292929292927231e1710070000000000000000000000000000000000000000040c141d252c32363738383838373430292219100600000008121b232b313537383838383735312b231b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242c323639393939393939393937332d251d130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e39434b52565758595a5c5d5e5f5e59514f515354555556565657575757575d697683909daab0a4978b7e7265594e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e5a6773808c99a5aca093877a6e6155483b2f2216090000000b17232e39434b52565758595a5c5d5e5f5e59515052535455565656575757575757626f7b8895a2afa5998c7f7265594c3f3226190c00000000000000000c1825313e4a5763707c8995a2aea5998c8073675a4e4135291c100605111e2a36434f5a656d6e6d6c6b6a696867655e554a3f33261a0e01000c1825313e4a5763707c8995a2aea5988c8073675a4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e54616d7a86939faca6998d8174675b4e4235281c0f0300121f2c3845525e6b78859090909090897c6f626a727980868c90949698999a9a9a999795928e89837c756d645a51463c31261b10040000000915222f3c4855626f7b888e8e8e8e84776b5e51444f5c6975828e8e8e8e8a7d7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8a96a39d908376695d5043362a1d10000714202d3a46535f6c7986929f9c9083776b5f64717d8a97a3978b7e73665c6875828e9ba093877b6f63564a3e3226190d0100000000000c1824303c47515a606263707c899695887b6f62565b606264707d8a9693877a6d6154473b2e211508000c1824303c47515a606263707c899695887b6f6256493c2f2316090000000000000000000000000000000000000000060c1216191b1c25323e4b5865717e8b9898999a9a8d827f7b76706a645c544b42382e24190e030000121f2b3844515d68727b858e98a1a39990867d736a60574d4a57626d768089939ca59e958c82786f665c534940362d241a1107000000000000000000000000000000000000020b151e27313a444d57606a737d86919eaaa195887b6f6255483e48515a646d77818a96a3a79e9184776a5d5144372a1e11000006101922292f333536363636363636363636363636363636363636363635332f2922191006000000000000000000000000000000000000050e161e262f363d42444444444444403b342b22180d0200040f1a242d353c41444444444444413c352d251d140c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2a27211b130b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28343f4a555d626465666768696b6c6a63594d4546474849494a4a4a4a4a4b515d6a7784909daab3a69a8d8175685c504441414141414141414141414146525e6a76838f9ba8a99d9084776b5e5246392d2014070000030f1c28343f4a555d626465666768696b6c6a63594d4546474849494a4a4a4a4a4b56636f7c8996a2afa5988c7e7265584c3f3225190c00000000000000000916222f3b4854616d7a86929faba89b8f82766a5d5145392d2116131214202d3946525f6b777b7a79787776757470675b4f4236291d1003000916222f3b4854616d7986929faba89b8f82766a5e5246414141414141414141414141414c5864707d8995a2aea3968a7d7165584c3f33261a0d010013202c3946535f6c79838383838383837b6e6260686f757b8084878a8c8d8d8e8d8c8b8886827d78726b635b52483f342a1f150a00000000091623303c4956626f7c89969a9a9285786b5e5245505d697683909a9a988b7e7165584b3e3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8a96a39d908376695d5043362a1d100005121f2b3845515e6b7784919d9f93877b6f62636f7c8995a29b8f83766a5e6773808d99a3978b7e72665a4e4235291d110500000000000e1b2834404d58636c6f6f6f7b8794968a7d706359646c6f6f6f7b889595887b6f6255493c2f221609000e1b2834404d58636c6f6f6f7b8894968a7d7063574a3d3124170a000000000000000000000000000000000000000810171e222627292a323e4b5865717e8b8b8b8c8e91948f8b87827b746b62594e44392e23170c000000101c2834404c566069737c868f98a2a2988f857c72695f564c515b646d77818a939da69d948b81786e655b52493f362c2319100600000000000000000000000000000000010a141d27303a434c565f69727c858f98a2a2988f857b6f62554847505a636c768089929ca79e958c82776a5d5144372a1e1100030e18222c343a3f42424242424242424242424242424242424242424242423f3a342c22180e0300000000000000000000000000000000070f172028303840484e5151515151504c463d34291e1307000915202b363f474d5151515151514d473f372f261e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1e1f20202020202020201e1b16100901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3744505c676e7071737475767778756a5e5145393b3b3c3c3d3d3d3d3e46525f6b7885929eabb6a99d9185786c6155493e343434343434343434343f4b56626e7a86939faba5998d8174685c4f43362a1e1105000005121e2b3744505c676e7071737475767778756a5e51453a3b3c3c3d3d3d3d3e3e4b5864717d8a97a4b0a4988b7e7165584b3e3225180c00000000000000000713202c3945515e6a76838f9ba7ab9e9286796d6155493d3228221f1f2026313d4955616e7a8786868584838281776a5d5044372a1d1104000713202c3945515e6a76828f9ba7ab9e92867a6e62574b40363434343434343434343a45515c6874818d99a5ab9f93877a6e6255493c3024170b0000121f2c3945525e6a7476767676767676756b60565d646a6f74777b7d7e80818181807e7c7976716c676059514940362d23180e03000000000a1723303d4a5663707d8996a39f9285796c5f5246505d6a7784909da5988c7e7265594c3f3226190c00000000000000000000000000000000000000000000000000000004060808080808080808080808080808080808080808080808080808080a1723303d4a5663707d8a96a39d908376695d5043362a1d100003101d2a3643505c6976828f9ca3978b7e7266616e7a8794a09f92867a6e6265727e8b98a49b8f82766a5e5245392d2115080000000000101c2936434f5c69757b7b7b7b8794978b7e71645d69767b7b7b7b889496897c706356493d3023160a00101c2936434f5c69757b7b7b7b8794978a7e7164574b3e3125180b00000000000000000000000000000000000007111a22292e32343536383e4b5865717e7e7e7e7f81858a9097938d867d746a60554a3f34281c110500000c18242f3a444e57616a737d879099a3a1978e857b71685f554c525b656e78818b949ea69d938a80776d645b51483e352b22180f0600000000000000000000000000000009131c262f39424b555e68717b848e97a1a39990867d736a5f53474f59626b757e88929ba49f968c837970665b4f4236291d100009141f2a343e454b4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4b453e342a1f14090000000000000000000000000000000911192129323a424a525a5e5e5e5e5e5d574f463b2f24180c000e1a26323d4751595d5e5e5e5e5d5851494038302820170f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e11131313131313131313110f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c787d7e808182838485796c6053473b302f2f30303030313c4855616e7a8793a0acb9ada195897d71665b50453b332c292828292d333c46505c67737e8a96a3ada195897d7164584c4033271b0e0200000613202c3946535f6c787d7e808182838485796c6053473b2f2f303030303036424e5a6673808c99a5afa3968a7d7063574a3d3124170b000000000000000004111d2936424e5a67737f8b97a3aea295897d71655a4e443a322e2c2c2d3038424e5965717d8a939291908f8d8174685b4f4236291d10030004101d2935424e5a66727e8b97a2aea3978b7f73685d52483e352e2a2828282b3037414b56616d7985919da9a79b8f83776a5e5246392d2114080000111d2936424d5862686969696969696968635a4f52595e63686b6e70727374747373716f6d6965615b554e473f372e241b110700000000000a1724313d4a5764707d8a97a4a09386796c605346515e6a7784919ea6998c807366594c4033261a0d00000000000000000000000000000000000000000000000000060c1013141515151515151515151515151515151515151515151515151515151723303d4a5663707d8a96a39d908376695d5043362a1d1000000f1c2835424e5b6774818d9aa79b8e82766a606c7986929fa2968a7e716563707d8a96a39e92867a6e6155493d3124180c0000000000101c2936434f5c6976838888888b96988b7e71655d6a77848888888c96978a7d7063574a3d3024170a00101c2936434f5c6976838888888b96988b7e7165584b3e3225180b0000000000000000000000000000000000040f19232c343a3f41424344454955616b717171717375797e858e979890867c72675c5045392d211509000007131e28323c454e58616b747e87919aa4a0968d847a71675e544b535c666f78828c959ea59c928980766c635a50473d342a21180e050000000000000000000000000008121b252e38414b545d67707a838d96a0a49a91877e746b61584d4e58616b747e87919aa4a0978d847a71675e544a3e32261a0e000d1925313c4650575b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5750463c3125190d00000000000000000000000000020a121a232b333b444c545c646a6b6b6b6b6961574c4034281b0f00111d2a36424e59636a6b6b6b6b69635b524a423a32292119110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945525e6b77848b8c8d8e9091887c6f63584c423c3937363637383c424d5964717d8996a2afbbb1a59a8e82776c61574d453d3835343436393e454e58626d78848f9ba7a89c9185796d6155483c3024170b00000006121f2c3945525e6b77848b8c8d8e9091887b6f63574b413b39373636373a3e47525e6a76828f9ba8ada094877b6e6255493c2f2316090000000000000000010d1a26323e4b57636f7b87939eaaa69a8e82766b60554c443e3a3938393c424a545f6a76818d999f9e9d968a7d7165584c4033271a0e0100010d1926323e4a56626e7a86929da9a79b9085796e64595047403a36343435373b4149535d68737e8a95a1ada2968b7e73675a4e42362a1d110500000d1925313c4650575c5c5c6063636363625e574d474d53575b5f62646566676767666563605d5955504a443d352d251c12090000000000000b1825313e4b5764717e8b97a4a093877a6d605347515e6b7885919ea69a8d8073675a4d4034271a0d0100000000000000000000000000000000000000000000020a11171c1f212121212121212121212121212121212121212121212121212121212123303d4a5663707d8a96a39d908376695d5043362a1d1000000d1a2733404d5966737f8c99a59e92867a6d616b7784919da69a8e827569626f7b8895a1a2968a7d7165594d4134281c100400000000101c2936434f5c697683909595969d988c7e72655d6a7784909595979e978a7d7164574a3e3124170b00101c2936434f5c697683909595969d988c7e7265584c3f3225190c00000000000000000000000000000000000a16212b353e454b4e4f505152535459616565656566696d747c85909b988e84786d6155493d3125180c0000010c16202a333d464f59626c757f88929ba59f968c83796f665d534a545d677079838c969fa49b92887e756c62594f463c332a20170d04000000000000000000000007111a242d37404a535d666f79838c959fa59b92887f756c62594f4d57606a737d869099a3a1978e857b72685f554c42382d22160a00111d2936424d5862686969696969696969696969696969696969696969696862584d4236291d11000000000000000000000000030c141c242c353d454d565e666e767777777773685c5043362a1d1000131f2c3945525e6b7577777777756d645c544c443b332b231a120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a36434f5c6875818d999a9b9c988c8074685e544c48464443434345484d545e6975818d99a5b2bcb6aa9f94887d73695f574f49444241414245494f576069747e8a95a0aca3978c8074685c5044382c20140800000004111d2a36434f5c6875818d999a9b9c988b8073685d534c484544434344464a5059636f7a86929eabaa9d9185786c5f53463a2d2114080000000000000000000a16222e3a46525e6a76828d99a4aa9e93887c72675e554f4a47454546484d535c66707b87929eaaa99d9185796d6155493d3024170b0000000916222e3a46525e6975818c98a3aca1968b80756b6259514b464341414244474c535b656f79848f9ba6a89d91867a6e62564a3e32261a0e0100000914202a353e464c4f57626b6f6f6f6f6f695f534742474b4f5255585d63676b6e6f6f6e6c68635d564e453c32281e130a000000000000000c1825323f4b5865717e8b98a5a194877a6e615447525f6c7885929fa79a8e8174675b4e4134281b0e01000000000000000000000000000000000000000000020b141c23282c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e303d4a5663707d8a96a39d908376695d5043362a1d1000000c1825323e4b5864717e8a97a4a2968a7d71656976828f9ca89e9185796d606d7a8693a0a69a8e8175695d5044382c20140700000000101c2936434f5c697683909ca2a3a5988c7e72655d6a7784909da2a3a4978a7d7164574a3e3124170b00101c2936434f5c697683909ca2a3a5988c7e7265584c3f3225190c00000000000000000000000000000000030f1b27323d4750575a5b5d5e5f60615e5758585858595c626a737e8a96a095897d7265594d4034281b0f020000050e18212b343d47505a636d768089939ca69e958b82786f655c524b555e67717a848d97a0a49a91877e746b61584e453c32291f160c03000000000000000000071019232c363f49525c656f78828b959ea69c938980766d635a504c565f69727c858f98a2a2988f867c736960564d433a31261c110500121f2c3845525e6a73757575757575757575757575757575757575757575736a5e5245382c1f120000000000000000000000050d151e262e363e474f575f6770788084848484776a5d5044372a1d110013202c3946535f6c79848484847e766e665e554d453d352c241c140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734404c5965717d8995a1a8a89c91857a6f665e585552515050505154585e66707b86929da9b4afaeb0a59a8f857b7168615a54514e4d4e4f51555a6169727b86909ba6a79c91867b6f63584c4034281c1004000000010e1b2734404c5965717d8995a1a8a89c9085796f655d5854525050505152565b626b75808b97a3afa5998d8175695c5044372b1e120500000000000000000006121e2a36424e5a65717c88939ea9a4998e83797067605a565352525355585e656e78828d98a3aea3988c8175695d5145392d21140800000006121e2a35414d5964707b87929da7a79c92877d746b635c56524f4e4d4e5053585e656d76818b96a1aca2978c8075695d52463a2e22160a000000030e19232c343b404d5a66737c7c7c7c7b6f63564a3e444a50575d63696e73777a7c7c7b78746e6860574e443a2f24190e030000000000000c1926323f4c5965727f8c98a5a195887b6e615548535f6c7986929fa89b8e8275685b4e4235281b0f020000000000000000000000000000000000000000000a141d262d34383a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3d4a5663707d8a96a39d908376695d5043362a1d1000000a1723303d4956636f7c8995a2a69a8d8175696774818e9aa7a195897d70646b7885929eaa9d9185796d6054483c3023170b00000000101c2936434f5c697683909ca9afa5988c7e72655d6a7784909daaafa4978a7d7164574a3e3124170b00101c2936434f5c697683909ca9afa5988c7e7265584c3f3225190c0000000000000000000000000000000006131f2b37434e59626768696a6b6d6d6960554b4b4b4d5158626d7986929f9a8e8275695c5043362a1d1104000000060f19222b353e48515b646d77818a949da69d948a81776e645b514c555f68727b858e97a1a39990867d736a60574e443b31281e150c0200000000000000060f19222b353e48515b646e77818a949da69d948a81776d645b514c555e68717b848e97a1a39990867d736a61574e443b31281f150a000013202c3946535f6c79828282828282828282828282828282828282828282796c5f5346392c201300000000000000000000060f171f2730384048505961697179828a9191897e74695c5043362a1d1000131f2c3946525f6b76818b919189807870675f574f473e362e261e150d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824303d4955616d7985909ba7ada2968c81786f6964615f5d5d5c5d5e6064697078828c97a3aea9a3a2a5aca1978d837a726b65605d5b5a5b5c5e61666c737b848d97a2aba0968b8075695e53473b2f24180c00000000000b1824303d4955616d7985909ca7ada1968b81776f6864605e5d5d5d5d5f62666c747d87919ca8aba094897d7165594d4034281c0f03000000000000000000020e1a26313d4954606b76828c97a2aaa0958b8279726b6662605f5f5f6164697077808a949ea9a79c92877b7064584d4135291d1104000000010d1925313c48535f6a75808b96a0aaa3998f867d756d67625e5c5b5a5b5d5f63696f778089929da7a59b90857a6f64584d4135291e12060000000007111a222933404c5966727f8989897e7266594e4a4f555c62686e747a7f8487898988858079726960564c41362b1f14080000000000000d1a2633404d596673808c99a6a295887c6f62554953606d798693a0a89c8f8275695c4f4236291c0f03000000000000000000000000000000000000000005111b262f383f4447484848484848484848484848484848484848484848484848484848484848484a5663707d8a96a39d908376695d5043362a1d1000000915222f3b4855616e7b8794a1aa9d9185796c6673808c99a5a5998d8174686a7783909da9a195897c7064584c3f33271b0f03000000101c2936434f5c697683909ca9aca5988c7e72655d6a7784909daaaca4978a7d7164574a3e3124170b00101c2936434f5c697683909ca9aca5988c7e7265584c3f3225190c000000000000000000000000000000000815212e3b4753606b7375767778797a7165594c3f3f4046515e6a7784909d9d9184776b5e5145382b1f120500000000071019232c363f49525c656e78818b949ea69c938980766d635a504d566069737c868f98a2a2988f857c736960564d433a30271e140b010000000000050e18212b343d47505a636d768089939ca69e948b81786e655c524b545d67707a838d96a0a39a91877e746b61584e453c32291f160d03000013202c3946535f6c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c5f5346392c201300000000000000000008101821293139414a525a626b737b838b94958b81776d63584c4034281b0f00111e2a37434f5a646f79838d97928a8279716961595048403830271f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3945515c68737f8a959fa9a89d938a817a75706d6b6a69696a6b6d70747a828a949ea9a99f97959aa3a99f958d847d76716d6a686767686a6d72777d858d969fa9a2998f84796f63584d42362a1f130700000000000814202d3945515c68747f8a95a0aaa79d9389817a74706d6b6a69696a6c6e72777e868f99a3aea4998e83786c6055493d3024180c00000000000000000000000915212c38434f5a65707b86909aa4a79d948b837c77726f6d6c6b6c6e71757a8189929ca6a99f958b80756a5f53483c3024180c00000000000814202b37424d59646f79848e98a1aba1988f877f78736e6b68676768696c6f747a8189929ba4a79d94897e74695e53473c3025190d01000000000008101825323e4b5864717d8a968e82766a5f57575b61676d737980858b9094969694918b847b72685d52473c3025190d0100000000000e1a2734404d5a6773818d9aa6a396897c6f63564954616d7a8794a0a99c908376695c504336291d100300000000000000000000000000000000000000000b16222d38414a505454545454545454545454545454545454545454545454545454545454545454545663707d8a96a39d908376695d5043362a1d1000000714202d3a4653606c7986929faca195897c7064717e8a97a4a99c9084786c6875828e9ba8a5998c8074685c4f43372b1f1206000000101c2936434f5c697683909ca0a0a0988c7e72655d6a7784909da0a0a0978a7d7164574a3e3124170b00101c2936434f5c697683909ca0a0a0988c7e7265584c3f3225190c000000000000000000000000000000000915222f3c4855626f7b82838485868074675b4f443f3f44515d6a7784909d9f9285786b5f5245382c1f1205000000000007111a242d37404a535c666f79828c959fa59b92887f756c62594f4e57616a737d869099a3a1978e857b72685f554c423930261d130800000000040d17202a333d464f59626c757f88929ba59f958c83796f665d534a535d666f79838c959fa49b92887e756c62594f463c332a20170d0400000013202c3946535f6c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9386796c5f5346392c201300000000000000010a121a222a333b434b535c646c747c858d95988e84796f655b51463b3024180c000e1a26323e48535d67717b86909a948b837b736b625a524a41393129211810080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404c57626e78838d97a1a9a59c938c85817d7a787776767677797c80868c949da6aaa1978d88919aa3a89f968f88827d797675747475777a7d82888f979fa8a39a90877d72685d52473c30251a0e02000000000004101c2834404c57636e79848e98a1aaa59b938b85807c797877767677787a7e83899098a1aba69c92887d72675b5044382c201408000000000000000000000004101b27323d49545e69747e88929ba4a69d958e88837e7b797878797a7d81868c939ba4a8a0978d83796e64594d42372b1f14080000000000030f1a26313c47525d67727c868f99a1a9a199918a847e7a777574747576787b80858c939ba4a79e958c82776d62574c41362b1f1408000000000000000a1723303c4956626f7b889492877b71686463666c72787e858b91969ca0a2a2a19c968d84796f64584d41352a1e120600000000000e1b2834414e5b6774818e9aa7a3968a7d7063574a54616e7b8894a1aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000000f1b27333e49535b6061616161616161616161616161616161616161616161616161616161616161616163707d8a96a39d908376695d5043362a1d10000006121f2b3845515e6b7784919daaa5998c8074686f7c8996a2aca094887b6f6773808d99a6a99c9084786b5f53473b2f22160a000000101c2936434f5c6976839093939393938c7e72655d6a77849093939393938a7d7164574a3e3124170b00101c2936434f5c6976839093939393938c7e7265584c3f3225190c000000000000000000000000000000000815212e3b4754606d79868f91928f83776b60564f4c4c4e55606c7885919e9e9285786b5f5245382c1f120500000000000008121b252e38414a545d67707a838d96a0a49a91877e746b61584e4e58616b747e87919aa3a0978d847a71675e544b42382f251a0f040000030c161f29323c454e58616b747e87919aa4a0968d837a70675d544a525c656f78828b959ea59c928980766c635a50473d342b21180e050000000013202c3946535f6c798693a0a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a09386796c5f5346392c2013000000000000030b131b242c343c454d555d656e767e868f979a90867c72675d53493f352a1f1408000a16212c37414b555f69747e88929c958d857c746c645c534b433b332a221a120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a46515c67717c858f979fa6a59d97918d898785848383838486898c91979ea6a8a0988f857e889199a1a8a099938d8985838181818284868a8e949aa1a8a19991887e756b61564b41362b1f1409000000000000000c18232f3b46515c67727c868f98a0a7a59d96918c8986848483838485878a8e949aa2aaa49c948a80766b61554a3f33281c10040000000000000000000000000a16212c37424d57626c768089929aa2a7a099938e8b888685858687898d91979ea5a69f978e857b71675d52473c31261a0f030000000000000914202b36414b56606a747d878f989fa6a39c958f8a8784828181818385888c91979da5a49d958c837970665b51463b3025190e03000000000000000815212e3a4753606c798592988d837a73707072777d838a90969ca2a4a1a0a0a2a59f968b8075695e52463a2e22160900000000000f1b2835424e5b6875828e9ba8a4978a7d7164574b55626f7b8895a2aa9e9184776a5e5144372b1e11050000000000000000000000000000000000000000111e2b37434f5b656d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e707d8a96a39d908376695d5043362a1d10000003111d2a3743505d6976838f9ca9a89c9084786b6e7b8794a1aca4988c807367727e8b98a5aca094887b6f63574b3e32261a0e010000101c2936434f5c697683868686868686867e72655d6a7784868686868686867d7164574a3e3124170b00101c2936434f5c697683868686868686867e7265584c3f3225190c0000000000000000000000000000000006131f2c3845515e6a76838f9b9e93887c7168605b59595a5e67717c8894a19d9084776a5e5144382b1e12050000000000000009131c262f38424b555e68717a848e97a0a39990877d736a60574d4f59626c757e88929ba49f968c837970665d544a41362b20140900000a151e28313b444e57616a737d879099a3a1978e847b71685e554b515b646e77818a949da69d938a80776d645a51483e352b22190f06000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09386796c5f5346392c20130000000000020c151d252d363e464e575f676f77808890989d93897e746a60564b41372d23180e020005101a252f39434d58626c76808b959f978f867e766e655d554d453c342c241b130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131e2935404b555f6a737c858d959ca1a7a29d9996939290909090919295989da2a8a39d968e867c767f878f979da3a49e9995928f8e8e8e8f9092969a9fa5a39d968f877e766c63594f443a2f24190e030000000000000007131e2a35404b55606a747d868e969ca2a7a19c98959391909090909194969a9fa5a6a09a928a81786e645a4f44392e22170b0000000000000000000000000004101b26313b46505a646d76808890979ea4a49f9b9795939292929496999da2a8a29b948d857c73695f554b40362b20140900000000000000030e19242f39444e58626b747d868d959ba2a6a09b9793908f8e8e8e8f9194989ca2a5a09a938b837a71675e54493f342a1f1308000000000000000006121f2b3844515d6976828e9a958c84807d7d7e83898f959ba1a39d9894939395999f9d91867a6e62564a3e3225190d00000000000f1c2936424f5c6875828f9ca8a4988b7e7165584b55626f7c8995a2ab9e9185786b5e5145382b1f1205000000000000000000000000000000000000000013202c3946525f6c777b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7d8a96a39d908376695d5043362a1d100000000f1c2835424e5b6874818e9aa0a0a094887b6f6c7986929fa0a09b8f83776b707d8a96a0a0a0988b7f73675b4e42362a1e11050000101c2936424f5c687479797979797979797970645c69747979797979797979796f63574a3d3124170a00101c2936424f5c68747979797979797979797064584b3e3225180c0000000000000000000000000000000004101d2936424e5a67737e8a96a1998e837a726b676565676a7078838e99a4998d8174685c4f4336291d100400000000000000010a141d263039434c565f69727b858e98a1a2988f857c72695f564c505a636c768089929ca59e958b82786f665c53483d3125190c0006111c26303a434d566069737c868f99a2a2988f857c72695f564c505a636d768089939ca69d948a81786e655b52483f362c2319100700000000000013202c3946535f6c79869393939393939393939393939393939393939386796c5f5346392c201300000000000a141e272f373f485058606871798189929a9f958b81776c62584e443a2f251b110700000009131d27313c46505a646e78838d97a198908880776f675f574e463e362d251c13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18232e39434e58616a737b838a90969b9fa2a5a2a09e9d9d9c9d9e9fa1a5a4a19d98928b847c746d757d858c92989da1a4a19e9c9b9a9a9b9d9fa2a4a09c97928b857d756c645a51473d33281d13080000000000000000020d18232e39444e58626b747c848b91979b9fa3a4a29f9e9d9c9c9d9ea0a3a6a39f9a958f8881786f665c52483d33281c1106000000000000000000000000000009141f29343e48525b646d767e868d93989da2a5a3a1a09f9f9fa0a2a5a4a09c97918a837b726a61574d43392f24190e03000000000000000008131d28323c465059626b747b838a90969b9fa3a39f9d9b9a9a9b9c9ea1a4a29e9a958f88817971685f554c42382d23180d02000000000000000003101c2835414d5a66727e8a969e96908c8a898b8f949aa0a49e97918c888686898d949c978b7e72665a4e4135291c100300000000101d2936434f5c6976838f9ca9a5988c7e7265594c5663707c8996a3ac9f9285786c5f5245392c1f1306000000000000000000000000000000000000000013202c3946535f6c798688888888888888888888888888888888888888888888888888888888888888888888888d98a49d908376695d5043362a1d100000000e1a2733404d596673808c93939393938b7f736b7784919393939393877a6e6f7b8893939393938f83776a5e52463a2d21140800000e1b2733404c57626a6c6c6c6c6c6c6c6c6c685f58626a6c6c6c6c6c6c6c6c6c675e53473b2e221609000e1b2733404c57626a6c6c6c6c6c6c6c6c6c685f54483c3023170a00000000000000000000000000000000010d1a26323e4a56626e79848f9a9f958c847c7774727273767b828b959f9e93887c7064584c4033271b0e020000000000000000020b141e27313a444d57606a737c868f99a0a0978e857b71685d5148515a646d77808a939da09d948b81786e64594d4134281b0f000b17222d38424c555f68727b858e98a1a29990867c736a60574d5059626c757f88929ba59e958b82786f665c534940362d241a11070000000000000013202c3946535f6c79868686868686868686868686868686868686868686796c5f5346392c20130000000006111c2630394149515a626a727a838b939ba2988d83796f655b50463c32281e130900000000010b15202a343e48525c67717b858f9aa29a928981797168605850483f372e241a0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27323c464f58616971787f858a8f9396999b9c9e9f9fa09f9f9e9c9a9895918c87817a726a636b737a81878c9195989b9d9e9fa09f9f9e9c9a9894908c86817a736b635a52483f352b21160c0100000000000000000007121d27323c465059626a727980868b8f9396999b9d9e9f9fa09f9e9d9b9996938f8a847d766f665d544a40362c21160b000000000000000000000000000000030d18222c364049525b646c747b82888d9195999b9d9e9fa09f9e9d9b9894908b857f78716960574e453c32271d1208000000000000000000010c16202a343e475059626a71787f858a8f93979a9c9d9f9fa09f9e9d9b9996928e89837d766f675f564d433a30261c1106000000000000000000000d1925313e4a56626e7985909ba19c989696989b9fa59f99928c86807c797a7d828a939b8f82766a5d5144382b1f120600000000111d2a3743505d6a7683909daaa6998c807366594d5763707d8a97a3ac9f9386796c5f5346392d201306000000000000000000000000000000000000000013202c3946535f6c79869394949494949494949494949494949494949494949494949494949494949494949494979fa99d908376695d5043362a1d100000000c1925323f4b5864717e8686868686868683776a7683868686868686867e726d7a86868686868686867a6e6255483c2f22160900000b17232f3b4650585e5f5f5f5f5f5f5f5f5f5d5650595e5f5f5f5f5f5f5f5f5f5c554c41362b1f1206000b17232f3b4650585e5f5f5f5f5f5f5f5f5f5d564d42372c20140700000000000000000000000000000000000a16222e3a46515d68737d88919a9e958e8883817f7e8082878c949d9e958c82766b6054483c3024180b00000000000000000000020c151f28323b454e57616a747d8790939393938d847a6d61544748525b656e78818b93939393938a8075695c4f4336291c10000f1b27333f4a545e67717a848d97a0a39a90877d746a61584e4e58616b747e87919aa49f968c837970665d544a41372e241b12080000000000000000131f2c3946525f6b76797979797979797979797979797979797979797979766b5f5246392c1f13000000000b17222e38424b535b636c747c848c959da49a90867c71675d53493f342a20160c020000000000030e18222c36414b555f69737d88929ca49b938b837a726a625a514940362c2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b15202a343d464f585f676e74797e8386898c8e9091929293929291908e8b8885807b756f68605961696f767b8185888c8e90919293929291908e8b8884807b756f686159514840362d23190f0500000000000000000000000b16202a343e47505860676e747a7f83878a8d8f90919292939292908f8d8a87837e78736c645d544b42382f241a0f050000000000000000000000000000000006101a242e374049525a626970767c8185898c8f909292939292908e8b8884807a746d665f574e453c332a20150b0100000000000000000000040e18222c353e4750585f676e74797e83878a8d8f919292939292908f8c8a86827d78726c645d554d443b31281e140a00000000000000000000000915212d3a45515d68737e89939da4a5a3a3a4a59f9a948e87817b756f6d6d7178818c979285796c6053473a2e21150800000000111e2b3744515d6a7784919daaa69a8d8173675a4d5764717d8a97a4aca093867a6d6053473a2d201407000000000000000000000000000000000000000013202c3946535f6c798693a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a3a8aa9d908376695d5043362a1d100000000a1724303d4a56636f787979797979797979756a73797979797979797979716b767979797979797979786e6155483c2f221609000007131e29343e464d52535353535353535353514b474e52535353535353535353504b433a30251a0e020007131e29343e464d52535353535353535353514b443b31261b0f03000000000000000000000000000000000006121d2935404b56616c767f8890979e9994908d8c8c8d8f92989e9b948c837a70655a4f43382c2014080000000000000000000000030d162029333c454f58626b757e868686868686867a6d6154474049535c666f78828686868686868376695c4f4336291c1000111e2a37434f5b667079838c969fa09b91887e756b62594f48545f6a737d879099a0a0968d847a71675e544b42382f251c1209000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b645a4f43372a1e11000000000f1b27333f4a545d656d757e868e969ea79d92887e746a5f554b41372d23180e040000000000000006101a242f39434d57616c76808a949fa59d958c847c746b635b52483d3125190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222b343d464e555c62686e72767a7d8082838485868686858483817e7c78746f6a645d564f575e646a7074797c7f828385868686858483817e7c78746f6a645d564f473f362e241b1107000000000000000000000000040e18222c353e464e565d63696e73777a7d8082848585868686858482807d7a77726d67615a534b423930261d130800000000000000000000000000000000000008121c252e37404850585f656b7075797d808284858686868584827f7c78736e69635c554d453c332a21180e0400000000000000000000000006101a232c353e464e555c62686e73777b7e81838485868686858482807d7a76716c67615a534b433b32291f160c02000000000000000000000005111d2935404c57626d77818a93999e9f9f9d99948f89837c767069646061666f7a869195887b6f6256493d3023170a00000000121e2b3845515e6b7784919ea0a09a8e8174675b4e5865717e8b98a0a0a094877a6d6154473b2e211408000000000000000000000000000000000000000013202c3946535f6c798693a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09d908376695d5043362a1d100000000915222e3a47525d676c6c6c6c6c6c6c6c6c6b63696c6c6c6c6c6c6c6c6c68646b6c6c6c6c6c6c6c6c6c665c5145392d2014070000020d18222c353c424546464646464646464644403c424546464646464646464644403931281e13080000020d18222c353c424546464646464646464644403a32291f140a000000000000000000000000000000000000010d18242f3a454f5a646d767e868c92979a9c9a9898999b9c9995908a827a71685e53493e32271b0f04000000000000000000000000040e17212a333d465059636c7679797979797979776c6053473a414a545d6670787979797979797974685c4f4236291c1000121f2c3845525f6b78828b93939393928980766c635950474a5763707c868f939393938e857b71685f554c423930261d130a000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a52483e32261a0e00000000121e2b3744505b666f777f879098a0a09f958b81766c62584e44392f251b110600000000000000000008131d27313b45505a646e78838d97a0a09e968e867e756d64594d4135281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b343c434a51575d62666a6d70737576777879797978777674726f6c68645f59534c454c53595f64686c707375777879797978787674726f6c68635e59524c453d352d241b1209000000000000000000000000000006101a232c343c444b52585e63676b6e71737577787979797978777574716e6a66615c564f48413930271e150b01000000000000000000000000000000000000000a131c252e363e464d545a5f64696d7073757778797979787775726f6c68635d57514a433b332a21180f06000000000000000000000000000008111a232c343c434a51575d62676b6e717476777879797978777573716d6a66615b564f484139312920170d04000000000000000000000000010d18242f3a46505b656f7881888e919292918d88837d77716b645e5853545e6975818e938a7d7164584b3e3225190c00000000121f2c3945525f6b788592939393938e8275685b4e5865727e8c9393939393887b6e6155483b2e221508000000000000000000000000000000000000000013202c3946535f6c7986939393939393939393939393939393939393939393939393939393939393939393939393939393908376695d5043362a1d1000000006121e2a36414c555c5f5f5f5f5f5f5f5f5f5e595e5f5f5f5f5f5f5f5f5f5d5a5f5f5f5f5f5f5f5f5f5f5b544b4035291d110500000006101a232a313639393939393939393939383431363939393939393939393938342e271f160c0200000006101a232a31363939393939393939393938342f2820170d030000000000000000000000000000000000000007121e29333e48525b646c747b81868a8e9092939392918f8d89847e7870685f564c42372c21160a0000000000000000000000000000050f18212b343e47515a646b6c6c6c6c6c6c6c6b655b50443838424b545e676c6c6c6c6c6c6c6c6a62574c4033271b0e00121f2c3845525f6b788586868686868680776d645a51473e4a5763707d868686868686857c72695f564d433a30271e140b01000000000000000000000a16212c3740484f52535353535353535353535353535353535353535353524f4840372c21160a0000000013202c3946535f6c7881899193939393938d83796f655a50463c32271d130900000000000000000000010b151f29343e48525c66717b858f939393939390877f76695d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222a323940464c51565a5e616466686a6b6b6c6c6c6c6b6a686663605c58534e48413b41484e53585c606366686a6b6c6c6c6c6b6a686663605c57534d47413a332b231b12090000000000000000000000000000000008111a222a323940474c52575b5f626567696a6b6c6c6c6c6b6a696765625e5a56514b453e372f271e150c030000000000000000000000000000000000000000010a131c242c343b42494e54595d616467696a6b6c6c6c6b6a686663605c57524c463f38312921180f060000000000000000000000000000000008111a222a323940464c51565b5f626567696b6b6c6c6c6b6a696764615e5a55504a443e372f271f170e05000000000000000000000000000007131e29343f49535d666f767d8284868684817d77726c666059534d474d5965727e868686807366594d4033271a0d0000000013202c3946535f6c79868686868686868275695c4f59667380868686868686867b6f6255493c2f221609000000000000000000000000000000000000000013202c3946535f6c7986868686868686868686868686868686868686868686868686868686868686868686868686868686868376695d5043362a1d10000000020e19252f3a434b50535353535353535353524e51535353535353535353514f52535353535353535353504a42392e24180d01000000000811192025292c2c2c2c2c2c2c2c2c2c2b28262a2c2c2c2c2c2c2c2c2c2c2b28231d150d0400000000000811192025292c2c2c2c2c2c2c2c2c2c2b28241d160e050000000000000000000000000000000000000000010c17222c364049525a626970757a7e8184858686868583817d78736d665e564d443a30251b1005000000000000000000000000000000060f19222c353f48525a5f5f5f5f5f5f5f5f5f5b53493f333039424c555c5f5f5f5f5f5f5f5f5e5850463b2f23170b00121f2b3845515e6a7679797979797979776e655b52483f3d4a56636f7879797979797979736a60574e443b31281e150c02000000000000000000000005101a252e373e434646464646464646464646464646464646464646464646433e372e251a10050000000013202c3946535f6c798686868686868686867b71675d53483e342a20160b010000000000000000000000030d18222c36404a555f69737d868686868686868684776a5d5044372a1d1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101820272e353b40454a4e5255575a5c5d5e5f5f5f5f5f5e5d5b595754504c47423c3630363d42474c5054575a5c5d5e5f5f5f5f5e5d5b595653504c47423c362f282119110900000000000000000000000000000000000008101820282f353b41464b4f5255585a5c5d5e5f5f5f5f5f5e5c5a5855524e4a453f3a332c251d150c0300000000000000000000000000000000000000000000010a121a222a31373d43484d5154575a5c5e5f5f5f5f5f5d5c5a5753504b46413b352e271f170f0600000000000000000000000000000000000008101820272e353b40464a4f5256585b5d5e5f5f5f5f5f5e5c5a5855514e49443f39332c251d150d05000000000000000000000000000000020d18232d37414b545d656c71757879797775716c66615b554e48423d4a56636f78797979797266594d4033271a0d00000000131f2c3946525f6b76797979797979797973685b4f5865717979797979797979786e6155483c2f2216090000000000000000000000000000000000000000131f2c3946525f6b7679797979797979797979797979797979797979797979797979797979797979797979797979797979797974685c4f4336291d100000000008131e2831393f44464646464646464646454245464646464646464646454346464646464646464646443f3830271d1207000000000000070e14191d1f2020202020202020201f1c1a1d1f2020202020202020201f1c17120b0400000000000000070e14191d1f2020202020202020201f1c18120c040000000000000000000000000000000000000000000005101a242e37404850585e656a6e72757778797979787674716d68625c544d443b32281e1409000000000000000000000000000000000007101a232d3640484e5253535353535353524f4941372d27303a434b505353535353535353524d463e34291e130700101d2936424e59646b6c6c6c6c6c6c6c6c665c534940363a47525d676c6c6c6c6c6c6c6c6961584e453c32291f160c030000000000000000000000000009131c252c3237393939393939393939393939393939393939393939393937322c251c13090000000000131f2c3946525f6b7679797979797979797974695f554b41372c22180e040000000000000000000000000006101a242e39434d57616b7579797979797979797974695c5043362a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151d23292f353a3e4245484b4d4f5051525253535251504f4d4a4744403b37312b252b31373c4044474b4d4f51525253535251504f4d4a47443f3b36312b251e170f070000000000000000000000000000000000000000070e161d242a30353a3f4346494c4e4f5152525353525251504e4c4946423e39342e28221a130b03000000000000000000000000000000000000000000000000000910181f262c32373c4145484b4d4f515253535252514f4d4a47443f3b35302a231c150d050000000000000000000000000000000000000000060e151c23292f353a3e4346494c4e50515253535252514f4e4b4845423d39332e28211a130b03000000000000000000000000000000000006111b263039424b535a6065696b6c6c6b6865605b554f4a433d373a47525d676c6c6c6c6c6960554a3d3125180c00000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6a62574b545f686c6c6c6c6c6c6c6c6c665c5145392d2014070000000000000000000000000000000000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584c4034271b0e00000000010c161f272e343839393939393939393939363839393939393939393938373939393939393939393937332e261e150b000000000000000003090d111213131313131313131312100e1113131313131313131313120f0c070000000000000000000003090d111213131313131313131312100c070100000000000000000000000000000000000000000000000008121c252e363f464d53595e6266686a6c6c6c6c6b6a6764615c57514a433b322920160c0200000000000000000000000000000000000008111b242e363d43454646464646464646433e372f261e2831393f44464646464646464645423c352c22180d02000e1a26313d48525a5f5f5f5f5f5f5f5f5f5b544a41372e36414c555c5f5f5f5f5f5f5f5f5e584f463c332a20170d040000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a26211a130a010000000000111e2a37434f5a646b6c6c6c6c6c6c6c6c6c6a62584d43392f251b100600000000000000000000000000000008121c27313b454f5a636b6c6c6c6c6c6c6c6c6c6a62584c4034281b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b12181e24292e3236393c3e414244454546464645454442403e3b3834302b26201a20262b3034383b3e4042444546464646454442403e3b37332f2a25201a130c0500000000000000000000000000000000000000000000040c12191f252a2e33363a3d3f4143444546464646454443413f3d3936322d28231d17100901000000000000000000000000000000000000000000000000000000060d141b21262c3035383c3f41434445464646454443403e3b37332f2a241f18110a0300000000000000000000000000000000000000000000040b12181e24292e32363a3d3f42434545464646454443413f3c3935312d28221d16100901000000000000000000000000000000000000000a141e27303941484f55595c5e5f5f5e5c59544f4a443e38322c36414c555c5f5f5f5f5f5d574e44392d211509000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5e5850454d565d5f5f5f5f5f5f5f5f5f5b544b4035291d110500000000000000000000000000000000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5950463b3024180c0000000000040d151d23282b2c2c2c2c2c2c2c2c2c2c2a2c2c2c2c2c2c2c2c2c2c2b2a2c2c2c2c2c2c2c2c2c2c2b27221c140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c252d343b42484d5256595c5e5f5f5f5f5e5d5b5855504b453f38312920170e04000000000000000000000000000000000000000009121b242c323639393939393939393937332d251d161f272e343839393939393939393936312a231a100600000915202b3640484e5253535353535353524f4a42382f252f3a434b505353535353535353514d463d342a21170e0500000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020201f1e1a161009010000000000000e1a26323e48525a5f5f5f5f5f5f5f5f5f5f5e5850463c31271d130900000000000000000000000000000000010b151f29333d4851595e5f5f5f5f5f5f5f5f5f5e5950463b3024180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d13181d2226292d2f3234363738393939393938373534312f2b28241f1a140f151a1f24282c2f32343637383939393938373533312e2b27231f1a140e080200000000000000000000000000000000000000000000000001080e13191e22262a2d303234363738393939393838363533302d2a26221d18120c0500000000000000000000000000000000000000000000000000000000000003090f151b2024292c2f323436383939393938373634312f2b27231e19130d070000000000000000000000000000000000000000000000000000070d13181d22262a2e3033353738393939393837363432302d2925211c17110b05000000000000000000000000000000000000000000020c151e272f373e44494d5052535352504c48443e39332d27252f3a434b505353535353514c453c32271c1105000000000a16212c3740484f525353535353535353524d463e444c51535353535353535353504a42392e24180d0100000000000000000000000000000000000000000a16212c3740484f52535353535353535353535353535353535353535353535353535353535353535353535353535353535353524e473e342a1f1307000000000000030b12171c1e2020202020202020201f1e1f2020202020202020201f1e1f2020202020202020201e1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131b222a31373c42464a4d4f515253535352504e4c4844403a342e261f170e050000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2a27221b130d151d23282b2c2c2c2c2c2c2c2c2c292520191108000000040f1a242e363d43454646464646464646433f382f261e2831393f44464646464646464645413b342b22180f0500000000000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313110e0a0500000000000000000a16212c3740484f52535353535353535353524d463e342a20150b010000000000000000000000000000000000030d17222c363f484e52535353535353535353524e473e352a1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c11161a1d20232527292a2b2c2c2c2c2c2b2a292725221f1c18130e0904090e13181c1f222527292b2c2c2c2c2c2b2a292725221f1b17130e09030000000000000000000000000000000000000000000000000000000002080d12161a1e21242628292b2c2c2c2c2c2c2b2a282624211e1a16110c0601000000000000000000000000000000000000000000000000000000000000000000040a0f14181c202326282a2b2c2c2c2c2c2b292725221f1b17120d08020000000000000000000000000000000000000000000000000000000002070d12161a1e212426282a2b2c2c2c2c2c2b2a282623201d1915100b06000000000000000000000000000000000000000000000000030c151d252c33383d41434546464543403c38332d28221c1e2831393f44464646464645413b332a20160b000000000005101a252e373e4346464646464646464645423c343a4044464646464646464646443f3830271d120700000000000000000000000000000000000000000005101a252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464645423c352c22180d020000000000000000060b0f12131313131313131313131112131313131313131313121113131313131313131313120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181f262b31363a3d404344454646464544423f3c38342f29231c150d05000000000000000000000000000000000000000000000000080f151a1e1f20202020202020201e1b161009030b12171c1e20202020202020201f1d19140e07000000000008121b242c323639393939393939393937332d261d161f272e343839393939393939393835302a22191006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a252e373e434646464646464646464645423c342c22180e040000000000000000000000000000000000000005101a242d363d424546464646464646464645423c352c23180e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090d111416191b1c1e1e1f2020201f1f1e1c1a1816130f0b070300000003070c101316191b1c1e1f1f20201f1f1e1c1a1815120f0b0702000000000000000000000000000000000000000000000000000000000000000001060a0e111417191b1d1e1f1f20201f1f1e1d1b191714110e0a05000000000000000000000000000000000000000000000000000000000000000000000000000003080c101416191b1d1e1f2020201f1e1d1b1916130f0b0702000000000000000000000000000000000000000000000000000000000000000001060a0e1215171a1c1d1e1f2020201f1e1d1b191714110d0905000000000000000000000000000000000000000000000000000000030b131a21272c313437383939383634302c27221c1611161f272e343839393939393835302921180e0400000000000009131c252c32373939393939393939393836312a2f353839393939393939393937332e261e150b000000000000000000000000000000000000000000000009131c252c3237393939393939393939393939393939393939393939393939393939393939393939393939393939393939393936312b231a1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a20252a2e313436383939393938373533302c28231e18110a030000000000000000000000000000000000000000000000000000040a0e11131313131313131313110f0a05000000060b0f12131313131313131312110d09030000000000000009121a21262a2c2c2c2c2c2c2c2c2c2b27221c140d151d23282b2c2c2c2c2c2c2c2c2c29251f1810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c3237393939393939393939393836312a221a100600000000000000000000000000000000000000000008121b242b3236393939393939393939393936312b231a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070a0c0e101112121313131312110f0e0c09060300000000000000000003070a0c0e1011121313131312110f0e0c09060300000000000000000000000000000000000000000000000000000000000000000000000000000205080b0d0f101112131313131211100f0d0b0805010000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070a0d0f1011121313131211100e0c09060300000000000000000000000000000000000000000000000000000000000000000000000000000205080b0d0f1112121313131211100f0d0a080401000000000000000000000000000000000000000000000000000000000000010910161c2125282a2c2c2c2c2a2724201b16110b050d151d23282b2c2c2c2c2c2c29241e170f0600000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c29251f24292b2c2c2c2c2c2c2c2c2c2b27221c140c030000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2a2520191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f14191e212527292b2c2c2c2c2c2a292623201c17120d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1e1f20202020202020201e1b17110a030b12171c1e20202020202020201f1d19140d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131a21262a2c2c2c2c2c2c2c2c2c2c2c29251f181007000000000000000000000000000000000000000000000009121a21262a2c2c2c2c2c2c2c2c2c2c2c2a2620191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1015181b1e1f20201f1d1b1814100b050000030b12171c1e20202020201f1c19130d05000000000000000000010910161a1e1f20202020202020201f1d1914181c1f2020202020202020201e1b17110a0200000000000000000000000000000000000000000000000000010910161a1e1f2020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d1a140e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1215181b1d1e1f2020201f1e1c1a1714100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0e11131313131313131313120f0b06000000060b0f12131313131313131312100d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010910161a1e1f2020202020202020201f1d19140e0600000000000000000000000000000000000000000000000000080f151a1e1f2020202020202020201f1d1a150e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0f1112131312110f0c0804000000000000060b0f12131313131312100d0802000000000000000000000000050a0e1113131313131313131312110d090c1012131313131313131313120f0b060000000000000000000000000000000000000000000000000000000000050a0e111313131313131313131313131313131313131313131313131313131313131313131313131313131313131313110d090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090c0e10121313131312110f0d0b080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e111313131313131313131312110d0903000000000000000000000000000000000000000000000000000000040a0e111313131313131313131313110e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + offset: 0 + size: 0 + path: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -667331979, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: LiberationSans SDF + m_EditorClassIdentifier: + hashCode: 231247347 + material: {fileID: 2180264} + materialHashCode: -1183942120 + fontAssetType: 1 + m_fontInfo: + Name: Liberation Sans + PointSize: 86 + Scale: 1 + CharacterCount: 250 + LineHeight: 98.90625 + Baseline: 0 + Ascender: 77.84375 + CapHeight: 59.1875 + Descender: -18.21875 + CenterLine: 0 + SuperscriptOffset: 77.84375 + SubscriptOffset: -12.261719 + SubSize: 0.5 + Underline: -12.261719 + UnderlineThickness: 6.298828 + strikethrough: 23.675 + strikethroughThickness: 0 + TabWidth: 239.0625 + Padding: 9 + AtlasWidth: 1024 + AtlasHeight: 1024 + atlas: {fileID: 2846298} + m_glyphInfoList: + - id: 32 + x: 10 + y: 1033 + width: 23.90625 + height: 96.0625 + xOffset: 0 + yOffset: 77.84375 + xAdvance: 23.90625 + scale: 1 + - id: 33 + x: 1004 + y: 619 + width: 8.3125 + height: 59.15625 + xOffset: 7.75 + yOffset: 59.1875 + xAdvance: 23.90625 + scale: 1 + - id: 34 + x: 336 + y: 10 + width: 23.21875 + height: 18.59375 + xOffset: 3.625 + yOffset: 59.1875 + xAdvance: 30.53125 + scale: 1 + - id: 35 + x: 426 + y: 611 + width: 47.03125 + height: 58.84375 + xOffset: 0.375 + yOffset: 58.84375 + xAdvance: 47.84375 + scale: 1 + - id: 36 + x: 164 + y: 361 + width: 45.5 + height: 69.625 + xOffset: 0.90625 + yOffset: 63.6875 + xAdvance: 47.84375 + scale: 1 + - id: 37 + x: 405 + y: 953 + width: 70.34375 + height: 60.15625 + xOffset: 3.0625 + yOffset: 59.6875 + xAdvance: 76.46875 + scale: 1 + - id: 38 + x: 383 + y: 779 + width: 53 + height: 60.34375 + xOffset: 3 + yOffset: 59.53125 + xAdvance: 57.375 + scale: 1 + - id: 39 + x: 796 + y: 234 + width: 7.71875 + height: 18.59375 + xOffset: 4.34375 + yOffset: 59.1875 + xAdvance: 16.40625 + scale: 1 + - id: 40 + x: 146 + y: 738 + width: 22.78125 + height: 80.125 + xOffset: 5.3125 + yOffset: 62.34375 + xAdvance: 28.625 + scale: 1 + - id: 41 + x: 165 + y: 450 + width: 22.8125 + height: 80.125 + xOffset: 0.5 + yOffset: 62.34375 + xAdvance: 28.625 + scale: 1 + - id: 42 + x: 807 + y: 42 + width: 30.75 + height: 30.1875 + xOffset: 1.375 + yOffset: 59.1875 + xAdvance: 33.46875 + scale: 1 + - id: 43 + x: 725 + y: 422 + width: 41.78125 + height: 42.0625 + xOffset: 4.1875 + yOffset: 49.65625 + xAdvance: 50.21875 + scale: 1 + - id: 44 + x: 569 + y: 889 + width: 8.4375 + height: 20.1875 + xOffset: 7.71875 + yOffset: 9.21875 + xAdvance: 23.90625 + scale: 1 + - id: 45 + x: 764 + y: 15 + width: 21 + height: 6.71875 + xOffset: 3.8125 + yOffset: 26.21875 + xAdvance: 28.625 + scale: 1 + - id: 46 + x: 558 + y: 710 + width: 8.1875 + height: 9.1875 + xOffset: 7.84375 + yOffset: 9.21875 + xAdvance: 23.90625 + scale: 1 + - id: 47 + x: 383 + y: 667 + width: 23.90625 + height: 63.15625 + xOffset: 0 + yOffset: 62.34375 + xAdvance: 23.90625 + scale: 1 + - id: 48 + x: 787 + y: 475 + width: 41.09375 + height: 60.90625 + xOffset: 3.34375 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 49 + x: 321 + y: 386 + width: 37.0625 + height: 59.15625 + xOffset: 6.53125 + yOffset: 59.1875 + xAdvance: 47.84375 + scale: 1 + - id: 50 + x: 962 + y: 298 + width: 39.1875 + height: 60.0625 + xOffset: 4.3125 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 51 + x: 908 + y: 380 + width: 40.78125 + height: 60.90625 + xOffset: 3.25 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 52 + x: 378 + y: 386 + width: 43.34375 + height: 59.15625 + xOffset: 1.96875 + yOffset: 59.1875 + xAdvance: 47.84375 + scale: 1 + - id: 53 + x: 441 + y: 386 + width: 40.78125 + height: 60 + xOffset: 3.4375 + yOffset: 59.1875 + xAdvance: 47.84375 + scale: 1 + - id: 54 + x: 339 + y: 48 + width: 39.6875 + height: 60.90625 + xOffset: 4.34375 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 55 + x: 501 + y: 386 + width: 39.09375 + height: 59.15625 + xOffset: 4.40625 + yOffset: 59.1875 + xAdvance: 47.84375 + scale: 1 + - id: 56 + x: 968 + y: 378 + width: 40.34375 + height: 60.90625 + xOffset: 3.71875 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 57 + x: 398 + y: 54 + width: 39.71875 + height: 60.90625 + xOffset: 4.03125 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 58 + x: 941 + y: 175 + width: 8.1875 + height: 45.4375 + xOffset: 7.84375 + yOffset: 45.4375 + xAdvance: 23.90625 + scale: 1 + - id: 59 + x: 800 + y: 158 + width: 8.4375 + height: 56.4375 + xOffset: 7.71875 + yOffset: 45.4375 + xAdvance: 23.90625 + scale: 1 + - id: 60 + x: 422 + y: 465 + width: 41.78125 + height: 43.65625 + xOffset: 4.21875 + yOffset: 50.15625 + xAdvance: 50.21875 + scale: 1 + - id: 61 + x: 847 + y: 413 + width: 41.78125 + height: 27.71875 + xOffset: 4.1875 + yOffset: 42.1875 + xAdvance: 50.21875 + scale: 1 + - id: 62 + x: 483 + y: 465 + width: 41.78125 + height: 43.65625 + xOffset: 4.21875 + yOffset: 50.15625 + xAdvance: 50.21875 + scale: 1 + - id: 63 + x: 848 + y: 460 + width: 41.09375 + height: 60.0625 + xOffset: 3.5 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 64 + x: 10 + y: 939 + width: 73.125 + height: 74.1875 + xOffset: 6.75 + yOffset: 62.34375 + xAdvance: 87.3125 + scale: 1 + - id: 65 + x: 751 + y: 871 + width: 57.03125 + height: 59.15625 + xOffset: 0.15625 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 66 + x: 939 + y: 619 + width: 45.75 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 67 + x: 825 + y: 782 + width: 54.46875 + height: 60.90625 + xOffset: 4.34375 + yOffset: 60.0625 + xAdvance: 62.09375 + scale: 1 + - id: 68 + x: 808 + y: 703 + width: 50.9375 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 62.09375 + scale: 1 + - id: 69 + x: 492 + y: 707 + width: 46.59375 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 70 + x: 725 + y: 484 + width: 42.03125 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 52.53125 + scale: 1 + - id: 71 + x: 593 + y: 809 + width: 56.15625 + height: 60.90625 + xOffset: 4.3125 + yOffset: 60.0625 + xAdvance: 66.90625 + scale: 1 + - id: 72 + x: 947 + y: 698 + width: 48.03125 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 62.09375 + scale: 1 + - id: 73 + x: 571 + y: 56 + width: 8.03125 + height: 59.15625 + xOffset: 7.90625 + yOffset: 59.1875 + xAdvance: 23.90625 + scale: 1 + - id: 74 + x: 655 + y: 66 + width: 35.28125 + height: 60 + xOffset: 1.34375 + yOffset: 59.1875 + xAdvance: 43 + scale: 1 + - id: 75 + x: 682 + y: 875 + width: 49.34375 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 76 + x: 514 + y: 56 + width: 37.90625 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 47.84375 + scale: 1 + - id: 77 + x: 828 + y: 862 + width: 57.53125 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 71.625 + scale: 1 + - id: 78 + x: 315 + y: 671 + width: 48.03125 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 62.09375 + scale: 1 + - id: 79 + x: 305 + y: 779 + width: 58.71875 + height: 60.90625 + xOffset: 4.0625 + yOffset: 60.0625 + xAdvance: 66.90625 + scale: 1 + - id: 80 + x: 670 + y: 572 + width: 45.75 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 81 + x: 10 + y: 843 + width: 58.71875 + height: 76.3125 + xOffset: 4.0625 + yOffset: 60.0625 + xAdvance: 66.90625 + scale: 1 + - id: 82 + x: 666 + y: 730 + width: 51.0625 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 62.09375 + scale: 1 + - id: 83 + x: 878 + y: 701 + width: 49.5 + height: 60.90625 + xOffset: 3.875 + yOffset: 60.0625 + xAdvance: 57.375 + scale: 1 + - id: 84 + x: 600 + y: 651 + width: 48.625 + height: 59.15625 + xOffset: 1.90625 + yOffset: 59.1875 + xAdvance: 52.53125 + scale: 1 + - id: 85 + x: 668 + y: 651 + width: 48.84375 + height: 60 + xOffset: 6.625 + yOffset: 59.1875 + xAdvance: 62.09375 + scale: 1 + - id: 86 + x: 749 + y: 792 + width: 56.59375 + height: 59.15625 + xOffset: 0.375 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 87 + x: 305 + y: 954 + width: 80.5 + height: 59.15625 + xOffset: 0.375 + yOffset: 59.1875 + xAdvance: 81.15625 + scale: 1 + - id: 88 + x: 899 + y: 781 + width: 53.625 + height: 59.15625 + xOffset: 1.90625 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 89 + x: 593 + y: 730 + width: 53.59375 + height: 59.15625 + xOffset: 1.875 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 90 + x: 872 + y: 622 + width: 47.125 + height: 59.15625 + xOffset: 2.71875 + yOffset: 59.1875 + xAdvance: 52.53125 + scale: 1 + - id: 91 + x: 188 + y: 758 + width: 17.09375 + height: 80.15625 + xOffset: 6.125 + yOffset: 62.34375 + xAdvance: 23.90625 + scale: 1 + - id: 92 + x: 557 + y: 624 + width: 23.90625 + height: 63.15625 + xOffset: 0 + yOffset: 62.34375 + xAdvance: 23.90625 + scale: 1 + - id: 93 + x: 455 + y: 773 + width: 17.0625 + height: 80.15625 + xOffset: 0.65625 + yOffset: 62.34375 + xAdvance: 23.90625 + scale: 1 + - id: 94 + x: 964 + y: 248 + width: 39.53125 + height: 30.90625 + xOffset: 0.40625 + yOffset: 59.1875 + xAdvance: 40.34375 + scale: 1 + - id: 95 + x: 894 + y: 265 + width: 50.09375 + height: 5.46875 + xOffset: -1.3125 + yOffset: -11.625 + xAdvance: 47.84375 + scale: 1 + - id: 96 + x: 807 + y: 10 + width: 17.8125 + height: 12.875 + xOffset: 4.4375 + yOffset: 63.34375 + xAdvance: 28.625 + scale: 1 + - id: 97 + x: 99 + y: 12 + width: 44.1875 + height: 47.125 + xOffset: 3.625 + yOffset: 46.28125 + xAdvance: 47.84375 + scale: 1 + - id: 98 + x: 456 + y: 135 + width: 38.6875 + height: 63.15625 + xOffset: 5.53125 + yOffset: 62.34375 + xAdvance: 47.84375 + scale: 1 + - id: 99 + x: 163 + y: 12 + width: 37.0625 + height: 47.125 + xOffset: 3.625 + yOffset: 46.28125 + xAdvance: 43 + scale: 1 + - id: 100 + x: 485 + y: 528 + width: 38.65625 + height: 63.15625 + xOffset: 3.59375 + yOffset: 62.34375 + xAdvance: 47.84375 + scale: 1 + - id: 101 + x: 220 + y: 12 + width: 40.34375 + height: 47.125 + xOffset: 3.625 + yOffset: 46.28125 + xAdvance: 47.84375 + scale: 1 + - id: 102 + x: 632 + y: 145 + width: 22.8125 + height: 62.21875 + xOffset: 1.1875 + yOffset: 62.25 + xAdvance: 23.90625 + scale: 1 + - id: 103 + x: 514 + y: 135 + width: 38.65625 + height: 64 + xOffset: 3.59375 + yOffset: 46.15625 + xAdvance: 47.84375 + scale: 1 + - id: 104 + x: 674 + y: 145 + width: 36.28125 + height: 62.3125 + xOffset: 5.9375 + yOffset: 62.34375 + xAdvance: 47.84375 + scale: 1 + - id: 105 + x: 722 + y: 228 + width: 7.5625 + height: 62.3125 + xOffset: 5.75 + yOffset: 62.34375 + xAdvance: 19.09375 + scale: 1 + - id: 106 + x: 558 + y: 777 + width: 15.40625 + height: 80.15625 + xOffset: -2.125 + yOffset: 62.34375 + xAdvance: 19.09375 + scale: 1 + - id: 107 + x: 543 + y: 542 + width: 37.34375 + height: 62.3125 + xOffset: 5.78125 + yOffset: 62.34375 + xAdvance: 43 + scale: 1 + - id: 108 + x: 730 + y: 146 + width: 7.5625 + height: 62.3125 + xOffset: 5.78125 + yOffset: 62.34375 + xAdvance: 19.09375 + scale: 1 + - id: 109 + x: 669 + y: 809 + width: 60.25 + height: 46.28125 + xOffset: 5.6875 + yOffset: 46.28125 + xAdvance: 71.625 + scale: 1 + - id: 110 + x: 544 + y: 476 + width: 36.53125 + height: 46.28125 + xOffset: 5.6875 + yOffset: 46.28125 + xAdvance: 47.84375 + scale: 1 + - id: 111 + x: 902 + y: 313 + width: 40.59375 + height: 47.125 + xOffset: 3.59375 + yOffset: 46.28125 + xAdvance: 47.84375 + scale: 1 + - id: 112 + x: 263 + y: 476 + width: 38.6875 + height: 64.0625 + xOffset: 5.53125 + yOffset: 46.25 + xAdvance: 47.84375 + scale: 1 + - id: 113 + x: 335 + y: 212 + width: 38.71875 + height: 64.125 + xOffset: 3.59375 + yOffset: 46.28125 + xAdvance: 47.84375 + scale: 1 + - id: 114 + x: 796 + y: 272 + width: 21.5 + height: 46.28125 + xOffset: 5.6875 + yOffset: 46.28125 + xAdvance: 28.625 + scale: 1 + - id: 115 + x: 837 + y: 268 + width: 37.5 + height: 47 + xOffset: 2.375 + yOffset: 46.15625 + xAdvance: 43 + scale: 1 + - id: 116 + x: 766 + y: 80 + width: 21.9375 + height: 56.25 + xOffset: 1.28125 + yOffset: 55.625 + xAdvance: 23.90625 + scale: 1 + - id: 117 + x: 807 + y: 92 + width: 36.53125 + height: 46.28125 + xOffset: 5.5625 + yOffset: 45.4375 + xAdvance: 47.84375 + scale: 1 + - id: 118 + x: 600 + y: 393 + width: 42.4375 + height: 45.4375 + xOffset: 0.28125 + yOffset: 45.4375 + xAdvance: 43 + scale: 1 + - id: 119 + x: 600 + y: 889 + width: 62.4375 + height: 45.4375 + xOffset: -0.15625 + yOffset: 45.4375 + xAdvance: 62.09375 + scale: 1 + - id: 120 + x: 662 + y: 393 + width: 41.09375 + height: 45.4375 + xOffset: 0.9375 + yOffset: 45.4375 + xAdvance: 43 + scale: 1 + - id: 121 + x: 663 + y: 489 + width: 42.625 + height: 63.28125 + xOffset: 0.1875 + yOffset: 45.4375 + xAdvance: 43 + scale: 1 + - id: 122 + x: 828 + y: 178 + width: 35.21875 + height: 45.4375 + xOffset: 3.46875 + yOffset: 45.4375 + xAdvance: 43 + scale: 1 + - id: 123 + x: 987 + y: 933 + width: 25.78125 + height: 80.15625 + xOffset: 1.40625 + yOffset: 62.34375 + xAdvance: 28.71875 + scale: 1 + - id: 124 + x: 229 + y: 371 + width: 6.96875 + height: 80.53125 + xOffset: 7.65625 + yOffset: 62.34375 + xAdvance: 22.34375 + scale: 1 + - id: 125 + x: 216 + y: 79 + width: 25.71875 + height: 80.15625 + xOffset: 1.40625 + yOffset: 62.34375 + xAdvance: 28.71875 + scale: 1 + - id: 126 + x: 663 + y: 459 + width: 42.5 + height: 10.65625 + xOffset: 3.84375 + yOffset: 33.90625 + xAdvance: 50.21875 + scale: 1 + - id: 160 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 23.90625 + scale: 1 + - id: 161 + x: 710 + y: 66 + width: 8.3125 + height: 59.15625 + xOffset: 10.15625 + yOffset: 45.4375 + xAdvance: 28.625 + scale: 1 + - id: 162 + x: 457 + y: 55 + width: 37.09375 + height: 60.46875 + xOffset: 5.65625 + yOffset: 59.1875 + xAdvance: 47.84375 + scale: 1 + - id: 163 + x: 600 + y: 537 + width: 43.9375 + height: 60.0625 + xOffset: 2.40625 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 164 + x: 883 + y: 182 + width: 38.34375 + height: 38.40625 + xOffset: 4.71875 + yOffset: 47.84375 + xAdvance: 47.84375 + scale: 1 + - id: 165 + x: 736 + y: 642 + width: 48.0625 + height: 59.15625 + xOffset: -0.09375 + yOffset: 59.1875 + xAdvance: 47.84375 + scale: 1 + - id: 166 + x: 255 + y: 371 + width: 6.96875 + height: 80.53125 + xOffset: 7.65625 + yOffset: 62.34375 + xAdvance: 22.34375 + scale: 1 + - id: 167 + x: 191 + y: 559 + width: 38.15625 + height: 69.53125 + xOffset: 4.8125 + yOffset: 62.34375 + xAdvance: 47.84375 + scale: 1 + - id: 168 + x: 735 + y: 313 + width: 23.40625 + height: 7.71875 + xOffset: 1.875 + yOffset: 58.9375 + xAdvance: 28.625 + scale: 1 + - id: 169 + x: 401 + y: 873 + width: 60.71875 + height: 60.71875 + xOffset: 1.28125 + yOffset: 60.0625 + xAdvance: 63.375 + scale: 1 + - id: 170 + x: 982 + y: 881 + width: 31.03125 + height: 32.78125 + xOffset: 1.0625 + yOffset: 60.15625 + xAdvance: 31.84375 + scale: 1 + - id: 171 + x: 644 + y: 13 + width: 40.84375 + height: 33.5625 + xOffset: 3.46875 + yOffset: 39.5 + xAdvance: 47.84375 + scale: 1 + - id: 172 + x: 398 + y: 10 + width: 41.78125 + height: 24.09375 + xOffset: 4.1875 + yOffset: 31.6875 + xAdvance: 50.21875 + scale: 1 + - id: 173 + x: 955 + y: 87 + width: 21 + height: 6.71875 + xOffset: 3.8125 + yOffset: 26.21875 + xAdvance: 28.625 + scale: 1 + - id: 174 + x: 225 + y: 779 + width: 60.71875 + height: 60.71875 + xOffset: 1.28125 + yOffset: 60.0625 + xAdvance: 63.375 + scale: 1 + - id: 175 + x: 894 + y: 290 + width: 48.9375 + height: 3.9375 + xOffset: -0.71875 + yOffset: 64.9375 + xAdvance: 47.5 + scale: 1 + - id: 176 + x: 912 + y: 43 + width: 24.09375 + height: 23.9375 + xOffset: 5.09375 + yOffset: 60.0625 + xAdvance: 34.40625 + scale: 1 + - id: 177 + x: 970 + y: 458 + width: 41.78125 + height: 51.1875 + xOffset: 2.71875 + yOffset: 51.21875 + xAdvance: 47.1875 + scale: 1 + - id: 178 + x: 863 + y: 123 + width: 25.28125 + height: 36 + xOffset: 1.71875 + yOffset: 59.6875 + xAdvance: 28.625 + scale: 1 + - id: 179 + x: 599 + y: 10 + width: 25.84375 + height: 36.53125 + xOffset: 1.125 + yOffset: 59.6875 + xAdvance: 28.625 + scale: 1 + - id: 180 + x: 844 + y: 10 + width: 17.8125 + height: 12.875 + xOffset: 3 + yOffset: 63.34375 + xAdvance: 28.625 + scale: 1 + - id: 181 + x: 972 + y: 777 + width: 41.6875 + height: 63.28125 + xOffset: 5.875 + yOffset: 45.4375 + xAdvance: 49.5625 + scale: 1 + - id: 182 + x: 198 + y: 179 + width: 39.15625 + height: 70.25 + xOffset: 3.34375 + yOffset: 59.1875 + xAdvance: 46.1875 + scale: 1 + - id: 183 + x: 857 + y: 42 + width: 8.1875 + height: 9.25 + xOffset: 10.1875 + yOffset: 27.96875 + xAdvance: 28.625 + scale: 1 + - id: 184 + x: 558 + y: 739 + width: 15.28125 + height: 18.21875 + xOffset: 4.96875 + yOffset: 0 + xAdvance: 28.625 + scale: 1 + - id: 185 + x: 912 + y: 86 + width: 23.375 + height: 35.5 + xOffset: 3.34375 + yOffset: 59.1875 + xAdvance: 28.625 + scale: 1 + - id: 186 + x: 863 + y: 71 + width: 29.25 + height: 32.78125 + xOffset: 1.125 + yOffset: 60.15625 + xAdvance: 31.40625 + scale: 1 + - id: 187 + x: 704 + y: 11 + width: 40.84375 + height: 33.5625 + xOffset: 3.46875 + yOffset: 39.5 + xAdvance: 47.84375 + scale: 1 + - id: 188 + x: 582 + y: 954 + width: 65.40625 + height: 59.15625 + xOffset: 2.34375 + yOffset: 59.1875 + xAdvance: 71.71875 + scale: 1 + - id: 189 + x: 495 + y: 954 + width: 67.03125 + height: 59.15625 + xOffset: 2.34375 + yOffset: 59.1875 + xAdvance: 71.71875 + scale: 1 + - id: 190 + x: 667 + y: 954 + width: 64.71875 + height: 59.65625 + xOffset: 3.0625 + yOffset: 59.6875 + xAdvance: 71.71875 + scale: 1 + - id: 191 + x: 909 + y: 460 + width: 41.125 + height: 60.0625 + xOffset: 5.5 + yOffset: 45.4375 + xAdvance: 52.53125 + scale: 1 + - id: 192 + x: 910 + y: 939 + width: 57.03125 + height: 74.59375 + xOffset: 0.15625 + yOffset: 74.59375 + xAdvance: 57.375 + scale: 1 + - id: 193 + x: 88 + y: 453 + width: 57.03125 + height: 74.59375 + xOffset: 0.15625 + yOffset: 74.59375 + xAdvance: 57.375 + scale: 1 + - id: 194 + x: 10 + y: 367 + width: 57.03125 + height: 75.15625 + xOffset: 0.15625 + yOffset: 75.1875 + xAdvance: 57.375 + scale: 1 + - id: 195 + x: 10 + y: 272 + width: 57.03125 + height: 75.5 + xOffset: 0.15625 + yOffset: 75.53125 + xAdvance: 57.375 + scale: 1 + - id: 196 + x: 87 + y: 362 + width: 57.03125 + height: 71.96875 + xOffset: 0.15625 + yOffset: 72 + xAdvance: 57.375 + scale: 1 + - id: 197 + x: 10 + y: 177 + width: 57.03125 + height: 75.0625 + xOffset: 0.15625 + yOffset: 75.0625 + xAdvance: 57.375 + scale: 1 + - id: 198 + x: 204 + y: 954 + width: 81.3125 + height: 59.15625 + xOffset: 1 + yOffset: 59.1875 + xAdvance: 86 + scale: 1 + - id: 199 + x: 10 + y: 79 + width: 54.46875 + height: 78.28125 + xOffset: 4.34375 + yOffset: 60.0625 + xAdvance: 62.09375 + scale: 1 + - id: 200 + x: 84 + y: 79 + width: 46.59375 + height: 74.59375 + xOffset: 7.03125 + yOffset: 74.59375 + xAdvance: 57.375 + scale: 1 + - id: 201 + x: 150 + y: 79 + width: 46.59375 + height: 74.59375 + xOffset: 7.03125 + yOffset: 74.59375 + xAdvance: 57.375 + scale: 1 + - id: 202 + x: 88 + y: 547 + width: 46.59375 + height: 75.15625 + xOffset: 7.03125 + yOffset: 75.1875 + xAdvance: 57.375 + scale: 1 + - id: 203 + x: 492 + y: 786 + width: 46.59375 + height: 71.96875 + xOffset: 7.03125 + yOffset: 72 + xAdvance: 57.375 + scale: 1 + - id: 204 + x: 150 + y: 644 + width: 17.8125 + height: 74.59375 + xOffset: 0.375 + yOffset: 74.59375 + xAdvance: 23.90625 + scale: 1 + - id: 205 + x: 154 + y: 550 + width: 17.8125 + height: 74.59375 + xOffset: 5.9375 + yOffset: 74.59375 + xAdvance: 23.90625 + scale: 1 + - id: 206 + x: 354 + y: 859 + width: 27.8125 + height: 75.15625 + xOffset: -1.9375 + yOffset: 75.1875 + xAdvance: 23.90625 + scale: 1 + - id: 207 + x: 155 + y: 177 + width: 23.40625 + height: 71.96875 + xOffset: 0.28125 + yOffset: 72 + xAdvance: 23.90625 + scale: 1 + - id: 208 + x: 905 + y: 860 + width: 57.40625 + height: 59.15625 + xOffset: 0.5625 + yOffset: 59.1875 + xAdvance: 62.09375 + scale: 1 + - id: 209 + x: 87 + y: 173 + width: 48.03125 + height: 75.5 + xOffset: 7.03125 + yOffset: 75.53125 + xAdvance: 62.09375 + scale: 1 + - id: 210 + x: 10 + y: 652 + width: 58.71875 + height: 75.4375 + xOffset: 4.0625 + yOffset: 74.59375 + xAdvance: 66.90625 + scale: 1 + - id: 211 + x: 10 + y: 557 + width: 58.71875 + height: 75.4375 + xOffset: 4.0625 + yOffset: 74.59375 + xAdvance: 66.90625 + scale: 1 + - id: 212 + x: 10 + y: 462 + width: 58.71875 + height: 76 + xOffset: 4.0625 + yOffset: 75.1875 + xAdvance: 66.90625 + scale: 1 + - id: 213 + x: 10 + y: 747 + width: 58.71875 + height: 76.34375 + xOffset: 4.0625 + yOffset: 75.53125 + xAdvance: 66.90625 + scale: 1 + - id: 214 + x: 832 + y: 941 + width: 58.71875 + height: 72.8125 + xOffset: 4.0625 + yOffset: 72 + xAdvance: 66.90625 + scale: 1 + - id: 215 + x: 969 + y: 190 + width: 38.34375 + height: 38.40625 + xOffset: 5.9375 + yOffset: 47.84375 + xAdvance: 50.21875 + scale: 1 + - id: 216 + x: 751 + y: 950 + width: 61.03125 + height: 63.78125 + xOffset: 2.96875 + yOffset: 61.5625 + xAdvance: 66.90625 + scale: 1 + - id: 217 + x: 150 + y: 858 + width: 48.84375 + height: 75.4375 + xOffset: 6.625 + yOffset: 74.59375 + xAdvance: 62.09375 + scale: 1 + - id: 218 + x: 218 + y: 859 + width: 48.84375 + height: 75.4375 + xOffset: 6.625 + yOffset: 74.59375 + xAdvance: 62.09375 + scale: 1 + - id: 219 + x: 286 + y: 859 + width: 48.84375 + height: 76 + xOffset: 6.625 + yOffset: 75.1875 + xAdvance: 62.09375 + scale: 1 + - id: 220 + x: 160 + y: 269 + width: 48.84375 + height: 72.8125 + xOffset: 6.625 + yOffset: 72 + xAdvance: 62.09375 + scale: 1 + - id: 221 + x: 87 + y: 268 + width: 53.59375 + height: 74.59375 + xOffset: 1.875 + yOffset: 74.59375 + xAdvance: 57.375 + scale: 1 + - id: 222 + x: 735 + y: 563 + width: 45.75 + height: 59.15625 + xOffset: 7.03125 + yOffset: 59.1875 + xAdvance: 57.375 + scale: 1 + - id: 223 + x: 422 + y: 528 + width: 43.03125 + height: 63.15625 + xOffset: 5.9375 + yOffset: 62.34375 + xAdvance: 52.53125 + scale: 1 + - id: 224 + x: 251 + y: 670 + width: 44.1875 + height: 64.15625 + xOffset: 3.625 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 225 + x: 426 + y: 689 + width: 44.1875 + height: 64.15625 + xOffset: 3.625 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 226 + x: 493 + y: 624 + width: 44.1875 + height: 63.46875 + xOffset: 3.625 + yOffset: 62.625 + xAdvance: 47.84375 + scale: 1 + - id: 227 + x: 865 + y: 540 + width: 44.1875 + height: 62.53125 + xOffset: 3.625 + yOffset: 61.6875 + xAdvance: 47.84375 + scale: 1 + - id: 228 + x: 929 + y: 540 + width: 44.1875 + height: 59.75 + xOffset: 3.625 + yOffset: 58.9375 + xAdvance: 47.84375 + scale: 1 + - id: 229 + x: 187 + y: 648 + width: 44.1875 + height: 70.1875 + xOffset: 3.625 + yOffset: 69.34375 + xAdvance: 47.84375 + scale: 1 + - id: 230 + x: 10 + y: 12 + width: 69.875 + height: 47.125 + xOffset: 2.75 + yOffset: 46.28125 + xAdvance: 76.46875 + scale: 1 + - id: 231 + x: 339 + y: 128 + width: 37.0625 + height: 64.5 + xOffset: 3.625 + yOffset: 46.28125 + xAdvance: 43 + scale: 1 + - id: 232 + x: 384 + y: 302 + width: 40.34375 + height: 64.15625 + xOffset: 3.625 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 233 + x: 393 + y: 218 + width: 40.34375 + height: 64.15625 + xOffset: 3.625 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 234 + x: 599 + y: 310 + width: 40.34375 + height: 63.46875 + xOffset: 3.625 + yOffset: 62.625 + xAdvance: 47.84375 + scale: 1 + - id: 235 + x: 782 + y: 338 + width: 40.34375 + height: 59.75 + xOffset: 3.625 + yOffset: 58.9375 + xAdvance: 47.84375 + scale: 1 + - id: 236 + x: 629 + y: 227 + width: 17.8125 + height: 63.3125 + xOffset: 0.40625 + yOffset: 63.34375 + xAdvance: 23.90625 + scale: 1 + - id: 237 + x: 659 + y: 310 + width: 17.8125 + height: 63.3125 + xOffset: 5.65625 + yOffset: 63.34375 + xAdvance: 23.90625 + scale: 1 + - id: 238 + x: 735 + y: 340 + width: 27.8125 + height: 62.625 + xOffset: -1.875 + yOffset: 62.625 + xAdvance: 23.90625 + scale: 1 + - id: 239 + x: 757 + y: 156 + width: 23.40625 + height: 58.90625 + xOffset: 0.3125 + yOffset: 58.9375 + xAdvance: 23.90625 + scale: 1 + - id: 240 + x: 396 + y: 134 + width: 41 + height: 64.40625 + xOffset: 3.59375 + yOffset: 63.59375 + xAdvance: 47.84375 + scale: 1 + - id: 241 + x: 280 + y: 10 + width: 36.53125 + height: 61.6875 + xOffset: 5.84375 + yOffset: 61.6875 + xAdvance: 47.84375 + scale: 1 + - id: 242 + x: 444 + y: 302 + width: 40.59375 + height: 64.15625 + xOffset: 3.59375 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 243 + x: 453 + y: 218 + width: 40.59375 + height: 64.15625 + xOffset: 3.59375 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 244 + x: 569 + y: 227 + width: 40.59375 + height: 63.46875 + xOffset: 3.59375 + yOffset: 62.625 + xAdvance: 47.84375 + scale: 1 + - id: 245 + x: 572 + y: 145 + width: 40.59375 + height: 62.53125 + xOffset: 3.59375 + yOffset: 61.6875 + xAdvance: 47.84375 + scale: 1 + - id: 246 + x: 842 + y: 334 + width: 40.59375 + height: 59.75 + xOffset: 3.59375 + yOffset: 58.9375 + xAdvance: 47.84375 + scale: 1 + - id: 247 + x: 786 + y: 417 + width: 41.78125 + height: 38.53125 + xOffset: 2.71875 + yOffset: 47.9375 + xAdvance: 47.1875 + scale: 1 + - id: 248 + x: 804 + y: 635 + width: 48.71875 + height: 48.46875 + xOffset: 1.84375 + yOffset: 46.875 + xAdvance: 52.53125 + scale: 1 + - id: 249 + x: 504 + y: 302 + width: 36.53125 + height: 64.15625 + xOffset: 5.8125 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 250 + x: 513 + y: 218 + width: 36.53125 + height: 64.15625 + xOffset: 5.8125 + yOffset: 63.34375 + xAdvance: 47.84375 + scale: 1 + - id: 251 + x: 666 + y: 227 + width: 36.53125 + height: 63.46875 + xOffset: 5.8125 + yOffset: 62.625 + xAdvance: 47.84375 + scale: 1 + - id: 252 + x: 599 + y: 66 + width: 36.53125 + height: 59.75 + xOffset: 5.8125 + yOffset: 58.9375 + xAdvance: 47.84375 + scale: 1 + - id: 253 + x: 88 + y: 838 + width: 42.625 + height: 81.15625 + xOffset: 0.1875 + yOffset: 63.34375 + xAdvance: 43 + scale: 1 + - id: 254 + x: 88 + y: 738 + width: 38.4375 + height: 80.15625 + xOffset: 5.78125 + yOffset: 62.34375 + xAdvance: 47.84375 + scale: 1 + - id: 255 + x: 88 + y: 642 + width: 42.625 + height: 76.75 + xOffset: 0.1875 + yOffset: 58.9375 + xAdvance: 43 + scale: 1 + - id: 8192 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 43 + scale: 1 + - id: 8193 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 86 + scale: 1 + - id: 8194 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 43 + scale: 1 + - id: 8195 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 86 + scale: 1 + - id: 8196 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 28.6875 + scale: 1 + - id: 8197 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 21.5 + scale: 1 + - id: 8198 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 14.3125 + scale: 1 + - id: 8199 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 47.84375 + scale: 1 + - id: 8200 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 23.90625 + scale: 1 + - id: 8201 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 17.21875 + scale: 1 + - id: 8202 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 7.1875 + scale: 1 + - id: 8203 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 0 + scale: 1 + - id: 8204 + x: 399 + y: 470 + width: 3.5 + height: 65.5 + xOffset: -1.78125 + yOffset: 54.0625 + xAdvance: 0 + scale: 1 + - id: 8205 + x: 228 + y: 271 + width: 18.8125 + height: 70.84375 + xOffset: -9.40625 + yOffset: 59.40625 + xAdvance: 0 + scale: 1 + - id: 8206 + x: 257 + y: 181 + width: 20 + height: 70.84375 + xOffset: -1.75 + yOffset: 59.40625 + xAdvance: 0 + scale: 1 + - id: 8207 + x: 261 + y: 91 + width: 20 + height: 70.84375 + xOffset: -18.3125 + yOffset: 59.40625 + xAdvance: 0 + scale: 1 + - id: 8210 + x: 823 + y: 243 + width: 47.78125 + height: 5.75 + xOffset: 0 + yOffset: 24.71875 + xAdvance: 47.84375 + scale: 1 + - id: 8211 + x: 890 + y: 240 + width: 47.78125 + height: 5.75 + xOffset: 0 + yOffset: 24.71875 + xAdvance: 47.84375 + scale: 1 + - id: 8212 + x: 225 + y: 754 + width: 86 + height: 5.75 + xOffset: 0 + yOffset: 24.71875 + xAdvance: 86 + scale: 1 + - id: 8213 + x: 495 + y: 929 + width: 86 + height: 5.75 + xOffset: 0 + yOffset: 24.71875 + xAdvance: 86 + scale: 1 + - id: 8214 + x: 560 + y: 394 + width: 20.46875 + height: 62.3125 + xOffset: 7.5 + yOffset: 62.34375 + xAdvance: 35.53125 + scale: 1 + - id: 8215 + x: 600 + y: 617 + width: 50.09375 + height: 14.5625 + xOffset: -1.3125 + yOffset: -3.65625 + xAdvance: 47.5 + scale: 1 + - id: 8216 + x: 996 + y: 127 + width: 8.4375 + height: 19.1875 + xOffset: 5.3125 + yOffset: 59.1875 + xAdvance: 19.09375 + scale: 1 + - id: 8217 + x: 390 + y: 589 + width: 8.4375 + height: 19.1875 + xOffset: 5.3125 + yOffset: 59.1875 + xAdvance: 19.09375 + scale: 1 + - id: 8218 + x: 556 + y: 17 + width: 8.4375 + height: 19.1875 + xOffset: 5.3125 + yOffset: 8.21875 + xAdvance: 19.09375 + scale: 1 + - id: 8219 + x: 996 + y: 88 + width: 8.4375 + height: 19.1875 + xOffset: 5.28125 + yOffset: 59.1875 + xAdvance: 19.09375 + scale: 1 + - id: 8220 + x: 360 + y: 628 + width: 22.34375 + height: 19.1875 + xOffset: 3.125 + yOffset: 59.1875 + xAdvance: 28.625 + scale: 1 + - id: 8221 + x: 348 + y: 589 + width: 22.34375 + height: 19.1875 + xOffset: 3.125 + yOffset: 59.1875 + xAdvance: 28.625 + scale: 1 + - id: 8222 + x: 514 + y: 17 + width: 22.34375 + height: 19.1875 + xOffset: 3.125 + yOffset: 8.21875 + xAdvance: 28.625 + scale: 1 + - id: 8223 + x: 766 + y: 41 + width: 21.4375 + height: 19.1875 + xOffset: 3 + yOffset: 59.1875 + xAdvance: 28.625 + scale: 1 + - id: 8224 + x: 207 + y: 471 + width: 36.28125 + height: 68.09375 + xOffset: 5.78125 + yOffset: 62.34375 + xAdvance: 47.84375 + scale: 1 + - id: 8225 + x: 249 + y: 560 + width: 36.3125 + height: 68.21875 + xOffset: 5.6875 + yOffset: 62.34375 + xAdvance: 47.84375 + scale: 1 + - id: 8226 + x: 305 + y: 587 + width: 23.3125 + height: 23.3125 + xOffset: 3.375 + yOffset: 40.15625 + xAdvance: 30.09375 + scale: 1 + - id: 8230 + x: 330 + y: 750 + width: 62.625 + height: 9.1875 + xOffset: 11.65625 + yOffset: 9.21875 + xAdvance: 86 + scale: 1 + - id: 8234 + x: 560 + y: 311 + width: 20 + height: 63.25 + xOffset: -1.75 + yOffset: 51.78125 + xAdvance: 0 + scale: 1 + - id: 8235 + x: 696 + y: 310 + width: 20 + height: 63.25 + xOffset: -18.28125 + yOffset: 51.78125 + xAdvance: 0 + scale: 1 + - id: 8236 + x: 266 + y: 281 + width: 20 + height: 70.71875 + xOffset: -10 + yOffset: 59.28125 + xAdvance: 0 + scale: 1 + - id: 8237 + x: 305 + y: 296 + width: 20 + height: 70.71875 + xOffset: -10 + yOffset: 59.28125 + xAdvance: 0 + scale: 1 + - id: 8238 + x: 296 + y: 191 + width: 20 + height: 70.71875 + xOffset: -10 + yOffset: 59.28125 + xAdvance: 0 + scale: 1 + - id: 8239 + x: 10 + y: 1033 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 17.21875 + scale: 1 + - id: 8240 + x: 103 + y: 953 + width: 81.34375 + height: 60.125 + xOffset: 2.28125 + yOffset: 59.6875 + xAdvance: 86 + scale: 1 + - id: 8242 + x: 908 + y: 141 + width: 10.9375 + height: 21.78125 + xOffset: 3.5625 + yOffset: 59.1875 + xAdvance: 16.125 + scale: 1 + - id: 8243 + x: 315 + y: 630 + width: 25.3125 + height: 21.78125 + xOffset: 3.5625 + yOffset: 59.1875 + xAdvance: 30.4375 + scale: 1 + - id: 8244 + x: 459 + y: 14 + width: 34.25 + height: 21.78125 + xOffset: -3.875 + yOffset: 59.1875 + xAdvance: 30.4375 + scale: 1 + - id: 8249 + x: 955 + y: 113 + width: 21.21875 + height: 33.5625 + xOffset: 3.6875 + yOffset: 39.5 + xAdvance: 28.625 + scale: 1 + - id: 8250 + x: 956 + y: 34 + width: 21.1875 + height: 33.5625 + xOffset: 3.71875 + yOffset: 39.5 + xAdvance: 28.625 + scale: 1 + - id: 8252 + x: 749 + y: 234 + width: 27.46875 + height: 59.15625 + xOffset: 7.75 + yOffset: 59.1875 + xAdvance: 43 + scale: 1 + - id: 8254 + x: 969 + y: 166 + width: 34.0625 + height: 4.90625 + xOffset: -2.6875 + yOffset: 68.03125 + xAdvance: 28.625 + scale: 1 + - id: 8260 + x: 600 + y: 458 + width: 43.09375 + height: 59.15625 + xOffset: -17.46875 + yOffset: 59.1875 + xAdvance: 14.375 + scale: 1 + - id: 8286 + x: 738 + y: 64 + width: 8.1875 + height: 62.3125 + xOffset: 7.84375 + yOffset: 62.34375 + xAdvance: 23.90625 + scale: 1 + - id: 8298 + x: 300 + y: 101 + width: 20 + height: 70.71875 + xOffset: -10 + yOffset: 59.28125 + xAdvance: 0 + scale: 1 + - id: 8299 + x: 321 + y: 465 + width: 20 + height: 70.71875 + xOffset: -10 + yOffset: 59.28125 + xAdvance: 0 + scale: 1 + - id: 8300 + x: 281 + y: 386 + width: 20.15625 + height: 70.71875 + xOffset: -10.09375 + yOffset: 59.28125 + xAdvance: 0 + scale: 1 + - id: 8301 + x: 993 + y: 529 + width: 20.15625 + height: 71 + xOffset: -10.09375 + yOffset: 59.5625 + xAdvance: 0 + scale: 1 + - id: 8302 + x: 344 + y: 296 + width: 20.0625 + height: 70.84375 + xOffset: -10.0625 + yOffset: 59.40625 + xAdvance: 0 + scale: 1 + - id: 8303 + x: 360 + y: 465 + width: 20 + height: 70.71875 + xOffset: -10 + yOffset: 59.28125 + xAdvance: 0 + scale: 1 + - id: 8364 + x: 800 + y: 555 + width: 45.9375 + height: 60.90625 + xOffset: 0.65625 + yOffset: 60.0625 + xAdvance: 47.84375 + scale: 1 + - id: 8482 + x: 481 + y: 877 + width: 68.40625 + height: 32.53125 + xOffset: 7.875 + yOffset: 59.1875 + xAdvance: 86 + scale: 1 + - id: 9633 + x: 737 + y: 721 + width: 51.4375 + height: 51.4375 + xOffset: 0.25 + yOffset: 51.46875 + xAdvance: 51.9375 + scale: 1 + m_kerningInfo: + kerningPairs: + - m_FirstGlyph: 32 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 65 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 32 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 89 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 32 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 84 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 97 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 65 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 101 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -0.7558594 + yAdvance: 0 + m_SecondGlyph: 121 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -0.7558594 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 111 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 114 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 59 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 117 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 58 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 45 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 87 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 119 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 119 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 32 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 87 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 119 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 86 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 89 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 84 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 121 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 118 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 65 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 8217 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 97 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 65 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 101 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 121 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 105 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 111 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 114 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -7.8945312 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -7.8945312 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 59 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 117 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 58 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 45 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 86 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -7.8945312 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -7.8945312 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 32 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 97 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 65 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -7.8945312 + yAdvance: 0 + m_SecondGlyph: 101 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -7.8945312 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 112 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -7.8945312 + yAdvance: 0 + m_SecondGlyph: 113 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -7.8945312 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 118 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 105 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -7.8945312 + yAdvance: 0 + m_SecondGlyph: 111 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -7.8945312 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -11.0859375 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -11.0859375 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -5.584961 + yAdvance: 0 + m_SecondGlyph: 59 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -5.584961 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 117 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 58 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -7.8945312 + yAdvance: 0 + m_SecondGlyph: 45 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -7.8945312 + - m_FirstGlyph: 89 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -11.0859375 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -11.0859375 + - m_FirstGlyph: 82 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 87 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 82 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 86 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 82 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 89 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 82 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 84 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 32 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 97 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 99 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 79 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 119 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 65 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 101 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 121 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 105 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 111 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 114 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 115 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 59 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 117 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 58 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 45 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 84 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 80 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 32 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 80 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 65 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 80 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -11.0859375 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -11.0859375 + - m_FirstGlyph: 80 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -11.0859375 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -11.0859375 + - m_FirstGlyph: 49 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 49 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 121 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 121 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 70 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 65 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 70 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 70 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -9.532227 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -9.532227 + - m_FirstGlyph: 118 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 118 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 102 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 102 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 102 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 1.5537109 + yAdvance: 0 + m_SecondGlyph: 8217 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: 1.5537109 + - m_FirstGlyph: 76 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 32 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 76 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 87 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 76 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 86 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 76 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 89 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 76 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -6.3828125 + yAdvance: 0 + m_SecondGlyph: 84 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -6.3828125 + - m_FirstGlyph: 76 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 121 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 76 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 8217 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 114 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 44 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 114 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -4.745117 + yAdvance: 0 + m_SecondGlyph: 46 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -4.745117 + - m_FirstGlyph: 114 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 3.1914062 + yAdvance: 0 + m_SecondGlyph: 8217 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: 3.1914062 + - m_FirstGlyph: 8216 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 8216 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 8217 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -3.1914062 + yAdvance: 0 + m_SecondGlyph: 32 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -3.1914062 + - m_FirstGlyph: 8217 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 115 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + - m_FirstGlyph: 8217 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: -1.5537109 + yAdvance: 0 + m_SecondGlyph: 8217 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: -1.5537109 + m_kerningPair: + m_FirstGlyph: 0 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + m_SecondGlyph: 0 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: 0 + fallbackFontAssets: [] + fontCreationSettings: + fontSourcePath: + fontSizingMode: 0 + fontSize: 0 + fontPadding: 0 + fontPackingMode: 0 + fontAtlasWidth: 0 + fontAtlasHeight: 0 + fontCharacterSet: 0 + fontStyle: 0 + fontStlyeModifier: 0 + fontRenderMode: 0 + fontKerning: 0 + fontWeights: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta new file mode 100644 index 0000000..f4327e8 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 715b80e429c437e40867928a4e1fc975 +timeCreated: 1484171803 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/Staatliches-Regular SDF.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/Staatliches-Regular SDF.asset new file mode 100644 index 0000000..67218f2 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/Staatliches-Regular SDF.asset @@ -0,0 +1,1112 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -667331979, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: Staatliches-Regular SDF + m_EditorClassIdentifier: + hashCode: 1662970093 + material: {fileID: 21898195224422272} + materialHashCode: -712582970 + fontAssetType: 1 + m_fontInfo: + Name: Staatliches + PointSize: 83 + Scale: 1 + CharacterCount: 97 + LineHeight: 103.75 + Baseline: 0 + Ascender: 78.875 + CapHeight: 57.8125 + Descender: -24.9375 + CenterLine: 0 + SuperscriptOffset: 78.875 + SubscriptOffset: -10.375 + SubSize: 0.5 + Underline: -10.375 + UnderlineThickness: 4.15 + strikethrough: 19.613636 + strikethroughThickness: 4.15 + TabWidth: 123.125 + Padding: 5 + AtlasWidth: 512 + AtlasHeight: 512 + atlas: {fileID: 28353761702296646} + m_glyphInfoList: + - id: 32 + x: 6 + y: 517 + width: 12.3125 + height: 103.8125 + xOffset: 0 + yOffset: 78.875 + xAdvance: 12.3125 + scale: 1 + - id: 33 + x: 442 + y: 379 + width: 10.0625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 16.875 + scale: 1 + - id: 34 + x: 478 + y: 176 + width: 25.25 + height: 19.5 + xOffset: 3.5625 + yOffset: 57.8125 + xAdvance: 32.4375 + scale: 1 + - id: 35 + x: 470 + y: 464 + width: 35.25 + height: 41.3125 + xOffset: 1.6875 + yOffset: 57.8125 + xAdvance: 39.3125 + scale: 1 + - id: 36 + x: 399 + y: 34 + width: 26.8125 + height: 57.75 + xOffset: 1.5625 + yOffset: 57.8125 + xAdvance: 31.125 + scale: 1 + - id: 37 + x: 6 + y: 294 + width: 53.3125 + height: 59.4375 + xOffset: 1.3125 + yOffset: 58.625 + xAdvance: 56.25 + scale: 1 + - id: 38 + x: 182 + y: 236 + width: 39.25 + height: 57.8125 + xOffset: 0.9375 + yOffset: 57.8125 + xAdvance: 41.25 + scale: 1 + - id: 39 + x: 459 + y: 57 + width: 10.375 + height: 19.5 + xOffset: 3.5625 + yOffset: 57.8125 + xAdvance: 17.625 + scale: 1 + - id: 40 + x: 115 + y: 304 + width: 20.8125 + height: 59.5 + xOffset: 3.0625 + yOffset: 58.6875 + xAdvance: 27.0625 + scale: 1 + - id: 41 + x: 144 + y: 375 + width: 20.875 + height: 59.5 + xOffset: 3.125 + yOffset: 58.6875 + xAdvance: 27.0625 + scale: 1 + - id: 42 + x: 464 + y: 379 + width: 23.125 + height: 24.875 + xOffset: 2.1875 + yOffset: 57.6875 + xAdvance: 29.1875 + scale: 1 + - id: 43 + x: 470 + y: 415 + width: 32.75 + height: 38 + xOffset: 1.875 + yOffset: 48.6875 + xAdvance: 36.6875 + scale: 1 + - id: 44 + x: 481 + y: 56 + width: 10.0625 + height: 20.375 + xOffset: 3.3125 + yOffset: 10 + xAdvance: 16.875 + scale: 1 + - id: 45 + x: 188 + y: 6 + width: 16.875 + height: 9.6875 + xOffset: 3.5625 + yOffset: 33.75 + xAdvance: 25.125 + scale: 1 + - id: 46 + x: 400 + y: 12 + width: 10.0625 + height: 10.0625 + xOffset: 3.3125 + yOffset: 10.0625 + xAdvance: 16.875 + scale: 1 + - id: 47 + x: 433 + y: 103 + width: 19.8125 + height: 57.75 + xOffset: 2.4375 + yOffset: 57.8125 + xAdvance: 24.8125 + scale: 1 + - id: 48 + x: 53 + y: 375 + width: 35.9375 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 41.25 + scale: 1 + - id: 49 + x: 448 + y: 241 + width: 10.125 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 17.4375 + scale: 1 + - id: 50 + x: 148 + y: 447 + width: 32.375 + height: 58.6875 + xOffset: 1.375 + yOffset: 58.6875 + xAdvance: 36.4375 + scale: 1 + - id: 51 + x: 6 + y: 223 + width: 32.4375 + height: 59.625 + xOffset: 1.375 + yOffset: 58.6875 + xAdvance: 36.5 + scale: 1 + - id: 52 + x: 138 + y: 27 + width: 34.5 + height: 57.75 + xOffset: 1.125 + yOffset: 57.8125 + xAdvance: 37.4375 + scale: 1 + - id: 53 + x: 94 + y: 163 + width: 32.625 + height: 58.5625 + xOffset: 1.8125 + yOffset: 57.8125 + xAdvance: 35.9375 + scale: 1 + - id: 54 + x: 6 + y: 152 + width: 32.625 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 37.75 + scale: 1 + - id: 55 + x: 300 + y: 448 + width: 32.8125 + height: 57.75 + xOffset: 1.5625 + yOffset: 57.8125 + xAdvance: 36.6875 + scale: 1 + - id: 56 + x: 6 + y: 81 + width: 32.4375 + height: 59.5 + xOffset: 1.8125 + yOffset: 58.6875 + xAdvance: 37.25 + scale: 1 + - id: 57 + x: 6 + y: 10 + width: 32.5625 + height: 59.5 + xOffset: 1.625 + yOffset: 58.6875 + xAdvance: 37.25 + scale: 1 + - id: 58 + x: 437 + y: 57 + width: 10.0625 + height: 34.6875 + xOffset: 3.3125 + yOffset: 34.75 + xAdvance: 16.875 + scale: 1 + - id: 59 + x: 492 + y: 253 + width: 10.0625 + height: 45.125 + xOffset: 3.3125 + yOffset: 34.75 + xAdvance: 16.875 + scale: 1 + - id: 60 + x: 464 + y: 88 + width: 28.625 + height: 39.5625 + xOffset: 1.8125 + yOffset: 49.25 + xAdvance: 35.375 + scale: 1 + - id: 61 + x: 464 + y: 139 + width: 32.8125 + height: 21.5625 + xOffset: 1.875 + yOffset: 40.375 + xAdvance: 36.75 + scale: 1 + - id: 62 + x: 437 + y: 6 + width: 28.625 + height: 39.5625 + xOffset: 3.0625 + yOffset: 49.25 + xAdvance: 35.375 + scale: 1 + - id: 63 + x: 94 + y: 93 + width: 32.4375 + height: 58.6875 + xOffset: 1.125 + yOffset: 58.6875 + xAdvance: 36.125 + scale: 1 + - id: 64 + x: 53 + y: 446 + width: 39.625 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 44.875 + scale: 1 + - id: 65 + x: 184 + y: 27 + width: 33.125 + height: 57.75 + xOffset: 0.4375 + yOffset: 57.8125 + xAdvance: 35.4375 + scale: 1 + - id: 66 + x: 229 + y: 27 + width: 32.9375 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 38.5 + scale: 1 + - id: 67 + x: 50 + y: 223 + width: 32.5625 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 37.625 + scale: 1 + - id: 68 + x: 230 + y: 98 + width: 32.625 + height: 57.9375 + xOffset: 3.3125 + yOffset: 57.9375 + xAdvance: 39.1875 + scale: 1 + - id: 69 + x: 431 + y: 448 + width: 27.5 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 34.875 + scale: 1 + - id: 70 + x: 360 + y: 34 + width: 27.5625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 34.9375 + scale: 1 + - id: 71 + x: 71 + y: 304 + width: 32.4375 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 37.375 + scale: 1 + - id: 72 + x: 244 + y: 170 + width: 32.625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 39.4375 + scale: 1 + - id: 73 + x: 453 + y: 310 + width: 10.125 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 17.4375 + scale: 1 + - id: 74 + x: 94 + y: 23 + width: 32.4375 + height: 58.5 + xOffset: 0.625 + yOffset: 57.6875 + xAdvance: 36.125 + scale: 1 + - id: 75 + x: 253 + y: 448 + width: 35.375 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 38.9375 + scale: 1 + - id: 76 + x: 361 + y: 103 + width: 27.5625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 32.9375 + scale: 1 + - id: 77 + x: 191 + y: 308 + width: 37.625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 44.5625 + scale: 1 + - id: 78 + x: 358 + y: 379 + width: 31.3125 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 38.5 + scale: 1 + - id: 79 + x: 100 + y: 375 + width: 32.625 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 37.9375 + scale: 1 + - id: 80 + x: 278 + y: 241 + width: 32.9375 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 37.9375 + scale: 1 + - id: 81 + x: 6 + y: 441 + width: 35.6875 + height: 64.25 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 38.6875 + scale: 1 + - id: 82 + x: 185 + y: 96 + width: 33.8125 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 40 + scale: 1 + - id: 83 + x: 104 + y: 446 + width: 32.5 + height: 59.4375 + xOffset: 1.125 + yOffset: 58.625 + xAdvance: 36.1875 + scale: 1 + - id: 84 + x: 285 + y: 310 + width: 32.375 + height: 57.75 + xOffset: 0.0625 + yOffset: 57.8125 + xAdvance: 33.1875 + scale: 1 + - id: 85 + x: 138 + y: 234 + width: 32.625 + height: 58.5625 + xOffset: 2.3125 + yOffset: 57.8125 + xAdvance: 38.1875 + scale: 1 + - id: 86 + x: 199 + y: 167 + width: 33.75 + height: 57.75 + xOffset: 0.625 + yOffset: 57.8125 + xAdvance: 35.9375 + scale: 1 + - id: 87 + x: 192 + y: 448 + width: 50 + height: 57.75 + xOffset: 0.625 + yOffset: 57.8125 + xAdvance: 52.1875 + scale: 1 + - id: 88 + x: 388 + y: 448 + width: 31.6875 + height: 57.75 + xOffset: 0.375 + yOffset: 57.8125 + xAdvance: 33.5625 + scale: 1 + - id: 89 + x: 314 + y: 379 + width: 32.4375 + height: 57.75 + xOffset: -0.375 + yOffset: 57.8125 + xAdvance: 33.3125 + scale: 1 + - id: 90 + x: 317 + y: 32 + width: 31.75 + height: 57.75 + xOffset: 0.625 + yOffset: 57.8125 + xAdvance: 34.375 + scale: 1 + - id: 91 + x: 400 + y: 103 + width: 21.5 + height: 57.75 + xOffset: 3.0625 + yOffset: 57.8125 + xAdvance: 27.75 + scale: 1 + - id: 92 + x: 447 + y: 172 + width: 20 + height: 57.75 + xOffset: 2.4375 + yOffset: 57.8125 + xAdvance: 25 + scale: 1 + - id: 93 + x: 414 + y: 172 + width: 21.5 + height: 57.75 + xOffset: 3.125 + yOffset: 57.8125 + xAdvance: 27.75 + scale: 1 + - id: 94 + x: 478 + y: 207 + width: 26.3125 + height: 22.75 + xOffset: 1.5625 + yOffset: 57.4375 + xAdvance: 30.5625 + scale: 1 + - id: 95 + x: 138 + y: 6 + width: 38.625 + height: 9.125 + xOffset: 3.3125 + yOffset: 0.4375 + xAdvance: 45.375 + scale: 1 + - id: 96 + x: 328 + y: 6 + width: 17.125 + height: 15 + xOffset: 3.125 + yOffset: 77.25 + xAdvance: 23.625 + scale: 1 + - id: 97 + x: 233 + y: 239 + width: 33.125 + height: 57.75 + xOffset: 0.4375 + yOffset: 57.8125 + xAdvance: 35.4375 + scale: 1 + - id: 98 + x: 344 + y: 448 + width: 32.9375 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 38.5 + scale: 1 + - id: 99 + x: 50 + y: 152 + width: 32.5625 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 37.625 + scale: 1 + - id: 100 + x: 273 + y: 29 + width: 32.625 + height: 57.9375 + xOffset: 3.3125 + yOffset: 57.9375 + xAdvance: 39.1875 + scale: 1 + - id: 101 + x: 375 + y: 172 + width: 27.5 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 34.875 + scale: 1 + - id: 102 + x: 409 + y: 241 + width: 27.5625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 34.9375 + scale: 1 + - id: 103 + x: 50 + y: 81 + width: 32.4375 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 37.375 + scale: 1 + - id: 104 + x: 274 + y: 101 + width: 32.625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 39.4375 + scale: 1 + - id: 105 + x: 470 + y: 241 + width: 10.125 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 17.4375 + scale: 1 + - id: 106 + x: 147 + y: 305 + width: 32.4375 + height: 58.5 + xOffset: 0.625 + yOffset: 57.6875 + xAdvance: 36.125 + scale: 1 + - id: 107 + x: 138 + y: 96 + width: 35.375 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 38.9375 + scale: 1 + - id: 108 + x: 414 + y: 310 + width: 27.5625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 32.9375 + scale: 1 + - id: 109 + x: 220 + y: 379 + width: 37.625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 44.5625 + scale: 1 + - id: 110 + x: 318 + y: 103 + width: 31.3125 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 38.5 + scale: 1 + - id: 111 + x: 50 + y: 10 + width: 32.625 + height: 59.5 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 37.9375 + scale: 1 + - id: 112 + x: 288 + y: 172 + width: 32.9375 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 38.625 + scale: 1 + - id: 113 + x: 6 + y: 365 + width: 35.6875 + height: 64.25 + xOffset: 2.3125 + yOffset: 58.6875 + xAdvance: 38.6875 + scale: 1 + - id: 114 + x: 240 + y: 310 + width: 33.8125 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 40 + scale: 1 + - id: 115 + x: 94 + y: 233 + width: 32.5 + height: 59.4375 + xOffset: 1.125 + yOffset: 58.625 + xAdvance: 36.1875 + scale: 1 + - id: 116 + x: 322 + y: 241 + width: 32.375 + height: 57.75 + xOffset: 0.0625 + yOffset: 57.8125 + xAdvance: 33.1875 + scale: 1 + - id: 117 + x: 176 + y: 377 + width: 32.625 + height: 58.5625 + xOffset: 2.3125 + yOffset: 57.8125 + xAdvance: 38.1875 + scale: 1 + - id: 118 + x: 269 + y: 379 + width: 33.75 + height: 57.75 + xOffset: 0.625 + yOffset: 57.8125 + xAdvance: 35.9375 + scale: 1 + - id: 119 + x: 138 + y: 165 + width: 50 + height: 57.75 + xOffset: 0.625 + yOffset: 57.8125 + xAdvance: 52.1875 + scale: 1 + - id: 120 + x: 332 + y: 172 + width: 31.6875 + height: 57.75 + xOffset: 0.375 + yOffset: 57.8125 + xAdvance: 33.5625 + scale: 1 + - id: 121 + x: 329 + y: 310 + width: 32.4375 + height: 57.75 + xOffset: -0.375 + yOffset: 57.8125 + xAdvance: 33.3125 + scale: 1 + - id: 122 + x: 366 + y: 241 + width: 31.75 + height: 57.75 + xOffset: 0.625 + yOffset: 57.8125 + xAdvance: 34.375 + scale: 1 + - id: 123 + x: 373 + y: 310 + width: 30 + height: 57.75 + xOffset: 0.5625 + yOffset: 57.8125 + xAdvance: 33.6875 + scale: 1 + - id: 124 + x: 475 + y: 310 + width: 9.625 + height: 57.75 + xOffset: 3.3125 + yOffset: 57.8125 + xAdvance: 16.4375 + scale: 1 + - id: 125 + x: 401 + y: 379 + width: 30 + height: 57.75 + xOffset: 3.125 + yOffset: 57.8125 + xAdvance: 33.6875 + scale: 1 + - id: 126 + x: 357 + y: 10 + width: 31.75 + height: 10.8125 + xOffset: 3.125 + yOffset: 36.125 + xAdvance: 39.4375 + scale: 1 + - id: 160 + x: 6 + y: 517 + width: 0 + height: 0 + xOffset: 0 + yOffset: 0 + xAdvance: 12.3125 + scale: 1 + - id: 8230 + x: 273 + y: 7 + width: 43.25 + height: 10.0625 + xOffset: 3.3125 + yOffset: 10.0625 + xAdvance: 50.0625 + scale: 1 + m_kerningInfo: + kerningPairs: [] + m_kerningPair: + m_FirstGlyph: 0 + m_FirstGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + m_SecondGlyph: 0 + m_SecondGlyphAdjustments: + xPlacement: 0 + yPlacement: 0 + xAdvance: 0 + yAdvance: 0 + xOffset: 0 + fallbackFontAssets: [] + fontCreationSettings: + fontSourcePath: + fontSizingMode: 0 + fontSize: 0 + fontPadding: 0 + fontPackingMode: 0 + fontAtlasWidth: 0 + fontAtlasHeight: 0 + fontCharacterSet: 0 + fontStyle: 0 + fontStlyeModifier: 0 + fontRenderMode: 0 + fontKerning: 0 + fontWeights: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!21 &21898195224422272 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Staatliches-Regular SDF Material + m_Shader: {fileID: 4800000, guid: dca26082f9cb439469295791d9f76fe5, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 28353761702296646} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _Diffuse: 0.5 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 6 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.8333333 + - _ScaleRatioB: 0.6770833 + - _ScaleRatioC: 0.6770833 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 512 + - _TextureWidth: 512 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} +--- !u!28 &28353761702296646 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Staatliches-Regular SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 2 + m_Width: 512 + m_Height: 512 + m_CompleteImageSize: 262144 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + image data: 262144 + _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d0b070000000000000000000000000000000000000000000000000000050a0e111415151515151515131313121211100f0e0d0c0b0a090706050401000000000000000000000000000000000000000004090d1013131313120f0c0701000000000000000000000000000000000000061016191919191919191919191919191919191919191919191919191919191919191917120a000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a1a18110700000711181a1a1a1a1a1a1a1a1a1a1a1813090000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b00000000000000000812181a1a1a1a1a1a1a1a1a1a1a19150d0200000000000000000000020d15191a1a1a1a1a1a1a1a1a1a1a1812080000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1815120e08020000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b0000000000040e161a1a1a1a1a1a1a1a1a1a1a17110700000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a170f050000000000000000000000010a0f11111111111111110f0a010000070e1111111111111111100d0600000000000000000000000000000000000000000000000000000000000000000000000000000000010f192022201b1105000000000000000000000000000000000000000000030b13191f2327292a2a2a2a2a2a2a2929282727262525232221201f1e1d1c1a19150e04000000000000000000000000000000030b12191e2226282929292724201c160f080000000000000000000000000000000917232b2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2c261c0f0000000000000000000000000001111e282e2f2f2f2f2f2f2f2f2f2f2f2c24190a0b19242c2f2f2f2f2f2f2f2f2f2f2f2d261b0e000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d100000000000000c1a252d2f2f2f2f2f2f2f2f2f2f2f2f292013040000000000000000031220292f2f2f2f2f2f2f2f2f2f2f2f2d25190b000000000000000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2b27221d160f07000000000000000000000000000000101d272e2f2f2f2f2f2f2f2f2f2f2e271d100000000615212a2f2f2f2f2f2f2f2f2f2f2f2c24180a0000000f1d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b22170800000000000000000006131e242626262626262626241e13060f1a2226262626262626262621190d000000000000000000000000000000000000000000000000000000000000000000000000000002111f2c3437352e231405000000000000000000000000000000000000020d161f272d33383c3e3f3f3f3f3f3f3f3e3e3d3c3c3b3a3a38373635343332312f2e2a211607000000000000000000000000020d161f262d33373b3d3e3e3e3c3935302a231b1208000000000000000000000000061727353f434343434343434343434343434343434343434343434343434343434343434341392d1d0c0000000000000000000000000e1f2f3b4344444444444444444444444036281819293740444444444444444444444442392c1d0c00000000000000000000000c1d2d3a4244444444444444444444433b2e1e0d00000000091a2a37414444444444444444444444443d31221200000000000000001021303d4444444444444444444444444137291a0800000000000000000000000000000000000c1d2d3a42444444444444444444444444444444444442403c37312a231a10060000000000000000000000000d1e2e3a4244444444444444444444423a2e1e0d00021424333e44444444444444444444444036281806000c1d2d3a42444444444444444444444444444444444444444444444444444444443f342616040000000000000005152431393b3b3b3b3b3b3b3b393124151f2c363b3b3b3b3b3b3b3b3b352b1d0d0000000000000000000000000000000000000000000000000000000000000000000000000211202f3d484c4a40322314050000000000000000000000000000000009141f29323b42484d5153545454545454545353535251504f4f4e4c4b4b4a48474644433e332515040000000000000000000009141f29323a41474c5052535353514e4a453e372e251b10050000000000000000000010233545535858585858585858585858585858585858585858585858585858585858585858554b3b2916020000000000000000000005182b3d4d575a5a5a5a5a5a5a5a5a5a5a54463624243747545a5a5a5a5a5a5a5a5a5a5a564a3b2916030000000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a170400000013263848545a5a5a5a5a5a5a5a5a5a5a584f402f1c08000000000000061a2d3f4e585a5a5a5a5a5a5a5a5a5a5a5447372512000000000000000000000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a595754514b453e362d23190d0100000000000000000000162a3c4c575a5a5a5a5a5a5a5a5a5a574c3c2b18040c1f324251595a5a5a5a5a5a5a5a5a5a534635230f0016293b4b575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59524433200c00000000000000102233424d50505050505050504d4233222d3d4a505050505050505050483b2b1805000000000000000000000000000000000000000000000000000000000000000000000211202f3e4d5b625d51423223140500000000000000000000000000000e1a26323c464e565c6166686a6a6a6a6a6a6968686867666664646362605f5f5e5c5b5a58514333210e0000000000000000010e1b27323c464e555c61656768686866635f59524b41382d221609000000000000000000162b3f53636e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e685945311d08000000000000000000000b1f34485b6a6f6f6f6f6f6f6f6f6f6f6f6453402b2d4154656f6f6f6f6f6f6f6f6f6f6f685846321e09000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e090000081c2f4256666f6f6f6f6f6f6f6f6f6f6f6c5e4b37230e0000000000000b2035495d6c6f6f6f6f6f6f6f6f6f6f6f6555422e1a06000000000000000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e6c69656059524940362b1f12060000000000000000001c3146596a6f6f6f6f6f6f6f6f6f6f6a5a47331f0a13273b4e606d6f6f6f6f6f6f6f6f6f6f64523e2914001d314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e62503b271200000000000000182c3f5160666666666666666660513f2b384b5b656666666666666665594835210c0000000000000000000000000000000000000000000000050a0e111415151513100d11202f3e4d5c6b776f60514232231405000000000000000000000003111e2b38444e59626a70767a7d8080808080807d7d7d7c7c7b7b797978777674747372706f6d61503d29140000000000000003111f2c38444e5961697076797c7d7d7d7b78736d665e544b4034271a0c0000000000000000192e43586e8284848484848484848484848484848484848484848484848484848484848484745f4a341f0a000000000000000000000f24394d627786868686868686868686836f5a442f31465b70848686868686868686868675614c37220d000000000000000000001f344a5f748686868686868686868676604b36210b00001125384b5f72858686868686868686868679644f3a250f0000000000000d22374c62778686868686868686868684715d4935210c000000000000000000000000000000001f344a5f748686868686868686868686868686868684837d79746d655c53483c3023160800000000000000001e33485e738686868686868686868676624d392410182d41566a7d868686868686868686826b56402b16001f344a5f74868686868686868686868686868686868686868686868686868686806a543f2a15000000000000001c31465b6f7b7b7b7b7b7b7b7b6f5b46313f5368797b7b7b7b7b7b7b77644f3a25100000000000000000000000000000000000000000030b13191f2327292a2a2a282521202f3e4d5c6b7a8a7d6f605142322314050000000000000000000312212f3c4955616c757d868b909395959595959594949493939191908f8e8d8c8b8989888786806c57422c170000000000000413212f3d4a56616c757d858b8f92949493918d88827a71675d5145382a1c0d00000000000000192e43586e849999999999999999999999999999999999999999999999999999999999998b745f4a341f0a0000000000000000000012273c51667b909b9b9b9b9b9b9b9b9b87725c473234495e73899b9b9b9b9b9b9b9b9b8f79644f3a2611000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b00071a2d4154677a8f9b9b9b9b9b9b9b9b9885715e4b37220d0000000000000b2035495d71869a9b9b9b9b9b9b9b9b8d7864503b2713000000000000000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9997948f8982796f655a4e4134261708000000000000001c31465a6f83979b9b9b9b9b9b9b917c67533e2a151e32475b7085999b9b9b9b9b9b9b8f7a66523e2914001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b95806a543f2a15000000000000001d32475c728891919191919188725c47323f546a80919191919191917b66503b2611000000000000000000000000000000000000020d161f262d33383c3e3f3f3f3d3a36313e4d5c6b7a8a998e7d6f6051423223140500000000000000011221303f4d5a67737d899299a0a5a8ababababababa9a9a9a8a8a7a7a5a4a3a3a1a09f9e9d9c98836c57422c170000000000021222313f4d5b67737d8992999fa4a7a9a9a8a6a29c968e857a6f6356483a2b1c0c000000000000192e43586e8499afafafafafafafafafafafafafafafafafafafafafafafafafafafafa08b745f4a341f0a00000000000000000000162b4054697d94a9b0b0b0b0b0b0b09f8a745f4b35374c61768ca1b0b0b0b0b0b0b0a7927c68533e2914000000000000000000001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b001023364a5d708497abb0b0b0b0b0b0a28f7b6855422e1b08000000000000061a2e42566a7d92a6b0b0b0b0b0b0a793806a56422e1a060000000000000000000000000000001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0afaca8a39d958c83776b5f524435261708000000000000172b4054687c91a5b0b0b0b0b0ab96826d58442f1b23384c61758a9fb0b0b0b0b0b09d8974604b37230f001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab95806a543f2a15000000000000001d32475c72889da7a7a7a79d88725c47323f546a8095a7a7a7a7a7917b66503b2611000000000000000000000000000000000009151f29323b42484d5153545454524f4b454d5c6b7a8a99a89d8e7d6f605142322314050000000000000f1f303f4e5d6b7885909ba5adb4b9bdbfc0c0c0c0c0bfbfbfbdbdbcbcbbb9b8b8b7b5b4b3b2ad98836c57422c170000000000102030404f5d6b7885919ba5adb4b9bcbfbfbdbbb6b1aaa1988d82736658493a2a1a090000000000192e43586e8499afc4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b5a08b745f4a341f0a00000000000000000003192e43586d8397acc1c5c5c5c5c5b7a28d77634d383a4f64798fa4b9c5c5c5c5c5c0ab96826c57422d18030000000000000000001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b05192c3f5366798da0b3c5c5c5c5c0ac9986725f4c392612000000000000000013273b4f63778b9fb3c5c5c5c5c2ae9a86725d4935210d0000000000000000000000000000001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c4c1bdb8b1a99f95897d706253443525150500000000001125394e62768a9fb3c5c5c5c5b09c87725e493520283d52667a8fa4b9c5c5c5bfab97826d5945311c08001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c0ab95806a543f2a15000000000004051d32475c72889db3bcbcb39d88725c47323f546a8095abbcbcbca7917b66503b2611040100000000000000000000000000010e1b27323c464e565c6166686a6a6a67645f5a5b6b7a8a99a8b7ac9d8e7d6f60514232231402000000000b1c2d3d4e5d6c7b8996a2aeb8c1c8ced2d4d5d5d5d5d5d4d4d4d3d3d1d1d0cfcdcdcccbc9c8c3ad98836c57422c17000000000b1d2e3e4e5e6d7b8a97a3aeb8c1c8cdd1d3d4d3d0cbc5bdb4aa9e9285766758483827160400000000192e43586e8499afc4d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9cbb5a08b745f4a341f0a000000000000000000081d32475c70869bb0c5dadadadacfbaa5907a66503b3d52677c92a7bcd1dadadad8c3ae99856f5a45311c070000000000000000001f344a5f748ba0b5cbdadaccb7a18c76604b36210b0e2135485c6f8396a9bcd0dadacab6a3907c695643301d0900000000000000000c2034485c708498acc0d4dadac9b5a18d7864503c28140000000000000000000000000000001f344a5f748ba0b5cbdadadadadadadadadadadadad9d6d2ccc5bcb2a79b8e807162534333221100000000000a1e33475b708498acc1d5dacab6a18d77634f3a262e42576b8095aabed2dacdb9a4907b67533f2a1602001f344a5f748ba0b5cbdadadadadadadadadadadadadadadadadadadad5c0ab95806a543f2a150000000b14191a1d32475c72889db3c8c8b39d88725c47323f546a8095abc0d1bca7917b66503b261a19150d020000000000000000000004111f2c38444f59626a70767a7d8080807c79746e6a798999a8b7c6bbac9d8e7d6f605142311f0c000000051628394a5b6b7b8b99a7b4c0cbd4dce3e7eaeaeaeaeaeae9e9e9e8e8e6e6e5e4e3e2e1e0ded8c3ad98836c57422c170000000517293a4b5c6c7c8c9aa7b4c0cbd4dce2e6e9e9e8e5e0d9d1c7bcb0a294867666554533221000000000192e43586e8499afc4d9eeeeeeeeeeeeeeeae9e9e9e9e9e9e9e9e9e9e9e9e9e9e0cbb5a08b745f4a341f0a0000000000000000000c21364b5f748a9fb4c8ddf0f0e7d2bda8937d68533f40556a8095aabfd4e9f0f0dcc7b29d88735e49341f0a0000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b172a3e5164778b9fb2c5d8e7d4c1ae9b8773604d3a271300000000000000000004192c4054687c91a5b9cde1e4d0bca894806b57432e1a0600000000000000000000000000001f344a5f748ba0b5cbe0f0f0f0ede9e8e8e8e8e8e8e9ebe6e0d8cfc4b8ac9e9082716151402f1d0b0000000004182c4055697d92a6bacee3d0bba7927d6954402b33485d71869aafc3d8dbc6b29e8a75614c38241000001f344a5f748ba0b5cbe0f0f0f0eeeae9e9e9e9e9e9e9e9e9e9e9e9e9d5c0ab95806a543f2a1500000f1d272e2f2f32475c72889db3c8c8b39d88725c47323f546a8095abc0d1bca7917b66503b2f2f2f2920130400000000000000000413222f3d4a56616c757d868b9093959594928e89827a8998a7b7c6d5cabbac9d8e7d6f604e3b27130000000f2234455768798a9aa9b7c5d1dde8f0f4f0eeeeeeeeeeeeeef0f0f0f0f1f1f1f2f2f4f4f5edd8c3ad98836c57422c170000001022354658697a8b9baab8c5d2dde8e4dedad8d7d8dce1e9e4d9cdc0b2a494847362513f2d1b08000000192e43586e8499afc4d9eefffffff0e4dad5d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4cbb5a08b745f4a341f0a0000000000000000000f24394e63788da2b7cce1f6ffead5c0ab96826b574143586d8398adc2d7ecfff4dfcbb6a18c76614d38230e0000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210d2033475a6d8294a8bbcee1decbb8a5917d6a5744311d0a000000000000000000001125394d61758a9eb1c6d9ebd7c3af9a86725d4935210d00000000000000000000000000001f344a5f748ba0b5cbe0f5f0e3d9d3d3d3d3d3d3d3d4d7dce3ebe1d6c9bcae9f90806f5e4c3b2916040000000011263a4e63778ba0b4c8dcd5c1ac97836e5a4531394d62768ba0b4c9ddd4c0ac97836f5a46321e0900001f344a5f748ba0b5cbe0f5f1e4dad5d4d4d4d4d4d4d4d4d4d4d4d4d4d4c0ab95806a543f2a15000c1d2d3a42444444475c72889db3c8c8b39d88725c474444546a8095abc0d1bca7917b6650444444443d3122110000000000000002122231404d5b67737d899299a0a5a8ababa9a7a39d968f98a7b6c5d5e4d9cabbac9d8e7d6a55402b16000006192c3f5163758697a8b8c7d5e2efece5dfdbd9d9d9d9d9d9d9dadadadadcdcdcdddddedfe0e1d8c3ad98836c57422c170000071a2d3f5264758798a9b8c8d6e3e5dad1cac5c3c1c3c7cdd6e0ebded0c2b2a291806e5c4a372512000000192e43586e8499afc4d9eefffff3e2d2c6c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb5a08b745f4a341f0a00000000000000000013283d52677b91a6bbd0e5f9ffedd8c3ae99846f5a44465b70869bb0c5daeffff8e3ceb9a48f7965503b26120000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b362115293c4f63768a9db1c4d7e8d5c2af9c8875614e3b281401000000000000000000000a1e32465a6e8396aabfd2e6dec9b5a18d7864503c281400000000000000000000000000001f344a5f748ba0b5cbe0f3e2d2c6bfbdbdbdbdbdbdbfc2c8cfd9e4e7dacdbdae9e8d7b6a584633210e000000000b1f33485c708599adc1d6dbc6b29d89745f4b363e53677c91a5bacee2ceb9a5917c6854402b170300001f344a5f748ba0b5cbe0f4e3d3c7c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfab95806a543f2a1500172a3b4b575a5a5a5a5c72889db3c8c8b39d88725c5a5a5a5a6a8095abc0d1bca7917b665a5a5a5a584f402e1b08000000000000102030404f5e6b7885919ca5adb4b9bdbfc0bfbcb7b1aaa4a9b6c5d4e3e2d3c4b5a697887867543f2a1500000f2336495c6e8292a4b5c6d6e5ede2d8d1cbc6c4c4c4c4c4c4c4c5c5c5c5c7c7c7c8c8c9cacbcccdc3ad98836c57422c1700001023374a5c6f8293a5b6c6d6e5e0d3c7beb5b0adacaeb3b9c3cedae8e0d0c0af9e8c796754412e1b070000192e43586e8499afc4d9eefffce8d5c4b5aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a08b745f4a341f0a000000000000000000172c40556a8094a9bed3e8fdfff0dbc6b19c87725c47495e73899eb3c8ddf2ffffe7d2bda8937d69543f2a150000000000000000001f344a5f748ba0b5cadfe1ccb7a18c76604b36211e3145586c8093a6b9cce0dfccb9a692806c5845321e0b000000000000000000000003172b3f53677b8fa3b7cbdfe4d0bca894806b57432e1a06000000000000000000000000001f344a5f748ba0b5cbdfe9d6c4b4aaa8a8a8a8a8a8a9adb4bcc6d2dfeadcccbbab99887563503d2a170400000004192d41556a7d93a7bbcfe0ccb7a28e7965503c43586d8296abbfd4dcc7b39f8b76624e3925110000001f344a5f748ba0b5cbe0ead7c5b5aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a995806a543f2a15001d324659696f6f6f6f6f72889db3c8c8b39d88726f6f6f6f6f6f8095abc0d1bca7917b6f6f6f6f6f6c5e4b37220d00000000000b1d2d3e4e5e6d7b8a97a3aeb8c1c8ced2d4d5d4d1ccc5bdb9bcc6d4e3e3d4c4b5a6978878695a4a3825110004172b3f5265788c9eb0c2d3e4e9dcd0c5bdb6b2afafafafafafafb0b0b0b0b1b1b1b3b3b4b4b5b7b8b9ad98836c57422c170004182c3f5366798c9fb1c2d4e4e0d0c2b5aba29b9897999ea6b0bccad9e9decdbba99784715d4a36230f0000192e43586e8499aebfd1e2f3f7e2cdb9a6979494949494949494949494949494949494948b745f4a341f0a0000000000000000041a2f44596e8398adc2d7ecfffff3dec9b49f8a745f4b4c61768ca1b6cbe0f5ffffead5c0ac97826c57422e190400000000000000001f34495e73899fb4c9dee1ccb7a18c76604b3621273a4e6175889cafc2d5e9d6c3b09c8976634f3c2915020000000000000000000000001024384c6074889cb0c4d8ebd7c3af9a86725d4935210d000000000000000000000000001f34495e73899fb4c9dee3cebaa6979393939393939499a0a9b4c1ceddead9c8b7a593806d5a46331f0c0000000012263b4f63778ca1b5c9ddd1bda894806a5541495d72879bb0c5d9d5c1ad9984705b47331e0a0000001f344a5f748ba0b5cbe0e3cfbaa7989494949494949494949494949494949494806a543f2a15001f344a5f748686868686868a9eb3c8c8b39e8a868686868686868696abc0d1bca79286868686868679644f3a250f000000000517293a4b5c6c7c8c9aa7b4c0cbd4dce3e7eaeae9e6e0d9d2cfd1d8e4e4d4c5b6a7978878695a4b3c2c1b08000a1e33475a6e8295a8bbcddfe9dacbbeb3a9a29c9a9999999999999b9b9b9b9c9c9c9d9d9fa0a0a1a3a4a698836c57422c17000b1f33475b6f8396a9bccee0e2d2c2b2a4988e878383848a939facbbcbdbead8c6b3a08d7966523e2a160100182e43586d8091a2b3c4d5e6f5e0cbb5a08b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d735f4a341f0a0000000000000000091e33475c71879cb1c6daeffffff6e1ccb7a28d77624d4f64798fa3b8cee3f8ffffeed9c4af9a86705b46311c0700000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36213043576a7d91a4b8cbdee1cdbaa793806d594633200d00000000000000000000000000091c3144586d8295a9bdd1e5dec9b5a18d7864503c2814000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c7c7c7c7c7c7c80858d97a3b0bfcfdfe6d4c2af9d8a76634f3b2713000000000c2034495d71869aaec2d7d7c2ad9985705b474e63778ca1b5cadecfbba7927d6955412c18040000001f344a5f748ba0b5cbe0e1ccb7a18c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7b68543f2a14001f344a5f748b9b9b9b9b9b9ca8b9cdcdb9a89c9b9b9b9b9b9b9b9ba2b3c5d6c2afa09b9b9b9b9b9079644f3a250f000000001022344658697a8b9baab8c5d2dde8e5ded9d6d5d7dadfe6e6e4e6ececd9c6b6a7988978695a4b3c2d1e0e00001025394e62768a9eb1c5d8eadccbbcada1968d8885848484848484868686868787878888898b8b8c8d8f9193836c57422c170011253a4e62768b9fb2c5d8e9d7c5b4a494877a726d6c6f76828f9dadbdcfe1e3d0bda995826d5944301b070015293d5061728495a6b8c9daebe2cebaa79685736868686868686868686868686868686868645644301c0700000000000000000c21364b60758b9fb4c9def3fffffbe4cfbaa5907a655052677c91a7bbd0e6fbfffff2ddc8b39e89745f4a35200b00000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3626394c6073879aadc1d4e7d7c4b19e8a7763503d2a1704000000000000000000000000000115293d5165798ea2b6cadee4d0bca894806b57432e1a060000000000000000000000001e33485e73899fb4c9dee1ccb7a18c7667676767676a70798592a1b1c2d3e5dfccb9a6927d6a56422d1905000000061a2e42566a8094a8bcd0dcc7b39f8a75614c54687c92a6bbcfddc9b4a08c77634f3a2612000000001f344a5f748ba0b5cbe0e1ccb7a18c7668686868686868686868686868686868685d4c392511001f344a5f748ba0b0b0b0b0b1b8c6d7d7c6b8b1b0b0b0b0b0b0b0b0b5c0d0decdbeb3b0b0b0b0a59079644f3a250f000000071a2d3f5164758798a9b8c8d6e3e6dbd1cac4c1c0c1c5cbd2dce8f4ffe7d2bda99889796a5a4b3c2d1e0f000000152a3f53687c91a5b9cde1e3d0bead9e8f8379736f6e6e6e6e6e6f6f6f6f6f70707072727374767778797b7c7c6a56412c1700162b3f54687c92a6bacee2dfccbaa7968676685e58575b63707d8fa0b1c4d7ead8c5b19c88735e4a35200c000e213344556677899aabbccddee9d6c4b3a291806e5d535353535353535353535353535353514738271401000000000000000010253a4f64788ea3b8cde2f7ffffffe7d2bda8937d6853556a8094a9bfd3e9fefffff5e0cbb6a28d77624d39240f00000000000000001e33485e73899fb4c9dee1ccb7a18c76604b362e4255687c8fa3b6c9dce2cebba895826e5a4734210e0000000000000000000000000000000e22364a5e72879aafc2d6ead7c3af9a86725d4935210d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c766052525252555d67748393a4b5c8dae8d5c1ae9a86705c48331e0a0000000013273c5064788da1b6cadecdb9a48f7a6652596d8397acc0d5d6c2ae9a86715d4834200c000000001f344a5f748ba0b5cbe0e1ccb7a18c7660535353535353535353535353535353534c3f2f1d0a001f344a5f748ba0b5c5c5c5c6cbd6e4e4d6cbc6c5c5c5c5c5c5c5c5c9d2deebdccfc7c5c5c5bba59079644f3a250f0000000f2336495c6f8293a5b6c6d6e6e1d4c8beb6afacabacb0b7bfcad7e5f4e5d0bba5907c6a5b4c3c2d1e0f00000000192e43586d8297abc0d4e9dac7b3a18f8071665e5a58585858585a5a5a5a5a5b5b5c5c5d5e5f606263646667685f4e3b2713001a2f44586d8397acc0d5e9d8c4b09d8a7867584b4342475260708295a8bbcee2dfcbb6a28d78634e39240f0004152637485a6b7c8d9fb0c1d2e3e2d1c0af9e8c7b6a58473e3e3e3e3e3e3e3e3e3e3e3e3e3c35291a0900000000000000000014283d52677c92a6bbd0e5faffffffead5c0ab96826b56586d8397acc2d7ebfffffff9e4cfbaa5907b66513c271200000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36374b5e718598acbfd2e5d8c5b29f8c7864513e2b1805000000000000000000000000000000071b2f43576b8093a7bbcfe3dec9b5a18d7864503c28140000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3c3c3d414a5664758698abbed1e5ddc8b4a08b76614c38230e000000000d2135495e72879bafc3d8d2beaa95806c575f73889db1c6dad0bca793806a56422e1905000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e392f211100001f344a5f748ba0b5c4c4c4c4cad5e3e3d5cac4c4c4c4c4c4c4c4c4c7d0ddeadbcec6c4c4c4bba59079644f3a250f000004182b3f5266798c9eb1c2d4e4e0d1c3b7aba29b9795979ca3adb9c7d6e5e7d3bfab9986725f4b38241000000000001c31465b70869bb0c5d9e9d4bfab97847161534a4543434650585f64686a6a6867645f59514a4b4c4e4f5052534d41311f0c001d32475c71879bb0c5dae6d2bda995826d5a493a2f2c34425364778b9fb3c8dce4d0bba6917b66513c27120000081a2b3c4d5e6f8292a3b4c6d7e8ddccbbaa9988766554433229292929292929292929292722180b00000000000000000000172c41566b8095aabfd4e9fefcfafdedd8c3ae99846e595b70869bafc4daeffbf9fbffe8d3bea9947d6955402b1601000000000000001e33485e73899fb4c9dee1ccb7a18c76604b364053677a8ea1b4c8dbe3cfbca996836f5c4935220f000000000000000000000000000000000014283c5064778ca0b4c8dce4d0bca894806b57432e1a0600000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3627282d384757687a8ea2b6cadee3ceb9a48f7a65503b261100000000061b2f43576b8095a9bdd1d8c4af9a86715d64788ea2b7cbdecab5a18d7864503b271300000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b362929292929292929292929292928251d110300001f344a5f748ba0afafafafafb7c5d6d6c5b7afafafafafafafafafb3bfcfdeccbdb2afafafafa59079644f3a250f00000a1e33475b6e8296a9bbcee0e3d2c2b3a6998f8782808388909ba9b8c7d8eadbc8b5a28f7a67533f2b1602000000001e33485e73889db3c8dde5d0bba6917c68544236303e4b58636c74797c80807d7c78746d645b5043383a3b3d3e3930231302001f34495e73899fb3c8dee2cdb8a38f7965513d2b1c182435485c70859aaec3d8e8d3bea8947d68533e29140000000d1e2f405263748697a8b9cadbead9c8b6a5948371604f3e2d1b131313131313131313120e0500000000000000000000051b30455a6f8499aec2d7ecece7e5e8efdbc6b19c87715c5e73889db3c7dcede6e4e6ecebd6c1ac97836d58432e1a05000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36495c708397aabdd1e4d9c6b3a08d7966533f2c190600000000000000000000000000000000000c2135485d708599adc1d5e9d7c3af9a86725d4935210d00000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3621131b29394b5f72879bb0c5d9e7d2bda8937d68533e2914000000000014283d5165798ea2b7cbddc9b5a08b7762697d93a7bcd1d8c3af9b87725d4935210c00000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b3621131313131313131313131313131009000000001f344a5f748b99999999999ba7b9ccccb9a79b9999999999999999a1b2c5d5c1ae9f99999999999079644f3a250f00001025394e62768a9eb2c5d8ead7c6b5a496887c726c6b6d737d8b9aaabbccdee5d1beaa96836e5a46311d08000000001f344a5f748b9fb4c9dfe3cdb8a38e78634e392e3e4d5c697580888e93959594928e8882776d61534435262828251d120400001f344a5f748ba0b5cbe0e0cbb6a18c76604c37220e06192d42576c8297acc1d6ead5c0ab95806a543f2a1500000001122334455667798a9badbecfe0e5d4c3b2a1907d6d5c4a392817060000000000000000000000000000000000000000091e33485d72889cb1c6dbe4d9d2d0d4dcdec9b49f8a745f61768ca0b5cbdfdad2cfd1d8e4dac5b09b87715c47321d08000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3e5265798c9fb3c6d9e4d1beaa9784705d4a36231000000000000000000000000000000000000005192d4155697d92a6bacee2dec9b5a18d7864503c281400000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0b1c2f43586d8297acc1d6ead4bfab95806a543f2a1500000000000e22364a5f73889cb0c4d9cebaa5917c686f8498adc1d6d1bda995806b57432f1a0600000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f73848484848484899eb3c8c8b39e89848484848484848496abc0d1bca79284848484848479644f3a250f0000152a3f53687c91a5b9cde1e1cebba89786776a5f575658606c7b8c9dafc2d5e8d9c6b19d8974604b37220d000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c373b4c5c6b7a87939ca3a7aaaba9a7a29c958b8071625344332213110a000000001f344a5f748ba0b5cbd4d4cbb5a08b745f4a341f0a0e1b2c41566b8297acc1d6ead5c0ab95806a543f2a1500000000051627394a5b6c7d8fa0b1c2d4e5e1cfbead9c8b7968574635231201000000000000000000000000000000000000000d22374c61768ba0b5cadfd4c6bdbbc0cad9ccb7a28d776264798fa3b8ced7c8beb9bcc6d4dec9b49f8a745f4b36210c000000000000001e33485e73899fb4c9dee1ccb7a18c76604b475b6e8295a8bccfe2dbc8b4a18e7a6754402d1a070000000000000000000000000000000000000012263a4e62768a9fb2c6dae4d0bca894806b57432e1a06000000000000000000001e33485e73899fb4c9dee1ccb7a18c76614c37220c00152b40546a8095abc0d5ead6c0ac97826b56402b160000000000071c3044586c8295aabed2d4bfab97826d74899eb2c7dbcbb7a28e7965513d28140000000000001f344a5f74899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001c304457676e6e6e6e6e72889db3c8c8b39d88726e6e6e6e6e6e8095abc0d1bca7917b6e6e6e6e6e6b5d4a36220d0000192e43586d8297abc0d4e9d9c5b19e8b7968594c4340444e5d6e8092a5b8cce0e1ccb8a38f7965503b2611000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c3747596a7a8a98a5afb7bcbfc0bebbb7b1a89d9082716151402e1c0900000000001f344a5f748ba0b5bfbfbfbfb5a08b745f4a341f15202c394a5c708499adc2d7e9d4bfa9947d69543f2a1500000000000a1b2c3d4e60708294a5b6c7d8e9dccbbaa9978675635241301f0d0000000000000000000000000000000000000011253a4f64798fa3b8cddac7b6a9a5adbbcdcfbaa5907a65677c91a7bbd0cbb9aba4a9b6c7daccb7a28d78634e39240f000000000000001e33485e73899fb4c9dee1ccb7a18c76604b5064778a9eb1c5d8e5d2beab9885715e4b37241100000000000000000000000000000000000000000b1f33475b6f8397abbfd3e7d7c3af9a86725d4935210d000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d04172c41566b8296abc0d5ead5c0ab95806b56402b1600000000000015293e52667a8fa3b7ccdac5b09c8872798fa3b8ccd9c4b09c88735f4a36220e0000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001427394954585858585c72889db3c8c8b39d88725c585858586a8095abc0d1bca7917b6658585858574d3f2d1b0700001c31465b70869bb0c5d9e8d3bfaa96826e5b4a3b2f2b313f506275899db1c5dae6d2bda8937d68543f2a14000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c3f5264768898a8b6c2cbd1d4d5d3d0ccc4baae9f90806f5d4b39261300000000001f344a5f748ba0a9a9a9a9a9a9a08b745f4a341f28323d495767798c9fb3c7dce6d1bca7927c67523d28130000000000000e2031425364758798a9bbccdde9d7c6b5a49282705f4e3c2b1a0900000000000000000000000000000000000014293e53687c92a7bcd1d3beaa98909db0c5d2bda8937d686a8094a9bfd3c3af9b8f98abbfd4d0bba6917c67523d2813000000000000001e33485e73899fb4c9dee1ccb7a18c76604b596c8093a7bacee1dcc9b5a28f7b6855412e1b08000000000000000000000000000000000000000004182c4054687c90a4b8cce0dec9b5a18d7864503c2814000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d132233475b6f8499aec2d7e8d3bea9947d69543f2a150000000000000f23374b6074889cb1c5d9cab6a28d788094a9bdd2d2beaa95826d5844301c070000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0a0a0a0a0a0a0a0a0a0a0a0a0701000000000a1b2b3840434343475c72889db3c8c8b39d88725c474343546a8095abc0d1bca7917b6650434343423b2f21100000001e33485e73889db3c8dde4cfbaa5907b67523e2c1d16213346596d8397acc1d6ead5c0ab96826b56402c16010000001f344a5f748ba0b5cbe0e2cdb8a38d77624c495c6f8294a5b6c6d4dfdad4d3d4d9e0d7cbbdae9e8d7a6856432f1c08000000001f344a5f748b94949494949494948b745f4a34303a454f5b67758697a9bbcfe2e1ccb8a38f79644f3a2510000000000000021324364758697a8c9daebfd0e1e4d3c2b09f8e7c6b5a49382715040000000000000000000000000000000000182d41576b8296abc0d5cfbaa5908397acc1d5c0ab96826b6d8397acc2d5c0ab968292a7bcd1d3bfaa95806a55412c17020000000000001e33485e73899fb4c9dee1ccb7a18c7866546275899cb0c3d6e6d3bfac9986725f4c392512000000000000000000000000000000000000000000001125394d6075899db1c5d9e4d0bca894806b57432f1b070000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37221f2431405163768a9eb2c7dbe4d0bba6917b67523d2813000000000000081c3145596d8296aabfd3d0bba7927d859aaec2d7ccb7a38f7a66523e2915010000000000001e33485e73899fb4c9dee1ccb7a18c76604b36211f1f1f1f1f1f1f1f1f1f1f1f1f1c150a000000000d1a252c2e2e32475c72889db3c8c8b39d88725c47323f546a8095abc0d1bca7917b66503b2e2e2d281e11030000001f344a5f748b9fb4c9dfe2cdb8a38e78634e39240f04162a3f54697d94a9bfd4e9d7c2ad98836c57422c17020000001f344a5f748ba0b5cbe0e2cdb8a38d77624c5265798c9fb1c3d4ded1c6bfbdbfc5cfdcdcccbbaa9885725f4b38240f000000001f344a5f737d7d7d7d7d7d7d7d7d7d735f4a38434d57626d788694a3b4c6d8ebdac6b29e8975604b37220d000000000000000618293a4b5d6e8090a1b3c4d5e6dfcebdac9b897767554433221100000000000000000000000000000000061b30455a6f8599aec3d8ccb7a28d8094a9bed3c3ae99846e70869aafc4d2bda8937d8fa4b9ced7c2ad98846e59442f1a050000000000001e33485e73899fb4c9dee4cfbba8968472606b7d92a5b9ccdfddcab6a3907c695643301c0900000000000000000000000000000000000000000000091d3145596d8296aabed2e6d7c3af9a86725e4a36210d0000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37333438424f5e6e8093a6b9cde1dfcbb6a28d78634e39251000000000000001162a3e53677b8fa4b8ccd5c1ac98838a9fb4c8dac5b19d8974604b37230f000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36343434343434343434343434343431281b0c00000004101a1f212132475c72889db3c8c8b39d88725c47323f546a8095abc0d1bca7917b66503b2621201c1307000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001f344a5f748ba0b5cbe0e2cdb8a38d77624c5a6d8295a9bbcee0cfc0b3aba8aab2becdddd9c7b5a28f7a67533e2a16020000001c30445664686868686868686868686456444b55606a75808a96a3b2c1d2e3e3d0beaa97836e5a46311d0800000000000000000b1d2e3f5061728495a6b7c8daebdac9b8a79685736251402e1d0c0000000000000000000000000000000a1f34495e73889db2c7dcc9b49f8b7b91a6bbd0c6b19c877173889db2c7cfbaa590798ca1b6cbdbc6b19c87725d48331e090000000000001e33485e73899fb4c9deead7c5b3a1907d6b74889baec1d5e7d4c1ae9a8773604d3a2713000000000000000000000000000000000000000000000002162a3e52667a8fa2b7cbdedec9b6a28d7965503c28140000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c4848494c545f6d7c8d9eb0c2d5e9d8c4b09c88735e4a35200c000000000000000f24384c6075899db1c6dac6b29e8d91a4b9cdd3bfab97836d5945311c08000000000000001e33485e73899fb4c9dee1ccb7a18c76604b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392a1906000414222d34363636475c72889db3c8c8b39d88725c47363f546a8095abc0d1bca7917b66503b3636352f2517080000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001f344a5f748b9fb4c9dfe2cdb8a38d77624c6075899db1c5d8d5c3b1a2979396a0aebfd2e4d1beaa96826d5945311c080000001427384751535353535353535353535149535d68727c88929ca7b4c1d0dfe7d6c5b3a18e7a67533f2b170300000000000000000010213244556677899aabbccddee7d6c5b3a291806e5d4c3b2a190700000000000000000000000000000e23384c61768ca0b5cadbc6b19c88788ea3b8cdc9b49f8974768ba0b5caccb7a28d77899eb3c8ddc9b4a08b75604b37220d0000000000001e33485e73899fb4c9def4e2d1bfad9b89767d90a4b7cadedecbb8a5917d6a5744311d0a0000000000000000000000000000000000000000000000000f23374b5f73889bafc3d7e5d1bca894806b57432f1b0700000000000000001e33485e73899fb4c9dee2cdb8a38d77625e5e5e5e6167717d8c9baabbcddfe3cfbca995826d5844301b0700000000000000091d31465a6e8397abbfd4cebbaba1a3afc1d4cdb9a4907b67533f2a1602000000000000001e33485e73899fb4c9dee1ccb7a18c76605f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574836220f000f213240494b4b4b4b5c72889db3c8c8b39d88725c4b4b4b546a8095abc0d1bca7917b66504b4b4b4a423526140200001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d776252667b90a4b8cce0cdb9a694847c8290a2b5c9ddd9c5b19d88745f4a36210c000000091a29353c3e3e3e3e3e3e3e3e3e46515b66707a85909aa4afb9c5d2dfe8d9c9b8a79684715e4b382410000000000000000000000415263748596a7c8d9eb0c1d2e3e2d1c0af9e8d7b6a5947362514030000000000000000000000000011263b5065798fa4b9ced8c3ae9984768ba0b5caccb7a28d77788fa3b8cdc9b49f8974869bb0c5dacdb8a38f79644f3a25100000000000001e33485e73899fb4c9def4eedccab8a694828699adc0d3e7d5c2af9b8875614e3b281401000000000000000000000000000000000000000000000000081c3044586c8094a8bcd0e4d7c3af9b87725e4a36210d00000000000000001e33485e73899fb4c9dee2cdb8a38d777373737373767b848f9ba9b8c8d9ead8c6b3a08d7965513e2915010000000000000002162b3f53687c90a5b9cdd9c9bcb6b7c0cddbc6b29e8a75614d38241000000000000000001e33485e73899fb4c9dee1ccb7a18c76747474747474747474747474747474747465523d281400192c3f505d606060606072889db3c8c8b39d887260606060606a8095abc0d1bca7917b66606060605f5344311e0a00001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d7762576b8295aabfd3dcc7b29e8a766872869aafc4d9e0ccb7a28e78644f3a2511000000000b18222729292929292d39444e59636e78838d98a2acb7c1ccd7e3e5d8cabbab9b8a786654412e1b08000000000000000000000008192a3c4d5e6f8292a3b4c5d7e8deccbbaa99887665544332200f00000000000000000000000000152a3f54687d93a8bdd2d5c0ab978272889db2c7cfbaa590797c91a6bbd0c5b09b87718398adc2d7d1bca7927c68533e29140000000000001e33485e73899fb4c9def4f9e7d6c3b2a09090a2b5c9dcdfccb9a692806c5845321e0b000000000000000000000000000000000000000000000000000015293d5065798da1b5c9dddecab6a28d7965503c281400000000000000001e33485e73899fb4c9dee3ceb9a4918989898989898b9097a1acb9c7d6e6decdbba99684705d4a36220e0000000000000000001024394d61758a9eb2c7dbdad0cbccd2ddd4c0ac97836f5b46321e0900000000000000001e33485e73899fb4c9dee2cdb8a3908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a15001e33485c6e767676767676889db3c8c8b39d88767676767676768095abc0d1bca7917b767676767671614d38230e00001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77625a6f859aaec3d8d8c3ae99846f5b6c8297abc0d5e5d1bca7927c68533e29140000000000050e1213131725323e4b56616b76828b95a0aab5bfc9d4dee9e0d4c7baac9d8d7c6c5b49372512000000000000000000000000000d1e2f405163738597a7b9cadbead9c8b7a5948371604f3e2d1c0a000000000000000000000000182d42576c8297abc0d5d2bda8937d6f869aafc4d2bda8937d8094a9bed3c2ad98846e8095aabfd4d4bfab96826b56412c180300000000001e33485e73899fb4c9def4fff3e1cfbdaea3a3aebfd2e5d6c3b09c8976624f3c29150200000000000000000000000000000000000000000000000000000d2136495d72869aaec2d6e5d1bca894806b57432f1b07000000000000001e33485e73899fb4c9dee7d3c0afa29f9f9f9f9f9fa0a4abb3becad7e5e0d1c0af9e8c796654412d1a060000000000000000000a1e32465b6f8498acc0d4e9e4e0e1e6e2cebaa5917c6854402b170300000000000000001e33485e73899fb4c9dee6d3c0aea2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094806a543f2a15001f344a5f748b8c8c8c8c8c8fa0b4c9c9b4a08f8c8c8c8c8c8c8c8c99acc1d2bda9958c8c8c8c8c8c79644f3a250f00001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77625e73889db2c7dcd6c0ac97826c57697d94a9bfd4e9d5c0ab96826b56412c1702000000000000000817263543505c68737d89939ea8b2bdc7d1dce6e4d9cec3b6a99c8e7d6f5e4e3d2c1a080000000000000000000000000000112334455667788a9bacbecfe0e5d4c3b2a1907d6d5c4a3928170600000000000000000000071c31465b70869aafc4d9cfbaa5907b6c8297acc1d5c0ab96828397acc1d4bfab95806b7c92a7bcd1d8c3ae99846f5a45301b0600000000001e33485e73899fb4c9def4fffeecdbccbfb8b8c0cddde0cdbaa793806d594633200d000000000000000000000000000000000000000000000000000000061a2e42566a7d93a7bbcee3d7c3af9b87725e4a36210d000000000000001e33485e73899fb4c9deefddcdbfb6b4b4b4b4b4b4b5b9bfc7d0dbe8e4d3c2b3a291806e5c4a3724110000000000000000000003172c4054687c91a6bacee2f6f5f6f0dcc7b39f8b76624e3925110000000000000000001e33485e73899fb4c9deefddcdbfb7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a9947d68533e2913001f344a5f748ba0a1a1a1a1a2adbdcfcfbdada2a1a1a1a1a1a1a1a1a8b6c8d8c5b3a6a1a1a1a1a19079644f3a250f00001f344a5f748b9fb4c9dfe2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d776260748ba0b5cadfd4bfaa95806a54687c93a8bdd3e8d7c2ad98836d58432e1903000000000000071726354453606e7a86919ba6b0bbc5cfdae4e4dbd1c6bcb1a5998c7d6f605140301f0e000000000000000000000000000000051627384a5b6c7d8fa0b1c2d3e4e1d0bead9c8b79685746352312010000000000000000000b2034495e73899eb3c7dccdb8a38d78697d94a9bed3c3ae9984869aafc4d2bca7937c68798fa4b9cedcc7b29d88725d49341f0a00000000001e33485e73899fb4c9def4fffff9eadcd2cdcdd3ddebd7c4b19e8a7763503d2a17040000000000000000000000000000000000000000000000000000000013273b4f63778b9fb3c7dbdecab6a28d7965503c2814000000000000001e33485e73899fb4c9def4ebdcd1cbc9c9c9c9c9c9caced3dae3edefdbc7b5a495857362513f2d1a0800000000000000000000001125394e62768b9fb3c8dcf0ffffead5c1ad9985705b47331f0a0000000000000000001e33485e73899fb4c9def4ebddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbbfa9947d68533e2913001f344a5f748ba0b5b7b7b7b7becbdadacbbeb7b7b7b7b7b7b7b7b7bbc6d4e2d1c3b9b7b7b7b7a59079644f3a250f00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d776261768ca1b7cce1d4bfa9947d6853677c93a8bdd3e8d9c4af9a856f5a442f1a05000000000003142535445362707d8c98a3aeb8c2cdd7e2e6dcd2c8beb4aa9f94887a6d5f51423222120100000000000000000000000000000000091b2c3d4e5f708293a4b6c7d8e9dccbbaa9978675635241301f0e0000000000000000000e23384d62778ca1b6cbdfcab4a08b75667b91a6bbd0c6b19c87889db2c7ceb9a48f7965768ca1b6cbdfcab5a08c76614c37220d00000000001e33485e73899fb4c9def4fffffffaeee6e2e2e6efe1cebba895826d5a4734210e00000000000000000000000000000000000000000000000000000000000c2034485c708498acc0d4e5d1bca894806b57432f1b070000000000001e33485e73899fb4c9def4faeee5dfdededededededfe3e7eef6ffebd6c1ac98867666564533210f0000000000000000000000000b1f33475b708599adc1d6ebffffe4cfbba7927d6955412d18040000000000000000001e33485e73899fb4c9def4faeee6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d4bfa9947d68533e2913001f344a5f748ba0b5cbccccccd2dbe9e9dbd2cccccccccccccccccccfd7e3efe1d5ceccccccbba59079644f3a250f00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853677c93a8bdd3e8dac5b09b866f5a442f1a0500000000000f203242526271828f9da9b5c0cbd5dfe8ded4c9bfb5aba1978d82766a5d4f41322314040000000000000000000000000000000000000e1f30425364758798a9bacbdde9d7c6b5a49382705f4e3d2b1a08000000000000000012273c51667a90a5bacfdcc7b29c887263788ea3b8cdc9b49f8a8ba0b5cacbb6a18c776273899eb3c8ddceb9a48f7965503b261100000000001e33485e73889db3c8ddf2ffffffffffffffffffebd8c5b29f8c7864513e2b1805000000000000000000000000000000000000000000000000000000000005192d4155697c91a5b9cde1d7c3af9b87725e4a36210d0000000000001e33485e73889db3c8ddf2fdf1e9e3e2e2e2e2e2e2e2e3e5eaf0f8ebd6c1ac9888796a5a49382715040000000000000000000000071c3044586c8296abc0d5eaffffe2cdb8a38e7965503d2914000000000000000000001e33485e73899fb4c9def4faeee6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d4bfa9947d68533e2913001f344a5f748ba0b5c1c1c1c2c8d3e1e1d3c8c2c1c1c1c1c1c1c1c1c5cedce8d9ccc4c1c1c1bba59079644f3a250f00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853677c93a8bdd2e7dac5b09b866f5a45301b0600000000081a2c3e4f607082909fadbac7d2dde8dfd5cbc1b7ada2988e857a6f64584c3f31231514110b0100000000000000000000000000000000021324354758697a8c9daebfd0e1e4d3c2b09f8e7c6b5a493725120000000000000000152a3f54697d93a8bdd2d9c4af99856f60758ba0b4cacdb9a79a9ba8bbcec8b39f89745f70869bb0c5dad2bda8937d68533f2a1500000000001d32475c72889db3c8ddf2fffffffffffffffff6e2cfbca996836f5c4935220f000000000000000000000000000000000000000000000000000000000000001126394e61758a9eb2c6dadecab6a28d7965503c28140000000000001d32475c72889db3c8ddf2ede0d5cecdcdcdcdcdcdcdcdd0d5dce5efdbc8b6a698887767564433210f00000000000000000000000f23364b5f73889cb0c4d8edffffe5d1bca894806c58432f1b070000000000000000001e33485e73899fb4c9def4ebddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbbfa9947d68533e2913001f344a5f748ba0acacacacadb5c3d4d4c3b5adacacacacacacacacb1bdceddcbbbafacacacaca59079644f3a250f00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853667b91a7bcd1e6dcc7b19c87705b46301b06000000001225374a5b6d7d8f9faebdcbd8e4e2d7ccc2b8aea49a90867b71675d52473b2e2a2a2a2a261e120400000000020a0e0f0f0f0f0f0f0f0f0f0f17293a4b5c6d8090a1b2c4d5e6dfcebdac9b8a786654422f1d0a00000000000002192e43586d8397acc1d6d6c0ac97826c5d72889cb2c7d6c5b7aeafb8c6d7c5b09b87715c6d8398adc2d7d5c0ab97826c57422d1804000000001d32475c72889db3c8ddf2fffff9f5f4f7feffedd9c6b3a08d7966533f2c1906000000000000000000000000000000000000000000000000000000000000000a1e32465a6e8397abbfd3e5d1bca894806b57432f1b0700000000001d32475c72889db3c8ddf1e0cfc2bab8b8b8b8b8b8b8b8bbc1c9d2dde5d3c4b6a696857362503e2b19060000000000000000000115293e5266798ea2b7cbdff3f5f6ebd7c3af9b87725e4a36220e0000000000000000001e33485e73899fb4c9deefddcdbfb7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a9947d68533e2913001f344a5f748b979797979798a5b8ccccb8a59897979797979797979fb1c4d4c0ad9d97979797979079644f3a250f00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d7c2ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853667b91a7bcd1e6dcc7b19c87705b46301b06000000081b2e415467798b9cadbdcddbe9ddd1c5baafa59c92887d72685e544a403f3f3f3f3f3f3f3a30221100000008141e2325252525252525252525231d2d3e5061728495a6b7c8d9ebdac9b8a79684715f4c392612000000000000081d32475c70869bafc4d9d3bea8947d695a6f8599aec3d8d5c9c3c4cad5d7c2ad98846e596a8095aabfd4d9c4af9a86705b46311c07000000001d32475c72889db3c8ddf2faeee5dfdfe3ebf6e5d1bdaa9783705d49362310000000000000000000000000000000000000000000000000000000000000000003172b3f53677b8fa3b7ccdfd7c3af9b87725e4a36210d00000000001d32475c72889db3c8dde9d5c2b1a5a3a3a3a3a3a3a3a3a7adb5c0ccdae2d4c4b4a391806d5b4936230f000000000000000000081c3044586d8295a9bdd1e6e4e0e1e6decab6a28e7965513d29150100000000000000001e33485e73899fb4c9dee6d3c0aea2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937d68533e2913001f344a5f73828282828282889db3c8c8b39d88828282828282828296abc0d1bca79282828282828279644f3a240f00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402c16010000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853667b91a7bcd1e6dcc7b19c87705b46301b060000001024374b5e718496a8bacbdbeadbcdbfb3a89d93897d756a605654545454545454545454544d402f1d090007172631383a3a3a3a3a3a3a3a3a3a38312632435466778899aabccddee7d6c5b3a18f7c6855422e1b0700000000000b20354a5f74899eb3c8ddd0bba5907b66576c8297abc0d5e6ddd8d9dee7d4bfaa95806b56677c92a7bcd1dcc7b39e89735e4934200b000000001d32475c72889db3c8ddf2ebdcd1cbcacfd8e6e3cdb8a38e7a6754402d1b090000000000000000000000000000000000000000000000000000000000000000001024384c6074889cb0c4d8decab6a28d7965503c281400000000001d32475c72889db3c8dde3cebaa5938d8d8d8d8d8d8d8e9299a3aebccbdbe2d1c1af9d8b7865523f2b180400000000000000000f23374b5f73889cb0c4d8dad0cbccd2ddd1bda995826c5844301c0700000000000000001e33485e73899fb4c9dee2cdb8a3908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c2712001c304456666b6b6b6b6b72889db3c8c8b39d88726b6b6b6b6b6b8095abc0d1bca7917b6b6b6b6b6b685c4936210d00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853667b91a7bcd1e6dcc7b19c87705b46301b06000004182b3f53677a8ea1b3c6d7e9dbccbdafa2968a80756c61574e60696a6a6a6a6a6a6a6a6a695e4c39251000122535444d4f4f4f4f4f4f4f4f4f4f4d4335263748596a7b8d9eafc1d1e3e2d0beab9885715d4a36220e00000000000f24394e63778da2b7cce1cdb8a38d786354697d93a8bdd2e7f1eeeef2e6d1bca7927c685364798fa4b9cee0cbb6a18c77624d38230e000000001d32475c72889db3c8ddefddcdbfb6b4bbc8d8e3cebaa592806e5c4a382614020000000000000000000000000000000000000000000000000000000000000000091d3145596d8295a9bdd1e5d1bca894806b57432f1b07000000001d32475c72889db3c8dde2cdb8a38d77777777777777787d86919eadbdcddfdeccbaa895826e5b47331f0b0000000000000001162a3e52667a8fa3b7cbd9c9bcb6b7c0cdd8c4b09c88735f4b36220e00000000000000001e33485e73899fb4c9dee1ccb7a18c76747474747474747474747474747474747363503b2611001427394852565656565c72889db3c8c8b39d88725c565656566a8095abc0d1bca7917b6656565656544c3e2c1a0600001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853667b91a7bcd1e6dcc7b19c87705b46301b0600000a1e33475b6f8397aabed0e3dfcdbdae9e9184786d63594f45556a7d8080808080808080807c68533e2813001b2f425361646464646464646464646053412e2a3b4c5e6f8091a3b4c5d6e8dbc8b4a18d7965513d2814000000000012273c51667b90a5bacfdfcab5a08b756051667b90a5bacfe4f9fffff9e3ceb9a48f79655061768ca1b6cbe0cfbaa5907a66513c2712000000001d32475c72889db3c8dde7d3c0afa2a0aabaccded5c2b09e8c7967564432200d000000000000000000000000000000000000000000000000000000000000000001162a3e5165798ea2b6caded7c3af9b87725e4a36210d000000001d32475c72889db3c8dde2cdb8a38d77626262626262646973808f9fb0c1d4e7d7c5b29e8a76624e3a251100000000000000081c3145596d8295aabed2cebbaba1a3afc1d4cbb7a28e7965513e291501000000000000001e33485e73899fb4c9dee1ccb7a18c76605f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f564634200c000a1b2a363e404040475c72889db3c8c8b39d88725c474040546a8095abc0d1bca7917b66504040403f392e200f0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cde2d4bfa9947d6853667b91a7bcd1e6dcc7b19c87705b46301b0600000f24384d61768a9eb2c6d9e7d4c1b09f8f8072665b50463c40566b829595959595959595947d68533e2913001f34495e7179797979797979797979715d49341f2f405162738596a7b9cbdee4d0bca995806b57432e1a0500000000162b40556a8094a9bed3dcc7b29d88725d4e63778da2b7cce1f6fffff5e0cbb6a18c77624d5e73899eb3c8ddd2bea8947d69543f2a15010000001d32475c72889db3c8dde3ceb9a4918c9dafc1d2dfcdbba9978573614f3d2b190700000000000000000000000000000000000000000000000000000000000000000e22364a5e72879bafc3d7decab6a28d7965503c2814000000001d32475c72889db3c8dde2cdb8a38d77624c4c4c4c4c4f5661708292a4b7cadde1cebaa6927d68543f2b16000000000000000f23374b6074889cb1c4d9c6b29e8d91a4b9cdd1bda995826d5844301c08000000000000001e33485e73899fb4c9dee1ccb7a18c76604b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a443828170400000c1923292b2b32475c72889db3c8c8b39d88725c47323f546a8095abc0d1bca7917b66503b2b2b2a251c10020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8cdd1d1bfa9947d6853667b91a7bcd1e6dcc7b19c87705b46301b06000014293e52677b90a5b9cee1decab7a59282706255493e332b40566b8297ababababababa9947d68533e2913001f344a5f748b90909090909090908b745f4a341f2233455667788a9cafc2d6e9d8c3af9a86715d48331e09000000031a2f44586d8398adc2d7d9c4af9a856f5a4b60748a9fb4c9def3fffff2ddc8b39e89745f4a5b70869bb0c5dad6c1ac97836d58432e19040000001d32475c72889db3c8dde2cdb8a38d8091a3b5c6d8d8c6b4a2907d6c5a483624120000000000000000000000000000000000000000000000000000000000000000071b2f43576b8094a7bccfe3d1bca894806b57432f1b070000001d32475c72889db3c8dde2cdb8a38d77624c373737373a44526375889baec2d6e9d5c0ac97836d58442f1a00000000000002162a3e52667a8fa3b7ccd5c0ac97838a9fb3c7d8c4b09c88735f4b37230f000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36343434343434343434343434343430271a0b00000000070f14161d32475c72889db3c8c8b39d88725c47323f546a8095abc0cbbca7917b66503b261615110a00000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0014293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776262778da3b8bcbcbcbca9947d6853667b91a7bcd1e6dcc7b19c87705b46301b060000182d42576b8296aabfd3e8d7c3af9b8875635244372b212b40566b8297acc0c0c0c0bfa9947d68533e2913001f344a5f748ba0a5a5a5a5a5a5a08b745f4a341f162738495a6c8093a6bacfe3dec9b4a08b76614c37220d000000081d32475c71879bb0c5dad6c1ac97826c57485d72879cb1c6dbf0ffffefdac5b09b87705c47586d8397acc2d7dac5b09b86705c47321d080000001d32475c72889db3c8dde2cdb8a38d778697a9bbcdded2c0ae9c8a776653412f1d0b000000000000000000000000000000000000000000000000000000000000000014283c5064788ca0b4c8dcd7c3af9b87725e4a36220e0000001d32475c72889db3c8dde2cdb8a38d77624c37222222273445576a7d93a7bcd1e5dac5b09b87715c47321c000000000000091d3145596d8296aabed2cfbba6927d8499adc1d6cbb7a38f7a66523e2a16010000000000001e33485e73899fb4c9dee1ccb7a18c76604b36211f1f1f1f1f1f1f1f1f1f1f1f1f1c14090000000000000000001d32475c72889db3b5b5b39d88725c47323f546a8095abb5b5b5a7917b66503b261100000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095aabfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776262778da3a7a7a7a7a7a7947d6853667b91a7bcd1e6dcc7b19c87705c47311c0700001b30455a6f8499aec3d8e6d1bda894806b584534261a162b40566b8297acc1d5d5d4bfa9947d68533e2913001f344a5f748ba0b5bbbbbbbbb5a08b745f4a341f0a1a2c3d4f63778ca0b5c9dee2cdb8a38f78644f3a240f0000000c21364b60748a9fb4c9ded3bea9947d6954445a6f8499aec3d8edffffecd7c2ad98836e5944556a8094a9bfd3ddc8b39f89745f4a35200b0000001d32475c72889db3c8dde2cdb8a38d77798c9eafc1d3ddcbb9a79583705f4d3b291705000000000000000000000000000000000000000000000000000000000000000d2135495d718599adc1d5decab6a28e7965513d29140000001d32475c72889db3c8dde2cdb8a38d77624c37220d0d16283b4f64788ea3b8cde3ddc8b39e89735e48331e0000000000000f24384c6074899db1c5d9c9b5a18c777d93a7bcd0d2beaa95826d5945311c080000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0a0a0a0a0a0a0a0a0a0a0a0a0701000000000000000000001d32475c72889da0a0a0a09d88725c47323f546a8095a0a0a0a0a0917b66503b261100000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776262778d91919191919191917d6853667a90a5bbd0e5ddc8b39d88725c47321d0700001d32475c72879cb1c6dbe3ceb8a38f7965503c281608172c41566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbd0d0cbb5a08b745f4a341f0a0e2034485d71879bb0c5dbe5d0bba6917b66503b26110000001025394e63788da2b7cce1d0bba6917b665141576b8296abc0d5eaffffe9d4bfaa95806b564152677c91a7bbd0e1ccb7a28d77634e39240f0000001d32475c72889db3c8dde2cdb8a38d776e8092a3b5c7d8d6c4b2a08f7c6a58463422100000000000000000000000000000000000000000000000000000000000000006192e42556a7d92a6bacee2d1bda995806c58432f1b0700001d32475c72889db3c8dde2cdb8a38d77624c37220d000d22374c61768ca1b7cce1dec9b49f89735e48331e000000000002162a3e53677b8fa4b8ccd8c4af9b8671788da2b6cad9c5b19c8874604b37230f0000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000000000000000001d32475c72888b8b8b8b8b8b88725c47323f546a808b8b8b8b8b8b8b7b66503b261100000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d776261747b7b7b7b7b7b7b7b7b796752647990a5bbd0e5ddc8b39d88725c47321d0700001e33485e73899eb3c8dde0cbb6a18c76614c37220d00172c42576c8398adc3d8e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b74604b36200b051a2f44596e8499afc4d9e6d1bca7917b67523c271200000013283d52677c91a6bbd0e2cdb8a38e78634e3f53687d93a8bdd2e7fcffe6d1bca7927c68533e4f64798fa3b8cee3d0bba6917b66513d28130000001d32475c72889db3c8dde2cdb8a38d7762748698a9bbcddfd0beac99887563513f2d1b090000000000000000000000000000000405050505050505050505050505050512263a4e63768b9fb3c7dbd8c4af9b87725e4a36220e00001d32475c72889db3c8dde2cdb8a38d77624c37220d071426394e63788da3b8cde2dec9b49f89735e48331e0000000000091d3146596d8296aabfd3d2beaa95826c72879cb0c4d9ccb7a38f7a66523e2a160200000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0a0a0a0a0a0a0a0a0a0a0a0a0701000000000000000000001c31455a6c74747474747474746d5945303e5266747474747474747473634f3a251000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16010000001e33485e73889db3c8dde2cdb8a38d77625663666666666666666666655b4f647990a5bbd0e5ddc8b39d88725c47321d0700001e33485e73899fb4c9dee0cbb5a08b745f4a35200b00172c42576c8398adc3d8e9d4bfa9947d68533e2913001f344a5f748a9fb4c9dfe1ccb7a18c77624d3824110c1e32465b70869bafc4dae6d1bca7917b66503b2611000000172c41556a8095aabfd3dfcab5a08b76604b3b50657a90a5bacfe4f9f9e3ceb9a48f7965503b4c61768ca0b5cbdfd3bea994806a55402b160100001d32475c72889db3c8dde2cdb8a38d7762687a8c9eb0c1d3dbc9b7a593826e5d4b392714020000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1f33475b6f8497acc0d4decab6a28e7965513d291400001d32475c72889db3c8dde2cdb8a38d77624c37221d1d23324255687c92a6bbd0e5dbc6b19c87725c47321d00000000001024384c6075899db1c5d9cdb8a48f7a666d8296aabfd3d2beaa96826d5945311d0900000000001e33485e73899fb4c9dee1ccb7a18c76604b36211f1f1f1f1f1f1f1f1f1f1f1f1f1c1409000000000000000000162a3d4e5b5f5f5f5f5f5f5f5f5c4f3d2a3648575f5f5f5f5f5f5f5f5e554533200c00000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16010000001d32475c72889db3c7dce3ceb9a48f79644f4f505050505050505050504a52677c91a7bcd1e6dcc7b19c87715c47321c0700001e33485e73899eb3c8dde0cbb6a18c76614c382311091a2f44586e8398adc3d8e8d3bda8937d68533e2913001e33485d72889db2c7dce4cfbaa5907b6753402f211e2a3b4d6175899eb3c7dce3ceb9a48f79644f3a25100000041a2f44596e8498adc2d7dcc7b29d88725d48384d62778da2b7cce1f6f5e0cbb6a18c77624c38495e73889db3c7dcd7c2ad98836e59442f1a0500001d32475c72889db3c8dde2cdb8a38d77625c6e8092a4b5c7d9d4c2b09e8c7a68564432200e0000000000000000000000101d282e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f4054687c90a4b8cce0d1bda995806c58432f1b07001d32475c72889db3c8dde2cdb8a38d77624c3732323236415060728598acc0d4e9d7c2ae99846f5a45301b0000000002162b3f53677b90a4b8ccdbc7b29e8a7560677b90a4b9cdd9c5b19d8974604c38241000000000001e33485e73899fb4c9dee1ccb7a18c76604b36343434343434343434343434343430271a0b00000000000000000e1f303e474a4a4a4a4a4a4a4a483e31202a39444a4a4a4a4a4a4a4a49433728160400000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16010000001c31465b70869bb0c5dae6d1bca7927d6956433b3b3b3b3b3b3b3b3b3b45586c8095aabfd3e8d9c4af9a866f5a45301b0600001d32475c72879cb1c6dbe3ceb9a48f7a6653402f201c27374a5d72879bb0c5dae5d0bba7917b67523c2712001b30455a6f8599aec3d7e8d3bfab9783705e4d3e34333a48596a7d91a4b8cce1dfcab5a18c77624d38230e0000091e33485d72879cb1c6dbd9c4af9a866f5a45354a5f74899fb4c9def3f2ddc8b39e89735f4a34465b70869bafc4dadac6b19c87715c47321e0900001d32475c72889db3c8dde2cdb8a38d77625163748698aabbcddfcdbba9988673614f3d2b19070000000000000000000d1e2e3b43444444444444444444444444444444444444444d6175899db1c5d9d8c4af9b87725e4a36220e001d32475c72889db3c8dde2cdb8a38d77624c474747474a535f6e7d8fa2b5c8dbe6d1bda994806b56412c1700000000091e32465a6e8397abbfd3d6c1ad98846f5b61758a9fb3c7dcccb8a48f7b67533f2b1602000000001e33485e73899fb4c9dee1ccb7a18c76604b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4438291705000000000000000212202b333434343434343434332c21131b28313434343434343434343026190a0000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1601000000192f44586d8398adc1d6ead5c1ad998672605041383433333333343742516274889bafc4d8ead5c0ac97826c58432d190400001b30455a6f8499aec3d8e7d2beaa96836f5d4d3e333238445566798da1b5c9dee1cdb8a38e78644f3a251000182d41566b8094a9bdd1e5dac6b3a08d7b6b5c5049484d586676889aadc0d4e7d9c5b09c88725d49341f0b00000d21364b60758ba0b4c9ded6c1ac97826c574232475c71879cb1c6dbf0efdac5b09b86705c473143586d8397acc2d7dec9b49f8a75604b36210c00001d32475c72889db3c8dde2cdb8a38d77624c57687a8c9eb0c2d3d9c7b5a3917d6c5a48362412000000000000000000172a3c4c575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6d8296aabed2decab6a28e7965513d2914001d32475c72889db3c8dde2cdb8a38d77625c5c5c5c5c5f65707d8c9cadbfd1e4ddcab6a28e7965513c2813000000001024394d6175899db1c6dad0bba7927d69555b708499adc1d6d3bfaa96836e5a46311d09000000001e33485e73899fb4c9dee1ccb7a18c76605f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f564734210d0000000000000000020f181e1f1f1f1f1f1f1f1f1e190f030a151c1f1f1f1f1f1f1f1f1f1b1409000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1601000000162b4055697d93a8bcd0e4dcc8b5a2907d6e5f534c49484848484a4c53606f8092a4b7cbdee3cfbba7927d68543f2a15000000182c41566b8095a9bed2e6d9c5b29f8d7b6b5c5048474b5562728496a9bcd0e4dbc7b39f8a75604b36210d0013283c5165798ea2b6c9dde2cfbdab998a7a6d635e5d616a768595a6b7cadce4d1bdaa96826d58442f1b06000010253a4f64788ea3b8cde2d3bea9947d69543f2f44596e8499aec2d7ececd7c2ad98836e58442f40556a8094a9bfd3e2cdb8a38e78644f3a251000001d32475c72889db3c8dde2cdb8a38d77624c4b5d6f8292a4b6c8d9d2c0ae9c8a77665442301e0c00000000000000001d3246596a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7a8fa3b7cce1d1bda995806c58432f1a001d32475c72889db3c8dde2cdb8a38d777272727272727479828e9baabacbdce6d4c1ae9b87735f4b36220e00000003172b3f53687c90a4b8ccdecab6a18d78634f556a7d93a7bcd0d9c6b19d8975604c382410000000001e33485e73899fb4c9dee1ccb7a18c76747474747474747474747474747474747364503b2611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73889db3c8dde2cdb8a38d77624c38230d00152a3f546a8095abc0d5ead6c1ac97826b56402b160100000012263b5064788da1b5c9dce5d2bfad9c8d7d7067615e5e5e5e5e5f6066707d8e9eafc1d4e7dcc8b4a08c77634f3a261100000013283d51667a8fa3b7cbdee2cfbcaa99897a6d635d5c5f67738290a1b3c5d8e7d4c0ac9884705b47321d08000e22364b5e72869aadc0d3e5dac8b7a8998b80777372767c8894a3b3c3d5e7dac8b5a28e7a66523e2a1501000014293e53687c92a7bcd1e5d0bba6917b66513c2c41566b8095abbfd4eae9d4bfaa95806b56402c3d52677c91a6bbd0e5d0bba7927c67523d281400001d32475c72889db3c8dde2cdb8a38d77624c3f5163758798aabcceddcbb9a79583715f4d3b291705000000000000001f344a5f7486868686868686868686868686868686868686868686868ca1b6cbe0d8c4af9b87705b46301b001d32475c72889db3c8dde3ceb9a49088888888888888898e959facb9c8d8e8dbc9b7a5927d6a5743301c070000000a1e32465a6e8397abbfd4d9c4b09b87725e494f64788da2b6cadfccb8a4907b67533f2b17030000001e33485e73899fb4c9dee2cdb8a3908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c27120000000000000000000000000000000c161d1f1f1f1f1f1f1f1f1e190f03000000000000000000000000000000000000001d32475c72889db2c7dce3ceb9a48f79644f3b27140a1a2e42576c8297abc0d5ead5c0ab95806a55402b16010000000d2135495d728699adc0d2e5ddcbbaab9c8f837a76737373737374767a838f9dacbbccdee5d2bfac9985715d4834200c0000000e23374b6073889cafc2d5e7d9c8b7a7988b80777271747a85919faebfd0e2decbb8a5917d6955402c180400071b2f43576a7d91a3b5c8d9e6d5c6b7a99d938c89888b9099a5b2c1d1e1e0cfbdab9885725e4b37230f000000172c41566b8095aabfd4e2cdb8a38e78634e39293e53687c93a7bcd2e6e6d1bca7927c68533d283a4f64788fa3b8cde2d4bfaa95806b56412c1702001d32475c72889db3c8dde2cdb8a38d77624c374557697a8d9fb0c2d4d7c5b3a18f7c6a5846342210000000000000001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9daabccfe4dcc7b19c87705b46301b001d32475c72889db3c8dde7d3bfaea09d9d9d9d9d9d9d9ea2a9b2bdc9d7e6decebdac9a8875614e3b2814000000001125394d61758a9eb2c6dad3bfaa96826c58434a5e72879cb0c4d9d3bfab97836e5a46321e090000001e33485e73899fb4c9dee6d3c0aea2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937c67523c271200000000000000000000000000000f1d29313434343434343434332c2113030000000000000000000000000000000000001c31465b70869bb0c5dae6d1bca7937d6a564331231f27374a5d71869aafc4d8e8d3bea8947d68543f2a1400000000061a2e4256697d90a3b5c8d9e9d8c9baaca0968f8b8989898989898b8f96a0acbbcad9ead9c8b5a3907c6955422e1905000000081c3044586c8093a5b8cadbe6d5c5b6a89c938b8887898f98a2afbdcddde4d2c1ae9c8975614e3a261100000014273b4e61738698aabbccdde4d5c7baafa7a19e9da0a4acb7c3d0dfe3d3c2b19f8d7a6855422f1b080000061b30455a6f8499aec3d8dfcab5a08b76604c37263b5065798fa4b9cee3e3ceb9a48f7964503b25374c61768ba0b5cadfd8c3ae99846f5a45301b06001d32475c72889db3c8dde2cdb8a38d77624c373a4b5d6f8293a5b6c8dad0beac9a887563513f2d1b090000000000001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b1bac8d9ebdcc7b19c87705b46301b001d32475c72889db3c8ddefddccbeb5b3b3b3b3b3b3b3b3b7bdc5cfdae7ded0c0b09f8e7c6a5845321f0c00000003172b4054687c90a4b9cde1cdb9a4907b66523e44586d8296aabfd3dac6b29e8a75614d3925110000001e33485e73899fb4c9deefddcdbfb7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a8937c67523c2712000000000000000000000000000a1c2d3b454a4a4a4a4a4a4a4a483e31210f000000000000000000000000000000000000192e43586d8397acc1d6ead6c1ad998672604f40373439455567798da0b4c9dde4cfbaa5907b66513c2712000000000013273a4d60738698aabbccdce7d8cabeb3aaa4a09f9f9f9f9f9fa0a3aab3becad9e8ddcdbcaa988673604d3a2612000000000115293c506375899badbecfdfe3d4c6baafa6a09d9c9ea3abb4c0cddce7d7c6b5a3917d6c5945321e0a0000000b1e314456697a8d9eaebfcedde4d8ccc2bbb6b3b3b4b9c0c9d4e0e3d5c5b5a59482705e4b3926130000000a1f34495d72889cb2c6dbdcc7b29d88735e493423384d62778ca1b6cbe0e0cbb6a18c77624c382334495e73889db2c7dcdbc6b19c88725d48331e09001d32475c72889db2c7dce2cdb8a38d77624c372e405263758799aabccedbc9b7a593826f5d4b3927150300000000001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c6ccd8e6f1dcc7b19c87705b46301b001d32475c72889db3c8ddf2eadbd0c9c8c8c8c8c8c8c8c8ccd1d8e1e7dbcec0b2a29282705e4d3b2815020000000a1e32465b6f8397acc0d4dcc7b39f8a75614c383e52677b90a4b9cde1cdb9a4907c6854402b170300001e33485e73899fb4c9def4ebddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbbda8937c67523c27120000000000000000000000000013273a4b595f5f5f5f5f5f5f5f5c4f3e2b18040000000000000000000000000000000000162b4054697d93a7bcd0e4dcc9b5a2907d6d5e524b4a4d5663738596a9bcd0e3dec9b5a18c77624d39240f00000000000b1e314456687a8d9eaebecedde8dbd0c6beb9b5b4b4b4b4b4b4b5b8bec6cfdbe8decfbfaf9e8d7a695643301d0a00000000000d203346596b7d8fa0b1c1d0dfe4d7ccc2bab5b2b1b3b7bec7d1dde6d8c9b9a8978673614f3c291602000000021427394b5d6f8090a1b0bfcddae6dfd6cfcbc8c8caced4dce6dfd3c5b7a79787756453412e1c090000000d22374c61768ba0b5cadfd9c4af9a86705b463120354a5f74899eb3c8ddddc8b39e89735f4a342031465b70869aafc4d9dfcab5a08b76614c37220d001c31465b70879cb1c7dce2cdb8a38d77624c3722344658697b8d9fb1c2d4d4c2b09e8c7a68564432200e00000000001f344a5f748ba0b5cbdadadadadadadadadadadadadadadadadadadadbe0e9f5f1dcc7b19c87705b46301b001c31465b70879cb1c7dcf1f5ede4dedddddddddddddddde0e5e7dfd5cabeb0a29484746352412f1e0b000000001125394d61758a9eb2c6dbd6c2ad9985705b4732384c61758a9fb3c7dcd4bfab97836f5b46321e0a00001e33485e73899fb4c9def4f5eee6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d3bda8937c67523c271200000000000000000000000000192d42566974747474747474746d5b47321e09000000000000000000000000000000000011263b4f64788da1b5c8dce5d2bfad9c8c7c6f65605f6169738291a2b4c6d8ead6c2af9a86715d49341f0b0000000000011427394b5d6e8090a0b0bfcddae6e2d9d2cdcbc9c9c9c9c9c9cbcdd2d9e2e7dbcec0b1a191806f5d4b3927140100000000000417293c4e60718293a3b2c1cfdbe7ded5cec9c7c7c8ccd2dae4e1d5c8baab9b8a79685644321f0d00000000000a1c2e405162728392a1afbcc9d4dee6e4dfdddddfe2e8e2d8cec2b5a79989796958473523110000000011263b5064798fa4b9cee0d6c1ac97836c58432d1d32475c70869bb0c5dadac5b09b86705b46311c2e43586d8397acc1d6e0ceb9a48f7964503b2611001b30465b70879cb1c7dce0cdb8a38d77624c3722283a4c5d6f8293a5b7c8dacebcaa988673614f3d2b1907000000001f344a5f748ba0b5cbe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0dcc7b19c87705b46301b001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0dfdcd8d3cbc2b8aca09285756656463524120000000004182c4054687c91a5b9cde0d1bca7937d6a55412d32475b708499adc1d6dac6b29e8a75614d39251100001e33485e73899fb4c9dee0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d3bda8937c67523c2712000000000000000000000000001a2f445a6f868b8b8b8b8b8b8a745f4a341f0a00000000000000000000000000000000000c2135495d718699acbfd2e5ddcbbaaa9b8d82797574767c8692a0afc0d1e3dfcdbaa793806b57432e1a060000000000000a1c2e405161728292a1afbcc8d4dee6e7e2e0dedededededee0e2e6e7dfd5cabdb0a29384736251402e1c0a000000000000000c1e30425364748594a3b1becad5dee6e3dedcdcdde0e6e3dacfc4b7aa9c8d7c6c5c4a392715020000000000001022334454647383919eabb7c1cad2d8dcdfdfdedad5cec6bbb0a497897a6b5b4b3a2918060000000014293e53687d93a7bccbcbcbbea994806a54402b192f44586e8398adc2cbcbc2ad98836d58432e192b40556a8094a9becbcbcbbca7927d68533e2914001b30465b70879cb1c7cbcbcbb8a38d77624c37221d2e405264758899abbdcbcbc7b5a391806d5a49372513010000001f344a5f748ba0b5cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc7b19c87705b46301b001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbc9c7c4beb7afa59b8f827466574838281706000000000a1e33475b6f8498acc0cbcbcbb6a28d7864503b272c41556a7d93a7bccbcbcbb9a5917c6854402c1804001e33485e73899fb4c9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbda8937c67523c2712000000000000000000000000001a2f445a6f869ba0a0a0a0a08b745f4a341f0a0000000000000000000000000000000000061a2e4256697c90a3b5c8d9e8d8c8b9ab9f958f8b8a8c9199a3b0becddee6d4c2b09e8a7763503c281400000000000000001022334454647383919eabb6c1cad2d8dcdee0e0e0e0e0e0dedcd8d3cbc2b8aca0928474655545342211000000000000000001132436465766758593a0acb8c2cbd2d8dcdededddad5cfc6bdb2a6998c7d6e5e4e3e2c1b09000000000000000415263646556472808d99a4aeb7bec4c7c9cac8c5c1bab2a99e9386786a5c4d3d2d1c0b0000000000182d42576c8296abb5b5b5b5b5a6917b67523d28162c40566b8095aab5b5b5b5aa95806a55402b16283d52677c91a6b5b5b5b5b5ab96826c57422d18001b30465b70879cb1b5b5b5b5b5a38d77624c372211233546586a7b8d9fb1b5b5b5b5ae9c8a78665442301e0b0000001f344a5f748ba0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b19c87705b46301b001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b2afaaa49c93897d70645648392a1a0a00000000001125394e62768a9fb3b5b5b5b5b09c88735e4a3621263b4f64788da2b5b5b5b5b5ac98846f5b47331e0a001e33485e73899fb4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a8937c67523c2712000000000000000000000000001a2f445a6f869bb0b5b5b5a08b745f4a341f0a00000000000000000000000000000000000013263a4d60738698aabccddde6d7c8bcb2a9a3a09fa0a5acb5c1cedce9d9c8b7a593826d5a4734200c00000000000000000415263646556472808d99a4aeb7bec3c7c9cbcbcbcbcbcbc9c7c4bfb8afa59b8f8273655647372716050000000000000000000718283948576674828f9ba5afb7bec3c7c9c9c8c5c1bbb3aaa095897b6e5f504030200f000000000000000000081828374655626f7c88929ba3aaafb3b4b5b3b1aca69f968c8275685b4d3e2f1f0f0000000000001c31455a6f859aa0a0a0a0a0a0a08e78644f3a2514283d52677c92a0a0a0a0a0a0927c67523d2813253a4f64788fa0a0a0a0a0a0a09a856f5a45311c001b30465b70879ca0a0a0a0a0a0a08d77624c37220d17293a4c5e708294a0a0a0a0a0a0a09583715f4d3a26110000001f344a5f748ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09c87705b46301b001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9d9a958f8880766b5f5346382a1b0c000000000000182c4055687c91a0a0a0a0a0a0a096826d5844301b21354a5e72879ca0a0a0a0a0a09f8a76624e392511001e33485e73899fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937c67523c2712000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a0000000000000000000000000000000000000a1d304356687a8d9eafbfcfdde6dacec5bdb8b5b4b5b9c0c8d2dee8dacbbbaa99887563513e2b1805000000000000000000081828374654626f7b87929ba3aaafb2b4b5b5b5b5b5b5b4b2afaaa49c93897d706356473829190900000000000000000000000b1b2a39485764717d88929ca3aaaeb2b4b4b3b0aca79f978d83776a5d504132221202000000000000000000000a19283744525e6a757d888f959a9d9fa09f9c97928b83796f63574a3d2f2011010000000000001e33485e73888b8b8b8b8b8b8b8b8b76614c372210253a4f64798b8b8b8b8b8b8b8b79644f3a251022374c61768b8b8b8b8b8b8b8b8b88735e48331e001b30465b70878b8b8b8b8b8b8b8b8b77624c37220d0b1d2f41526476888b8b8b8b8b8b8b8b8b7c69543f2a140000001f344a5f748b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b87705b46301b001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8886827b746c63594e4235281a0c000000000000001b30465b70848b8b8b8b8b8b8b8b8b7c67533e2a151b2f44586d828b8b8b8b8b8b8b8b8b7c68533e2813001e33485e73898b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c2712000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a000000000000000000000000000000000000011427394b5d6f8091a1b1bfcedae6e1d8d2cdcbc9cbced4dbe5e3d7cabcad9d8d7b6a584634210e00000000000000000000000a19283644515e69747d888f959a9d9fa0a0a0a0a0a09f9d9a968f8880766b5f534638291a0b000000000000000000000000000c1b2a3946535f6b7580888f959a9d9f9f9e9b97928c847a7065594d3f322314040000000000000000000000000a192734404c57616b737a8286888a8b8987837d776f665c5146392c1f1102000000000000001d32475b6e747474747474747474746d5c48331f0d22374b5f6f7474747474747474705f4b37220d1f33485c6d747474747474747474746e5b47321d001a2f44586b74747474747474747474705e4a36210c00112335475869747474747474747474747466533e29140000001e33475b6e7474747474747474747474747474747474747474747474747474747474747474746b58432f1a001a2f44586b74747474747474747474747474747474747473706c66605850463c3024170a00000000000000001a2f44586b7474747474747474747470604d39241015293e5265737474747474747474747465513d2813001c31465a6d7474747474747474747474747474747474747474747474747474747363503b2611000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a000000000000000000000000000000000000000a1c2e405162728393a1b0bdc9d4dee6e6e2e0dee0e3e8e4dbd1c6b9ac9e8f7d6e5d4c3b2917050000000000000000000000000a182633404c57616b737a8086888a8b8b8b8b8b8b898886827b746c63594e4135281a0b0000000000000000000000000000000c1b2836424e59636c747a82858889898987837d7770675d53483c2f21130400000000000000000000000000000916232f3a454e5860666c7073747473716e69635c534a3f34281b0e010000000000000000182c3f505c5f5f5f5f5f5f5f5f5f5f5c4f3e2c19081c3042515d5f5f5f5f5f5f5f5f5d5142301c08192c3e4f5c5f5f5f5f5f5f5f5f5f5f5c503f2c180015293c4d5a5f5f5f5f5f5f5f5f5f5f5d51412e1b07000617293b4b595f5f5f5f5f5f5f5f5f5f5f584937230f000000182c3f505c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a4d3b28140015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5b57524c453d33291e130600000000000000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5d5243311d090f233547565f5f5f5f5f5f5f5f5f5f5f574836220e00172b3e4f5c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e554634200c000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a00000000000000000000000000000000000000001022334455647484929facb7c2cbd2d8dcdee0dedbd6d0c8bfb4a89b8e80706050402f1d0c00000000000000000000000000000816222f3a454e575f666b7072747474747474747472706c66605950463c3024170a00000000000000000000000000000000000b1824303b46505860666b6f72737473716e69635c544b41362a1e11030000000000000000000000000000000005121d28323b444b52575b5e5f5f5e5c59544e4840372d22170a000000000000000000000f21323f484a4a4a4a4a4a4a4a4a4a483e31210f0013243340484a4a4a4a4a4a4a4a4941332413000f21313e484a4a4a4a4a4a4a4a4a4a483f32210f000c1e2f3d474a4a4a4a4a4a4a4a4a4a49413323120000000c1d2d3b454a4a4a4a4a4a4a4a4a4a4a453a2b1a070000000f21323f484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a463d2f1e0c000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4846423d38312920170c01000000000000000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a49413425140106182938444a4a4a4a4a4a4a4a4a4a4a44392a1906000e20313e484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a494337281704000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a00000000000000000000000000000000000000000516263747566573828e9aa5afb7bec4c7c9cbc9c6c2bcb5aca2978a7d6f6151423222110000000000000000000000000000000005111d28323b444b52575b5d5f5f5f5f5f5f5f5f5d5b57524c453d33291e13060000000000000000000000000000000000000007131e29333c444b52575a5d5e5f5e5c59544f4840382e24190d00000000000000000000000000000000000000000b151f2830373d4246484a4a494744403a332c241a100500000000000000000000000414222d3334343434343434343434332c211303000615232d333434343434343434342e231506000313212c3334343434343434343434332d2214040001111f2b3234343434343434343434342e231506000000000f1d2931343434343434343434343431281c0d000000000414212c33343434343434343434343434343434343434343434343434343434343434343434322a1f11000001111f2b3234343434343434343434343434343434343433312d29231d150d0400000000000000000000000001111f2b3234343434343434343434342e24160700000b1a2730343434343434343434343431281b0c00000313212c33343434343434343434343434343434343434343434343434343434343026190a00000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a00000000000000000000000000000000000000000009192938475563707c88929ca3aaafb2b4b5b4b1ada8a1998f85796c5f5142332414040000000000000000000000000000000000000b151f2830373d4246484a4a4a4a4a4a4a4a4846423e38312920170c01000000000000000000000000000000000000000000010c16202931373d424548494a484744403a342d241b110600000000000000000000000000000000000000000000020c151c23292d3133343434322f2b261f19100700000000000000000000000000000410191e1f1f1f1f1f1f1f1f1f1f1e190f030000000511191e1f1f1f1f1f1f1f1f1f1a1105000000030f191e1f1f1f1f1f1f1f1f1f1f1e191004000000010e181e1f1f1f1f1f1f1f1f1f1f1f1a11050000000000000c161d1f1f1f1f1f1f1f1f1f1f1f1c150b000000000000040f191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d170d01000000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140f0902000000000000000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1a12060000000009141c1f1f1f1f1f1f1f1f1f1f1f1c150a00000000030f191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1b14090000000000000003050505050505051a2f445a6f869bb0c5cbb5a08b745f4a341f0a050505050505050200000000000000000000000000000b1a293745525e6a7580888f959a9d9fa09f9c99938d857c72675b4e41332415060000000000000000000000000000000000000000020c151c23282d3133343434343434343433312d29231d160d0400000000000000000000000000000000000000000000000000040d151c23292d3033343433322f2b2620191108000000000000000000000000000000000000000000000000000001080f14191c1e1f1f1f1d1a16110b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a13181a1a1a1a1a1a1a1a2f445a6f869bb0c5cbb5a08b745f4a341f1a1a1a1a1a1a1a1a171006000000000000000000000000000b192734414d58626c747a828688898b898884807871695f554a3d31231506000000000000000000000000000000000000000000000001080e14181c1e1f1f1f1f1f1f1f1f1e1c18140f0902000000000000000000000000000000000000000000000000000000000001080f14181b1e1f1f1e1c1a16110c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b0000000000000000000000050f161a1a1a1a1a1a1a1a1a1a1a17110600000000000000000000000000000000040f161a1a1a1a1a1a1a1a1a1a1a1a160e030000000000000000000000000000000000000000000000000000000a13191a1a1a1a1a1a1a1a1a1a19150d02000000000000000000000000000000000811181a1a1a1a1a1a1a1a1a1a171006000000000000000611171a1a1a1a1a1a1a1a19150d0200000000000a13191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171006000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b00000000000000000000000f1c272d2f2f2f2f2f2f2f2f2f445a6f869bb0c5cbb5a08b745f4a342f2f2f2f2f2f2f2f2f2b23180a000000000000000000000000000917232f3b464f5860666c7072747473726f6a645d554c42372c2013050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10131516161614120e0a0400000000000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d100000000000000000000716222b2f2f2f2f2f2f2f2f2f2f2f2c24180900000000000000000000000000000615222b2f2f2f2f2f2f2f2f2f2f2f2f2a211405000000000000000000000000000000000000000000000000000e1c272d2f2f2f2f2f2f2f2f2f2f2f2920120300000000000000000000000000000c1a252c2f2f2f2f2f2f2f2f2f2f2b23180a00000000000918242c2f2f2f2f2f2f2f2f2f292013040000000f1c272d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b23170800000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e271d0f0000000000000000000c1d2d3a41444444444444444444445a6f869bb0c5cbb5a08b745f4a444444444444444444443f362818070000000000000000000000000006121e29333c444c52575b5d5f5f5e5c5a555049423930251a0f0200000000000000000000000000000000000000000000000000000000050a0e11131515151513110e0a050000000000000000000000000000000000000000000000000000000000000000050a0e111415151513110d0803000000000000000000000000000000000000040d1315151515151514110e090400000000000000000000000000000000000000000000000000000000040d141b2025282a2b2b2b2a27231f19120a02000000000000000000000000000c1d2d3a4244444444444444444444433b2e1e0d00000000000000021425343e44444444444444444444444036271705000000000000000000000000021424333e4444444444444444444444443d3223130100000000000000000000000000000000000000000000000b1c2c394244444444444444444444443d30211000000000000000000000000000091b2a3740444444444444444444443f3628180700000004162736404444444444444444443d31221100000c1d2d3a42444444444444444444444444444444444444444444443f352616040000000000000000000c1d2d3a4244444444444444444444423a2d1d0c0000000000000000172a3b4b565a5a5a5a5a5a5a5a5a5a5a6f869bb0c5cbb5a08b745f5a5a5a5a5a5a5a5a5a5a5a53463624110000000000000000000000000000000c16202931383d4246484a4a494745413b352e261d1308000000000000000000000000000000000000000000000000000000060d141a1f2326282a2a2a2a2826231f1a140d060000000000000000000000000000000000000000000000000000030b13191f2327292a2a2a2826221d171109000000000000000000000000000000091621282a2a2a2a2a2a2826231e18110a020000000000000000000000000000000000000000000000040e1720282f35393d3f4040403f3c38332d261e150b01000000000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a17040000000000000b1f324351595a5a5a5a5a5a5a5a5a5a534535220f0000000000000000000000000c1f324251595a5a5a5a5a5a5a5a5a5a595041301d0a000000000000000000000000000000000000000000000015283a4a565a5a5a5a5a5a5a5a5a5a584e3f2e1b0700000000000000000000000014273848545a5a5a5a5a5a5a5a5a5953463624110000000e213445535a5a5a5a5a5a5a5a584f402e1b080016293b4b565a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a524433210d00000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a574b3b291602000000000000001d324659696f6f6f6f6f6f6f6f6f6f6f6f869bb0c5cbb5a08b746f6f6f6f6f6f6f6f6f6f6f6f6453402c1700000000000000000000000000000000030d151d23292d313334343432302c27211a120a00000000000000000000000000000000000000000000000000000007111921282e33383b3d3f3f3f3f3e3b38342e282119110700000000000000000000000000000000000000000000020d161f272d33383c3e3f3f3f3e3b37322b251d130a000000000000000000000000061827343c3f3f3f3f3f3f3e3b37322c261e150b0100000000000000000000000000000000000000000b16212a343c43494e525456565654514d48413a31281e1307000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e0900000000000011263b4e616e6f6f6f6f6f6f6f6f6f6f63513e2a1500000000000000000000000012273b4e606e6f6f6f6f6f6f6f6f6f6f6d5f4d39251000000000000000000000000000000000000000000000001b2f4457686f6f6f6f6f6f6f6f6f6f6c5d4a36220d0000000000000000000000001a2f4356666f6f6f6f6f6f6f6f6f6e6453402c18030004172a3d50636f6f6f6f6f6f6f6f6c5e4b37230e001c314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f62503c28130000000000000000001d314559696f6f6f6f6f6f6f6f6f6f695945311c07000000000000001f344a5f74858686868686868686868686889bb0c5cbb6a18c868686868686868686868686836f5a442f1a00000000000000000000000000000000000001090f14181c1e1f1f1f1d1b17120d06000000000000000000000000000000000000000000000000000000040f1a242d353c43484c50535454545453504d48433c352d241a0f040000000000000000000000000000000000000009141f29323b42484d515354545453504b46403830261c110500000000000000000000112436455054545454545453504c47403a31281e1308000000000000000000000000000000000002101c28333d4750575e63676a6b6b6b6966615c554e443b3025190c0000000000000000001f344a5f748686868686868686868676604b36210b00000000000013293e53687d868686868686868686826c57422c17000000000000000000000000162b4055697d868686868686868686867c68533e291400000000000000000000000000000000000000000000001d32475c728686868686868686868679644f3a250f0000000000000000000000001e33485d7284868686868686868683705b46301b06000d2033465a6d80868686868686867a66503b2611001f344a5f74868686868686868686868686868686868686868686806a543f2a150000000000000000001f344a5f7486868686868686868686735e48331e09000000000000001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9ba6b7cacfbcaa9d9b9b9b9b9b9b9b9b9b9b9b9b866f5a442f1a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d37404950575d6165686a6a6a6a6865615d57504940372d22160a00000000000000000000000000000000000e1a26323c464e565c6166686a6a6a6865605b544c43392e23170a000000000000000000182c4053636a6a6a6a6a6a6865615b554d443b3025190c0000000000000000000000000000000413202d3945505a636b72777c808282827d7b76706961574d42362a1d0f00000000000000001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b00000000000013293e53687d949b9b9b9b9b9b9b98836c57422c170000000000000000000000051a2f44596e83989b9b9b9b9b9b9b9b96826c57422d1804000000000000000000000000000000000000000000001d32475c72889b9b9b9b9b9b9b9b9079644f3a250f0000000000000000000000001e33485e73899b9b9b9b9b9b9b9b87705b46301b060216293c4f6376899b9b9b9b9b9b917b66503b2611001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b95806a543f2a150000000000000000001f344a5f748b9b9b9b9b9b9b9b9b89735e48331e09000000000000001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b7c4d4d9c8bab1b0b0b0b0b0b0b0b0b0b0b09b866f5a442f1a000000000000000000000000000000000000000000000000000000000000000000000000050b0d0b070000000000000000000000000000000000000e1b27333f4a535c646b7176797c808080807c7976716b645d534a3f33271b0d000000000000000000000000000003111e2b38444e59626a70767a7d8080807c79756f685f564c4034281b0d00000000000000001b30465b708080808080807d7975706961574d42372a1d0f01000000000000000000000000041423313e4b57636d7680878d919497979694908b857d746a6054483b2d1e10000000000000001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b00000000000013293e53687d94a9b0b0b0b0b0ad98836c57422c1700000000000000000000000a1f33485d72879cb0b0b0b0b0b0b0af9a86705b46311c07000000000000000000000000000000000000000000001d32475c72889db0b0b0b0b0b0a59079644f3a250f0000000000000000000000001e33485e73899fb0b0b0b0b0b09b866f5a442f1a050b1f3245596c8093a6b0b0b0b0a7917b66503b2611001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab95806a543f2a150000000000000000001f344a5f748ba0b0b0b0b0b0b09f89735e48331e09000000000000001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5cad4e2e6d8ccc6c5c5c5c5c5c5c5c5c5c5b09b866f5a442f1a00000000000000000000000000000000000000000000000000000000000000000000010f192022201b11050000000000000000000000000000010f1e2c3945515c66707880868b8f9394959594938f8c86807870665c5145382b1d0f0000000000000000000000000312212f3c4955616c757d868b9093959594928f8a837b72695e5246392b1c0e000000000000001b30465b70879595959595938f8a847c746a6054483b2d1f10010000000000000000000003132332414f5c6874808a939ba1a6a9acacaba8a59f9991887d7165584b3c2e1e0e0000000000001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b00000000000013293e53687d94a9bfc5c5c5c3ad98836c57422c1700000000000000000000000e23384c61768ba0b5c5c5c5c5c5c5b39e89745f4a35200c000000000000000000000000000000000000000000001d32475c72889db3c5c5c5c5b9a48f79644f3a240f0000000000000000000000001e33485e73899fb4c5c5c5c5b09b866f5a442f1a0515283b4e6175889cafc2c5c5bca7917b66503b2611001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5c5c5c5c5b49f89735e48331e09000000000000001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5cad4e2e6d8ccc6c5c5c5c5c5c5c5c5c5c5b09b866f5a442f1a00000000000000000000000000000000000000000000000000000000000000000002111f2c3437352e231405000000000000000000000000000f1f2d3c4956636e79838c949aa0a4a7a9ababa9a8a4a09b948c83796e6356493b2d1e0f00000000000000000000011221303f4d5a67737d899299a0a5a8ababa9a7a39e978f867b6f6356493a2c1c0d0000000000001b30465b70879cabababaaa8a49f9890887d7266594b3d2e1f100000000000000000000010213141505f6d7a86929da6afb6bbbfc1c1c0beb9b4ada49a8f8376695a4c3c2c1c0b00000000001f344a5f748ba0b5cbdadaccb7a18c76604b36210b00000000000013293e53687d94a9bfd4dad7c2ad98836c57422c17000000000000000000000012273c51657a8fa4b9cedadadadaccb7a28d78634e392510000000000000000000000000000000000000000000001d32475c72889db3c8dadacfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9dadac5b09b866f5a442f1a0a1e3144576a7d92a5b8cbdad1bca7917b66503b2611001f344a5f748ba0b5cbdadadadadadadadadadadadadad5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbdadac9b49f89735e48331e09000000000000001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b7c4d4d9c8bab1b0b0b0b0b0b0b0b0b0b0b09b866f5a442f1a00000000000000000000000000000000000000000000000000000000000000000211202f3d484c4a403223140500000000000000000000000d1e2d3d4b5a6774808c96a0a8afb5b9bcbfc0c0bfbdb9b5afa8a0968c807467594b3c2d1d0d0000000000000000000f1f303f4e5d6b7885909ba5adb4b9bdbfc0bfbcb8b2aba2988d827467584a3a2b1b0a00000000001b30465b70879cb1c0c0bfbdb9b3aca49a8f8476695b4c3d2e1e0d00000000000000000c1d2e3f4f5f6e7c8b98a4afb9c2cad0d4d6d6d5d3cec8c0b7aca19487786a5a4a3a291806000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000000162b4055697d94a8bdd2e7f0f0e5d0bba6917c67523e2914000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded9c4af99846e59442f1a13273a4d6073889baec1d4e6d1bca7917b66503b2611001f344a5f748ba0b5cbdededededededededfe5eef0ead5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0dec9b49f89735e48331e09000000000000001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9ba6b7cacfbcaa9d9b9b9b9b9b9b9b9b9b9b9b9b866f5a442f1a000000000000000000000000000000000000000000000000000000000000000211202f3e4d5b625d514232231405000000000000000000091b2b3c4b5b697785929ea9b3bcc3c9ced2d4d5d5d4d2cec9c3bcb3a99e928577695a4b3b2b1a09000000000000000b1c2d3d4e5d6c7b8996a2aeb8c1c8ced2d4d5d4d1cdc6bfb5ab9f92857668584938281705000000001b30465b70879cb1c7d5d4d2cdc7c0b7ada19588796a5b4c3c2b1a090000000000000618293b4c5d6d7d8d9ba9b5c1ccd6dee4e9eae9eae7e3dcd4cabeb2a5978978685847362412000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000000051a2f44596e8398adc1d6ebffffe9d4bfaa96826b57422d18030000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded9c4af99846e58432e191d304356697c90a3b7cadde6d1bca7917b66503b2611001f344a5f748ba0b5c9c9c9c9c9c9c9c9c9cbd1dcebead5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbccccc9b49f89735e48331e09000000000000001f344a5f74868686868686868686868686889bb0c5cbb6a18c868686868686868686868686846f5a442f1a0000000000000000000000000000000000000000050a0e111415151513100d11202f3e4d5c6b776f605142322314050000000000000004162738495a69798896a3b0bbc6cfd7dee3e6e9eaeae9e7e3ded7cfc6bbb0a3968878695949382615030000000000051628394a5b6b7b8b99a7b4c0cbd4dce3e7eaeae9e6e1dad2c8bcb0a3958776675645342211000000001b30465b70879cb1c7dce9e7e2dbd4cabfb2a59889796a594937261402000000000010233547596a7a8c9cabb9c6d3dfe9e2dcd7d5d4d5d9dee6e7dcd0c3b5a69787756453412f1d0a0000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16000000000000000000000a1f33485d72879cb1c6daefffffedd8c3ae9a85705b46311c070000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded9c4af99846e58432e1926394c5f728699acc0d3e6e6d1bca7917b66503b2611001f344a5f748ba0b4b4b4b4b4b4b4b4b4b4b6bfcdddead5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5b7b7b7b7b49f89735e48331e09000000000000001c314558686f6f6f6f6f6f6f6f6f6f6f6f869bb0c5cbb5a08b746f6f6f6f6f6f6f6f6f6f6f6f6554402c180000000000000000000000000000000000030b13191f2327292a2a2a282521202f3e4d5c6b7a8a7d6f605142322314050000000000000f2133455667778898a6b4c1cdd8e2e9e3ddd9d7d5d5d7d9dde3eae2d8cdc1b3a697887766554432200e00000000000f2234455768798a9aa9b7c5d1dde8e4ddd9d6d5d7dae0e7e5dacec1b3a59585746352402e1c090000001b30465b70879cb1c7d5d6d9dee5e7dcd0c3b6a798887766554432200d00000000071a2d405264768899a9b9c9d7e4e3d8cfc7c2c0bfc0c4cad2dce8e1d3c4b5a59483705e4c3a27140100001f344a5f748ba0b5cbdfe1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16000000000000000000000e23384c61768ba0b5cadff3fffff1dcc7b39e89745f4a35200b0000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded8c3ad98836d58432e1b2e4255687b8fa2b5c9dcefe6d1bca7917b66503b2611001f344a5f748b9f9f9f9f9f9f9f9f9f9f9fa2afc0d3e7d5c0ab95806a543f2a150000000000000000001f344a5f748ba0a1a1a1a1a1a19f89735e48331e090000000000000015283a4a565a5a5a5a5a5a5a5a5a5a5a6f869bb0c5cbb5a08b745f5a5a5a5a5a5a5a5a5a5a5a5447372411000000000000000000000000000000020d161f262d33383c3e3f3f3f3d3a36313e4d5c6b7a8a998e7d6f605142322314050000000005182b3e5062738596a6b6c4d2dee9dfd6cec8c4c1c0c0c1c4c8ced6dfe9ded1c3b5a5958573614f3d2b180500000006192c3f5163758697a8b8c7d5e2e5dad1c9c4c1c0c2c6ccd4deeadfd1c2b3a392826f5d4b3926130000001b30465b70879cb1c0c0c1c4cad1dbe6e1d4c5b6a6958573614f3d2a17040000001023374a5c6f8294a5b7c7d7e7dfd2c6bcb3adaba9abafb6bfcad7e4e2d3c2b1a08e7c695643301d0900001f34495e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000012273c51657a8fa4b9cee3f8fffff5e0ccb7a28d77634e39240f0000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded8c3ad98836c57422c24374b5e718598abbfd2e5f8e6d1bca7917b66503b2611001f344a5f7489898989898989898989898991a4b9cee3d5c0ab95806a543f2a150000000000000000001f344a5f748b8c8c8c8c8c8c8c8c89735e48331e09000000000000000b1c2c3942444444444444444444445a6f869bb0c5cbb5a08b745f4a444444444444444444444037291907000000000000000000000000000009151f29323b42484d5153545454524f4b454d5c6b7a8a99a89d8e7d6f605142322314050000000f2235485b6d8091a3b4c4d3e2e4d7ccc2bab4afacababacafb4bac2ccd7e4e1d3c3b3a291806d5a4734210e0000000f2336495c6e8292a4b5c6d6e5e1d4c8beb5afacabacb1b8c1ccd9e7e0d1c1b09f8d7a685643301c0900001b30465b70879cabababacb0b6bec8d4e2e3d4c4b3a2917d6c594633200d000004182b3f5366798c9fb1c3d4e5dfd0c1b4a99f999594969ba3adb9c6d5e5e0cfbeac998673604c39251100001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000000172b4055697d94a8bdd2e7fcfffffae4d0bba6917c67523d28140000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded8c3ad98836c57422c2d4154677a8ea1b4c8dbeeffe6d1bca7917b66503b2611001e32475a6c7373737373737373737373778da3b8cde2d5c0ab95806a543f2a150000000000000000001e33485c6e767676767676767676766e5b47321d0800000000000000000e1b262d2f2f2f2f2f2f2f2f2f445a6f869bb0c5cbb5a08b745f4a342f2f2f2f2f2f2f2f2f2c24190b00000000000000000000000000010e1b27323c464e565c6166686a6a6a67645f5a5b6b7a8a99a8b7ac9d8e7d6f605142322314020003172b3e5164778b9dafc1d1e2e2d4c6baafa69f9a979797979a9fa7afbac6d4e2e1d1c0ae9c8a7764513d2a16020004172b3f5265788c9eb0c2d3e4e1d1c3b6aba19a9795979ca5afbbc9d8e7dfcebcaa9886725f4c38241100001b30465b708795959595979ba2abb7c4d2e1e2d1c0ae9c897663503c291501000a1e33475b6f8396a9bccee0e3d1c1b2a3978c8480808287909ba9b7c7d8e9dbc8b6a3907c6854402c1804001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16000000000000000000061b2f44596e8398adc1d6ebffffffffe8d4bfaa95806b56412d180300000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded7c1ac97836c57422c364a5d708497aabed1e4f7ffe6d1bca7917b66503b261100182b3d4e5a5e5e5e5e5e5e5e5e5e5e62778da3b8cde2d5c0ab95806a543f2a15000000000000000000192d3f505c606060606060606060605c503f2c18040000000000000000000913181a1a1a1a1a1a1a1a2f445a6f869bb0c5cbb5a08b745f4a341f1a1a1a1a1a1a1a1a1811070000000000000000000000000004111f2c38444f59626a70767a7d8080807c79746e6a798999a8b7c6bbac9d8e7d6f605142311f0c000a1e32465a6d8295a8baccdee5d4c4b6a89d938b8683828283868b939da9b6c4d4e4ddccb9a794826d5945311d09000a1e33475a6e8295a8bbcddfe4d3c3b3a5988e8682808389929dabbac9d9ebdac8b5a28f7b6754402b1703001b30465b70808080808082878f99a6b4c3d3e4ddcbb9a693806c5844301c08001025394e62768a9eb2c5d8ead7c5b4a3948579706a6a6c737d8b99a9baccdee5d2bfac98846f5b47321e09001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000a1f34495d72889cb1c6dbefffffffffedd8c3ae99856f5a46311c0700000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded6c1ac97826b56402c405366798da0b3c6daedffffe5d0bba6917b66503b2611000e20303d464848484848484848484c62778da3b8cde2d5c0ab95806a543f2a150000000000000000001022323f484b4b4b4b4b4b4b4b4b4b483f32210f00000000000000000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000413222f3d4a56616c757d868b9093959594928e89827a8998a7b7c6d5cabbac9d8e7d6f604e3b2713001024394d61758a9eb1c4d7ead9c7b6a6988b8077706c6b6b6c7077808b98a6b6c7d8e9d7c4b09c8975604c38240f001025394e62768a9eb1c5d8ead8c6b5a595877a726c6b6d75808d9cabbbcddfe4d2beab97836f5b46321d0900182c4053636a6a6a6a6a6c727c8896a5b5c6d8e8d5c2af9b88735f4b36220e00152a3f53687c91a5b9cee1e1cebba8968575675c555458606c7b8b9caec1d4e8dbc7b39f8a75614c38230e001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000e23384d61768ca0b5cadff4fffffffff1dcc7b29e89735f4a35200b00000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded6c1ac97826b564035495c6f8396a9bccfe3f6ffffe5d0bba59079644f3a250f000212202b323333333333333333374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000000414222d3b495254545454545452493b2d22140400000000000000000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a00000000000000000000000000000000000000000002122231404d5b67737d899299a0a5a8ababa9a7a39d968f98a7b6c5d5e4d9cabbac9d8e7d6a55402b1600152a3e53687c91a5b9cde0e1cebba99888796d635c585656585c636d798898a9bbcee1dfccb8a4907b67523e291400152a3f53687c91a5b9cde1e1cebba9978776695e575659626e7d8d9eb0c2d5e8dac6b29e8a75604c37230e0011243645515454545454585f6a778798a9bbcee1decbb7a38e7965513c271200192e43586d8297abc0d4e9d9c5b19e8b7867574a413f434e5d6d8092a5b8cce1e2cdb9a48f7a65513c2712001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000012273c51667a90a5b9cee3f8f5f1f2f6f5e0cbb6a28d77634e39240f00000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded5c0ab97826b56403e5164788c9fb2c5d8ecffffffe5d0bba59079644f3a250f0000020e171d1e1e1e1e1e1e1e22374c62778da3b8cde2d5c0ab95806a543f2a15000000000000000000000c20344759666a6a6a6a6a6a665947331f0b0000000000000000000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a000000000000000000000000000000000000000000102030404f5e6b7885919ca5adb4b9bdbfc0bfbcb7b1aaa4a9b6c5d4e3e2d3c4b5a697887867543f2a1500192e43586c8296abbfd4e8d9c5b29f8c7a6a5c50484340404348505c697a8c9eb1c5d9e7d3bfaa96826c57422d1800192e43586d8297abc0d4e9d9c6b29f8c7968594b424045505f6f8092a5b8cce0e1cdb8a48f7965503b271200061827343d3f3f3f3f3f434c5969798c9fb2c5d9e6d1bda994806a55402b16001c31465b70869bb0c5d9e8d3bfaa96826e5b49392d2a303f4f6175899db2c6dbe7d2bda8937d69543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16000000000000000000172b40556a8094a9bed2e7eae1dcdce1eae4d0bba6917b67523d281300000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded5c0ab95806a543f475a6e8295a8bbcee2f5ffffffe5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000000000000000f24394e637780808080808076634e39240f0000000000000000000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a00000000000000000000000000000000000000000b1d2d3e4e5e6d7b8a97a3aeb8c1c8ced2d4d5d4d1ccc5bdb9bcc6d4e3e3d4c4b5a6978878695a4a382511001c31465b70869bafc4d9e8d3bfaa96836f5c4c3e342e2b2b2e343e4c5c6e8296aabed3e7d8c4af9a856f5a45301b001c31465b70869bb0c5d9e8d3bfab96836f5c4a3b2e2b3341516375899db1c5dae7d2bda8937d69543f2a150000091721282a2a2a2a2a2f3b4b5c6f8296aabfd3e8d7c2ad98836e58442f19001e33485e73889db3c8dde4cfbaa5907b67533e2c1b152132465a6e8398adc2d7ead5c0ab96826b56412c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000014293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000061b2f44596e8398adc2d7e6d8cdc7c7ced9e7d3bfaa95806b56412c1803000000000000000000000000000000000000001c31465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded5c0ab95806a543f5063778a9eb1c4d7ebfeffffffe5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000000011263b50667b9195959595907a66503b26110000000000000000000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a000000000000000000000000000000000000000517293a4b5c6c7c8c9aa7b4c0cbd4dce3e7eaeae9e6e0d9d2cfd1d8e4e4d4c5b6a7978878695a4b3c2c1b08001e33485e73889db3c8dde4cfbaa6917b67533f2e2119161619212e3f52667b90a5bacfe4dcc7b29d88725c47321d001e33485e73889db3c8dde5d0bba6917b67533f2d1d16233346596d8397acc1d6ead5c0ab96826b56412c17000000050e1315151515151d2d3f53677b90a5bacfe4dac5b09b86705b46301b001f344a5f748b9fb4c9dfe3cdb8a38e78634e39240f03172c40566b8095abc0d5ead7c2ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095aabfd4e9d6c1ac97826b56402b1600000000000000000a1f34495d72889cb1c6dbd8c8bab2b3bbc9dad8c3ae99846f5a45311c07000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded5c0ab95806a5446596d8093a7bacde1f4ffffffffe5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000000013283e53687c93a8ababa7927c67523d28130000000000000000000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a000000000000000000000000000000000000001022344658697a8b9baab8c5d2dde8e5ded9d6d5d7dadfe6e6e4e6ececd9c6b6a7988978695a4b3c2d1e0e00001f344a5f748a9fb4c9dfe2cdb8a38e78634e392410040000051023384d62778da3b8cde2dec9b49f89735e48331e001f344a5f748b9fb4c9dfe3cdb8a38e78634e39241005162a3f54697d94a9bfd4e9d7c2ad98836c57422c1700000000000000000000001024384d62778da3b8cde2dcc7b19c88725c47321d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000e23384d61768ca0b5cadfcfbbaa9e9eabbcd0dcc7b29d88735e4a35200b000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded4bfa9947d68534f6376899cb0c3d6eafdffffffffe5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000000000000000000152a3f546a8095aabfbfa9947d69543f2a150000000000000000000000000000000000000000001a2f445a6f869bb0c5cbb5a08b745f4a341f0a000000000000000000000000000000000000071a2d3f5164758798a9b8c8d6e3e6dbd1cac4c1c0c1c5cbd2dce8f4ffe7d2bda99889796a5a4b3c2d1e0f0000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000d22374c62778ca1b7cce1dec9b49f89735e48331e001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16000000000000000012273c51667a90a5b9cedec9b4a08c8da0b5cadfcbb6a28d77634e39240f000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded4bfa9947d6853586c8092a6b9ccdff2fefdffffffe5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150d0d0d0b060000000000172c42576c8297acc1c0ab96826b56412c170200000000000000000000000000000000000000001a2f445a6f869bb0b5b5b5a08b745f4a341f0a0000000000000000000000000000000000000f2336495c6f8293a5b6c6d6e6e1d4c8beb6afacabacb0b7bfcad7e5f4e5d0bba5907c6a5b4c3c2d1e0f000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000172b40556a8094a9bed2dac6b19c87889cb1c6dbcfbaa6917b67523d2813000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000001e33485e73899fb4c9ded4bfa9947d68536175889cafc2d5e8eee9e8ecf3fee5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a22222222201a1105000000192e43586e8498adc3c2ad98836d58432e190300000000000000000000000000000000000000001a2f445a6f869ba0a0a0a0a08b745f4a341f0a000000000000000000000000000000000004182b3f5266798c9eb1c2d4e4e0d1c3b7aba29b9795979ca3adb9c7d6e5e7d3bfab9986725f4b38241000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210c000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000061b2f44596e8398adc2d7d7c2ad98838499aec2d7d3bfaa95806b56412c17020000000000000000000000000000000000001b30465b70879cb1c7dce2cdb8a38d77634e38230e0000000000000000000000001e33485e73899fb4c9ded3bda8937c68576a7d91a5b8cbdee4dad4d3d7e0ede5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f3737373737352e23140400001b30455a6f869bb0c5c4af9a866f5a45301b0500000000000000000000000000000000000000001a2f445a6f868b8b8b8b8b8b8b745f4a341f0a00000000000000000000000000000000000a1e33475b6e8296a9bbcee0e3d2c2b3a6998f8782808388909ba9b8c7d8eadbc8b5a28f7a67533f2b1602000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16000000000000000a1f34495d72889cb1c6dbd3bea994808095aabfd4d7c2ae99846f5a45301b070000000000000000000000000000000000011b30465b70879cb1c7dce2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9ded3bda8937c676073879baec1d4e3d3c7bfbec4cfdee5d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a544c4c4c4c4c4c494032221000071d32475c72879cb1c7c6b19c87715c47321c070000000000000000000000000000000000000000192e43586b74747474747474746e5c48331e0900000000000000000000000000000000001025394e62768a9eb2c5d8ead7c6b5a496887c726c6b6d737d8b9aaabbccdee5d1beaa96836e5a46311d08000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001f344a5f74899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16000000000000000e23384d61768ca0b5cadfcfbaa5907b7c91a6bbd0dbc7b29d88735e4934200b0000000000000000000000000000000000081c31465b70879cb1c7dce2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9ded3bda8937c67697c90a3b6caddd7c5b5aaa9b1c0d1e4d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a626262626262625d513f2d19000a1f34495e73899fb3c8c8b39e89735e48331e09000000000000000000000000000000000000000014283b4d5a5f5f5f5f5f5f5f5f5c503f2d19050000000000000000000000000000000000152a3f53687c91a5b9cde1e1cebba89786776a5f575658606c7b8c9dafc2d5e8d9c6b19d8974604b37220d000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d000002010000152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000013273c51667a90a5b9cee0ccb7a28d77788ea3b8cce0cbb6a18c77624d39240f00000000000000000000000000000000000f23374b6074889db2c7dce2cdb8a38d7864503c28140000000000000000000000001e33485e73899fb4c9ded1bca7917c67728699acbfd3e2cebba89794a2b5c9ded0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab958077777777777777776f5c48331e000c21364b60768ba0b5cbcab5a08b74604b36200b00000000000000000000000000000000000000000c1e2f3d464a4a4a4a4a4a4a4a483f322210000000000000000000000000000000000000192e43586d8297abc0d4e9d9c5b19e8b7968594c4340444e5d6e8092a5b8cce0e1ccb8a38f7965503b2611000000001f344a5f748b9fb4c9dfe2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001f344a5f748b9fb4c9dfe2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46311c001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d0d1417161108152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000172c40556a8094a9bed2ddc8b39e8974748a9fb4c9decfbaa5907b66523d28130000000000000000000000000000000001162a3e52667a8fa3b7cce0e5d0bca894806b57432e1a0600000000000000000000001e33485e73899fb4c9ded1bca7917b687b8fa2b5c9dcd9c6b29f8b879cb1c7dcd0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d6c1ad998d8d8d8d8d8d8d8d8b745f4a341f000e23384d62778da2b7ccccb7a18c77624c37220d000000000000000000000000000000000000000000111f2a323434343434343434332d2214040000000000000000000000000000000000001c31465b70869bb0c5d9e8d3bfaa96826e5b4a3b2f2b313f506275899db1c5dae6d2bda8937d68543f2a14000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c3722131f282c2b251a152a3f546a8095abc0d5ead5c0ab95806b56402b16000000000000061b3045596e8498adc2d7d9c4af9a867071879bb0c5dad3beaa95806b56412c1702000000000000000000000000000000081c3145596d8296aabed2e6ebd7c3af9a86725d4935210d00000000000000000000001e33485e73899fb4c9ded1bca7917b718598abbed2e4d1bdaa9683889cb2c7dcd0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2dcc9b7a9a3a3a3a3a3a3a3a08b745f4a341f000f253a4f64798fa4b9ceceb9a48f78634e39240f000000000000000000000000000000000000000000010d171d1f1f1f1f1f1f1f1f1e191004000000000000000000000000000000000000001e33485e73889db3c8dde4cfbaa5907b67523e2c1d16213346596d8397acc1d6ead5c0ab96826b56402c16010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c372222313c4140382b1b2a3f546a8095abc0d5ead5c0ab95806a543f2a150000000000000a1f34495d72889cb1c6dbd5c0ab97826c6d8397acc1d6d7c2ae99846f5a45301b060000000000000000000000000000000f23374b6074889cb1c5d9edf2dec9b5a18d7864503c281400000000000000000000001e33485e73899fb4c9ded0bba6917b7a8ea1b4c8dbdcc8b5a28e7a889db3c8ddd0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2e6d5c7bcb8b8b8b8b8b8b5a08b745f4a341f0011273c51667b91a6bbd0d0bba5907b66503b261100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748b9fb4c9dfe2cdb8a38e78634e39240f04162a3f54697d94a9bfd4e9d7c2ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37222f404f57544939272a3f546a8095abc0d5ead5c0ab95806a543f2a150000000000000e23384d62778ca1b5cadfd2bda8937d686a8094a9bed3dbc6b29d88735e49341f0b000000000000000000000000000001162a3e52667a8fa3b7cce0f4f8e4d0bca894806b57432f1b07000000000000000000001e33485e73899fb4c9ded0bba590798497aabdd1e4d4c0ad998672889db3c8ddd0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2f3e4d8d0cdcdcdcdcdcbb5a08b745f4a341f0013283e53687c93a8bdd2d2bca7937c67523d281300000000000000000000000009131a1d1d1d1d1d1d1d1b150b000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c372a3c4d5e6b675645332a3f546a8095abc0d5ead5c0ab95806a543f2a1500000000000013273c51667b90a5bacee3ceb9a48f7965667b90a5bacfdfcbb6a18c77624d38240f0000000000000000000000000000081c3145596d8296aabed2e6fbfdebd7c3af9b87725e4a36210d000000000000000000001e33485e73899fb4c9ded0bba590798da0b3c6d9dfcbb8a4917d72889db3c8ddd0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2f8f6ebe5e2e2e2e2e0cbb5a08b745f4a341f00152a3f546a8095aabfd4d4bfa9947d69543f2a1500000000000000000000000b1a262e323232323232322f281c0e0000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d7c2ad98836c57422c1700000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73889db3c8dde2cdb8a38d77624c373648596b7c746351402e3f546a8095abc0d5ead5c0ab95806a543f2a15000000000000172c40556a8094a9bed3dfcab5a08b766163778da2b6cbe0cfbaa5907b66513d281300000000000000000000000000000f23374b6074889cb1c5d9ede9e8ecdecab6a28d7965503c2814000000000000000000001e33485e73899fb4c9ded0bba5908396a9bccfe2d6c3af9c887572889db3c8ddd0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2f8ede2dad8d8d8d8d8cbb5a08b745f4a341f00172c42576c8297acc1d6d5c0ab96826b56412c1702000000000000000002051829384247474747474747443a2c1b0900000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402c1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77624c374253657689806f5d4c3a3f546a8095abc0d5ead5c0ab95806a543f2a150000000000061b3045596e8498adc2d7dbc6b19c88725d5f74899eb3c8ddd3bea994806a55412c17020000000000000000000000000115293e52667a8fa3b7cce0dad4d3d7e0d1bca894806b57432f1b070000000000000000001e33485e73899fb4c9ded2bda998929fb2c5d8e2cebba793806c73899fb3c8ded0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2ecdccfc6c3c3c3c3c3c3b5a08b745f4a341f00192e43586e8498adc3d8d7c2ad98836d58432e19030000000000000610171a223547555c5c5c5c5c5c5c574a382516140e0500000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2dec9b49f89735e48331e001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77624c3c4e607183948d7a6958463f546a8095abc0d5ead5c0ab95806a543f2a1500000000000a1f34495d72889cb1c6dbd7c2ae99846f5a5b70869aafc4d9d7c2ad99846f5a45301b06000000000000000000000000081c3044586d8296aabed2d3c7bfbec4cfd7c3af9b87725e4a36220e0000000000000000001e33485e73899fb4c9ded9c6b6aaa7aebdcee1d9c6b29f8b776473899fb4c9ded0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2e1cfbeb2adadadadadadada08b745f4a341f001b30465b70869bb0c5dad9c4af9a866f5a45301b0500000000000817232b2f2d3c5164717272727272726855402b2b29211608000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77624c485a6b7d8fa1998775645241546a8095abc0d5ead5c0ab95806a543f2a1500000000000e23384d62778ca1b5cadfd4bfaa95806b56576c8297acc0d5dbc6b29d88735e49341f0a0000000000000000000000000f23374b5f73889cb0c4d7c5b5aaa9b1c0d1cab6a28e7965513d29140000000000000000001e33485e73899fb4c9dee4d4c7bebcc1ccdbe4d1bdaa96836f5e73899fb4c9ded0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d9c4b1a098989898989898988b745f4a341f001d32475c72889cb1c7dcdbc6b19c87715c47321c0700000000051626353f44423e53687d8888888888826b56413d403d342616050000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77624c556677899bada59382705e4d546a8095abc0d5ead5c0ab95806a543f2a15000000000013273c51667b90a5bacee3d0bba6917c675254697d93a8bdd2dfcab5a18c77624d38230e00000000000000000000000115293e52667a8fa3b7cbd0bba89794a2b5c9d1bda995806c58432f1b0700000000000000001e33485e73899fb4c9def2e4dad3d1d5deeadcc8b5a28e7a665e73899fb4c9ded0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab96838383838383838383745f4a341f001f34495e73899fb4c9deddc8b39e89735e49341f090000000011223444525a564a53687c939d9d9d96826b5645515651443423120100000000000000000000000000000000000000000000001f344a5f748b9fb4c9dfe2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77624f60728495a7b8b19f8e7c6a59546a8095abc0d5ead5c0ab95806a543f2a150000000000172c40556a8094a9bed3e1ccb7a28d78634e5065798fa4b9cee3cebaa5907b66513c27130000000000000000000000081c3044586d8295aabed2cab5a18d869aafc3d8c4af9b87725e4a36220e00000000000000001e33485e73899fb4c9def4f6ede8e7eaf1e7d4c0ad9986725e5e73899fb4c9ded0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806c6c6c6c6c6c6c6c675845311c001f344a5f748ba0b5cbe0dfcab5a08b745f4a341f0a0000000d1e2f4051626f675a52677c92a7b3ab95806a5456636b625241301f0e00000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d0014293e53687d94a9bfd4e9d6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77625b6d7d90a1b3c5bdab9a887665546a8095abc0d5ead5c0ab95806a543f2a1500000000061b3045596e8498adc2d7ddc8b39f8a745f4b4c61768ca1b5cadfd3bea994806a55402c1702000000000000000000000f23374b5f73889cb0c4d9c4b09b878095a9bed2cab6a28e7965513d291501000000000000001e33485e73899fb4c9def4fffffffffff2dfcbb8a4917d69565f748ba0b5cadfd0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a5757575757575754493a2815001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a0000091a2b3c4d5e6f80786b5e667b91a7bca9947d685a6774826f5e4e3d2c1b0a000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095aabfd4e9d6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d776267788a9cadbfd0c9b7a6948371606a8095abc0d5ead5c0ab95806a543f2a15000000000a1f34495d72889cb1c6dbdac5b09b86705c47495e73889db2c7dcd7c2ad98846e5945301b060000000000000000000115293e52667a8fa3b7cbd3bfaa96827a8fa3b8ccd1bda995806c5844301c07000000000000001e33485e73899fb4c9def4fffffffffdead6c3af9c8875614d5f748ba0b5cbe0d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a5442424242424240372b1c0b001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a000415263748596b7c8d8a7c6f647990a5bba8937c686b78858e7c6b5a49392817060000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000d22374c62778da3b8cde2ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d7762738596a8bacbddd5c3b2a18f7d6c6a8095abc0d5ead5c0ab95806a543f2a15000000000f23384d62778ca1b5cadfd6c1ac97836d5843455a6f8499aec3d8dbc6b19c88725d49341f0a000000000000000000081c3044586d8295aabed2ceb9a4907b74899eb2c6d8c4af9b88735f4b36220e000000000000001e33485e73899fb4c9def4fffffffff5e2cebba793806c594a5f748ba0b5cbe0d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2c2c2c2c2c2b241a0d00001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a0010223344556677899a9a8d8072798fa4b9a7927c6f7c89969b8a786756453423120000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000e23384e63788ea3b8cde3ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d776d8091a2b4c5d7e8e1d0bead9b8a776a8095abc0d5ead5c0ab95806a543f2a150000000013283d51667b90a5bacee3d2bda8937d69543f41576b8296abbfd4dfcab5a18c77624d38230e0000000000000000000f23374b5f73889cb0c4d9c8b49f8a766f8398acc1d5cbb7a28e7965513d2915010000000000001e33485e73899fb4c9def4ffffffffedd9c6b29f8b7764504a5f748ba0b5cbe0d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a171717171611080000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00192c3f5162738495a6ab9e9184788ea3b8a7917b808d9aa7a79685746352412e1b0700000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d7c2ad98836c57422c17020000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000e23384e63788fa4b9cfe4ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77798b9daec0d1e3f4eddccab9a79684728095abc0d5ead5c0ab95806a543f2a1500000000172c41556a8094a9bed3e3ceb9a5907a65513c3e53687c92a7bcd1e3ceb9a5907a66513c271200000000000000000115293e52667a8fa3b7cbd7c2ae998570697d92a7bbd0d1bda995826c5844301c070000000000001e33485e73899fb4c9def4fffffff8e4d1bdaa96836f5b484b5f748ba0b5cbe0d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a001d32475c6f8091a2b0bbafa295888ea3b8a59085919eabb8b4a39282705e4a36210c00000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402c16010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000e23384e63788fa4b9cfe4ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d778697a9baccddeff0f1e8d6c5b3a290808095abc0d5ead5c0ab95806a543f2a15000000061b30455a6f8499adc2d7dfcbb6a18c77624d383a4f64798fa3b8cde2d2bea994806a55402b170200000000000000081c3044586d8295aabed2d1bda894806a63778da1b5cad8c4b09c88735f4b36220f0000000000001f344a5f748a9fb4c9def4fffffff0dcc8b5a28e7a66533f4b60768ca1b7cce1d0bba59079644f3a250f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a001d32475c6f7c88939ea9b4b2a59a9dabbead9d99a2afb9aea3988d8275614c37220c00000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000e23384e63788fa4b9cfe4ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d8092a3b5c6d8e7dedbdce2e2d1bfae9c8b8095abc0d5ead5c0ab95806a543f2a150000000b1f34495e73889db2c6dbdcc7b29d88735e4934374b60758ba0b4c9ded7c2ad98836e59442f1b06000000000000000f23374b5f73889cb0c4d9cbb7a28e79655d72879bb0c4d9cbb7a28e7965523e29150100000000001f344a5f748ba0b5cbe0f5fffffbe7d4c0ad9986725e4b374b60768ca1b7cce1d0bba59079644f3a250f0000000000020303030303030d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00192d40515f6a75828c97a2adb7afb1bac9bbb0aeb4b1a69c91867a6f645746321e0900000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000e23384e63788fa4b9cfe4ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dcc7b19c87705b46301b001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a54402b15001d32475c72889db3c8dde3ceb9a5928e9eafc1d2e2d4cac5c7cedaddcbbaa8978b98acc1d6ead5c0ab95806a543f2a150000000f24384d62778ca1b6cbdfd8c3ae99856f5a453033485d72879cb1c6dbdbc6b19c88725d49341f0a0000000000000015293e52667a8fa3b7cbdac6b19d88735f586c8296aabfd3d1bda995826d5844301c0800000000001f344a5f748ba0b5cbe0f5fffff2dfcbb8a4917d695642364b60768ca1b7cce1d0bba59079644f3a250f0000000912171919191919191922374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00112333414d58636e7985909ba6b2c2ccd8cdc5b7aa9f94897d73685d52473928160300000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000e23384e63788fa4b9cfe4ddc8b39d88725c47321d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dbc6b19c87705b46301b001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde8d4c1b0a4a2acbbcdded4c4b7b0b2bccbdcd7c6b5a6a0a7b6c8dbead5c0ab95806a543f2a1500000013283d51667b90a5bacfe4d4bfab96826b57412d2f44596e8498adc2d7dfcab5a08c76614d38230e000000000000071c3044586d8295aabed2d5c0ac97836e5952667b90a4b9cdd8c4b09c88735f4b37230f00000000001f344a5f748ba0b5cbe0f5fffdead6c3af9c8875614d3a364b60768ca1b7cce1d0bba59079644f3a250f00000e1b262c2e2e2e2e2e2e2e2e374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00051524303b46515c67727d8994a5b9cee3d3bfab998d82776c61564b4035291b0b0000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001e33485e73889db3c8dde2cdb8a38d77624c38230d000000000e23384e63788fa4b9cfe4ddc8b39d88725c47321d001e33485e73889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000000000000000000000d22374c62778da3b8cde2dac5b09b866f5a442f1a001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf1dfcec1b8b7becad9d9c8b6a69b9fadbed0e1d2c4b9b5bac4d3e5ead5c0ab95806a543f2a15000000172c41556a8094a9bed3e5d1bca7927c68533e292c40556a8095aabed3e3ceb9a5907a66513c27120000000000000e22364b5f73889cb0c4d9cfbba6927c68544c61758a9fb3c7dccbb7a38f7a66523e291501000000001f344a5f748ba0b5cbe0f5fff5e2cebba793806c594531374c61768ca1b7cce1d0bba59079644f3a250f000b1c2c39414343434343434343434c62778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00000d1924303b46515c67737d8da2b7cce1d1bca7928074695e54493e33281e11010000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0014293e53687d94a9bfd4e9d6c1ac97826b56402b16010000001d32475c72889db3c7dce3ceb9a48f7964503b27170e0a0a0e18283c50657990a5bacfe4dcc7b19c87715c47321c001d32475c72889db3c7dce3ceb9a48f79644f3a26130a1a2d42576b8296abc0d5ead5c0ab95806a55402b1600000000050a0b0b0b0b0b12253a4e63788ea3b8cde2dac5b09b866f5a442f1a001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf2ecded4cdccd1dbdecdbcaa99888fa1b2c4d5e2d5cdcbced6e2f1ead5c0ab95806a543f2a150000061b30455a6f8499adc2d7e2cdb8a38e78644f3a25283d52677b91a6bbd0e5d2bea8947d6955402b1601000000000015293d5165798ea2b7cbdec9b5a18c77634e475b708599adc2d6d2beaa95826d5844301c08000000001f344a5f748ba0b5cbe0f5ffedd9c6b29f8b7764503d29374c62778da3b8cde2d0bba59079644f3a250f0015283a4a555858585858585858585862778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a000b1c2b36414d58636e7985909baabcd0e3d4c0ad9d92877c71665b50463b2f1f0f0000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095aabfd4e9d6c1ac97826b56402b16010000001c31465b70869bb0c5dae6d1bca7937d6a57453529221f1f222a3645576b8094a8bdd2e7d9c4af9a866f5a45301b001c31465b70869bb0c5dae6d1bca7927d69554231231f2737495c70869aaec3d8e8d3bea8947d68543f2a1400000410191f212121212122304155687c92a6bbd0e5d7c2ad98836e58432e19001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf2fcf0e7e2e1e5e4d3c1b09e8d7a8395a6b8c9dbe8e2e0e2e9f3ffead4bfab95806a543f2a1500000b1f34495e73889db2c6dbdec9b49f8b75604b362124394e63788da2b7cce1d6c1ad98836e59442f1a0600000000071c3044586c8295a9bdd1d8c4af9b87715d4941556a7d93a8bcd1d9c4b09c88735f4b37230f000000001f344a5f748ba0b5cbe0f5f8e4d1bdaa96836f5b483422374c62778da3b8cde2d0bba59079644f3a250f001c314558686e6e6e6e6e6e6e6e6e6e6e778da3b8cde2d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a0015283a48545f6a75828c97a2adb9bfc6d2c7bfbbafa4998e83786d63584d3d2c190500000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1601000000192f44586d8397acc1d6ead6c2ae9a87746353463d373434373d47536375889bafc3d7e9d5c0ab97826c57422d1900192f44586d8398adc1d6ead5c1ad998572604f41373439455566798ca0b4c8dde3cfbaa5907b66513c2712000414222d343636363636373f4e5f718598acc0d5e8d3beaa95806b56412c17001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf2fffffffffbe9d8c6b5a392806f77899aacbdcfe0f2f5f7fdffffe9d4bfa9947d68533e291400000f24384d62778ca1b6cbdfdac5b09b87715c47331e21364b5f74899fb3c8dddac6b19c87725d48331f0a000000000e22364b5f73889cb0c4d8d3beaa95826c57433b5064788da2b6cbdfcbb7a38f7a66523e2a16010000001f344a5f748ba0b5cbe0f5efdcc8b5a28e7a66533f2c22374c62778da3b8cde2d0bba59079644f3a250f001f344a5f748484848484848484848484848ea3b8cde3d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a001c31455866717c88939ea9b4b2a9aab4c4b6aba8b0b6aba1968b80756a5b4834200b00000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1601000000162b4054697d93a7bcd0e4ddc9b6a39282716459514c4a4a4c515964718292a4b7cadee3cfbba6927c68533f2a1500162b4055697d93a8bcd0e4dcc8b5a28f7d6d5f534b4a4d5663728496a9bccfe3ddc9b5a08c77624d38240f000f21323f484b4b4b4b4b4c525d6c7c8fa1b4c7dbe1cdb9a4907b66523d2813001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf2ffffffffefddccbaa9978674636b7c8ea0b1c3d4e6f7ffffffffe9d4bfa9947d68533e2913000013283d51667b90a5bacfe4d7c2ad98836e59442f1a1d32475c70869bb0c5dadfcab5a08b76614c38230e0000000015293d5165798ea2b7cbdfcdb9a48f7b66523d364a5e73889cb1c5dad2beaa96826d5945311c080000001f344a5f748ba0b5cbe0f5e7d4c0ac9986725e4b372422374c62778da3b8cde2d0bba59079644f3a250f001f344a5f748b99999999999999999999999dabbed1e6d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a001f344a5f74838f9aa5b0bbaea19597a6baa998949fabb8b3a89d928877624c37220d00000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160100000011263b4f64788da1b4c8dbe6d3c1b09f8f82766c65615f5f61656c7682909fb0c2d4e7dbc7b3a08c77634e3a25110012263b5064788da1b5c9dce4d1bfad9c8c7d7066605f6168738291a1b3c5d8e9d5c2ae9a86715d48341f0a00182c3f505c606060606061656f7b8b9bacbed1e4d9c6b29e8a75614d38240f001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf2fffffff4e3d1c0ae9d8c7968565f708294a5b7c8daebfdffffffe9d4bfa9947d68533e29130000172c41556a8094a9bed3e8d3bea994806a55402b16192e43586d8397acc1d6e3ceb9a48f7a65513c2712000000071c3044586c8295a9bdd1dcc7b39e8a75614c383044596d8297abbfd4d9c5b19c8874604b37230f0000001f344a5f748ba0b5cbe0f2dfcbb8a4907c6956422f1b23384e63788ea3b8cde2d0bba59079644f3a250f001f344a5f748ba0afafafafafafafafafafb1bac9daead5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a001e32475a6c7d8e9fb0b7aa9d90838ca1b7a48f828e9aa7b3b1a08f7d6c5b48341f0b00000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16010000000c2135495d718599acbfd2e4decdbdaea0938980797674747679808994a0aebdcedfe3d1beab9884705c4834200b000d21354a5d72869aadc0d3e5dccabaaa9b8e837a7574767c86919fafbfd0e2dfccb9a6927d6a56422e1a05001e33475b6e76767676767679828c9aa9b8c9dbe2d0bdaa96836f5b46321e09001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db2c7dcf1fffffae8d7c5b4a291806e5c4a5364768899aabccddff0ffffffe9d4bfa9947d68533e291300061b30455a6f8499adc2d7e4cfbaa5907b66513c2712162b4054697d94a8bed2e7d2bda8947d6955402b160100000e22364b5f73889cb0c4d8d6c2ad9984705b46322a3f53687c91a5bacee0ccb7a38f7a66523e2a160200001f344a5f748ba0b5cbe0ead6c3af9c8874614d3a261323384e63788fa4b9cfe4d0bba59079644f3a250f001f344a5f748ba0b5c4c4c4c4c4c4c4c4c4c5ccd8e7ead5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb5a08b745f4a35200b00182b3d4e5f708292a3a6998c80778da2b7a590797c8995a2a49382705f4e3d2b180500000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1601000000061a2e4255697c8fa2b4c6d8e8dbccbeb1a59c958f8c8b8b8c8f959ca6b1becddce8d7c5b4a18f7b6854412d190500071b2e42566a7d90a3b6c8dae8d8c8b9aca0968f8b8a8c9098a3afbdcddde5d3c1af9d8a76634f3b271300001f344a5f748b8c8c8c8c8c8f959eaab8c7d6e7d7c5b3a08d7a67533f2b1703001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001c31465b70879cb1c7dcf1f5f5eedccbb9a896857361503e47586a7b8d9fb0c1d3e4f5f5f5e9d4bfa9947d68533e2913000b1f34495e73889db2c6dbe0cbb6a28d77624d39240f12273c51667a90a5bacfe4d6c1ac97836d59442f1a05000015293d5165798ea2b7cbdfd1bca8937d6a55412c25394d62768ba0b4c8ddd2beaa96826d5945311d0900001f344a5f748ba0b5cbe0e1cebaa793806c5845311e0e23384e63788fa4b9cfe4d0bba59079644f3a250f001f344a5f748ba0b5cbd9d9d9d9d9d9d9d9dae0e9f5ead5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0cbb6a18c76604b36210b000e1f3041526374859695887b6e788ea3b8a7917b6b778491978675645342301f0e0000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1601000000001226394c5f728597a9bacbdbeadccec2b8afa9a4a1a0a0a1a4a9b0b9c3cfdce9dacab9a89685715f4c39251100000013273a4d60738699aabccddde6d7c9bdb2aaa3a09fa0a5acb5c0cddce8d8c7b6a492806d5a4733200c00001f344a5f748ba0a1a1a1a1a3a9b1bbc8d6e5dacab9a79683705d4a37241000001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001b30465b70879cb1c7dce0e0e0e0d0bfad9c8a78675544323a4c5d6f8292a4b5c7d8e0e0e0e0d4bfa9947d68533e2913000f24394d62778ca1b6cbdfdcc7b39e89735f4a35200b0e23384d62778ca1b6cbe0dac5b19c87725d48331e0900071c3044586c8295a9bdd1dfcbb6a28e7864503b271f33485c70869aaec3d7d9c5b19c8974604c38240f00001f344a5f748ba0b5cbe0d9c5b29f8b7763503d29150e23384e63788fa4b9cfe0d0bba59079644f3a250f001f344a5f748ba0b5cbe0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbe0e0ccb7a18c76604b36210b0001122334455667788984776a64798fa4b9a8937c686672808b79685746352413020000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1601000000000a1d30435567798b9cadbdccdae7e0d5cbc4bdb9b6b5b5b6b9bdc4ccd5e0e7d9cbbcac9c8a796754422f1c090000000b1e314457697b8d9eafbfcfdde7dacfc5beb8b5b4b5b9bfc8d2dee7d9cabaa998877563503d2a170400001f344a5f748ba0b5b7b7b7b8bdc4ced9e5dbcdbdac9b8a786653412e1b0800001d32475c72879cb1c7dce2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001b30465b70879cb1c7cbcbcbcbcbc4b3a1907d6c5b4938262f405263748698a9bbcbcbcbcbcbcbbfa9947d68533e29130013283d52667b90a5bacbcbcbc4af9a86705b46311c070b2034495e73899eb3c7cbcbc9b5a08b76614c37230e000e22364b5f73889cb0c4cbcbc5b19c88735e4a3621192d42566b8094a9bdcbcbcbb8a48f7b67533e2a1602001f344a5f748ba0b5cbcbcbbdaa96836f5b4834210d0e23384e63788fa4b9cbcbcbbba59079644f3a250f001f344a5f748ba0b5cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc0ab95806a543f2a150000000000000000001f344a5f748ba0b5cbcbcbcbb7a18c76604b36210b000005162738495a6b7c736659657990a5bba9947d6955616e796d5c4a39281706000000000000000000000000000000000000000000001e33485e73889db3c8dde2cdb8a38d77624c38230d00152a3f546a8095abc0d5ead6c1ac97826b56402b160100000000001326384a5c6d7d8f9eaebcc9d5e1e8dfd8d2cecbcacacbced2d8dfe8e1d6c9bcae9e8e7d6c5b49372512000000000114273a4c5d6f8091a1b1bfcddae6e2d9d2cdcbc9cbced4dbe4e3d6c9bbac9c8c7a69574533210e0000001f344a5f748ba0b5cbccccced2d8e1e4d8cbbdae9e8f7d6c5a493724110000001b30465b70879cb1c7dce0cdb8a38d77624c37220d00152a3f546a8095abc0d5e0d5c0ab95806a543f2a15001b30465b70879cb1b5b5b5b5b5b5b5a6958372604f3d2c1a22344557687a8c9dafb5b5b5b5b5b5b5a9947d68533e291300172c41566b8095aab5b5b5b5b5ab96826c57422d1804071c31465b70869aafb5b5b5b5b5a48f7965503b27120015293d5165798ea2b5b5b5b5b5ab97836d5944301b13283c5165798fa3b5b5b5b5b5aa96826d5945311d09001f344a5f748ba0b5b5b5b5b5a18e7a66533f2c18050f253a4f647990a5b5b5b5b5b5a48f79644f3a240f001f344a5f748ba0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab95806a543f2a150000000000000000001f344a5f748ba0b5b5b5b5b5b5a18c76604b36210b0000000a1b2b3c4d5e68625551667b91a7b5ab95806a55505d645e4f3e2d1c0b00000000000000000000000000000000000000000000001d32475c72889db2c7dce3ceb9a48f79644f3b27140a1a2e42576c8297abc0d5ead5c0ab95806a55402b16010000000000091b2d3e4f6070808f9eabb8c4ced8e0e7e6e3e0dfdfe0e3e6e8e1d8cfc4b8ab9e8f80705f4f3d2c1a0800000000000a1c2e405162738393a1afbcc9d4dee6e6e2e0dfe0e3e8e4dbd1c5b8ab9d8e7d6d5c4b3a2816040000001f344a5f748ba0b5cbe0e1e3e6e5dcd2c7baad9f9080705f4e3d2b19070000001b30465b70879cb1c7cbcbcbb8a38d77624c37220d00152a3f546a8095abc0cbcbcbc0ab95806a543f2a15001b30465b70879ca0a0a0a0a0a0a0a09b897766544331200e1628394b5c6e8091a0a0a0a0a0a0a0a0a0947d68533e2913001b30455a6f8499a0a0a0a0a0a0a0937d68533f2a150000182d42576c8296a0a0a0a0a0a0a0937d6954402b16001b3044586c8295a0a0a0a0a0a0a0917c68533f2a160e22374b5f74899da0a0a0a0a0a09d8974604c38230f001f344a5f748ba0a0a0a0a0a09986725e4a372310000f253a4f647990a0a0a0a0a0a0a08f78634e38230e001f344a5f748ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095806a543f2a150000000000000000001f344a5f748ba0a0a0a0a0a0a0a08c76604b36210b000000000e1f30404d53504452677c93a0a0a097826c57424a4f4b4031200f0000000000000000000000000000000000000000000000001c31465b70869bb0c5dae6d1bca7937d6a564331231f27374a5d71869aafc4d8e8d3bea8947d68543f2a14000000000000000f213242526170808e9aa6b1bcc5ccd3d8dbdedfdfdedcd8d3cdc5bcb2a69a8d807061514131200e000000000000001122344455647483919fabb7c1cad2d8dcdee0dedbd7d0c8beb3a79b8d7d6f5f4f3e2e1c0b000000001f344a5f748ba0b5cbe0dedcd7d1c9c0b5a99d8f827162524231200e000000001b30465b70879cb1b5b5b5b5b5a38d77624c37220d00152a3f546a8095abb5b5b5b5b5ab95806a543f2a15001b30465b70878b8b8b8b8b8b8b8b8b8b7c6b5a48372514020a1c2d3f506273858b8b8b8b8b8b8b8b8b8b7d68533e2913001e33485e73888b8b8b8b8b8b8b8b8b7964503b26110000152a3f53687d8b8b8b8b8b8b8b8b8b836d58432e19001e33485e73888b8b8b8b8b8b8b8b8b77624e392510081c31455a6e838b8b8b8b8b8b8b8b8b7b66513c2712001f344a5f748a8b8b8b8b8b8b8b7c6956422e1b08000f253a4f64798b8b8b8b8b8b8b8b8b78634e38230e001f344a5f748b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a150000000000000000001f344a5f748b8b8b8b8b8b8b8b8b8b76604b36210b000000000112222f393e3b3e53687d8b8b8b8b8b836d5843363a372f221302000000000000000000000000000000000000000000000000192e43586d8397acc1d6ead6c1ad998672604f40373439455567798da0b4c9dde4cfbaa5907b66513c271200000000000000031424344352616f7c89949fa9b1b8bec3c6c9cacac9c7c3bfb9b1a99f95897c6f61524333231302000000000000000516273747566573828e99a4aeb7bec3c7c9cbc9c6c2bcb5aca1968a7c6f60514131211000000000001f344a5f748ba0b5cbcbc9c7c3bdb6ada3988c807062534434241302000000001b30465b70879ca0a0a0a0a0a0a08d77624c37220d00152a3f546a8095a0a0a0a0a0a0a095806a543f2a15001a2f44586b74747474747474747474746f5f4e3c2b1908000010213344566773747474747474747474747364513c2712001d32475b6e74747474747474747474705f4b37220d000011263a4f6272747474747474747474746956412d18001d32475b6e747474747474747474746d5c48341f0b01172b405467747474747474747474747364503b2611001d32465a6b747474747474747472614d3a261300000d22374b5e6f7474747474747474746f5f4b37220d001e33475b6d7474747474747474747474747474747474747474747466523e29140000000000000000001e33485c6e747474747474747474746e5c48341f0a000000000004121d2528283d5266747474747474746a57422d25231c120400000000000000000000000000000000000000000000000000162b4054697d93a7bcd0e4dcc9b5a2907d6d5e524b4a4d5663738596a9bcd0e3dec9b5a18c77624d39240f00000000000000000616253443515e6b77828c959da4aaaeb1b4b5b5b4b2aeaaa49e968d82776b5e514334251606000000000000000000091929384755636f7c88929ba3a9aeb2b4b5b4b1ada8a1998f84786c5e51423223130300000000001f344a5f748ba0b5b5b5b4b2aea9a29a90867a6e6153443526160600000000001b30465b70878b8b8b8b8b8b8b8b8b77624c37220d00152a3f546a808b8b8b8b8b8b8b8b8b7d68533e29130015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5c5141301e0d0000000415273849575f5f5f5f5f5f5f5f5f5f5f5f564735220e00182c3f505c5f5f5f5f5f5f5f5f5f5f5d51412f1c0800000c1f3345545e5f5f5f5f5f5f5f5f5f5f594b3a271300182c3f505c5f5f5f5f5f5f5f5f5f5f5c4f3e2c19050011243749585f5f5f5f5f5f5f5f5f5f5f564734210d00172a3d4d5a5f5f5f5f5f5f5f5f5e5444311e0a0000081c2f41515c5f5f5f5f5f5f5f5f5f5d51412f1c0800182b3e4f5c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574836230f000000000000000000192c3f505c5f5f5f5f5f5f5f5f5f5f5c503f2d1905000000000000000a1113233648585f5f5f5f5f5f5f5a4d3b28140e0800000000000000000000000000000000000000000000000000000011263b4f64788da1b5c8dce5d2bfad9c8c7c6f65605f6169738291a2b4c6d8ead6c2af9a86715d49341f0b00000000000000000007162533414d59646f7982898f95999c9fa0a09f9c9995908a82796f65594d403325160700000000000000000000000b1a293745525e6a757d888f959a9d9fa09f9c99948d857c72665a4e40322314050000000000001f344a5f748ba0a0a0a09f9d99948e867d73685c5043352617080000000000001a2f44586b74747474747474747474705f4a36210c0014293e5266747474747474747474747364513c2712000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a483f3223120100000000091b2b39444a4a4a4a4a4a4a4a4a4a4a4a4438291805000f21323f484a4a4a4a4a4a4a4a4a4a49413324120000000316273643494a4a4a4a4a4a4a4a4a4a463b2d1c0a000f21323f484a4a4a4a4a4a4a4a4a4a483e31210f0000081a2b3a454a4a4a4a4a4a4a4a4a4a4a4438291705000d1f2f3d464a4a4a4a4a4a4a4a4943362615020000001223323f484a4a4a4a4a4a4a4a4a484033241200000f21313e484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392a19070000000000000000000f21323f484a4a4a4a4a4a4a4a4a4a483f3222100000000000000000000007192b3a454a4a4a4a4a4a4a473d2f1e0b00000000000000000000000000000000000000000000000000000000000c2135495d718699acbfd2e5ddcbbaaa9b8d82797574767c8692a0afc0d1e3dfcdbaa793806b57432e1a0600000000000000000000071523303c47525c656d757b808487898b8b898885827b756e665d53483c30231507000000000000000000000000000b192734414c57616b737a808588898b898884807871695f54493d30221405000000000000001f344a5f748a8b8b8b8b8988848079726a60564b3f322517080000000000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5d51412f1b07000f233648575f5f5f5f5f5f5f5f5f5f5f564735220e0001111f2b323434343434343434343434332d2214050000000000000d1b273034343434343434343434343430271a0b00000414222d3334343434343434343434342e231506000000000918252f3434343434343434343434322a1d0f00000414222d3334343434343434343434332c2113030000000d1c2831343434343434343434343430271a0b000001111f2a323434343434343434342f251809000000000514222d33343434343434343434332d23150600000313212c333434343434343434343434343434343434343434343431281b0c000000000000000000000414222d3334343434343434343434332d22140400000000000000000000000d1c283134343434343434322b1f11000000000000000000000000000000000000000000000000000000000000061a2e4256697c90a3b5c8d9e8d8c8b9ab9f958f8b8a8c9199a3b0becddee6d4c2b09e8a7763503c281400000000000000000000000005121e2a354049525a60666b6f7273747473726f6b67615a524a40352a1e12050000000000000000000000000000000916232f3a454e575f666b6f72747473726f6a645d554c42372c1f120400000000000000001e32475b6d747474747474726f6b655e564d44392d21140700000000000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a4941332412000007192a39444a4a4a4a4a4a4a4a4a4a4a44382918050000010e181e1f1f1f1f1f1f1f1f1f1f1f1e19100400000000000000000a141c1f1f1f1f1f1f1f1f1f1f1f1f1c1409000000000410191e1f1f1f1f1f1f1f1f1f1f1f1a110500000000000008131b1f1f1f1f1f1f1f1f1f1f1f1d170c000000000410191e1f1f1f1f1f1f1f1f1f1f1e190f0300000000000b151c1f1f1f1f1f1f1f1f1f1f1f1c140900000000010d171d1f1f1f1f1f1f1f1f1f1b13080000000000000410191e1f1f1f1f1f1f1f1f1f1e19110500000000030f191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c150a0000000000000000000000000410191e1f1f1f1f1f1f1f1f1f1f1e191004000000000000000000000000000b151c1f1f1f1f1f1f1f1e180e010000000000000000000000000000000000000000000000000000000000000013263a4d60738698aabccddde6d7c8bcb2a9a3a09fa0a5acb5c1cedce9d9c8b7a593826d5a4734200c00000000000000000000000000010d18232d363e464c52565a5c5e5f5f5e5c5a57524d463f362d23180d01000000000000000000000000000000000005121d28323b444b51575a5d5f5f5e5c5a555049423930251a0e01000000000000000000182b3e4f5b5f5f5f5f5f5f5d5a56514a433a31271b100300000000000000000001111f2b3234343434343434343434342e2315060000000c1b2831343434343434343434343430271a0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1d304356687a8d9eafbfcfdde6dacec5bdb8b5b4b5b9c0c8d2dee8dacbbbaa99887563513e2b180500000000000000000000000000000006101a232b31383d414547494a4a494745423d38322b231a11060000000000000000000000000000000000000000000b151f2830373d4245484a4a494745413c352e261d130800000000000000000000000f21313e474a4a4a4a4a4a4845413c362f271e1409000000000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1a110500000000000a151c1f1f1f1f1f1f1f1f1f1f1f1c1409000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b000000000000010c14191a1a1a1a1a1a1a1a1a1a19140b00000000000000000000000000000000000912181a1a1a1a1a1a1a1a1a1a19150d020000000000000000000000000000000000000000000000000000000a13191a1a1a1a1a1a1a1a1a1a19150d020000000000000000000000000000000000000000000000000610171a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19130a00000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a170f0500000000000a13191a1a1a1a1a1a1a1a1a1a19140c0100000000000b14191a1a1a1a1a1a1a1a1a1a1812080000000000000000000000000000000000000000000000000000011427394b5d6f8091a1b1bfcedae6e1d8d2cdcbc9cbced4dbe5e3d7cabcad9d8d7b6a584634210e000000000000000000000000000000000000060f161d23282d30323434343432302d29241e170f07000000000000000000000000000000000000000000000000020c151c23282d313334343432302c27211a120a000000000000000000000000000313212b3334343434343433302c28221b140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d100000000002111e282e2f2f2f2f2f2f2f2f2f2f2e271d100000000000000000000000000000000c1a262d2f2f2f2f2f2f2f2f2f2f2f29201304000000000000000000000000000000000000000000000000000e1c272d2f2f2f2f2f2f2f2f2f2f2f29201203000000000000000000000000000000000000000000000817232b2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d271c0f0000000f1d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b2217080000000f1c272d2f2f2f2f2f2f2f2f2f2f2e281e1102000000101d272e2f2f2f2f2f2f2f2f2f2f2d25190b00000000000000000000000000000000000000000000000000000a1c2e405162728393a1b0bdc9d4dee6e6e2e0dee0e3e8e4dbd1c6b9ac9e8f7d6e5d4c3b291705000000000000000000000000000000000000000002090f14181b1d1f1f1f1f1d1b18140f09030000000000000000000000000000000000000000000000000000000001080e14181c1e1f1f1f1d1b17120d0600000000000000000000000000000000030f181e1f1f1f1f1f1f1e1b18130e0700000000000000000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b0000000000000000000000050f161a1a1a1a1a1a1a1a1a1a1a1711060000000c1d2d3a4244444444444444444444433b2e1e0d0000000f202f3b4344444444444444444444423a2e1e0d00000000000000000000000000091a2a384144444444444444444444443d3122120000000000000000000000000000000000000000000000000b1c2c394244444444444444444444443d302110000000000000000000000000000000000000000000041626353f44444444444444444444444444444444444444444444423a2d1d0c000c1d2d3a42444444444444444444444444444444444444444444444444444444443f34261605000c1d2d3a4244444444444444444444433b2f200f00000d1e2e3a4244444444444444444444413729190700000000000000000000000000000000000000000000000000001022334455647484929facb7c2cbd2d8dcdee0dedbd6d0c8bfb4a89b8e80706050402f1d0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d100000000000000000000716222b2f2f2f2f2f2f2f2f2f2f2f2c241809000016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a17040005192c3e4d585a5a5a5a5a5a5a5a5a5a574c3c2a170300000000000000000000000012263848555a5a5a5a5a5a5a5a5a5a584f402f1c08000000000000000000000000000000000000000000000015283a4a565a5a5a5a5a5a5a5a5a5a584e3f2e1b0700000000000000000000000000000000000000000d213344525a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a564b3b29160016293b4b575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59524434210e0016293b4b565a5a5a5a5a5a5a5a5a5a584d3e2c190500172a3c4c575a5a5a5a5a5a5a5a5a5a544736241000000000000000000000000000000000000000000000000000000516263747566573828e9aa5afb7bec4c7c9cbc9c6c2bcb5aca2978a7d6f6151423222110000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121415151513100d080300000000000000000000000000000000000000000000000000000000000000050a0e1214151515151515120c03000000000000000000000000000000000001070b0f121415151513100d0802000000000000000000000000000000000c1d2d3a4244444444444444444444433b2e1e0d00000000000000021425343e44444444444444444444444036271705001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e09000a1f34485c6b6f6f6f6f6f6f6f6f6f6f6a5a46321e09000000000000000000000000182d4155666f6f6f6f6f6f6f6f6f6f6c5e4b37230e00000000000000000000000000000000000000000000001b2f4457686f6f6f6f6f6f6f6f6f6f6c5d4a36220d000000000000000000000000000000000000000013283c50626f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f695945311d001d314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e62513d2914001d314559696f6f6f6f6f6f6f6f6f6f6b5c4834200b001d3246596a6f6f6f6f6f6f6f6f6f6f65533f2b1600000000000000000000000000000000000000000000000000000009192938475563707c88929ca3aaafb2b4b5b4b1ada8a1998f85796c5f5142332414040000000000000000000000000000000000000000000000000000000000000000000000000000050d141a202427292a2a2a2825221d1710080000000000000000000000000000000000000000000000000000030b13191f2327292a2a2a2a2a2a272015070000000000000000000000000000060e151b202427292a2a2a2825211c160f08000000000000000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a17040000000000000b1f324351595a5a5a5a5a5a5a5a5a5a534535220f001f344a5f748686868686868686868676604b36210b000b21364b60768686868686868686868675604b36210b0000000000000000000000001a2f445a6f8586868686868686868679644f3a250f00000000000000000000000000000000000000000000001d32475c728686868686868686868679644f3a250f0000000000000000000000000000000000000000152a3f546a80868686868686868686868686868686868686868686745f4a341f001f344a5f74868686868686868686868686868686868686868686868686868686826b56402b16001f344a5f748686868686868686868677624c37220d001f344a5f74868686868686868686836c57422c17000000000000000000000000000000000000000000000000000000000b1a293745525e6a7580888f959a9d9fa09f9c99938d857c72675b4e413324150600000000000000000000000000000000000000000000000000000000000000000000000000040e1820282f34393c3f3f3f3f3d3a37312b241c130900000000000000000000000000000000000000000000020d161f272e33383c3e3f3f3f3f3f3f3b32251604000000000000000000000006101a22292f35393c3f3f3f3f3d3a36312a231b11070000000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e0900000000000011263b4e616e6f6f6f6f6f6f6f6f6f6f63513e2a15001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b000b21364b60768c9b9b9b9b9b9b9b9b8c76604b36210b0000000000000000000000001a2f445a6f869b9b9b9b9b9b9b9b9079644f3a250f00000000000000000000000000000000000000000000001d32475c72889b9b9b9b9b9b9b9b9079644f3a250f0000000000000000000000000000000000000000152a3f546a80959b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b8b745f4a341f001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b97826b56402b16001f344a5f748b9b9b9b9b9b9b9b9b8d77624c37220d001f344a5f748b9b9b9b9b9b9b9b98836c57422c1700000000000000000000000000000000000000000000000000000000000b192734414d58626c747a828688898b898884807871695f554a3d31231506000000000000000000000000000000000000000000000000000000000000000000000000000b16212b343c43494e5153545454524f4b463f382f261c10050000000000000000000000000000000000000009152029333b42484d51535454545454544f4333210e000000000000000000020e19232d363d444a4e5153545454524f4b453e372e241a0f03000000000000000000001f344a5f748686868686868686868676604b36210b00000000000013293e53687d868686868686868686826c57422c17001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b000b21364b60768ca1b0b0b0b0b0b0a08c76604b36210b0000000000000000000000001a2f445a6f869bb0b0b0b0b0b0a59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db0b0b0b0b0b0a59079644f3a250f0000000000000000000000000000000000000000152a3f546a8095abb0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a08b745f4a341f001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ac97826b56402b16001f344a5f748ba0b0b0b0b0b0b0a38d77624c37220d001f344a5f748ba0b0b0b0b0b0ad98836c57422c170000000000000000000000000000000000000000000000000000000000000917232f3b464f5860666c7072747473726f6a645d554c42372c20130500000000000000000000000000000000000000000000000000000000000000000000000003101d28343e4750575d6266686a6a6a6764605a534c43392e22160900000000000000000000000000000000010e1b27323c464e565c6266686a6a6a6a6a6a61513e2a1500000000000000000613202b36404951585e6366686a6a6a67645f59524a41372c2014070000000000000000001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b00000000000013293e53687d949b9b9b9b9b9b9b98836c57422c17001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b000b21364b60768ca1b7c5c5c5c5b5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5c5c5c5bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c5c5c5c5b9a48f79644f3a240f0000000000000000000000000000000000000000152a3f546a8095abc0c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a08b745f4a341f001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c1ac97826b56402b16001f344a5f748ba0b5c5c5c5c5b8a38d77624c37220d001f344a5f748ba0b5c5c5c5c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000006121e29333c444c52575b5d5f5f5e5c5a555049423930251a0f020000000000000000000000000000000000000000000000000000000000000000000000000513212e3a46515a636b72777b7d8080807c79746e675f554b4034271a0c000000000000000000000000000003111f2c38444f59626a71767a7d8080808080806d58432e1800000000000000081624313d48535c656c72777b7d8080807c79746d665d54493e3225170900000000000000001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b00000000000013293e53687d94a9b0b0b0b0b0ad98836c57422c17001f344a5f748ba0b5cbdadaccb7a18c76604b36210b000b21364b60768ca1b7ccdadacbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dadad0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dadacfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5dadadadadadadadadadadadadacbb5a08b745f4a341f001f344a5f748ba0b5cbdadadadadadadadadadadadadadadadadadadad6c1ac97826b56402b16001f344a5f748ba0b5cbdadacdb8a38d77624c37220d001f344a5f748ba0b5cbdad8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000000000c16202931383d4246484a4a494745413b352e261d130800000000000000000000000000000000000000000000000000000000000000000000000000051423313f4c58636d7780878c9094959594928f89837b72685d5145382a1b0c0000000000000000000000000413212f3d4a56616c757d868b90939595959595846e58432e1900000000000008172634424e5a656f7882888d9194959594928e89827a70665b4f4235271809000000000000001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b00000000000013293e53687d94a9bfc5c5c5c3ad98836c57422c17001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5eaf0eee5dfdedededededededecbb5a08b745f4a341f001f344a5f748ba0b5cbe0f0f0f0eeeae9e9e9e9e9e9e9e9e9e9e9e9e9d6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000000030d151d23292d313334343432302c27211a120a000000000000000000000000000000000000000000000000000000000000000000000000000004142332414f5d6975808a939ba1a5a8ababa9a7a39e978f857a6f635548392a1b0b00000000000000000000021222313f4d5b67737d89929aa0a5a8abababab99846e58432e190000000000071726354452606c77838c959ca2a6a9ababa9a7a39d968d84786d605345362718080000000000001f344a5f748ba0b5cbdadaccb7a18c76604b36210b00000000000013293e53687d94a9bfd4dad7c2ad98836c57422c17001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5eaebdcd1cbc9c9c9c9c9c9c9c9c9b5a08b745f4a341f001f344a5f748ba0b5cbe0f5f1e4dad5d4d4d4d4d4d4d4d4d4d4d4d4d4d4c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000000000001090f14181c1e1f1f1f1d1b17120d060000000000000000000000000000000000000000000000000000000000000000000000000000000011213241515f6d7a87939ea7afb5babec0c0bfbcb8b2aba2988d8073665748392919080000000000000000000f2030404f5d6b7885919ca5adb4babdc0c0c0ad98836c57422d180000000003142535445362707d8a959fa8b0b6bbbec0c0bfbcb7b1aaa0968b7d706354453626160500000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5eaddcdbfb6b4b4b4b4b4b4b4b4b4b4a08b745f4a341f001f344a5f748ba0b5cbe0f4e3d3c7c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1e2f3f505f6f7d8c98a5b0bac2cacfd3d5d5d4d1ccc6beb5aa9e91847566574737261503000000000000000b1c2d3e4e5e6d7b8a97a3aeb8c1c9ced2d5d5c3ad98836c57422c17000000000f213243536271828f9ba7b2bcc4cad0d3d5d5d4d1ccc5bdb3a89c8f827263544434231200000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001f344a5f748ba0b5cbdfe1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e7d3c0afa29f9f9f9f9f9f9f9f9f9f9f8b745f4a341f001f344a5f748ba0b5cbe0ead7c5b5aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a997826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000000000002020202020202020202020100000000000000000000000000000000000000000002080d11131313120f0a04000000000000000000000000000006182a3c4d5d6e7d8e9ca9b6c2cdd6dee4e8eaeae9e6e1dad1c7bcafa294857565554432210f0000000000000517283a4b5c6c7b8c9aa7b4c0cbd5dde3e7ead8c3ad98836c57422c17000000091b2d3e4f607082909facb9c5cfd8dfe4e8eaeae9e5e0d9d0c5baad9f9182726251402f1d0b000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001f34495e73899fb4c9dee1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e3ceb9a491898989898989898989898989745f4a341f001f344a5f748ba0b5cbe0e3cfbaa7989494949494949494949494949494949494826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000040e1517171717171717171717171510060000000000000000000000000000000000050f161d222628292927241f19110800000000000000000000000011233547596a7b8c9cabbac7d4dfeae3ddd8d6d5d7dae0e7e4d9cdc0b2a394837261503e2c1a070000000000102234465869798a9aa9b8c5d2dde8e4ddd8d5d5c3ad98836c57422c170000001326384a5c6d7d8f9faebdcad7e1ebe3dcd8d6d5d7dbe1e8e2d7cbbdafa090806f5e4c3b2916040000001f344a5f748ba0b5cbdfe1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d7773737373737373737373736d5b47331e001f344a5f748ba0b5cbe0e1ccb7a18c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6a55402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000071621292c2c2c2c2c2c2c2c2c2c2c2a23190b0000000000000000000000000000020e18222a31373b3e3e3e3c39332d251b1106000000000000000000081b2e405365768999aabac9d7e5e4d9d0c9c3c1c0c2c6ccd4dee9ded0c1b1a190806d5b4937241100000000071a2c3f5163758798a8b8c7d5e3e4d9d0c9c3c0c0c0ad98836c57422c170000091d30425567798c9cadbdcddbe8e2d8cfc8c3c1c0c2c6cdd5e0e9dbcdbeae9e8d7c6a584633200d0000001f34495e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77625e5e5e5e5e5e5e5e5e5e5a4f3e2b18001f344a5f748ba0b5cbe0e1ccb7a18c7668686868686868686868686868686868685e4e3b2712001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000041525333e42424242424242424242423f36291a090000000000000000000000000714202b353e464b50535353514d4841382e23170b00000000000000001024374a5d708294a6b7c8d8e7e0d3c7bcb4aeacabadb1b8c1ccd8e6dfcfbfae9d8b786653402d1a060000000f2336495c6e8293a4b6c6d6e5e0d3c7bcb4aeabababab98836c57422c1700001225394c5f728597a9bacbdbebddd0c5bbb4aeacabadb2b9c3cedbeadcccbcab99887563503d2a170300001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee1ccb7a18c76604b36210c000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c484848484848484848463e31210f001f344a5f748ba0b5cbe0e1ccb7a18c7660535353535353535353535353535353534d40301e0b001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000d21334351575757575757575757575753473826140100000000000000000000081725313d48515a606568686866625c544b4135281b0d00000000000004182c4053677a8d9fb2c3d5e6dfd0c2b5a9a09a9796989da5aebac8d7e6ddccbaa89683705d4935220e000004182b3f5266798c9eb0c2d3e4dfd0c2b5a9a09a9695959595836c57422c170005192d4155687c8fa2b4c6d8e9ddcdbfb3a89f9a9795989ea6b1bdccdbeadac9b7a592806c5946321f0b00001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c373333333333333333322b201303001f344a5f748ba0b5cbe0e1ccb7a18c76604b3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e392f221201001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000014283d50616c6c6c6c6c6c6c6c6c6c6c655543301e0c00000000000000000008172635424f5a646d75797c7d7d7b7770675e5246392b1c0c00000000000b1f33485b6f8396aabccfe1e2d1c1b2a4978d8682828389929daab9c9d9e9d7c5b3a08c7865513d291400000a1e33475b6e8296a9bbcddfe2d1c1b2a4978d8682808080807d6b56412c17000c2034485d708598abbfd1e4e0cfbfafa1958c858280838a939faebdccdde6d4c2af9c8975624e3a261200001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37221e1e1e1e1e1e1e1d170e0300001f344a5f748ba0b5cbe0e1ccb7a18c76604b362929292929292929292929292928251d120400001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000162b40566b808383838383838383838372604d3b29160400000000000000051626354453606c7782898f939493908b847a706457493a2a1a0a0000000011253a4e63778b9fb2c6d9e9d7c5b3a394867a716b6b6e75808c9babbbcddfe2cfbca895806c58432f1b06001025394e62768a9eb2c5d8e8d6c4b3a394867a716b6a6a6a6a69604f3c28130011263a4f63778ca0b4c7dbe8d5c3b1a1918478706b6b6e76828f9eaebfd1e3dfccb9a5927d6955412d1804001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1dfc9b49f8a745f4a341f0a0000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b362113131313131313131313131313110a000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000014293e5266778a9898989898989898907d6a584633210f00000000000000112233445362707d8a959da3a8a9a8a59f988d827567584838271604000000152a3f54687c92a6bacee2e0ccbaa7968575685d575659616e7c8d9eb0c3d6e9d7c4af9b87725d49341f0b00152a3f53687c91a5b9cde1dfcbb9a7958575685d5654545454544e4232200c00162b4054697d92a7bbcfe3decbb8a5948373665c57565a64708090a2b4c6d9e8d4c1ad9985705b47321d08001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1dec9b49f89735e48331e090000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001c31465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000f2336485b6d8092a5adadadadadad9a887563503e2c190700000000000a1c2e40516171828f9ca7b1b8bdbfbdbab3ab9f93857666564533220f000000192e43586d8397acc0d5e9d8c4b09d8a7867574a424045505e6f8293a6bacee2decab5a18c77624d38230e00192e43586d8297abc0d4e9d6c3af9c897766574a423f3f3f3f3f3b31231402001a2f44596d8397acc1d5ead7c3af9c89766455494140475361728597aabdd1e5dcc7b39f8a75604b36210d001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000013293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d000c21364b60768ca1b7cce1dec9b49f89735e48331e090000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001f344a5f74899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f74899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000007192b3e506375889aacbfc3c3c3b7a592806d5b4936241100000000011427394c5d6f80909fadb9c4c1bcbbbcc0c7bdb1a395857463513f2c190600001c31475c70869bb0c5dae6d2bda995826d5a49392e2b32405163768b9fb3c8dce4cfbaa5907a66503b2611001c31465b70869bb0c5d9e5d0bca793806c5a49392e2a2a2a2a2a271f140500001d32475c71879bb0c5dae6d1bda894806c5947372d2b354455677a8ea2b6cadfe1cdb8a38e78644f3a2510001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000014293e53687d94a9bfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d001024384d62778da3b8cde2dec9b49f89735e48331e090000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000e213345586a7c8fa2b4c6d8d4c2b09d8b786653412f1c0a000000091d304356697b8d9eaebdc3b7aea7a5a7acb4bfc1b3a392806e5c4936220f00001e33485e73899eb3c8dde3ceb9a48f7965513e2b1c162234475b70869aafc4d9e7d2bda8937c68533e2813001e33485e73899eb3c8dde1ccb7a28d7864503d2b1b1515151515120c020000001f34495e73899eb3c8dde2cdb8a38f7965503c29191726374a5e72879cb1c5dae5d0bba6917b67523c2712001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095aabfd4e9d6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0d1b2c3f53677b90a5bacfe4dcc7b29d88725c47321d080000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e000000000000000000000000000000060b0d0d0d152a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000416283b4d60728597a9bccedfcdbaa89583705e4c3927140200001024384c60738699aabcc1b2a59a93909298a2afbec1b09e8c7865523e2a1601001f344a5f748b9fb4c9dfe1ccb7a18c76614c3722181a1a2d42576c8397acc1d7e9d4bfa9947d68533e2913001f344a5f748ba0b4cadfe0cbb5a08b745f4b36210d00000000000000000000001f344a5f748ba0b5cbdfe0cbb6a18c76614c37220d081b2f44596e8498adc3d8e8d3bda8937d68533e2913001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37221e212b394a5c6f8296aabfd3e8d9c4af9a866f5a45301b060000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001b30465b70879cb1c7dce4cfb9a48f78634e38230e0000000000000000000000000005111a20222222222a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000b1e30425567798c9fb1c3d6d7c5b3a08e7b695644311f0d0000162b3f53677b8fa3b5c6b4a394887d797c8591a0b1c2bba895826d5945301c07001f344a5f748ba0b5cbe0e1ccb7a18c76604b36262d2f2f2f40566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00000000000000000000001f344a5f748ba0b5cbd6d6cbb5a08b745f4a34200a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c373333363d495767798c9fb2c5d9e8d4bfab96826c57422d18030000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000001b30465b70879cb1c7dce2cdb8a38d77634e38230e0000000000000000000000000414232e3537373737373f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000011325384a5d6f8294a6b9cbdecfbdab988673614e3c2a1705041b2f44596d8397abbfbca99786766a6568728293a6b9c4b19c88735f4a35200c001f344a5f748ba0b5cbe0e1ccb7a18c76604b36384144444444566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00000000000000000000001f344a5f748ba0b5c1c1c1c1b5a08b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee1ccb7a18c76604b36210b000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c4848484a505a67758697a9bbcee1e1cdb9a5907c67533e2914000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000011b30465b70879cb1c7dce2cdb8a38d77624c37220d00000000000000000000000010223240494c4c4c4c4c4c546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000000081b2d3f526476899caec1d3dac8b5a3917d6c5947342210091e33485d72889cb1c6b4a08c79675850556476899db1c6b7a28d78634e39240f001f344a5f748ba0b5cbe0e1ccb7a18c76604b3848555a5a5a5a5a6b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00000000000000000000001f344a5f748ba0acacacacacaca08b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee1ccb7a18c76604b36210c000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77625e5e5e5e5f646c778594a4b4c6d8ebd8c5b19e8a75614d392410000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000000081c31465b70879cb1c7dce2cdb8a38d77624c37220d000000000000000000000000192d3f515d626262626262626a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000102235475a6c7d91a3b6c8dbd2c0ae9b897664513f2d1a0a1f344a5f748b9fb4c5b09b86705c4a3b465a6e8398adc3baa5907965503b2610001f344a5f748ba0b5cbe0e1ccb7a18c76604b4255666f6f6f6f6f6f8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00000000000000000000001f344a5f748b97979797979797978b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d7773737373737478808a95a3b2c2d2e3e0cebca995826e5a46321e0a000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000000000000000000000f23374b6074889db2c7dce2cdb8a38d7864503c28140000000000000000000000001e33485c6f77777777777777778095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000005182a3d4f61738699abbed0ddcbb8a694826e5c4a3725131f344a5f748ba0b5c4af99846e58432e41566b8297acc1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b708586868686868697acc2d7e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00000000000000000000001f344a5f7482828282828282828282745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee3ceb9a4918989898989898a8e949ca7b3c1d0e0e5d4c3b19f8c7966523f2b1703000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000000001162a3e52667a8fa3b7cce0e5d0bca894806b57432e1a0600000000000000000000001f344a5f748b8d8d8d8d8d8d8d8d99adc1d6e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000d20324457697b8ea0b3c5d7d5c3b19e8c79675442301d1f344a5f748ba0b5c4af99846e58432e40566b8297acc1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879b9b9b9b9b9ba3b4c7dbe9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a00000000000000000000001c314558676b6b6b6b6b6b6b6b6b6b675845311c0800172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c37220d000002010000152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee7d3c0afa29f9f9f9f9f9f9fa2a8afb9c4d1dfe8d8c7b7a594826f5c4936230f00000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000000000000000000081c3145596d8296aabed2e6ebd7c3af9a86725d4935210d00000000000000000000001f344a5f748ba0a3a3a3a3a3a3a3a9b7c9dce2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000215273a4c5e708396a8bbcddfcebba99684715f4d3a281f344a5f748ba0b5c4af99846e58432e40566b8297acc1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb0b0b0b0b0b5c1d1e3e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a000000000000000000000015283a49535656565656565656565653493a28150200172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c37220d0d1417161108152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9deefddcdbfb6b4b4b4b4b4b4b4b7bcc3ccd6e2efdecbbaaa99887664523f2d1a0700000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000000000000000000000f23374b6074889cb1c5d9edf2dec9b5a18d7864503c281400000000000000000000001f344a5f748ba0b5b8b8b8b8b8b8bcc7d5e6e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000000000a1d2f415466788b9eb0c2d4d8c6b3a18f7c6a57453220344a5f748ba0b5c4af99846e58432e40566b8297acc1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c5c5c5c5c9d2dfefe9d4bfa9947d68533e2913001f344a5f748a9fb4c9dfe0cbb5a08b745f4a341f0a00000000000000000000000b1c2b373f404040404040404040403f372b1c0b0000172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c3722131f282c2b251a152a3f546a8095abc0d5ead5c0ab95806b56402b16001e33485e73899fb4c9def4ebdcd1cbc9c9c9c9c9c9c9ccd1d7dfe8f3ecd7c2ae9c8c7b6a58473522100000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000000000000000001162a3e52667a8fa3b7cce0f4f8e4d0bca894806b57432f1b07000000000000000000001f344a5f748ba0b5cbcdcdcdcdcdd0d8e4f3e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604c37210c001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000000122437495b6e8093a5b8cadcd1beac99877462503d2b344a5f748ba0b5c4af99846e58432e40566b8297acc1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c7dadadadde5f0fde9d4bfa9947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a0000000000000000000000000d1a242a2b2b2b2b2b2b2b2b2b2b2a241a0d000000172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c372222313c4140382b1b2a3f546a8095abc0d5ead5c0ab95806a543f2a15001e33485e73899fb4c9def4faeee5dfdededededededfe1e5ebf2fbffead5c0ab96827262534231200f0000000000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e39240f0000000000000000000000000000000000000000081c3145596d8296aabed2e6fbfdebd7c3af9b87725e4a36210d000000000000000000001f344a5f748ba0b5cbe0e2e2e2e2e5ebf6ffe2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000000071a2c3e516375889badbfd2dbc9b6a492806d5a4835344a5f748ba0b5c4af99846e58432e40566b8297acc1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c7dce8e8e8e8e8e8e8d4bfa9947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000810151616161616161616161615100800000000172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c37222f404f57544939272a3f546a8095abc0d5ead5c0ab95806a543f2a15001e33485e73889db3c8ddf2fbefe6e1e0e0e0e0e0e0e0e0e1e5eaf1f9edd8c4b19f918270604f3e2c1a0800000000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000000000f23374b6074889cb1c5d9ede9e8ecdecab6a28d7965503c2814000000000000000000001f344a5f748ba0b5cbd8d8d8d8d8dae2edfbe2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000000000f213446586b7d90a2b5c7d9d4c1af9c8a77655240344a5f748ba0b5c4af99846f5a443142576c8397acc1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c7d3d3d3d3d3d3d3d3d3bfa9947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e9d4bfa9947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c372a3c4d5e6b675645332a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf2ecddd2cccbcbcbcbcbcbcbcbccd0d6dde6f1e0cebdaf9f8f7d6d5b4937241100000000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000000000115293e52667a8fa3b7cce0dad4d3d7e0d1bca894806b57432f1b070000000000000000001f344a5f748ba0b5c3c3c3c3c3c3c6cfdcece2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000000000417293b4e60728598aabccfdeccb9a795826f5d4b384a5f748a9fb4c6b19c8873604f464d5e71869aafc4b9a48f79644f3a2510001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1bdbdbdbdbdbdbdbdbdbdbda9947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bea9947d68533e2913001e33485e73889db3c8dde2cdb8a38d77624c373648596b7c746351402e3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf0decdc0b7b5b5b5b5b5b5b5b5b7bbc1c9d4dfebdccdbdad9c8b796654412e1b08000000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000000081c3044586d8296aabed2d3c7bfbec4cfd7c3af9b87725e4a36220e0000000000000000001f344a5f748ba0adadadadadadadb2becfe1e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000000000000000c1e314355687a8d9fb2c4d6d6c4b29f8d7a685543475c71879bb0c4b7a3907d6d605b5f6b7b8ea1b5c9b5a18c77624d38230e001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879ca8a8a8a8a8a8a8a8a8a8a8a8a8947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523d2813001d32475c72889db3c8dde2cdb8a38d77624c374253657689806f5d4c3a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde8d4c1afa3a0a0a0a0a0a0a0a0a2a7aeb7c2cedcebdbcbbaa89684705d4a372410000000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000000000f23374b5f73889cb0c4d7c5b5aaa9b1c0d1cab6a28e7965513d29140000000000000000001f344a5f748b9898989898989898a0b1c4d9e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000000000000000000011426384b5d6f8295a7b9ccdecfbcaa988572604e43586c8295aabdc0ad9c8c7d7470737c8a99abbec3af9b87725d49341f0b001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879393939393939393939393939393937d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d77624c3c4e607183948d7a6958463f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde3ceb9a4918b8b8b8b8b8b8b8b8d929aa4b0becddce8d7c5b3a08d7a66533f2b18040000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0000000000000000000000000000000000000115293e52667a8fa3b7cbd0bba89794a2b5c9d1bda995806c58432f1b0700000000000000001f344a5f7483838383838383838396abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee1ccb7a28d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000000000000000000000000091b2e405265778a9cafc1d3d9c7b5a2907d6a584652667a8ea1b3c6baaa9c908987888f9aa8b7c8b9a793806c58432f1b06001f344a5f748ba0b5cbe0e1ccb7a18c76604b455a6e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a67523d2813001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d77624c485a6b7d8fa1998775645241546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d7774747474747476787d8892a0aebecedfe3d0bdaa96836f5b47331e0a0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000000081c3044586d8295aabed2cab5a18d869aafc3d8c4af9b87725e4a36220e00000000000000001c314457676c6c6c6c6c6c6c6c8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000000000000000000112335485a6d8092a4b6c9dbd2bfad9b887563514a5e718497a8b9c8baada39e9c9da2abb7c6bfae9c8a7763503d291400001f344a5f748ba0b5cbe0e1ccb7a18c76604b3e516067676767676767676767676767676767665c4b382410001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d77624c556677899bada59382705e4d546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77625f5f5f5f5f60636a758290a0b1c2d4e7d9c6b29e8a76614d38240f0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0000000000000000000000000000000000000f23374b5f73889cb0c4d9c4b09b878095a9bed2cab6a28e7965513d291501000000000000001528394954575757575757576a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000000000000000000000006182b3d4f62748799acbed0dccab7a593806d5b495467798b9bacbac7c0b7b2b1b2b6bec9bfb0a190806d5a4734210d00001f344a5f748ba0b5cbe0e1ccb7a18c76604b36424d52525252525252525252525252525252514a3e2e1b08001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d77624f60728495a7b8b19f8e7c6a59546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c4a4a4a4a4b4f5763718293a5b8cbdee1ceb9a5907b67523d28140000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000115293e52667a8fa3b7cbd3bfaa96827a8fa3b8ccd1bda995806c5844301c07000000000000000b1c2b3740424242424242546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000000000000000000000e203245576a7c8fa1b3c6d8d4c2b09e8b7866534a5b6d7d8e9ca9b5bfc7c7c7c7c9c3b9aea1928372614f3d2b180500001f344a5f748ba0b5cbe0e1ccb7a18c76604b3631393c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c372d201000001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d77625b6d7d90a1b3c5bdab9a887665546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37343434363b46536475889bafc3d7e8d3bfaa95806b56412c170000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0000000000000000000000000000000000081c3044586d8295aabed2ceb9a4907b74899eb2c6d8c4af9b88735f4b36220e00000000000000000d1a242b2c2c2c2c2c3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000000000000000000000315283a4c5f718496a9bbcddfcdbaa89683705e4c4f5f6f7d8c98a3acb3b7b9b8b5afa79c90837364544332200e0000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36212527272727272a2e2e2e2e2e2e2e2e2e2e2d2921150600001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d776267788a9cadbfd0c9b7a6948371606a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37221f1f21283546586b8094a9bdd2e7d8c3ad98846e58442f190000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000f23374b5f73889cb0c4d9c8b49f8a766f8398acc1d5cbb7a28e7965513d2915010000000000000000081116171717172a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000000000000000000000203030b1d30425467798c9eb1c3d5d7c5b3a08e7b69564451606d7a8690989ea2a4a3a09b938a8072645546362614030000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36211012121626343e43434343434343434343433d33241402001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d7762738596a8bacbddd5c3b2a18f7d6c6a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d0a0c17293c51657a90a5bacfe4dac5b09b866f5a442f1a0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000115293e52667a8fa3b7cbd7c2ae998570697d92a7bbd0d1bda995826c5844301c070000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000000000000060d1215171918171325374a5c6e8293a6b8caddd0bdab998673614e424f5c68737c84898d8f8d8b8680776d61544637281908000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000e2134445158585858585858585858585042321f0b001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d776d8091a2b4c5d7e8e1d0bead9b8a776a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d00000e23384e63788fa4b9cfe4dbc6b19c87705b46301b0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000081c3044586d8295aabed2d1bda894806a63778da1b5cad8c4b09c88735f4b36220f0000000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37220d0000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000000000009121a21262a2c2e2d2c28242d3f516476899baec0d2dac8b5a3917d6c59473e4b5660686f7477787876716b635a4f433628190a00000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b0014293d51626d6e6e6e6e6e6e6e6e6e6c604e3b2611001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d77798b9daec0d1e3f4eddccab9a79684728095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d090a16273b5065798fa4b9cfe4dac5b09b866f5a45301b0000000004090a0a0a0a0a0a1a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0a0a0a0a0a0a070000000000000000000f23374b5f73889cb0c4d9cbb7a28e79655d72879bb0c4d9cbb7a28e7965523e29150100000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c37220d0303030303030200000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000005111c262e353b3f424342413d38313447596b7d90a3b5c8dad2c0ae9b897664513f39434d545b5f626363605d5750473d3226190a0000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b828484848484848484847d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d778697a9baccddeff0f1e8d6c5b3a290808095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37221e1e1f263444576a7d93a8bdd1e6d8c3ae99846e59442f1a0000030f191e1f1f1f1f1f1f1f2f445a6f869bb0c5dae4cfb9a48f78634e38231f1f1f1f1f1f1f1b14090000000000000015293e52667a8fa3b7cbdac6b19d88735f586c8296aabfd3d1bda995826d5844301c0800000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c3722191919191919191712090000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c17000000000000000000000000000000000000000000000000000000000a17232e394249505457585756524c453d3c4e61738698abbdcfddcbb8a694826f5c4a37303940464a4d4e4e4c48433c342b201408000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b829799999999999999947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde2cdb8a38d8092a3b5c6d8e7dedbdce2e2d1bfae9c8b8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37333333343944526274879aaec2d6e9d4bfab96826b56412c17000313212c333434343434343434445a6f869bb0c5dae4cfb9a48f78634e3834343434343434343026190a0000000000071c3044586d8295aabed2d5c0ac97836e5952667b90a4b9cdd8c4b09c88735f4b37230f00000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c372e2e2e2e2e2e2e2e2c261b0e00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000000000b1a2734404b555d64696c6e6c6b66605950454456687a8da0b2c5d7d5c3b19e8c7967544230252c313538383837332e2821180e0300000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acafafafafafa9947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde3ceb9a5928e9eafc1d2e2d4cac5c7cedaddcbbaa8978b98acc1d6ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c48484848494d5561708091a3b6c9dde3cebaa6917c68533e2914000f21313e484a4a4a4a4a4a4a4a4a5a6f869bb0c5dae4cfb9a48f78634e4a4a4a4a4a4a4a4a494337281704000000000e22364b5f73889cb0c4d9cfbba6927c68544c61758a9fb3c7dccbb7a38f7a66523e291501000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d77624c43434343434343434341392c1c0b001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000000a1a293845525e6871787d828383807b756c62574a4b5e708395a8baccdecebba99785725f4d3a28181d20232323211e1a140d05000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acc1c4c4c4bfa9947d68533e2913001e33485e73899fb4c9dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8dde8d4c1b0a4a2acbbcdded4c4b7b0b2bccbdcd7c6b5a6a0a7b6c8dbead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77625e5e5e5e5e5e616873808f9eafc1d3e6dbc7b4a08b77624e39251000182b3e4f5c5f5f5f5f5f5f5f5f5f5f6f869bb0c5dae4cfb9a48f78635f5f5f5f5f5f5f5f5f5e554634200c0000000015293d5165798ea2b7cbdec9b5a18c77634e475b708599adc2d6d2beaa95826d5844301c08000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d776258585858585858585858554a3a2815001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000000061828384755636f7a858d939798989590898074685b4d5365778a9dafc2d4d8c6b4a18f7c6a574533200e0b0e0e0e0c0905000000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b02182d42576c8397acc1d7d9d4bfa9947d68533e2913001e33485e73899fb3c8dee0cbb5a08b745f4a341f0a000000000000000000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8ddf1dfcec1b8b7becad9d9c8b6a69b9fadbed0e1d2c4b9b5bac4d3e5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d7773737373737373767c85919eadbccddee4d2bfac9885705c48331f0b001e33475b6d7474747474747474747474869bb0c5dae4cfb9a48f78747474747474747474747363503b2611000000071c3044586c8295a9bdd1d8c4af9b87715d4941556a7d93a8bcd1d9c4b09c88735f4b37230f000000000000000000000000152a3f546a8095abc0d5e2cdb8a38d776e6e6e6e6e6e6e6e6e6e6e685845311c001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000113243646566573828d98a1a8acadadaaa49c9286796b5c4c5b6d8092a5b7c9dcd1beac99877562503d2b1906000000000000000000000000000000000000001f344a5f74899fb4c9dee1ccb7a28d77634e3925130c1e31465a6f8499aec3d8e8d3bea9947d68533e2913001d32475c72889db3c7dce0cbb5a08b76604c3723100b0b0b0b0b09040000000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8ddf2ecded4cdccd1dbdecdbcaa99888fa1b2c4d5e2d5cdcbced6e2f1ead5c0ab95806a543f2a15001d32475c72889db3c8dde3ceb9a49189898989898989898b9098a2aebccbdae9d8c7b5a28f7c6855412d1905001f344a5f748b8b8b8b8b8b8b8b8b8b8b8c9db1c6dbe4cfbaa6928b8b8b8b8b8b8b8b8b8b8b7c67523c27120000000e22364b5f73889cb0c4d8d3beaa95826c57433b5064788da2b6cbdfcbb7a38f7a66523e2a16010000000000000000000000152a3f546a8095abc0d5e3cdb8a38e848484848484848484848484745f4a341f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000000b1e304253647484929fabb4bcc1c3c2bfb8afa497897a6a5a506275889aacbfd1dbc9b6a492806d5a48362311000000000000000000000000000000000000001e33485d72889db2c7dce4cfbaa6917c68554231231e2a3a4d6075899eb2c7dce6d1bca7927c67523d2813001c31465b70869bb0c5dae2cdb8a38f7a66523f2e2121212121211e180f02000000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8ddf2fcf0e7e2e1e5e4d3c1b09e8d7a8395a6b8c9dbe8e2e0e2e9f3ffead4bfab95806a543f2a15001d32475c72889db3c8dde7d3c0afa29f9f9f9f9f9f9f9fa0a5acb5c0ccdae9dcccbba99785725f4c39251200001f344a5f748a9fa0a0a0a0a0a0a0a0a0a1aabacce0e9d5c2b0a3a0a0a0a0a0a0a0a0a0a0937c67523c271200000015293d5165798ea2b7cbdfcdb9a48f7b66523d364a5e73889cb1c5dad2beaa96826d5945311c080000000000000000000000152a3f546a8095abc0d5e6d1beab9d99999999999999999999998b745f4a341f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000215283b4d5f708292a2b0bcc5bdb8b7b7bcc4c1b5a79989776654586a7c8fa2b4c6d9d4c1af9c8a776553402e1b090000000000000000000000000000000000001b30455a6f8599aec3d8e9d4c0ac988572604f4135333a48586a7c90a4b8cce1e2cdb9a48f79644f3a251000192f44586d8398acc1d6e6d2beaa95826f5d4c3d363636363636332b2012010000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8ddf2fffffffffbe9d8c6b5a392806f77899aacbdcfe0f2f5f7fdffffe9d4bfa9947d68533e2914001d32475c72889db3c8ddefddcdbfb6b4b4b4b4b4b4b4b4b5b9bfc8d2ddeadccdbeae9d8c7a685543301d0900001e33485e73899fb4b5b5b5b5b5b5b5b5b6bcc8d8e9f1dfcec1b7b5b5b5b5b5b5b5b5b5a8937c67523c27120000071c3044586c8295a9bdd1dcc7b39e8a75614c383044596d8297abbfd4d9c5b19c8874604b37230f0000000000000000000000152a3f546a8095abc0d5eadac9bab1afafafafafafafafafafa08b745f4a341f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000000a1d3144576a7c8fa0b0c0bfb3a9a3a1a2a8b1bcc5b6a69584715f4d5f728597a9bccedeccb9a795826f5d4b392614010000000000000000000000000000000000182d41566b8095a9bdd2e6dbc8b4a28f7d6d5f524a484d586576889aacc0d3e7dcc8b49f8a75614c37220d00162b4054697d93a7bcd0e4d9c5b29f8c7a6a5b504b4b4b4b4b4b473e301f0d0000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8ddf2ffffffffefddccbaa9978674636b7c8ea0b1c3d4e6f7ffffffffe9d4bfa9947d68533e2913001d32475c72889db3c8ddf2ebdcd1cbc9c9c9c9c9c9c9c9cbced4dbe4e4d9ccbeafa090806e5c4a3826130000001e33485e73899fb4c9cbcbcbcbcbcbcbcbcfd9e6f5fdecded3cccbcbcbcbcbcbcbcbbda8937c67523c271200000e22364b5f73889cb0c4d8d6c2ad9984705b46322a3f53687c91a5bacee0ccb7a38f7a66523e2a160200000000000000000000152a3f546a8095abc0d5eae7d8ccc5c4c4c4c4c4c4c4c4c4b5a08b745f4a341f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000001125394d6074889aacbebeaea1968e8c8e949fadbcc4b3a18f7b68545567798c9fb1c3d6d7c4b29f8d7a685643311e0c000000000000000000000000000000000013283d5165798fa2b6cadee4d1bead9c8c7c6f655e5d6169758494a5b7c9dce8d5c1ad9985705c47321e090012263b4f64788da1b5c8dce1cebba99889796d646060606060605b4e3d2a160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db3c8ddf2fffffff4e3d1c0ae9d8c7968565f708294a5b7c8daebfdffffffe9d4bfa9947d68533e2913001c31465b70879cb1c7dcf1f5eee5dfdedededededededee0e3e8e4dcd2c7bbaea091827161503f2d1b090000001e33485e73899fb4c9dee0e0e0e0e0e0e0e4ebf5f5f5f5f0e6e1e0e0e0e0e0e0e0d3bda8937c67523c2712000015293d5165798ea2b7cbdfd1bca8937d6a55412c25394d62768ba0b4c8ddd2beaa96826d5945311d0900000000000000000000152a3f546a8095abc0d5eaf5e9e0dad9d9d9d9d9d9d9d9cbb5a08b745f4a341f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c170000000000000000000000000000000000000000000000162b3f54687c90a4b7c2b1a09083797678828f9eafc1beab9884705b4a5c6f8294a6b9cbddcfbcaa988572604e3b291704000000000000000000000000000000000e22374b5f73879baec1d4e6dccabaaa9b8d82787372757c8794a2b2c3d4e6dfccb9a5927d6a55412d1904000c2135495d718699acbfd2e5d9c7b6a7988a80787676767676766c59442f1a0000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001d32475c72889db2c7dcf1fffffae8d7c5b4a291806e5c4a5364768899aabccddff0ffffffe9d4bfa9947d68533e2913001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0e0dedcd7d1c9c0b5aa9d908272635343322110000000001e33485e73899fb4c9dee0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d3bda8937c67523c271200071c3044586c8295a9bdd1dfcbb6a28e7864503b271f33485c70869aaec3d7d9c5b19c8974604c38240f00000000000000000000152a3f546a8095abc0d5e0e0e0e0e0e0e0e0e0e0e0e0e0cbb5a08b745f4a341f001e33485e73899fb4c9dee0cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee0ccb7a18c76604b36210b001f344a5f748ba0b5cbe0d8c3ad98836c57422c1700000000000000000000000000000000000000000000001a2f44596e8397acc0b9a6938272666064708092a4b8c7b39f8a75614c526476899caec1d3d9c7b5a2907d6b594634210f00000000000000000000000000000000081c3044576b7d92a5b7c9dbe8d8c8b9ab9f958d89888b9099a5b2c0d0e0e5d4c2af9c8976624e3b26120000061a2e4256697c90a3b5c7d9e5d4c5b6a89d948e8c8c8c8c8c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001c31465b70879cb1c7dcf1f5f5eedccbb9a896857361503e47586a7b8d9fb0c1d3e4f5f5f5e9d4bfa9947d68533e2913001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbcbc9c7c2bdb5ada3988c807163544535251504000000001e33485e73899fb4c9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbda8937c67523c2712000e22364b5f73889cb0c4cbcbc5b19c88735e4a3621192d42566b8094a9bdcbcbcbb8a48f7b67533e2a1602000000000000000000152a3f546a8095abc0cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbb5a08b745f4a341f001e33485e73899fb4c9cbcbcbb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9cbcbcbb7a18c76604b36210b001f344a5f748ba0b5cbcbcbc3ad98836c57422c1700000000000000000000000000000000000000000000001e33485d72879cb1c6b29e8a7664544b526274889db1c6b9a48f79644f47596c7d91a3b6c8dad2bfad9b887563513e2c1a070000000000000000000000000000000014283b4e6175889aacbdcedee6d7c9bcb1a8a29e9d9fa4acb6c2d0dee8d8c8b6a592806c5946331f0b00000013263a4d60738698aabbccdde3d4c6baafa8a3a1a1a1a19c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001b30465b70879cb1c7dce0e0e0e0d0bfad9c8a78675544323a4c5d6f8292a4b5c7d8e0e0e0e0d4bfa9947d68533e2913001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b2aea8a29990867a6e6153453627170700000000001e33485e73899fb4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a8937c67523c27120015293d5165798ea2b5b5b5b5b5ab97836d5944301b13283c5165798fa3b5b5b5b5b5aa96826d5945311d09000000000000000000152a3f546a8095abb5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a08b745f4a341f001e33485e73899fb4b5b5b5b5b5a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4b5b5b5b5b5a18c76604b36210b001f344a5f748ba0b5b5b5b5b5ad98836c57422c1700000000000000000000000000000000000000000000001f344a5f74899fb4c4af99846f5a463645596e8499aec3bca7917b66503d4f61738699abbed0dccab8a593806e5b49372412000000000000000000000000000000000c1f3245586a7c8e9fb0c0d0dfe7dacec4bcb6b3b3b4b9c0c9d4e0e8dacbbaaa99877563503d2a17030000000a1d304356687a8d9eaebfcedde4d7ccc3bcb8b7b7b7b19c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001b30465b70879cb1c7cbcbcbcbcbc4b3a1907d6c5b4938262f405263748698a9bbcbcbcbcbcbcbbfa9947d68533e2913001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9d99948d867d73685d5043362718090000000000001e33485e73899ea0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937c67523c2712001b3044586c8295a0a0a0a0a0a0a0917c68533f2a160e22374b5f74899da0a0a0a0a0a09d8974604c38230f000000000000000000152a3f546a8095a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a08b745f4a341f001e33485e73899fa0a0a0a0a0a0a08d77624c37220d0000000000000000000000000000000000001e33485e73899fa0a0a0a0a0a0a08c76604b36210b001f344a5f748ba0a0a0a0a0a0a098836c57422c1700000000000000000000000000000000000000000000001f344a5f748ba0b5c3ad98836c57422d42576c8398adc3bda8937c67523c4456697b8ea0b3c5d7d5c2b09e8b786653412f1c0a0000000000000000000000000000000215283b4d5e708292a2b2c1cfdbe7e1d7d0cbc8c8c9cdd4dce6e3d7cabcad9d8c7a69584533200d00000000011427394b5d6e8090a1b0bfcddae6dfd7d1cdccccc7b19c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712001b30465b70879cb1b5b5b5b5b5b5b5a6958372604f3d2c1a22344557687a8c9dafb5b5b5b5b5b5b5a9947d68533e2913001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a88848079726a60564b3f33261809000000000000001d32475c72888b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c2712001e33485e73888b8b8b8b8b8b8b8b8b77624e392510081c31455a6e838b8b8b8b8b8b8b8b8b7b66513c2712000000000000000000152a3f546a808b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b745f4a341f001e33485e73898b8b8b8b8b8b8b8b8b77624c37220d0000000000000000000000000000000000001e33485e73898b8b8b8b8b8b8b8b8b76604b36210b001f344a5f748b8b8b8b8b8b8b8b8b836c57422c1700000000000000000000000000000000000000000000001f344a5f748ba0b5c3ad98836c57422c42576c8398adc3bda8937c67523c3a4c5e708396a8bbcddfcdbba89683705e4c3a2715020000000000000000000000000000000b1e2f415263748594a3b1becad5dfe7e4e0dddddfe2e8e4dbd1c6b9ac9e8f7d6e5d4c3a28160400000000000a1c2e405162728392a1afbcc9d4dee6e5e2e1dcc7b19c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398adc3d8e0d3bda8937c67523c2712001b30465b70879ca0a0a0a0a0a0a0a09b897766544331200e1628394b5c6e8091a0a0a0a0a0a0a0a0a0947d68533e2913001a2f44586b74747474747474747474747474747474747474726f6a655e564d44392e22150800000000000000001c31455a6c74747474747474747474747474747474747474747474747474747474747474747363503b2611001d32475b6e747474747474747474746d5c48341f0b01172b405467747474747474747474747364503b261100000000000000000014293e5266747474747474747474747474747474747474747474746d5c48331e001c31465a6c747474747474747474746f5e4a36210c0000000000000000000000000000000000001c31465a6d747474747474747474746f5d49341f0a001e33485c6e747474747474747474746855402b1600000000000000000000000000000000000000000000001f344a5f748ba0b5c3ad98836c57422c42576c8398adc3bda8937c67523c2f415366788b9eb0c2d4d7c5b3a08e7b695644321f0d00000000000000000000000000000000122435465666758593a0adb8c2cbd3d9dcdfdfdedbd6d0c8bfb4a89b8e807060503f2e1d0b000000000000001022334454647383919eabb7c1cad2d8dcdfdcc7b19c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398adc3cbcbcbbda8937c67523c2712001b30465b70878b8b8b8b8b8b8b8b8b8b7c6b5a48372514020a1c2d3f506273858b8b8b8b8b8b8b8b8b8b7d68533e29130015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5a56504a433a31271c1004000000000000000000162a3d4e5b5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e554634200c00182c3f505c5f5f5f5f5f5f5f5f5f5f5c4f3e2c19050011243749585f5f5f5f5f5f5f5f5f5f5f564734210d0000000000000000000f233648575f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5c4f3e2c1900162a3d4e5b5f5f5f5f5f5f5f5f5f5f5d51412e1b07000000000000000000000000000000000000172b3e4f5c5f5f5f5f5f5f5f5f5f5f5d51402d1a0600192c3f505c5f5f5f5f5f5f5f5f5f5f584a38251100000000000000000000000000000000000000000000001f344a5f748ba0b5c3ad98836c57422c42576c8398adc3bda8937c67523c2737495b6e8093a5b8cadcd0beab998673614f3d2a18050000000000000000000000000000000617283848576674828f9ba6afb8bfc4c7c9cbc9c6c2bcb4aca2978a7d6f61514232211000000000000000000415263646556472808d99a4aeb7bec3c7c9cbc7b19c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398adb5b5b5b5b5a8937c67523c2712001a2f44586b74747474747474747474746f5f4e3c2b1908000010213344566773747474747474747474747364513c2712000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4845413c362f271e140900000000000000000000000e1f303e474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a494337281704000f21323f484a4a4a4a4a4a4a4a4a4a483e31210f0000081a2b3a454a4a4a4a4a4a4a4a4a4a4a443829170500000000000000000007192a39444a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a483e31210f000e1f303e474a4a4a4a4a4a4a4a4a4a4840332312000000000000000000000000000000000000000e20313e484a4a4a4a4a4a4a4a4a4a484032221100000f21323f484a4a4a4a4a4a4a4a4a4a453b2c1b0900000000000000000000000000000000000000000000001f344a5f748ba0b5c3ad98836c57422c42576c8398adc3bda8937c67523c272c3e516375889badbfd2dac8b6a3917d6c5947352210000000000000000000000000000000000a1a2a39485664717d89939ca4aaafb3b4b5b4b1ada8a1998f85796c5f514233241404000000000000000000081828374655626f7c88929ba3aaaeb2b4b5b5b19c87705b46301b0000000000000000000000000000000000000000000000172c42576c8398a0a0a0a0a0a0a0937c67523c27120015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5c5141301e0d0000000415273849575f5f5f5f5f5f5f5f5f5f5f5f564735220e0001111f2b323434343434343434343434343434343434343433302c27221b130b010000000000000000000000000212202b333434343434343434343434343434343434343434343434343434343434343434343026190a00000414222d3334343434343434343434332c2113030000000d1c2831343434343434343434343430271a0b00000000000000000000000c1b283134343434343434343434343434343434343434343434332c211303000212202b3334343434343434343434332d231506000000000000000000000000000000000000000313212c3334343434343434343434332d22140500000414222d333434343434343434343431291d0e0000000000000000000000000000000000000000000000001f344a5f748ba0b5c3ad98836c57422d42576c8398adc3bda8937c67523c27213446586b7d90a2b5c7d9d3c1ae9c897664523f2d1b08000000000000000000000000000000000c1b2a384653606b76808890969a9d9fa09f9c98938d857c72675b4e413324150600000000000000000000000a19283744525e6a757d888f959a9d9fa0a0a09c87705b46301b0000000000000000000000000000000000000000000000172c42576c838b8b8b8b8b8b8b8b8b7c67523c2712000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a483f3223120100000000091b2b39444a4a4a4a4a4a4a4a4a4a4a4a44382918050000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1b18130d0700000000000000000000000000000000020f181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1b1409000000000410191e1f1f1f1f1f1f1f1f1f1f1e190f0300000000000b151c1f1f1f1f1f1f1f1f1f1f1f1c1409000000000000000000000000000a151c1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e190f03000000020f181e1f1f1f1f1f1f1f1f1f1f1e191105000000000000000000000000000000000000000000030f191e1f1f1f1f1f1f1f1f1f1f1e191105000000000410191e1f1f1f1f1f1f1f1f1f1f1d160c000000000000000000000000000000000000000000000000001f344a5f748b9fb4c4af99846e59453544596e8398adc3bca7917b66513c2716293b4e60728598aabccfddcbb9a694826f5c4a37251300000000000000000000000000000000000c1b2836424e59636c747b8286888a8b8987847d7871695f554a3d31231506000000000000000000000000000a192734404c57616b737a8085888a8b8b8b8b87705b46301b0000000000000000000000000000000000000000000000162b4054677474747474747474747472624e3a25100001111f2b323434343434343434343434332d2214050000000000000d1b273034343434343434343434343430271a0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73889db2c6b19d897562524a516174889cb1c5baa5907965503b26111e314355687a8d9fb2c4d6d6c3b19f8c79675542301e0b00000000000000000000000000000000000a1824303c46505960676c7073747473726e6a645d554c42372c2013050000000000000000000000000000000916232f3a454e585f666b70727474747474746b58442f1a00000000000000000000000000000000000000000000001125384a585f5f5f5f5f5f5f5f5f5f5e5445331f0b0000010e181e1f1f1f1f1f1f1f1f1f1f1f1e19100400000000000000000a141c1f1f1f1f1f1f1f1f1f1f1f1f1c1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a13191a1a1a1a1a1a1a1a1a1a19140c0000000000000000000000000000000000000000000000000000000000000000000000000000000912181a1a1a1a1a1a1a1a1a1a19150d02000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a18120800000000000a13191a1a1a1a1a1a1a1a1a1a19140c00000000000000000000000000000000000000000000000a13191a1a1a1a1a1a1a1a1a1a19140c0100000000000a13191a1a1a1a1a1a1a1a1a1a19140c01000000000001080c0d0c090500000000000000000000000000000000001c31465a6f8599aec2b8a5928070645f636f8091a3b7cab5a18c77624d38230e1426384b5d6f8295a7b9ccdecebba99785725f4d3a281603000000000000000000000000000000000007131e29333d454c52575b5e5f5f5e5c59555049423930251a0f02000000000000000000000000000000000005121d28323b444b52575b5d5f5f5f5f5f5f5a4d3c29150000000000000000000000000000000000000000000000081b2c3a454a4a4a4a4a4a4a4a4a4a49433627160300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c272d2f2f2f2f2f2f2f2f2f2f2e281e11010000000000000000000000000000000000000000000000000000000000000000000000000c1a262d2f2f2f2f2f2f2f2f2f2f2f292013040000000000000000000000000000101d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d25190b0000000f1c272d2f2f2f2f2f2f2f2f2f2f2e281e110100000000000000000000000000000000000000000f1c272d2f2f2f2f2f2f2f2f2f2f2e281e11020000000f1c272d2f2f2f2f2f2f2f2f2f2f2e281e110200000008141c2122211e1a140d040000000000000000000000000000182d41566a8093a7bbc1af9e8f82787477808e9daec0c2af9b87725d49341f0b091b2e405265778a9caec1d3d9c6b4a28f7c6a574533210e000000000000000000000000000000000000010c17202931383e4246484a4a494744403b352e261d13080000000000000000000000000000000000000000000b151f2830373d4246484a4a4a4a4a4a463d2f1e0c0000000000000000000000000000000000000000000000000e1c283134343434343434343434342f251809000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a181309000000000000000913181a1a1a1a1a1a1a1a1a1a19140b000000000c1d2d3a4244444444444444444444433b2f1f0f0000000000000000000000000000000000000000000000000000000000000000000000091a2a384144444444444444444444443d312212000000000000000000000000000d1e2e3a4244444444444444444444444444444444444444444444444444444444444444444137291908000c1d2d3a4244444444444444444444433b2f1f0f000000000000000000000000000000000000000c1d2d3a4244444444444444444444433b2f200f00000c1d2d3a4244444444444444444444433b2f200f000007172530363736332e2820170d0200000000000000000000000013273b5063778b9eb1c2bcad9f948d8b8c939eacbbcab8a592806b57432f1a0600112335485a6c8092a4b6c9dbd1beac9a887562503d2b190600000000000000000000000000000000000000040d161d24292e3133343434322f2c27211a120a000000000000000000000000000000000000000000000000020c151c23282d3133343434343434322a1f1101000000000000000000000000000000000000000000000000000b151c1f1f1f1f1f1f1f1f1f1f1f1b130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d272e2f2f2f2f2f2f2f2f2f2f2d261b0e00000000000d1b262d2f2f2f2f2f2f2f2f2f2f2e281e1101000016293b4b565a5a5a5a5a5a5a5a5a5a584d3d2c19050000000000000000000000000000000000000000000000000000000000000000000012263848555a5a5a5a5a5a5a5a5a5a584f402f1c08000000000000000000000000172a3c4c575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a54473725120016293b4b565a5a5a5a5a5a5a5a5a5a584d3d2c190500000000000000000000000000000000000016293b4b565a5a5a5a5a5a5a5a5a5a584d3e2c19050016293b4b565a5a5a5a5a5a5a5a5a5a584d3e2c190500122535434b4c4b48433c342a20140700000000000000000000000c2034485b6e8293a5b6c6bcb1a7a2a0a1a7b0bbcabdac9b8976634f3c2814000006182b3d4f61748799acbed0dbc9b7a492806d5a4836231100000000000000000000000000000000000000000002090f14191c1e1f1f1f1d1a17120d060000000000000000000000000000000000000000000000000000000001080e14181c1e1f1f1f1f1f1f1d170d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1e2e3a424444444444444444444442392c1c0b0000000a1b2b394244444444444444444444433b2f1f0e00001d314559696f6f6f6f6f6f6f6f6f6f6b5b4834200b00000000000000000000000000000000000000000000000000000000000000000000182d4155666f6f6f6f6f6f6f6f6f6f6c5e4b37230e0000000000000000000000001d3246596a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6554412d18001d314559696f6f6f6f6f6f6f6f6f6f6b5b4834200b0000000000000000000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6b5c4834200b001d314559696f6f6f6f6f6f6f6f6f6f6b5c4834200b001b2f42536062605d5750473d312517090000000000000000000005182b3e5164758798a8b6c3c4bcb7b5b6bbc2c8bcae9e8f7d6b594633200c0000000e20324557697c8fa1b3c6cdcdc1af9d8a776553402e1b09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1115181b1b1b1b1b1b1b1b1b1b1b1b1a1a1a1a1a1a1710060000000000000000000000172a3c4c575a5a5a5a5a5a5a5a5a5a564a3a281501000014273949565a5a5a5a5a5a5a5a5a5a574d3d2b1804001f344a5f748686868686868686868677624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8586868686868686868679644f3a250f0000000000000000000000001f344a5f7486868686868686868686868686868686868686868686868686868686868686846f5a442f1a001f344a5f748686868686868686868677624c37220d0000000000000000000000000000000000001f344a5f748686868686868686868677624c37220d001f344a5f748686868686868686868677624c37220d001f34495e717776716b635a4f4335271809000000000000000000000f2234465869798a98a5b1bbc2c7c9c9c5bfb6ab9e9080705f4e3c2917040000000315283a4c5f718496a9b8b8b8b8b8a79583705d4b39261400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090d1013131313120f0c070100000000000000000000000000000000000000000000000000000000000000060b10131516161614120e0a04000000000000000000000000000000000000000000000000000000010a131a20262a2d3030303030303030303030302f2f2f2f2f2f2b231708000000000000000000001d3246596a6f6f6f6f6f6f6f6f6f6f685744301b0700061b304457676f6f6f6f6f6f6f6f6f6f6a5a47331e09001f344a5f748b9b9b9b9b9b9b9b9b8d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869b9b9b9b9b9b9b9b9079644f3a250f0000000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b866f5a442f1a001f344a5f748b9b9b9b9b9b9b9b9b8d77624c37220d0000000000000000000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b8d77624c37220d001f344a5f748b9b9b9b9b9b9b9b9b8d77624c37220d001f344a5f748b8b8680766c605345362717060000000000000000000517293a4b5b6b7988949ea7aeb2b4b4b1aba3998d8071625241301e0c00000000000b1d2f425466798c9ea3a3a3a3a3a39f8d7a685643301c070000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12191e2226282929292724201c160f080000000000000000000000000000000000000000000000000000040d141b2025282a2b2b2b2a27231f19120a02000000000000000000000000000000000000000000000009141e262e353a3f424546464646464646464646464444444444443f352616040000000000000000001f344a5f7486868686868686868686735e4934200a000a1f34495e738686868686868686868676604b36210b001f344a5f748ba0b0b0b0b0b0b0a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0b0b0b0b0b0a59079644f3a250f0000000000000000000000001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b09b866f5a442f1a001f344a5f748ba0b0b0b0b0b0b0a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b0b0b0b0b0b0a38d77624c37220d001f344a5f748ba0b0b0b0b0b0b0a38d77624c37220d001f344a5f748ba09b938a7d71635445352412000000000000000000000b1d2d3d4d5c6976828c939a9d9f9f9c9790867b6f615344342413010000000000001225374a5c6e828d8d8d8d8d8d8d8d8d86735f4a35200b000000000000000000000000000000000000000000000000000000000000000000000000000000020d161f262d33373b3d3e3e3e3c3935302a231b120800000000000000000000000000000000000000000000040e1720282f35393d3f4040403f3c38332d261e150b010000000000000000000000000000000000000004101c27313a42494f54575a5b5b5b5b5b5b5b5b5b5b5b5a5a5a5a5a5a524433210d0000000000000000001e33485d72879b9b9b9b9b9b9b9b8c77624c38230f0f0f22374c61768b9b9b9b9b9b9b9b9b88725d49341f0a001f344a5f748ba0b5c5c5c5c5b8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5c5c5c5bba59079644f3a250f0000000000000000000000001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b09b866f5a442f1a001f344a5f748ba0b5c5c5c5c5b8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5c5c5c5c5b8a38d77624c37220d001f344a5f748ba0b5c5c5c5c5b8a38d77624c37220d001f344a5f748ba0afa69c8f8272635241301e0b000000000000000000000f1f2f3e4b58646f77808588898987837b73695e51443526160600000000000000081a2c3f51637377777777777777777777715e4a35200b000000000000000000000000000000000000000000000000000000000000000000000000000009141f29323a41474c5052535353514e4a453e372e251b1005000000000000000000000000000000000000000b16212a343c43494e525456565654514d48413a31281e130700000000000000000000000000000000000815212e39434d565d63686c6f70707070707070707070706f6f6f6f6f6f62503d28140000000000000000001a2f44596e8398adb0b0b0b0b0a48f7965503b26252525253a4f64798fa3b0b0b0b0b0ae99846f5a45301b06001f344a5f748ba0b5cbdadacdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dadad0bba59079644f3a250f0000000000000000000000001f344a5f748ba0b5cbdadadadadadadadadadadadadadadadadadadadadadadadac5b09b866f5a442f1a001f344a5f748ba0b5cbdadacdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbdadacdb8a38d77624c37220d001f344a5f748ba0b5cbdadacdb8a38d77624c37220d001f344a5f748ba0aab3ada09182705f4d3b2815020000000000000000000111202d3b47515c646a70737473716d6860574c40342617080000000000000000000f2234465560626262626262626262626053422f1b07000000000000000000000000000000000000000000000000000000000000000000000000010e1b27323c464e555c61656768686866635f59524b41382d2216090000000000000000000000000000000002101c28333d4750575e63676a6b6b6b6966615c554e443b3025190c000000000000000000000000000000091725333f4b56606971787d828687878787878787878787868686868686806b56402b16010000000000000000172c40556a8094a9bec5c5c5bca7927c68533e3a3a3a3a3a3d52677c92a7bcc5c5c5bfab96826b56412c1803001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000001f344a5f748ba0b5cbe0f0f0f0f0e7e0dedededededededededededededededed9c4af9a866f5a442f1a001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748b8f96a1aeaf9f8f7c6a5744311e0a00000000000000000000020f1d29353f4850565b5e5f5e5c59534c443a2f2316080000000000000000000005172837444b4c4c4c4c4c4c4c4c4c4c4b4335251200000000000000000000000000000000000000000000000000000000000000000000000003111f2c38444e5961697076797c7d7d7d7b78736d665e544b4034271a0c00000000000000000000000000000413202d3945505a636b72777c808282827d7b76706961574d42362a1d0f000000000000000000000000000918273543505d68737c868d92979a9c9c9c9c9c9c9c9c9c9c9b9b9b9b9b97826b56402b1601000000000000000013283d52667b91a6bacfdad4bfab96826b564f4f4f4f4f4f4f556a8095aabfd4dad1bca7927c68533e291400001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000001f344a5f748a9fb4c9dff4ffefe0d4ccc9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c4af99846e58432e19001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f34495d70757a83909eaeac9a8874614d3925110000000000000000000000000c17222c353c4146484a4847443f3830271d11050000000000000000000000000a1927313637373737373737373737363025170700000000000000000000000000000000000000000000000000000000000000000000000413212f3d4a56616c757d858b8f92949493918d88827a71675d5145382a1c0d000000000000000000000000041423313e4b57636d7680878d919497979694908b857d746a6054483b2d1e100000000000000000000000081827364553616e7a869099a1a7acafb1b1b1b1b1b1b1b1b1b1b0b0b0b0ac97826b56402b160100000000000000000f24394e63778da2b7cce0d8c3ae99846e6464646464646464646e8398adc2d7e2cdb8a38f79644f3a251000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000001e33485e73899fb4c9def4f4e2d1c2b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4af99846e58432e19001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001a2e41515d6066718090a2b4a4917c6854402c170200000000000000000000000005101921272d31333433322f2a241d140a00000000000000000000000000000009141d2122222222222222222222211c14080000000000000000000000000000000000000000000000000000000000000000000000021222313f4d5b67737d8992999fa4a7a9a9a8a6a29c968e857a6f6356483a2b1c0c0000000000000000000003132332414f5c6874808a939ba1a6a9acacaba8a59f9991887d7165584b3c2e1e0e0000000000000000000415263645546371808c98a3acb5bbc0c4c6c7c7c7c7c7c7c7c7c7c5c5c5c1ac97826b56402b160100000000000000000b20354a5f74899eb3c8dddbc6b19c877979797979797979797979879bb0c5dadec9b4a08b75604b37220d00001f344a5f748ba0b5cbdfe2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000001e33485e73899fb4c9def2ecd8c5b3a49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f99846e58432e19001f344a5f748ba0b5cbdfe2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0011233341494b5461728598abac98846f5a45301b070000000000000000000000000000050d13181c1e1f1e1d1a16100901000000000000000000000000000000000001080c0d0d0d0d0d0d0d0d0d0d0c0801000000000000000000000000000000000000000000000000000000000000000000000000102030404f5d6b7885919ba5adb4b9bcbfbfbdbbb6b1aaa1988d82736658493a2a1a0900000000000000000010213141505f6d7a86929da6afb6bbbfc1c1c0beb9b4ada49a8f8376695a4c3c2c1c0b00000000000000001022334454637282909daab5c0c8d0d5d9dbdcdcdcdcdcdcdcdcdcdbdad6c1ac97826b56402b16010000000000000000071c31465b70869aafc4d9dec9b5a292909090909090909090909092a1b4c8dddbc6b19c87725d48331e0900001f34495e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000001e33485e73899db0c2d5e8e8d3bea9958989898989898989898989898989898989898989846e58432e19001f34495e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0016293b4b55585858687b90a4b29d88735e49341f0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1d2e3e4e5e6d7b8a97a3aeb8c1c8cdd1d3d4d3d0cbc5bdb4aa9e92857667584838271604000000000000000c1d2e3f4f5f6e7c8b98a4afb9c2cad0d4d6d6d5d3cec8c0b7aca19487786a5a4a3a2918060000000000000a1c2e405161718291a0aebbc7d2dce4e9e5e3e2e2e3e4e4e4e5eaf1f0ecd6c1ac97826b56402b1601000000000000000001192d42576c8297abc0d5e4d1bfb0a6a5a5a5a5a5a5a5a5a5a5a5a6afbed0e3d7c2ad98846e59442f1a0500001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000001c31465a6d8093a6b9ccdee8d3bea9958273737373737373737373737373737373737373736855412c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001d314559686e6e6e6e768ca1b5a08b75604b36200b0000000000000000000000000000000000000001070c11141617171614120e090400000000000000000000000000000000000000000000000000000000000000060b0f121415151513110d08030000000000000000000000000000000000000517293a4b5c6c7c8c9aa7b4c0cbd4dce2e6e9e9e8e5e0d9d1c7bcb0a29486766655453322100000000000000618293b4c5d6d7d8d9ba9b5c1ccd6dee4e9eae9eae7e3dcd4cabeb2a59789786858473624120000000000021427394b5d6e8090a0afbeccd8e4e4dbd5d0cdcdcdcdcfcfcfd0d7e1efecd6c1ac97826b56402b1601000000000000000000152a3f54687d93a8bdd1e6ddcec2bbbbbbbbbbbbbbbbbbbbbbbbbbc1cddce8d3bfaa95806a55402c170200001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000172a3d506376899cafc2d5e7d8c5b29f8c79665e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e584a382512001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f7484848484848ca0b5a18c76604b36210b0000000000000000000000000000000000050e151c2126292b2c2c2b2a27231e1811090100000000000000000000000000000000000000000000000000040c141a1f2427292a2a2a2826221d171109000000000000000000000000000000001022354658697a8b9baab8c5d2dde8e4dedad8d7d8dce1e9e4d9cdc0b2a494847362513f2d1b08000000000010233547596a7a8c9cabb9c6d3dfe9e2dcd7d5d4d5d9dee6e7dcd0c3b5a69787756453412f1d0a000000000b1e314456697a8d9eaebecddce7dbd1c7c0bbb8b8b8b8b9b9b9bbc4d1e1ecd6c1ac97826b56402b160100000000000000000011263b5065798fa4b9cee3ecdfd5d0d0d0d0d0d0d0d0d0d0d0d0d0d5deebe5d0bba6917c67523d28130000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000e213446596c8092a5b8cbdee1cebca99683705d4a48484848484848484848484848484848453a2c1b09001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748b999999999ca9b7a18c76604b36210b000000000000000000000000000000050f19212930363a3e404142403f3c38332c251d140a00000000000000000000000000000000000000000000040e1820282e34393c3e3f3f3f3d3b37322b241c130900000000000000000000000000071a2d3f5264758798a9b8c8d6e3e5dad1cac5c3c1c3c7cdd6e0ebded0c2b2a291806e5c4a37251200000000071a2d405264768899a9b9c9d7e4e3d8cfc7c2c0bfc0c4cad2dce8e1d3c4b5a59483705e4c3a27140100000014273b4e61738698aabbccdce5d6c9beb4aca6a3a3a3a3a4a4a4a7b3c4d7ead6c1ac97826b56402b16010000000000000000000d22374c61768ba0b5cadff4f1e9e2dbd8d8d8d8d8d8d8d8d8dae2e9f1f6e1ccb7a28d78634e39240f0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000004172a3d4f6275889baec1d4e7d8c5b3a08d7a67544133333333333333333333333333333330281c0e00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0afafafb0b9b7a18c76604b36210b00000000000000000000000000000c17222c353d444a4f535657575654514c47403930271c1105000000000000000000000000000000000000000b16212b343c43494d515354545453504b46403830261c110500000000000000000000001023374a5c6f8293a5b6c6d6e5e0d3c7beb5b0adacaeb3b9c3cedae8e0d0c0af9e8c796754412e1b070000001023374a5c6f8294a5b7c7d7e7dfd2c6bcb3adaba9abafb6bfcad7e4e2d3c2b1a08e7c695643301d090000081c3043576a7d90a3b5c8d9e5d6c7b8aca198928f8d8d8e8f8f8f95a7bbd0e5d6c1ac97826b56402b1601000000000000000000091e33485d72889cb1c6dbf0edddd0c6c3c3c3c3c3c3c3c3c3c6cfdcecf2dec9b49f8a745f4b36210c0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000d203346596b7d92a4b7cadce2cfbca99784705e4b38261e1e1e1e1e1e1e1e1e1e1e1e1e1c150b0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5c4c4c5cbb7a18c76604b36210b00000000000000000000000004111d29343e4851585f64686b6b6c6b6966615b544c43392e23170a0000000000000000000000000000000003101c28333e4750575d6266686a6a6a6864605b544c43392e22160900000000000000000004182c3f5366798c9fb1c2d4e4e0d0c2b5aba29b9897999ea6b0bccad9e9decdbba99784715d4a36230f000004182b3f5366798c9fb1c3d4e5dfd0c1b4a99f999594969ba3adb9c6d5e5e0cfbeac998673604c39251100000e23374b5f73879aaec0d3e5d8c7b8a99b8f857c787777787878788fa4b9cfe4d6c1ac97826b56402b1601000000000000000000051b3045596e8499adc2d7ece2d0bfb3adadadadadadadadadb2becfe1efdac5b09b87715c47321d080000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000316293b4e6174889badc0d3e5d9c6b3a08e7a6755422f1d0a00000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbd9daccb7a18c76604b36210b00000000000000000000000514212e3b47515c646c73787c808283827d7a76706860564c4034281a0c00000000000000000000000000000413212e3a45505a636b71777b7d8080807c79756f675f564b4034271a0c00000000000000000b1f33475b6f8396a9bccee0e2d2c2b2a4988e878383848a939facbbcbdbead8c6b3a08d7966523e2a1601000a1e33475b6f8396a9bccee0e3d1c1b2a3978c8480808287909ba9b7c7d8e9dbc8b6a3907c6854402c18040014293d52667a8fa2b6c9dde0cdbbaa9a8b7c7168636262636363788fa4b9cfe4d6c1ac97826b56402b160100000000000000000000172c41566b8095aabfd3e8dac6b2a1989898989898989898a0b1c4d9ebd6c1ac97836d58432e1a050000001e33485e73899fb4c9dee2cdb8a38d77624c3722131313110f0b07010000000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000c1f3245576a7d90a3b6c9dce3d0beab9885725f4c39261401000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000000000000051423323f4c58646e7782888e929597979694908a847c73695e5245382a1c0d000000000000000000000000041423313e4b57636d7680868c9093959594928f8a837b72685d5145382a1b0c0000000000000011253a4e62768b9fb2c5d8e9d7c5b4a494877a726d6c6f76828f9dadbdcfe1e3d0bda995826d5944301b07001025394e62768a9eb2c5d8ead7c5b4a3948579706a6a6c737d8b99a9baccdee5d2bfac98846f5b47321e0900192d42576c8295aabed2e5d7c4b19e8c7b6c5f544e4c4c4e4e63788fa4b9cfe4d6c1ac97826b56402b16010000000000000000000013283d52677b91a6bbd0e5d7c1ac9783838383838383838396abc0d5e8d3bea9947d6955402b16010000001e33485e73899fb4c9dee2cdb8a38d77624c37292929282624201b150f07000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000215283b4e60738799acbfd2e5dac7b4a28f7c695643301d0b000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f74899fb4c9dee2cdb8a38d77624c37220d001f344a5f74899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5cbd0d0ccb7a18c76604b36210b0000000000000000000414233242505d6a76828c949ca2a7abacacaba8a49f988f867b6f6356483a2b1b0b0000000000000000000003132332414f5c6975808a939aa1a5a8ababa9a7a39e978f867a6f635648392a1b0b000000000000162b3f54687c92a6bacee2dfccbaa7968676685e58575b63707d8fa0b1c4d7ead8c5b19c88735e4a35200c00152a3f53687c91a5b9cee1e1cebba8968575675c555458606c7b8b9caec1d4e8dbc7b39f8a75614c38230e001c31465b70869aafc4d8e4cfbba794826e5d4e413a3737384e63788fa4b9cee3d6c1ac97826b56402b1601000000000000000000000f24394e63788da2b7cce1d7c2ad98846e6c6c6c6c6c6d8397acc2d7e4cfbaa5907b66513c2712000000001e33485e73899fb4c9dee2cdb8a38d77624c3e3e3e3e3d3b39353029221a110800000000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000000000b1e314457697c90a2b5c8dbe4d1beab998672604d3a2714020000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0b5bbbbbbbbb7a18c76604b36210b0000000000000000001122324251606e7b88939ea8b0b7bcbfc1c1c0beb9b3aca3988d82746658493929190800000000000000000011213141505f6d7a87929da6afb5babdc0c0bfbcb8b2aba2988d82736657483929190800000000001a2f44586d8397acc0d5e9d8c4b09d8a7867584b4342475260708295a8bbcee2dfcbb6a28d78634e39240f00192e43586d8297abc0d4e9d9c5b19e8b7867574a413f434e5d6d8092a5b8cce1e2cdb9a48f7a65513c2712001f34495e73899eb3c8dddfcab5a18c7764513f30252223384d62778da3b8cde2d6c1ac97826b56402b1601000000000000000000000c21364a5f74899eb3c8dddbc6b19c87715c5757575b70869bafc4dae0cbb6a28d77624d39240f000000001e33485e73899fb4c9dee2cdb8a38d7762535353535352504e4a443e362e241a0f030000000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000000000114273a4d60728699abbed1e4dbc8b5a2907c695744311e0b0000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0a0a0a0a0a0a0a0a0a0a0a0a0701000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748ba0a5a5a5a5a5a5a18c76604b36210b00000000000000000d1e2f4050606f7d8c99a5b1bbc4cbd1d4d6d7d5d2cec7bfb5ab9f92857667574737261503000000000000000c1d2f3f4f5f6e7d8b98a4b0bac2c9cfd3d5d5d4d1cdc6beb5aa9e92847566574737261503000000001d32475c71879bb0c5dae6d2bda995826d5a493a2f2c34425364778b9fb3c8dce4d0bba6917b66513c2712001c31465b70869bb0c5d9e8d3bfaa96826e5b49392d2a303f4f6175899db2c6dbe7d2bda8937d69543f2a15001f344a5f748ba0b5cadfddc8b39d88725d493522120d22374c62778da3b8cde2d6c1ac97826b56402b160100000000000000000000081d32475c70869bafc4d9dec9b49f8a74604b42495e73899eb3c8ddddc8b39e89745f4a35200b000000001e33485e73899fb4c9dee2cdb8a38d776868686868686766635e58524a41372c21150800000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000000000a1d304356697b8fa2b4c7dae5d2bfac998773604e3b28150200000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37221f1f1f1f1f1f1f1f1f1f1f1f1f1c150b0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f344a5f748b90909090909090908c76604b36210b0000000000000006192a3c4d5e6e7d8e9caab7c3ced7dfe5eaebeaebe7e2dbd2c8bcb0a294867565554432210f0000000000000618293b4c5d6d7d8d9ba9b6c2ccd6dee4e8eaeae9e6e1dad2c7bcb0a294857565554432210f000000001f34495e73899fb3c8dee2cdb8a38f7965513d2b1c182435485c70859aaec3d8e8d3bea8947d68533e2914001e33485e73889db3c8dde4cfbaa5907b67533e2c1b152132465a6e8398adc2d7ead5c0ab96826b56412c17001f344a5f748ba0b5cbe0ddc8b39d88725c47321d070d22374c62778da3b8cde2d6c1ac97826b56402b16010000000000000000000002192e43586c8297acc0d5e1ccb7a28d78634e394c61768ca1b6cbe0d9c4af9a86705b46311c07000000001e33485e73899fb4c9dee2cdb8a38d7d7d7d7d7d7d7d7c7b77736d655d544a3e3226180a000000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000011426394c5f728598abbdd0e3dcc9b6a3907d6a5745321f0c00000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37343434343434343434343434343431281c0d00001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d001f34495e7179797979797979797979725f4a35200b0000000000000011243648596b7c8d9dacbac8d4e0eae2dcd8d6d5d7dae0e7e5dacec0b2a394847261503e2c1907000000000010233547596a7b8c9cabb9c7d3dfe9e4ddd8d6d5d7dae0e7e4dacdc0b2a394837261503e2c1a070000001f344a5f748ba0b5cbe0e0cbb6a18c76604c37220e06192d42576c8297acc1d6ead5c0ab95806a543f2a15001f344a5f748b9fb4c9dfe3cdb8a38e78634e39240f03172c40566b8095abc0d5ead7c2ad98836c57422c17001f344a5f748ba0b5cbe0ddc8b39d88725c47321d070d22374c62778da3b8cde2d6c1ac97826b56402b16010000000000000000000000152a3f54697d93a8bdd2e5d0bba6917b66513d4f64798fa4b9cee3d5c0ac97826c57422e1904000000001e33485e73899fb4c9dee5d0bca8989494949494949493908d88827970665c504436281a0b0000000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000a1d2f4255677a8ea0b3c6d9e6d3c0ad9b8874614e3c291603000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392b1a07001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d001b2f425361646464646464646464646154432f1c07000000000000081b2e41536577899aaabbcad8e5e2d8cfc8c3c1c0c2c6ccd4dde9ded0c1b2a191806d5b4936231000000000071a2d405264768899aabac9d7e5e4d9d0c9c4c1c0c2c6ccd4deeaded0c1b1a191806d5c493724110000001f344a5f748ba0b5cbd4d4cbb5a08b745f4a341f0a0e1b2c41566b8297acc1d6ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f344a5f748ba0b5cbe0ddc8b39d88725c47321d070d22374c62778da3b8cde2d7c2ac97836c57422c1702000000000000000000000011263b5065798fa4b9cee3d3bea994806a554052677c92a7bcd1e6d2bda8937d69543f2a1500000000001e33485e73899fb4c9deebd8c6b6aca9a9a9a9a9a9a9a8a5a29c958d84796e6154463829190a00000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000000000000001326384b5e708497a9bccfe2ddcab7a4927d6b594633200d000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5749372410001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d00122535444d4f4f4f4f4f4f4f4f4f4f4d44362513000000000000001124374a5d708395a6b7c8d8e8ded1c5bbb3aeacabadb1b7c1cbd8e6dfd0bfae9d8b786653402d19060000001023364a5c6f8294a6b7c8d8e7e0d2c7bcb4afacabadb1b8c1cdd9e8dfcfbfae9d8b796653402d1a0600001f344a5f748ba0b5bfbfbfbfb5a08b745f4a341f15202c394a5c708499adc2d7e9d4bfa9947d69543f2a15001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f344a5f748ba0b5cbe0ddc8b39d88725c47321d070d22374c62778da3b8cde2d8c3ad98836c57422c170200000000000000000000000e23384c61768ca0b5cadfd6c1ac97836d5843556a8095aabfd4e3ceb9a48f7965503b261200000000001e33485e73899fb4c9def4e4d4c8c0bfbfbfbfbfbfbfbdbab6b0a9a0968b807264564737281706000000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000000000000091b2e415467798da0b3c5d8e7d4c1ae9b897562503d2a17040000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77747474747474747474747474747474747466533f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d0007172631383a3a3a3a3a3a3a3a3a3a393227180800000000000005192c4054677a8da0b2c4d5e6ddcec0b3a89f999796989ca4aebac8d7e7ddccbaa896836f5c4935210d000004182b3f5366798c9fb1c3d4e5dfd0c2b5a9a09a9795989da5afbbcad9e8ddccbaa89683705d4936220e00001f344a5f748ba0a9a9a9a9a9a9a08b745f4a341f28323d495767798c9fb3c7dce6d1bca7927c67523d2813001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f344a5f748ba0b5cbe0ddc8b39d88725c47321d070d22374c62778da3b8cde2d8c3ad98836c57422c170200000000000000000000000a1f34495d72889cb2c6dbdac5b09b86705c47586e8398adc2d7dfcbb6a18c76614d38230e00000000001e33485e73899fb4c9def4f2e5dbd5d4d4d4d4d4d4d3d2cfcbc4bcb3a99d908374655545352413010000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000000000000000001224374a5d708396a9bccee1decbb8a592806c594734210e0000000000000000000000001e33485e73899fb4c9dee3ceb9a4918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d000008141e2325252525252525252525241e1509000000000000000c2034485c708397aabdcfe1e1d0bfb0a2968c8582828388919caab9c9dae9d7c5b29f8c7864503c281400000a1e33475b6f8396a9bccee1e3d2c1b2a4978d8682808389929eacbbcadbe9d8c5b3a08d7965513e291501001f344a5f748b94949494949494948b745f4a34303a454f5b67758697a9bbcfe2e1ccb8a38f79644f3a2510001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f344a5f748ba0b5cbe0ddc8b39d88725d483524181322374c62778da3b8cde2d8c3ad98836c57422c171313130f0800000000000000061b30455a6f8499aec2d7ddc8b39e89745f4a5c70869bb0c5dadcc7b29d88735e49341f0a00000000001e33485e73899fb4c9def4fff7efeae9e9e9e9e9e9e9e7e4dfd8d0c6baaea1928473635342301f0d0000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000000000000000081b2d405366798c9fb2c5d7e7d5c2af9c897663503d2b180500000000000000000000001e33485e73899fb4c9dee8d4c1afa3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a097826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000020a0e0f0f0f0f0f0f0f0f0f0f0f0a02000000000000000011263a4f63778b9fb3c6d9e8d5c3b2a1928478706b6b6d747d8c9babbccee1e2cfbba894806b57432e1a05001025394d62768a9eb2c5d8ead7c5b4a394867a716c6b6d75808e9dacbdcfe1e2cfbca995826d5844301b07001f344a5f737d7d7d7d7d7d7d7d7d7d735f4a38434d57626d788694a3b4c6d8ebdac6b29e8975604b37220d001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f344a5f74899fb4c9dedec9b4a08b77645242352b2929374c62778da3b8cde2d8c3ad98836c57422c29292928241b0e00000000000000172c41566b8095aabfd4e0cbb6a28d77624d5f73899eb3c8ddd8c3ae99856f5a45311c0700000000001e33485e73899fb4c9def4f5e8dfd9d8d8d8d8d8d8d8d9dce2e9e3d8ccbfb0a1928270604e3c2a180600000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000000000000000000112436495c6f8295a8bbcee0deccb9a693806d5a4734220f00000000000000000000001e33485e73899fb4c9def0decdc0b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000000162b4054697d92a7bbcee2decbb8a6948373665c565659616e7d8e9fb1c4d7ebd7c3af9a86715d48331f0a00152a3e53687c91a5b9cde1e1cebba8968675685d575659626f7d8fa0b2c4d7ead8c4b09c88735e4a35200c001c30445664686868686868686868686456444b55606a75808a96a3b2c1d2e3e3d0beaa97836e5a46311d08001f344a5f74899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001d32475c71879bb0c5d9e3cebaa7948270605247403e3e3e4c62778da3b8cde2d8c3ad98836c57423e3e3e3e3d372c1e0e00000000000014283d52677c91a6bbd0e4cfbaa5907a665162778ca1b6cbe0d5c0ab96826c57422d180300000000001e33485e73899fb4c9def4e6d7cbc4c3c3c3c3c3c3c3c4c7ced6e0e9ddcebfb0a08f7d6b5a4735231000000000000000000000000000001a2f445a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000000000000000000071a2d3f5265788b9eb1c4d7e8d5c3b09d8a7764513e2b1906000000000000000000001e33485e73899fb4c9def4ecddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbc1ac97826b56402b16001e33485e73899fb4c9dee1ccb7a18c76604c37210c001e33485e73899fb4c9dee1ccb7a18c76604c37210c0000000000000000000000000000000000000000000000000000001a2f44596d8397acc1d5ead7c3af9c8976655549414045505f6f8295a8bbcfe3dec9b5a08b76614c38230e00192e43586c8296abbfd4e8d9c5b29e8b7867574a4240455160708295a8bbcfe3dfcbb6a28d78634e39240f001427384751535353535353535353535149535d68727c88929ca7b4c1d0dfe7d6c5b3a18e7a67533f2b1703001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17001a2e43586d8296aabfd2e6d6c3b19f8f7d70645a545353535362778da3b8cde2d8c3ad98836c575353535353524a3c2b190600000000001025394e63788da2b7cce1d2bda8937d695465798fa4b9cee3d1bca7927c68533e29140000000000001e33485e73899fb4c9deeddac8b9afadadadadadadadafb3bac3cfdbeaddcebead9b897764523f2c1905000000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e39240f000000000000000000000000000000000000000000102336495b6e8294a7baccdfdfccbaa794826e5b48362310000000000000000000001e33485e73899fb4c9def4fbefe6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000000000000000000000001d32475c71879cb1c5dae6d1bca894806c5947372d2b32415264788ca0b4c9dee3ceb9a48f7965503b2610001c31465b70869aafc4d9e8d4bfab96836e5b49392e2b33425365778c9fb4c8dce4d0bba6917b67523d281300091a29353c3e3e3e3e3e3e3e3e3e46515b66707a85909aa4afb9c5d2dfe8d9c9b8a79684715e4b38241000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c1700152a3e53677b8fa3b6c9dce0cebcac9d8f82766e6a6868686868778da3b8cde2d8c3ad98836c686868686868675a4935210c00000000000c21364b5f748a9fb3c8ddd6c1ac97826c57687c92a7bcd1e2cdb8a38f79644f3a26110000000000001e33485e73889db3c8dde5d1bdaa9c98989898989898999fa6b1bdccdbeadbcab8a694826f5c4835210e000000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000000000006192b3e5164778a9db0c3d5e8d7c4b19e8b7765523f2d1a070000000000000000001e33485e73889db3c8ddf2fdf1e9e3e2e2e2e2e2e2e2e2e2e2e2e2e2d5c0ab95806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000050a0b0b0b0b0b0b0b0b0b0b0a050000000000000000001f344a5f73899fb4c9dee2cdb8a38e7964503c2a1a162335495d71869bb0c5dae6d1bca7927c67523c2712001e33485e73889db3c7dce5d0bba6917c67533f2c1c162435485c70859aaec3d8e8d3bea9947d69543f2a1500000b18222729292929292d39444e59636e78838d98a2acb7c1ccd7e3e5d8cabbab9b8a786654412e1b0800001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c17000f24384c6073879aacbfd1e2dacabbad9f948a83807d7d7d7d7d7d8ca1b7cce1d8c3ad98837d7d7d7d7d7d7d78644f3a240f0000000000081d32475c70869bb0c5dad9c4af9a86705b6b8095abbfd4dfcab5a08b76614c37220d0000000000001d32475c72889db3c8dde3cdb8a38e83838383838383858a94a0aebdccdce8d6c4b19f8c7764513d2915010000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000000000000000f2235475a6d8093a6b9ccdee0cebba895826f5c493624110000000000000000001d32475c72889db3c8ddf2ede0d5cecdcdcdcdcdcdcdcdcdcdcdcdcdcdc0ab95806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000410191f212121212121212121211f191105000000000000001f344a5f748ba0b5cbe0e0cbb5a08b76604b36210d06192e43586d8398adc3d8e8d3bda8937d68533e2913001f344a5f74899fb4c9dee3cdb8a38f78634e39241006192d41566b8296abc0d5ead5c0ab95806b56402b16000000050e1213131725323e4b56616b76828b95a0aab5bfc9d4dee9e0d4c7baac9d8d7c6c5b493725120000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826c57422c1700091c3044576a7d90a2b4c5d6e6d9cbbdb1a69e979494949494949498a7bacfe3dac6b2a0949494949494949079644f3a250f000000000003192e43586d8397acc1d6dcc7b29d88735e6e8498adc2d7dbc6b19c88725d48331e090000000000001d32475c72889db3c8dde2cdb8a38d776c6c6c6c6c6c6f76828f9eaebed0e2e1cebba894806c5844301c070000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0000000000000000000000000000000000000000000005182b3e506376899cafc2d5e8d7c5b29f8c796653402d1b0800000000000000001d32475c72889db3c8ddf1e0cfc2bab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab95806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b000414222d3436363636363636363636342d2214050000000000001f344a5f748ba0b5cbd1d1cbb5a08b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5d6d6c1ac97826b56402b160000000000000817263543505c68737d89939ea8b2bdc7d1dce6e4d9cec3b6a99c8e7d6f5e4e3d2c1a080000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16000114273a4d60728596a7b8c8d8e7dbcfc3b9b2aca9a9a9a9a9a9a9abb5c5d7eae1cfbeb0a9a9a9a9a9a9a59079644f3a250f000000000000152a3f54697d93a8bdd2e0cbb6a18c766171879bb0c5dad7c2ae99846e5945301b060000000000001d32475c72889db3c8dde2cdb8a38d776257575757575b64708090a1b3c5d8ead7c4b09c88735f4a36210d0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000000000000000e213447596c8092a5b8cbdee1cebba99683705d4a37241200000000000000001d32475c72889db3c8dde9d5c2b1a5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a395806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001022323f484b4b4b4b4b4b4b4b4b4b48403223110000000000001f344a5f748ba0b5bcbcbcbcb5a08b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0c1c1c1c1ac97826b56402b160000000000071726354453606e7a86919ba6b0bbc5cfdae4e4dbd1c6bcb1a5998c7d6f605140301f0e000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000b1e3043556778899aaabac9dbece0d6cdc6c1bfbfbfbfbfbfbfc0c7d3e3f4ecdccdc3bfbfbfbfbfbba59079644f3a250f00000000000012273b50657a8fa4b9cee3ceb9a48f796574899fb4c9ded4bfaa95806b56412c17020000000000001d32475c72889db3c8dde2cdb8a38d77624c42424242475361718395a8bbcee2dfcbb7a28e7964503b26120000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000000000000000004172a3d506275899baec1d4e7d8c5b2a08d796754412e1b09000000000000001d32475c72889db3c8dde3cebaa5938d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b00192d3f505c606060606060606060605d51402e1a0600000000001f344a5f748ba0a7a7a7a7a7a7a08b745f4a341f0a01172c42576c8398adc3d8e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abacacacacacac97826b56402b160000000003142535445362707d8c98a3aeb8c2cdd7e2e6dcd2c8beb4aa9f94887a6d5f514232221201000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16000001132537495a6b7b8c9cacbfd3e8f3e9e1dad6d4d4d4d4d4d4d4d5dae4f1fffaebdfd7d4d4d4d4d0bba59079644f3a250f0000000000000e23384d61768ca1b6cbdfd2bca7937d68778da2b7cce1d0bba6917c67523d2814000000000000001d32475c72889db3c8dde2cdb8a38d77624c372c2c2d35435466788c9fb2c6dbe5d1bca8937d69543f2b160000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0000000000000000000000000000000000000000000000000d203346596b7d92a4b7cadde2cfbca99784705e4b382613000000000000001d32475c72889db3c8dde2cdb8a38d77777777777777777777777777777777777566523d2814001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485c6e767676767676767676766f5d4934200a00000000001f344a5f748b91919191919191918b745f4a341f0a0a1c3045596e8499aec3d8e8d3bda8937d68533e2813001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a80959797979797979797826b56402b16000000000f203242526271828f9da9b5c0cbd5dfe8ded4c9bfb5aba1978d82766a5d4f413223140400000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16000000081a2b3c4d5e6d7d90a5bbd0e5fafcf5efebe9e9e9e9e9e9e9eaeaeaeaeaeaeaeaeae9e9e9e5d0bba59079644f3a250f0000000000000a1f34495e73889db2c7dcd5c0ab96826b7a90a5bacfe1cdb8a38e78644f3a2510000000000000001d32475c72889db3c8dde2cdb8a38d77624c372217182536495c6f8397acc0d5e9d6c1ac97836d58432e190000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0000000000000000000000000000000000000000000000000316293c4e6175889badc0d3e6d9c6b3a08e7a6755422f1d0a0000000000001d32475c72889db3c8dde2cdb8a38d776262626262626262626262626262626261584836230f001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748b8c8c8c8c8c8c8c8c8c76604b36210b00000000001f34495e727b7b7b7b7b7b7b7b7b7b715e49341f1d1d27394c5f73889db1c6dbe5d0bba6917b66513c2712001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f54697d828282828282828282806b56402b16000000081a2c3e4f607082909fadbac7d2dde8dfd5cbc1b7ada2988e857a6f64584c3f31231514110b010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16000000071a2d3f5264758797a9bdd2e6f6ebe3dcd8d6d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d0bba59079644f3a250f000000000000061b30455a6f8499aec3d8d8c3ae99846f7d93a8bdd2dec9b49f8a75604b36210c000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d08192c4054687c92a6bbd0e5dac4af9b86705b46301b0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000000000000000000000d1f3245576a7d90a3b6c9dce3d0bdab9885725f4c3926140100000000001d32475c72889db3c8dde2cdb8a38d77624c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c463a2b1907001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0a1a1a1a1a1a1a18c76604b36210b00000000001b2f4354626666666666666666666661534232323232374556687b8fa3b7cbe0e0ccb7a28e78634e39240f001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0012263b4e606a6b6b6b6b6b6b6b6b6b6b614f3c28130000001225374a5b6d7d8f9faebdcbd8e4e2d7ccc2b8aea49a90867b71675d52473b2e2a2a2a2a261e120400001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000f2336495c6f8293a5b5c6d8ece4d8cfc8c3c1c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0bba59079644f3a250f00000000000000182c41566b8095aabfd4dcc7b29c88728296abc0d5dac5b09b87715c47321e09000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0011253a4f64788ea3b8cde2dcc7b29d88725c47321d0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e000000000000000000000000000000000000000000000000000215283b4e60738799acbfd2e5dac7b4a28f7b695643301d0a00000000001d32475c72889db3c8dde2cdb8a38d77624c37373737373737373737373737373732291c0d00001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5b7b7b7b7b7a18c76604b36210b0000000000132536454e505050505050505050504e4445474747474a5563748698abbed2e6dac6b29d89745f4a36210c001f344a5f748ba0b5cadfe2cdb8a38d77624c37220d000b1e31424e55565656565656565656564f4232200c0000081b2e415467798b9cadbdcddbe9ddd1c5baafa59c92887d72685e544a403f3f3f3f3f3f3f3a30221100001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16000003172b3e5266798c9fb1c2d3e3e1d3c6bcb4aeacabababababababababababababababababababababa59079644f3a250f0000000000000014293e52677c92a6bbd0dfcab5a08b768499aec3d8d7c2ad98836e59442f1a05000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d000c21364b60768ca1b6cbe0dec9b49f89735e48331e0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000000000000000000000b1e3144576a7c90a2b5c8dbe4d1beab998672604d3a271401000000001d32475c72889db3c8dde2cdb8a38d77624c3722222222222222222222222222221e160b0000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbccccccb7a18c76604b36210b0000000000081827333a3b3b3b3b3b3b3b3b3b3b3d4d595c5c5c5c5f66728292a3b5c8dbe5d2bfab97836e5a45311c08001e33485e73899fb4c9dee2cdb8a38d77624c37220d00021323313b40404040404040404040403c3224140300001024374b5e718496a8bacbdbeadbcdbfb3a89d93897d756a605654545454545454545454544d402f1d09001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000091e32465a6e8296a9bccee0e3d2c3b5a9a09a97959595959595959595959595959595959595959595959079644f3a250f0000000000000010253a4f64788ea3b8cde1cdb8a38f79879cb1c6dbd3bea994806a55402b1601000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d000a1f344a5f748ba0b5cbe0dec9b49f89735e48331e0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e00000000000000000000000000000000000000000000000000000214273a4d60738699acbed1e4dbc8b5a2907c695744311e0b000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0d0d0d0d0d0d0d0d0d0d0d0c0903000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000009161f2526262626262626262632465a6b72727272737984919fb0c1d2e4dcc9b6a38f7b67533f2b1702001e33485e73899fb4c9dee2cdb8a38d77624c37220d000005141f272b2b2b2b2b2b2b2b2b2b2b28201406000004182b3f53677a8ea1b3c6d7e9dbccbdafa2968a80756c61574e60696a6a6a6a6a6a6a6a6a695e4c392510001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600000f24384d61758a9eb1c5d8ead7c5b5a5978c8582808080808080808080808080808080808080808080808078644f3a240f000000000000000c21364b60758a9fb4c9ded0bba7917b8a9fb4c9decfbaa5907b66513d281300000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d000c21364b60758ba0b5cbe0dec9b49f89735e48331e0000000000000000000000001a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0000000000000000000000000000000000000000000000000000000b1d304356697c8fa2b5c7dae5d2bfac998673604e3b2815020000001d32475c72889db3c8dde2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbe0e0ccb7a18c76604b36210b00000000000000030b1011111111111111111f344a5f7488888888898e96a1afbdcedee3d1bfac9986735f4c38241000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000020c131616161616161616161616130c030000000a1e33475b6f8397aabed0e3dfcdbdae9e9184786d63594f45556a7d8080808080808080807c68533e2813001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16000014293d52677b90a4b9cde1e0cdbaa8978779706b6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a675b4935210c00000000000000081d32475c71879bb0c5dad3bea9947d8da2b7cce1ccb7a28d77634e39240f00000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0712263a4e63788da2b7cce1ddc8b39d88735e48331e0000000004090a0a0a0a0a0a1a2f445a6f869bb0c5dae4cfb9a48f78634e38230e0a0a0a0a0a0a070000000000000000000000000000000000000000011426394c5f728598abbed0e3dcc9b6a3907d6a5744321f0c0000001d32475c72889db3c8dde2cdb8a38d77624c37220d0a0a0a0a0a0a0a0a0a0a0a0a0701000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5cbcbcbcbb7a18c76604b36210b00000000000000000000000000000000000a1f344a5f748b9d9d9d9ea2a9b3bfcddce7d7c5b4a28f7c695643301c0900001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000000000000000f24384d61768a9eb2c6d9e7d4c1b09f8f8072665b50463c40566b829595959595959595947d68533e2913001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000182d41576b8295aabfd3e8d9c5b19e8b78685c565454545454545454545454545454545454545454545454534b3d2c190600000000000000031a2e43586d8397acc1d6d5c0ab968291a6bbd0ddc8b39e89745f4a35200b00000000000000001d32475c72889db3c8dde2cdb8a38d77624c37221d1d21304155697d92a6bbd0e5dbc5b09b87705c47311c0000030f191e1f1f1f1f1f1f1f2f445a6f869bb0c5dae4cfb9a48f78634e38231f1f1f1f1f1f1f1b1409000000000000070f1313131313131313131313131d2f4255687a8ea1b3c6d9e5d3c0ad9b8874614e3b29160300001d32475c72889db3c8dde2cdb8a38d77624c37221f1f1f1f1f1f1f1f1f1f1f1f1f1c150a0000001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0b5b5b5b5b5b5a18c76604b36210b00000000000000000000000000000000000a1f344a5f748ba0b3b3b3b6bdc6d0ddebdac9b9a8968572604d3a27140100001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000014293e52677b90a5b9cee1decab7a59282706255493e332b40566b8297ababababababa9947d68533e2913001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600001b30455a6f8499aec3d8e8d3bfaa96826d5b4a413f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e382d1f0e000000000000000000162b4054697d94a8bed2d7c2ae9a8c97aabfd3d9c4af9b86705c47321d0800000000000000001d32475c72889db3c8dde2cdb8a38d77624c37323232353e4e5f718598acc0d5e9d7c2ae99846e59442f1a000313212c333434343434343434445a6f869bb0c5dae4cfb9a48f78634e3834343434343434343026190a000000000d1a232829292929292929292929292929384b5e718497aabccfe2dccab7a4917d6b594633200d00001d32475c72889db3c8dde2cdb8a38d77624c37343434343434343434343434343431281b0c00001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748ba0a0a0a0a0a0a0a08c76604b36210b00000000000000000000000000000000000a1f344a5f748a9fb4c8c8cbd1d9e2eee2cfbcac9b8a78675542301d0a0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000182d42576b8296aabfd3e8d7c3af9b8875635244372b212b40566b8297acc0c0c0c0bfa9947d68533e2913001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600001d32475c71879cb1c6dbe4cfbaa5907b67523e2d2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29241b0f0100000000000000000012273c51667a90a5baceddc9b7a9a1a6b4c6d9d6c1ac97836d58432e190400000000000000001d32475c72889db3c8dde2cdb8a38d77624c474747474a505c6b7c8fa1b4c8dbe7d2bea995806b56412c17000f21313e484a4a4a4a4a4a4a4a4a5a6f869bb0c5dae4cfb9a48f78634e4a4a4a4a4a4a4a4a49433728170400000d1d2b373d3e3e3e3e3e3e3e3e3e3e3e3e3e3e4154677a8da0b3c5d8e7d4c1ae9b8875624f3d2a1704001d32475c72889db3c8dde2cdb8a38d77624c4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392a1906001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001f344a5f748b8b8b8b8b8b8b8b8b8b76604b36210b0000000000000000000000000000000000081e33485e73899fb4c9dde0e5ecf5f2ddc8b39f8e7d6c5b49372513010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000000000000001b30455a6f8499aec3d8e6d1bda894806b584534261a162b40566b8297acc1d5d5d4bfa9947d68533e2913001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600001e33485e73889db3c8dde2cdb8a38e78634e3924151515151515151515151515151515151515151515151514100800000000000000000000000e23384d62778ca1b6cbe0d5c6bbb7bac4d2e3d2bda8937d69543f2a150100000000000000001d32475c72889db3c8dde2cdb8a38d77625e5c5c5c5c5e646d7a8a9aacbed1e4e1ccb8a48f7a66513d281300182b3e4f5c5f5f5f5f5f5f5f5f5f5f6f869bb0c5dae4cfb9a48f78635f5f5f5f5f5f5f5f5f5e554634200c0005182a3b4952535353535353535353535353535353535d708396a9bccee1decbb8a592806c594634210e001d32475c72889db3c8dde2cdb8a38d77625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574836220f001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485c6e747474747474747474746f5d49341f0a0000000000000000000000000000000000031e33485e73899fb4c9dee6ebf2fbf1dcc7b29d8978685746342211000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000000000000001d32475c72879cb1c6dbe3ceb8a38f7965503c281608172c41566b8297acc1d6e9d4bfa9947d68533e2913001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b1600001e33485e73899fb4c9dee2cdb8a38d77624c37220d0707070707070707070707060100000000000000000000000000000000000000000000000b1f34495e73889db2c7dce4d8cfccced6e2e3cebaa5907a66513c27120000000000000000001d32475c72889db3c8dde2cdb8a38d777373727272727378808c99a8b8c9dbecd8c5b19d8975604c38230e001e33475b6d7474747474747474747474869bb0c5dae4cfb9a48f78747474747474747474747363503b2611000b2034475966686868686868686868686868686868686868798c9fb2c6dae7d5c2af9c897663503d2914001d32475c72889db3c8dde2cdb8a38d77747474747474747474747474747474747465523d2814001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b00192c3f505c5f5f5f5f5f5f5f5f5f5f5c51402d1a060000000000000000000000000000000000001e33485e73899fb4c9cfd2d7dee8f3e0ccb8a69686756352402e1b090000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000000000000001e33485e73899eb3c8dde0cbb6a18c76614c37220d00172c42576c8398adc3d8e9d4bfa9947d68533e2913001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a54402b1500001e33485d72889db3c8dde3ceb8a38f79644f3b281d1d1d1d1d1d1d1d1d1d1d1d1b150c01000000000000000000000000000000000000000000071c31455a6f8599aec3d8edebe4e1e3e9f3e0cbb6a18c77624d38230e0000000000000000001d32475c72889db3c8dde3ceb9a49189898988888888898d949da9b7c6d6e7e1cfbca996826e5a46311d09001f344a5f748b8b8b8b8b8b8b8b8b8b8b8c9db1c6dbe4cfbaa6928b8b8b8b8b8b8b8b8b8b8b7c67523c2712000e23384d63777d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8398adc3d8eddeccb9a693806c57422c17001d32475c72889db3c8dde3ceb9a4918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b000f21323f484a4a4a4a4a4a4a4a4a4a483f322211000000000000000000000405050505050505051e33485e73899fb4b9b9bdc3cbd5e1e8d6c4b4a392826f5d4b3826130000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000406060606060606060606060400000000001e33485e73899fb4c9dee0cbb5a08b745f4a35200b00172c42576c8398adc3d8e9d4bfa9947d68533e2913001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a1500001c31475c70879bb0c5dae6d1bca7937d6a58463732323232323232323232323230291e1101000000000000000000000000000000000000000000182d42576b8296abbfd4e9fefffffffff1dcc7b29d88735e4934200b0000000000000000001d32475c72889db3c8dde7d3c0afa29f9f9f9d9d9d9d9ea2a7b0bac7d5e4e6d5c4b29f8d7966523e2b1602001f344a5f748a9fa0a0a0a0a0a0a0a0a0a1aabacce0e9d5c2b0a3a0a0a0a0a0a0a0a0a0a0937c67523c2712000e23384e63788f94949494949494949494949494949494949494a0b2c6daefe8d5c2ad98836c57422c17001d32475c72889db3c8dde8d4c1afa3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b000414212c3334343434343434343434332d22140500000000000000000b14191a1a1a1a1a1a1a1a1e33485e73899fa4a4a4a8afb8c3d0dee2d2c1b09f8d7a6855422f1b0800001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000711181b1b1b1b1b1b1b1b1b1b1b1811070000001e33485e73899eb3c8dde0cbb6a18c76614c382311091a2f44586e8398adc3d8e8d3bda8937d68533e2913001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a1500001a2f44596e8398adc1d6ead6c2ae9b887564554a474747474747474747474747443c2f1f0e00000000000000000000000000000000000000000014293e53687c92a7bcd1e5faffffffffedd9c4af9a86705b46311c070000000000000000001d32475c72889db3c8ddefddcdbfb6b4b4b3b3b3b3b3b3b6bcc3cdd8e5e7d8c8b8a69583705d4a36230f00001e33485e73899fb4b5b5b5b5b5b5b5b5b6bcc8d8e9f1dfcec1b7b5b5b5b5b5b5b5b5b5a8937c67523c2712000e23384e63788fa4a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b0becfe1f5edd8c3ad98836c57422c17001d32475c72889db3c8ddf0decdc0b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab95806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000040f191e1f1f1f1f1f1f1f1f1f1f1e19100400000000000000000f1d272e2f2f2f2f2f2f2f2f2f33485e73898f8f8f8f949ca6b2c0cfdfdfcebcaa9885725f4b37240f00001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000918242d30303030303030303030302d24180900001d32475c72879cb1c6dbe3ceb9a48f7a6653402f201c27374a5d72879bb0c5dae5d0bba7917b67523c2712001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a150000172b4055697d93a8bcd0e4ddcab7a5938273675e5c5c5c5c5c5c5c5c5c5c5c5c584d3d2b1804000000000000000000000000000000000000000010253a4f64788ea3b8cde2f7ffffffffead5c0ab96826c57422d18030000000000000000001d32475c72889db3c8ddf2ebdcd1cbc9c9c8c8c8c8c8c8cbd0d7dfeae3d7c9baaa9a89776553402d1a0700001e33485e73899fb4c9cbcbcbcbcbcbcbcbcfd9e6f5fdecded3cccbcbcbcbcbcbcbcbbda8937c67523c2712000e23384e63788fa4b9bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc3cddcecfeedd8c3ad98836c57422c17001d32475c72889db3c8ddf2ecddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbc0ab95806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000000000000000000000000c1d2d3a4244444444444444444444475b6e7878787879808994a2b1c1d2e4d9c7b5a28e7a67533e2a1601001e33485e73899fb4c9dee2cdb8a38d77624c37220d00051727364146464646464646464646464136271604001b30455a6f8499aec3d8e7d2beaa96836f5d4d3e333238445566798da1b5c9dee1cdb8a38e78644f3a2510001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15000012273b5064788da1b5c8dce7d4c2b1a0918479737272727272727272727272726b5a47331e0900000000000000000000000000000000000000000d21364b60758a9fb4c9def3fffffffee6d1bca7937d68533f2a15000000000000000000001c31465b70879cb1c7dcf1f5eee5dfdedededddddddddde0e4eae3dbd1c6b9ab9d8d7c6b59483623110000001e33485e73899fb4c9dee0e0e0e0e0e0e0e4ebf5f5f5f5f0e6e1e0e0e0e0e0e0e0d3bda8937c67523c2712000e23384e63788fa4b9cfd4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d7dfebf5f5edd8c3ad98836c57422c17001c31465b70879cb1c7dcf1f5efe6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a15001e33485e73899fb4c9dee1ccb7a18c76604b36210b001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000000000000000000000000000000000000000000000015283b4b575a5a5a5a5a5a5a5a5a5a57505e63636363656c768493a3b5c7dae4d1beaa96826d5945301b07001e33485e73899fb4c9dee2cdb8a38d77624c37220d000e213445535b5b5b5b5b5b5b5b5b5b5b534534210d00182c41566b8095a9bed2e6d9c5b29f8d7b6b5c5048474b5562728496a9bcd0e4dbc7b39f8a75604b36210d001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a1500000d2135495d718699acbfd2e4dfcfbeafa2968e8888888888888888888888888876604b36210b0000000000000000000000000000000000000000091e32475c71879bb0c5daeffffffff8e3ceb9a48f7965503b2611000000000000000000001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0dfdddad6d0c8bfb4a89b8d7d6e5e4d3c2a19060000001e33485e73899fb4c9dee0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d3bda8937c67523c2712000e23384e63788fa4b9cfe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d8c3ad98836c57422c17001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a15001e33485e73899fb4c9dee0ccb7a18c76604b36210b001e33485e73899fb4c9dee0ccb7a18c76604b36210b0000000000000000000000000000000000000000000000000000001c304558696f6f6f6f6f6f6f6f6f6f6a5a4b4e4e4e4e505966748698abbed1e5d9c5b19c88735e4934200b001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013283d5163707070707070707070707063503c27120013283d51667a8fa3b7cbdee2cfbcaa99897a6d635d5c5f67738290a1b3c5d8e7d4c0ac9884705b47321d08001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a150000061a2e4256697c90a2b4c6d8e8dccdc0b3a9a29d9d9d9d9d9d9d9d9d9d9d9d8c76604b36210b0000000000000000000000000000000000000000041a2f44596d8398adc1d6ebf5f5f5f4dfcab5a08b76614c37220d000000000000000000001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbcac8c5c1bbb4aca2978a7d6f6050402f1e0d000000001e33485e73899fb4c9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbda8937c67523c2712000e23384e63788fa4b9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc3ad98836c57422c17001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc0ab95806a543f2a15001e33485e73899fb4c9cbcbcbb7a18c76604b36210b001e33485e73899fb4c9cbcbcbb7a18c76604b36210b0000000000000000000000000000000000000000000000000000001e33485e7386868686868686868686745f4a383838383c4857687a8ea2b6cadfe0cbb6a18c77624d38230e001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a808787878787878787877d68533e2913000e23374b6073889cafc2d5e7d9c8b7a7988b80777271747a85919faebfd0e2decbb8a5917d6955402c1804001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a1500000013263a4d60728597a9bacadae9ded1c6bdb6b3b3b3b3b3b3b3b3b3b3b3a18c76604b36210b000000000000000000000000000000000000000000162b40556a8094a9bed3e0e0e0e0e0dbc6b29c88725d49341f0a000000000000000000001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b3b0aca7a0998f85796c5f514232221201000000001e33485e73899fb4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a8937c67523c2712000e23384e63788fa4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ad98836c57422c17001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab95806a543f2a15001e33485e73899fb4b5b5b5b5b5a18c76604b36210b001e33485e73899fb4b5b5b5b5b5a18c76604b36210b0000000000000000000000000000000000000000000000000000001e33485e73899b9b9b9b9b9b9b9b8b745f4a342323232a394b5e72879cb1c6dae3ceb9a48f79644f3a2510001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a80959c9c9c9c9c9c9c947d68533e291300081c3044586c8093a5b8cadbe6d5c5b6a89c938b8887898f98a2afbdcddde4d2c1ae9c8975614e3a261100001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a150000000a1d30435667798b9cadbccbd8e5e3d9d1cbc8c8c8c8c8c8c8c8c8c8b7a18c76604b36210b00000000000000000000000000000000000000000012273c51667b90a5bacbcbcbcbcbcbcbc3ae99846f5a45301b06000000000000000000001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09e9b97938d857c72675b4e413223140400000000001e33485e73899ea0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937c67523c2712000e23384e63788fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a098836c57422c17001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095806a543f2a15001e33485e73899fa0a0a0a0a0a0a08c76604b36210b001e33485e73899fa0a0a0a0a0a0a08c76604b36210b0000000000000000000000000000000000000000000000000000001e33485e73899fb0b0b0b0b0b0a08b745f4a341f0e0e1b2f44596e8499aec3d8e6d1bca7917b66503b2611001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abb1b1b1b1b1a9947d68533e2913000115293c506375899badbecfdfe3d4c6baafa6a09d9c9ea3abb4c0cddce7d7c6b5a3917d6c5945321e0a00001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15000000011426384a5c6d7d8f9eadbbc8d3dee6e5e0ddddddddddddddddddccb7a18c76604b36210b0000000000000000000000000000000000000000000e23384d62778ca1b5b5b5b5b5b5b5b5b5aa95806b56412c1702000000000000000000001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8987837d7871695f554a3d302314050000000000001d32475c72888b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c2712000e23384e63788b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b836c57422c17001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a15001e33485e73898b8b8b8b8b8b8b8b8b76604b36210b001e33485e73898b8b8b8b8b8b8b8b8b76604b36210b0000000000000000000000000000000000000000000000000000001e33485e73899fb4c5c5c5c5b5a08b745f4a341f0a00172c42576c8398adc3d8e6d1bca7917c67523c2712001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0c7c7c7bfa9947d68533e291300000d203346596b7d8fa0b1c1d0dfe4d7ccc2bab5b2b1b3b7bec7d1dde6d8c9b9a8978673614f3c29160200001d32475c72889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a1500000000091b2d3e4f6070808f9daab6c1cbd3d9dddfe0e0e0e0e0e0e0e0ccb7a18c76604b36210b0000000000000000000000000000000000000000000b20354a5e73899ea0a0a0a0a0a0a0a0a0a0927c68533e291400000000000000000000001a2f44586b74747474747474747474747474747474747473706d69635d554c43382c201205000000000000001c31455a6c74747474747474747474747474747474747474747474747474747474747474747363503b2611000d22374b5f707474747474747474747474747474747474747474747474747474747474747467533f2b16001a2f44586b7474747474747474747474747474747474747474747474747474747364513d2813001c31465a6d747474747474747474746f5d49341f0a001c31465a6d747474747474747474746f5d49341f0a0000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dadacbb5a08b745f4a34200a00172c42576c8398adc3d8e7d2bda8937c67523c2712001e33485d72889db3c8dde2cdb8a38d77624d38230e00152a3f546a8095abc0d5dcd4bfa9947d68533e291300000417293c4e60718293a3b2c1cfdbe7ded5cec9c7c7c8ccd2dae4e1d5c8baab9b8a79685644321f0d0000001d32475c72879cb1c7dce2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a1500000000000f213242526170808c98a4aeb7bfc4c8cacbcbcbcbcbcbcbcbcbb7a18c76604b36210b000000000000000000000000000000000000000000071c31465b70858b8b8b8b8b8b8b8b8b8b8b8b78644f3a2510000000000000000000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5c59544f49413930261a0f020000000000000000162a3d4e5b5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e554634200c00081c3042525d5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f58493724100015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f564735220e00172b3e4f5c5f5f5f5f5f5f5f5f5f5f5d51402d1a0600172b3e4f5c5f5f5f5f5f5f5f5f5f5f5d51402d1a060000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dee0cbb6a18c76614c3723110b1b2f44596e8498adc3d8e6d1bca7917b66503b2611001d32475c72889db2c7dce3ceb9a48f7964503b27130b1b2e43576c8297acc1d6e8d3bea9947d68533e29130000000c1e30425364748594a3b1becad5dee6e3dedcdcdde0e6e3dacfc4b7aa9c8d7c6c5c4a392715020000001b30465b70879cb1c7dce0cdb8a38d77624c37220d00152a3f546a8095abc0d5e0d5c0ab95806a543f2a150000000000031424344352616e7a87929ba3aaafb3b5b5b5b5b5b5b5b5b5b5b5a18c76604b36210b00000000000000000000000000000000000000000000182d415568747474747474747474747474746f5e4b36210d00000000000000000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a484744403b352e261d1309000000000000000000000e1f303e474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a494337281704000013253441494a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a453a2b1a08000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4438291805000e20313e484a4a4a4a4a4a4a4a4a4a484032221100000e20313e484a4a4a4a4a4a4a4a4a4a4840322211000000000000000000000000000000000000000000000000000000001e33485d72889db2c7dce3ceb9a48f7a6652402f222029394b5e72879cb1c5dae4cfbaa5907965503b2611001c31465b70869bb0c5dae6d1bca8937d6a564330211f29394b5e72869bafc4d9e5d0bba7917c67523c271200000001132436465766758593a0acb8c2cbd2d8dcdededddad5cfc6bdb2a6998c7d6e5e4e3e2c1b09000000001b30465b70879cb1c7cbcbcbb8a38d77624c37220d00152a3f546a8095abc0cbcbcbc0ab95806a543f2a150000000000000616253442505d69747d888f969a9ea0a0a0a0a0a0a0a0a0a0a0a08c76604b36210b000000000000000000000000000000000000000000001226394b595f5f5f5f5f5f5f5f5f5f5f5f5f5d51412e1b07000000000000000000000001111f2b3234343434343434343434343434343434343433322f2b26201a120a0000000000000000000000000212202b333434343434343434343434343434343434343434343434343434343434343434343026190a0000000716242e343434343434343434343434343434343434343434343434343434343434343431281c0d000001111f2b323434343434343434343434343434343434343434343434343434343430271a0b00000313212c3334343434343434343434332d22140500000313212c3334343434343434343434332d221405000000000000000000000000000000000000000000000000000000001c31465b70869aafc4d9e7d2beaa96826f5d4d3f36343a4756687a8ea2b6cadfe1ccb7a28d77634e39240f00192e43586d8397acc1d6ead6c1ad9986725f4e3e36343a4756687a8da1b5c9dee1cdb8a38e78644f3a2510000000000718283948576674828f9ba5afb7bec3c7c9c9c8c5c1bbb3aaa095897b6e5f504030200f00000000001b30465b70879cb1b5b5b5b5b5a38d77624c37220d00152a3f546a8095abb5b5b5b5b5ab95806a543f2a1500000000000000071624323f4b57616b747b8286898b8b8b8b8b8b8b8b8b8b8b8b8b76604b36210b000000000000000000000000000000000000000000000a1c2d3b454a4a4a4a4a4a4a4a4a4a4a4a4a484033231200000000000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c1a16110c06000000000000000000000000000000020f181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1b1409000000000006121a1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c150b00000000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c140900000000030f191e1f1f1f1f1f1f1f1f1f1f1e19110500000000030f191e1f1f1f1f1f1f1f1f1f1f1e1911050000000000000000000000000000000000000000000000000000000000192e43586c8296abbfd4e8d9c5b29f8d7b6b5d514b4a4e5865748698abbed1e5dbc7b29e89745f4a35200b00162b3f54697d93a7bcd0e4dcc9b5a28f7d6c5c514b4a4e5764748698aabdd1e4dbc7b39e8a75604b36210d00000000000b1b2a39485764717d88929ca3aaaeb2b4b4b3b0aca79f978d83776a5d50413222120200000000001b30465b70879ca0a0a0a0a0a0a08d77624c37220d00152a3f546a8095a0a0a0a0a0a0a095806a543f2a1500000000000000000614222e3a454e5860666c7073747474747474747474747474746d5c48331f0a00000000000000000000000000000000000000000000000f1d293134343434343434343434343434332d231506000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3e53687c91a5b9cde0e1cebcaa998a7a6e65605f626a758393a3b5c7dae7d4c0ac98846f5a46311c080011263b4f64788da1b5c9dce5d2bfac9b8a7a6d64605f6269758392a3b5c7d9e7d4c0ac98846f5b46321d080000000000000c1b2a3946535f6b7580888f959a9d9f9f9e9b97928c847a7065594d3f322314040000000000001b30465b70878b8b8b8b8b8b8b8b8b77624c37220d00152a3f546a808b8b8b8b8b8b8b8b8b7d68533e291300000000000000000004101c28323b444c52575b5e5f5f5f5f5f5f5f5f5f5f5f5f5f5b4f3e2c19040000000000000000000000000000000000000000000000000c161d1f1f1f1f1f1f1f1f1f1f1f1f1f1e191105000000000000000000000000000000000000000000000000000a13191a1a1a1a1a1a1a1a1a1a19140c000000000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b0000000000040e161a1a1a1a1a1a1a1a1a1a1a17110700000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a170f0500000000000a13191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171006000000000000000000000000000000050f171a1a1a1a1a1a1a1a1a1a19130a00000000000000000000010c14191a160e03000000000000000a13191a170f0500000000000000000000001025394d61758a9eb1c4d7e9d9c8b7a8998c82797474777d8893a1b1c1d2e4ddcbb8a4917c6854402c1703000c2135495d718699adc0d3e5dccab8a8998c80797474777d8793a1b0c1d2e4ddcbb8a4917c6955402c1803000000000000000c1b2836424e59636c747a82858889898987837d7770675d53483c2f211304000000000000001a2f44586b74747474747474747474705f4a36210c0014293e5266747474747474747474747364513c271200000000000000000000000b151f2831383e4246494a4a4a4a4a4a4a4a4a4a4a4a4a473e31210f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c272d2f2f2f2f2f2f2f2f2f2f2e281e110100000000000000000000000000000000000000000000000000101d272e2f2f2f2f2f2f2f2f2f2f2e271d100000000615212a2f2f2f2f2f2f2f2f2f2f2f2c24180a0000000f1d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b2217080000000f1c272d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b231708000000000000000000000000000716222b2f2f2f2f2f2f2f2f2f2f2d271c0f000000000000000006121e282e2f2a20130400000000000e1c272d2f2b22160a000000000000000000000a1e32465a6d8295a7baccdde5d5c6b7a99e958e8b8b8c929aa5b1bfcfdfe4d2c0ae9b8875614d3925110000061a2e42566a7d90a3b6c8dae7d6c6b7a99d948e8b8a8c9199a4b1bfcedfe4d2c0ae9b8875614d3926110000000000000000000b1824303b46505860666b6f72737473716e69635c544b41362a1e1103000000000000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5d51412f1b07000f233648575f5f5f5f5f5f5f5f5f5f5f564735220e000000000000000000000000020c151d23292e313434343434343434343434343434332b21130300000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b000000000000050f161a1a1a1a1a1a1a1a1a1a1a1711060000000c1d2d3a4244444444444444444444433b2f1f0f0000000000000000000000000000000000000000000000000d1e2e3a4244444444444444444444423a2e1e0d00021424333e44444444444444444444444036281806000c1d2d3a42444444444444444444444444444444444444444444444444444444443f34261604000c1d2d3a42444444444444444444444444444444444444444444443f352616040000000000000000000000031525343f44444444444444444444423a2d1d0c0000000000000a1723303b43443d312211000000000a1c2c3942443f34271b0e01000000000000000003172b3e5164778a9caebfd0e0e4d5c7bbb1a8a2a0a0a1a6adb7c2cfdde7d7c6b5a3917d6b5845311e0a00000013273a4d60738799abbdcedee4d5c7bab0a8a2a09fa1a5adb6c2cfdde7d7c6b5a3917d6b5845321e0a0000000000000000000007131e29333c444b52575a5d5e5f5e5c59544f4840382e24190d000000000000000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a4941332412000007192a39444a4a4a4a4a4a4a4a4a4a4a4438291805000000000000000000000000000001090f14191c1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e180f0300000000000000000000000000000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d10000000000716222b2f2f2f2f2f2f2f2f2f2f2f2c241809000016293b4b565a5a5a5a5a5a5a5a5a5a584d3d2c19050000000000000000000000000000000000000000000000162a3c4c575a5a5a5a5a5a5a5a5a5a574c3c2b18040c1f324251595a5a5a5a5a5a5a5a5a5a534635230f0016293b4b575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59524433200c0016293b4b565a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a524433210d00000000000000000000000d20334352595a5a5a5a5a5a5a5a5a564b3b281500000000030f1b2835414d58594f402e1c0900000416283a4a56595245382c1f130600000000000000000f2235485a6d8090a1b2c2d1e0e5d8cdc4bcb7b5b4b6bac1c9d4e0e6d8c9b9a8978673614e3b2815020000000b1e314457697b8e9fb0c0d0dfe5d8cdc4bcb7b5b4b6bac0c9d3e0e7d9c9b9a9978673614e3b2815020000000000000000000000010c16202931373d424548494a484744403a342d241b1106000000000000000000000001111f2b3234343434343434343434342e2315060000000c1b2831343434343434343434343430271a0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1d2d3a4244444444444444444444433b2e1e0d0000031525343e44444444444444444444444036271706001d314559696f6f6f6f6f6f6f6f6f6f6b5b4834200b00000000000000000000000000000000000000000000001c3146596a6f6f6f6f6f6f6f6f6f6f6a5a47331f0a13273b4e606d6f6f6f6f6f6f6f6f6f6f64523e2914001d314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e62503b2712001c314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f62503c2813000000000000000000000013283c50616e6f6f6f6f6f6f6f6f6f695845301c0000000714202d3946525f6b6d5d4b39271502000f21334557686e63564a3d3024170a0000000000000005182b3d4f61728494a4b3c2cfdce7e0d7d1cccbcacbcfd5dce6e2d5c8baab9b8b79685644321f0c000000000114273a4c5e708292a2b2c1cfdce7dfd7d1cccbc9cbcfd4dce6e2d6c9bbab9b8b79685644321f0c0000000000000000000000000000040d151c23292d3033343433322f2b26201911080000000000000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1a110500000000000a151c1f1f1f1f1f1f1f1f1f1f1f1c1409000000000000000000000000000000000000000000000000000000000000000000040f161a1a1a1a1a1a1a1a1a1a1a1a160e03000000000000000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a1704000d20334351595a5a5a5a5a5a5a5a5a5a534535230f001f344a5f748686868686868686868677624c37220d00000000000000000000000000000000000000000000001e33485e738686868686868686868676624d392410182d41566a7d868686868686868686826b56402b16001f344a5f74868686868686868686868686868686868686868686868686868686806a543f2a15001f344a5f74868686868686868686868686868686868686868686806a543f2a150000000000000000000000172c41566b80868686868686868686735e48331e00000c1925323e4a5763707c7a68564432200e081a2c3e5062748274675b4e4135281b0f010000000000000e2032445565768695a4b1becad5dfe7e5e1dfdfe0e4e9e3dad0c4b8aa9c8d7d6c5c4a3927150200000000000a1d2f415263738494a3b1becad5dfe7e5e1e0dfe0e3e9e4dbd1c5b8ab9d8e7d6d5c4a392715020000000000000000000000000000000001080f14181b1e1f1f1e1c1a16110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000615222b2f2f2f2f2f2f2f2f2f2f2f2f2a211405000000000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e090013273c50616e6f6f6f6f6f6f6f6f6f6f63523e2a15001f344a5f748b9b9b9b9b9b9b9b9b8d77624c37220d00000000000000000000000000000000000000000000001c31465a6f83979b9b9b9b9b9b9b917c67533e2a151e32475b7085999b9b9b9b9b9b9b8f7a66523e2914001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b95806a543f2a15001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b95806a543f2a1500000000000000000000061b30455a6f84999b9b9b9b9b9b9a86705b46311c000a1b2a36434f5c6875828e8673614f3d2b19132537495b6d809285786c5f5246392c1f0f00000000000003142637485867768694a1adb8c2cbd3d9dcdfdfdedad6cfc7bdb3a69a8c7d6e5f4e3e2d1b0900000000000000122334455666758593a0adb8c3ccd3d9dcdfe0dedbd6d0c8beb3a79b8d7d6f5f4f3e2d1b090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a1a18110700000711181a1a1a1a1a1a1a1a1a1a1a181309000000000000000000000000000000000000000000000000021424333e4444444444444444444444443d322313010000000000000000000000001f344a5f748686868686868686868676604b36210b00152a3f546a80868686868686868686826c57422c17001f344a5f748ba0b0b0b0b0b0b0a38d77624c37220d0000000000000000000000000000000000000000000000172b4054687c91a5b0b0b0b0b0ab96826d58442f1b23384c61758a9fb0b0b0b0b0b09d8974604b37230f001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab95806a543f2a15001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab95806a543f2a15000000000000000000000a1f34495d72889db0b0b0b0b0ab96826c57422d18001528394754606d7986929f917d6c5a4836241e30425466788b9d978a7d7063574a3d2c1a0700000000000008192a3a49586775838f9ba6afb7bfc4c7c9cac8c6c1bbb3aba095897c6e5f504130200f00000000000000000617283848576674828f9ba6afb8bfc4c7c9cbc9c6c2bcb4aca1968a7c6e60514131200f0000000000000000000000000000000000000000060b0f131516161614120e0a04000000000000000000000000000000000000000000000000000001111e282e2f2f2f2f2f2f2f2f2f2f2f2c24190a0b19242c2f2f2f2f2f2f2f2f2f2f2f2d261b0e00000000000000000000000000000000000000000000000c1f324251595a5a5a5a5a5a5a5a5a5a595041301d0a0000000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b00152a3f546a80959b9b9b9b9b9b9b98836c57422c17001f344a5f748ba0b5c5c5c5c5b8a38d77624c37220d00000000000000000000000000000000000000000000001125394e62768a9fb3c5c5c5c5b09c87725e493520283d52667a8fa4b9c5c5c5bfab97826d5945311c08001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c0ab95806a543f2a15001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c0ab95806a543f2a15000000000000000000000e23384c61768ca0b5c5c5c5bca7927d68533e2a15001c31445765717d8b97a4ae9c8a776553412f293b4e60728496a8a79b8f8275685b4a36220e000000000000000c1c2b3a495765717d89939ca4aaafb3b4b5b3b1ada7a0988e83776b5e5041322312020000000000000000000a1a2a39485664717d89939ca4aaafb3b4b5b4b1ada8a1998f84786c5e5042322313020000000000000000000000000000000000040c141a2024282a2b2b2b2a27231e19120a0100000000000000000000000000000000000000000000000e1f2f3b4344444444444444444444444036281819293740444444444444444444444442392c1d0c0000000000000000000000000000000000000000000012273b4e606e6f6f6f6f6f6f6f6f6f6f6d5f4d3925100000000000000000000000001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b00152a3f546a8095abb0b0b0b0b0ad98836c57422c17001f344a5f748ba0b5cbdadacdb8a38d77624c37220d00000000000000000000000000000000000000000000000a1e33475b708498acc1d5dacab6a18d77634f3a262e42576b8095aabed2dacdb9a4907b67533f2a1602001f344a5f748ba0b5cbdadadadadadadadadadadadadadadadadadadad5c0ab95806a543f2a15001f344a5f748ba0b5cbdadadadadadadadadadadadadad5c0ab95806a543f2a150000000000000000000012263b5065798fa4b9cedacdb8a38f7964503b2611001f344a5f7483909ca9b5b9a79583705e4c3a3547596b7d8fa1b3b8ac9f93867965503b261100000000000000000d1c2b394754606b7680888f969a9d9fa09f9c98938c847a70665a4d403223140400000000000000000000000c1b2a384653606b76808990969a9d9fa09f9c99938d857c72665a4e403223140500000000000000000000000000000000040e1720282f35393d3f4040403f3c38332d261e140b00000000000000000000000000000000000000000005182b3d4d575a5a5a5a5a5a5a5a5a5a5a54463624243747545a5a5a5a5a5a5a5a5a5a5a564a3b291603000000000000000000000000000000000000000000162b4055697d868686868686868686867c68533e29140000000000000000000000001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b00152a3f546a8095abc0c5c5c5c3ad98836c57422c17001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000000000000000000000000000000000000000004182c4055697d92a6bacee3d0bba7927d6954402b33485d71869aafc3d8dbc6b29e8a75614c38241000001f344a5f748ba0b5cbe0f0f0f0eeeae9e9e9e9e9e9e9e9e9e9e9e9e9d5c0ab95806a543f2a15001f344a5f748ba0b5cbdededededededededfe5eef0ead5c0ab95806a543f2a1500000000000000000000152a3f54697d93a8bdd2dec9b4a08b75604c37220d001e32475a6d7d91a3b4c6c4b2a08e7b69574540526476889bacbecabba9988673614e3925100000000000000000000d1b2936424e59636c747b8286888a8b8987837d7770675e53483c2f221404000000000000000000000000000c1a2836424e59636c747b8286888a8b898784807871695f54493d30221405000000000000000000000000000000000a16212a343c43494e525456565654514d48413a31271d1206000000000000000000000000000000000000000b1f34485b6a6f6f6f6f6f6f6f6f6f6f6f6453402b2d4154656f6f6f6f6f6f6f6f6f6f6f685846321e090000000000000000000000000000000000000000051a2f44596e83989b9b9b9b9b9b9b9b96826c57422d180400000000000000000000001f344a5f748ba0b5cbdadaccb7a18c76604b36210b00152a3f546a8095abc0d5dad8c3ad98836c57422c17001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00000000000000000000000000000000000000000000000011263a4e63778ba0b4c8dcd5c1ac97836e5a4531394d62768ba0b4c9ddd4c0ac97836f5a46321e0900001f344a5f748ba0b5cbe0f5f1e4dad5d4d4d4d4d4d4d4d4d4d4d4d4d4d4c0ab95806a543f2a15001f344a5f748ba0b5c9c9c9c9c9c9c9c9c9cbd1dcebead5c0ab95806a543f2a1500000000000000000003192e43586d8397acc1d6dac6b19c87725d48331e0900182b3d4f61738597a9bbcdbdab99877462504b5d6f8294a6b8cac2b09e8c7a685644321f0b000000000000000000000b1825303c46505860666c7073747473716e69635c544b41362b1e11040000000000000000000000000000000a1825303c47505960676c7073747473726f6a645d554c42372b1f120400000000000000000000000000000003101c28333d4750575d63676a6b6b6b6966615c554d443a3024180b0000000000000000000000000000000000000f24394d627786868686868686868686836f5a442f31465b70848686868686868686868675614c37220d00000000000000000000000000000000000000000a1f33485d72879cb0b0b0b0b0b0b0af9a86705b46311c0700000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000000b1f33485c708599adc1d6dbc6b29d89745f4b363e53677c91a5bacee2ceb9a5917c6854402b170300001f344a5f748ba0b5cbe0f4e3d3c7c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfab95806a543f2a15001f344a5f748ba0b4b4b4b4b4b4b4b4b4b4b6bfcdddead5c0ab95806a543f2a15000000000000000000081d32475c70869bb0c5d9d7c2ad98836e59442f1a05000e2032445667798c9eb0c1c8b6a492806d5b56687a8d9fb1c3c8b6a592826e5d4b39271502000000000000000000000007131f29333d454c52575b5e5f5f5e5c59554f4841382e24190d01000000000000000000000000000000000007131f2a343d454c52575b5e5f5f5e5c5a555049423930251a0e010000000000000000000000000000000413202d3945505a636b72777c808282827d7b76706960574d4136291c0e000000000000000000000000000000000012273c51667b909b9b9b9b9b9b9b9b9b87725c473234495e73899b9b9b9b9b9b9b9b9b8f79644f3a261100000000000000000000000000000000000000000e23384c61768ba0b5c5c5c5c5c5c5b39e89745f4a35200c00000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f344a5f748ba0b5cbdfe2cdb8a38d77624c37220d00000000000000000000000000000000000000000000000004192d41556a7d93a7bbcfe0ccb7a28e7965503c43586d8296abbfd4dcc7b39f8b76624e3925110000001f344a5f748ba0b5cbe0ead7c5b5aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a995806a543f2a15001f344a5f748b9f9f9f9f9f9f9f9f9f9f9fa2afc0d3e7d5c0ab95806a543f2a150000000000000000000c21364b5f748a9fb3c8ddd3bea994806a55402b160100021426384a5c6e8092a4b6c8c1af9d8b786661738698aabccebdab99877563513f2d1b0900000000000000000000000000010c17202931383e4246484a4a494744403b342d251b12070000000000000000000000000000000000000000010c17212a31383e4246484a4a494745403b352e261d130800000000000000000000000000000000041423313e4b57626d7680878d919497979694908b857c736a5f53473a2c1d0e00000000000000000000000000000000162b4054697d94a9b0b0b0b0b0b0b09f8a745f4b35374c61768ca1b0b0b0b0b0b0b0a7927c68533e2914000000000000000000000000000000000000000012273c51657a8fa4b9cedadadadaccb7a28d78634e39251000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001f34495e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000000012263b4f63778ca1b5c9ddd1bda894806a5541495d72879bb0c5d9d5c1ad9984705b47331e0a0000001f344a5f748ba0b5cbe0e3cfbaa7989494949494949494949494949494949494806a543f2a15001f344a5f7489898989898989898989898991a4b9cee3d5c0ab95806a543f2a150000000000000000001025394e63788da2b7cce1cfbaa5907b66513c2712000000091b2d3f5163758799aabcccbaa89684716c8091a3b5c7c3b19f8d7b69584534221000000000000000000000000000000000040d151d23292d3133343434322f2b2620191108000000000000000000000000000000000000000000000000040d161d24292d313334343432302c27211a120a000000000000000000000000000000000004142332414f5c6874808a939aa1a6a9acacaba9a59f9990877c7064584a3b2c1d0d000000000000000000000000000003192e43586d8397acc1c5c5c5c5c5b7a28d77634d383a4f64798fa4b9c5c5c5c5c5c0ab96826c57422d180300000000000000000000000000000000000000162b4055697d94a8bdd2e7f0f0e5d0bba6917c67523e291400000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000c2034495d71869aaec2d7d7c2ad9985705b474e63778ca1b5cadecfbba7927d6955412c18040000001f344a5f748ba0b5cbe0e1ccb7a18c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7b68543f2a14001e32475a6c7373737373737373737373778da3b8cde2d5c0ab95806a543f2a1500000000000000000014283d52677c91a6bbd0e0cbb6a18c77624d38240f000000000f21334557697b8d9fb1c3c5b3a18f7c778a9caec0c9b8a69482705e4c3a28160500000000000000000000000000000000000002090f14191c1e1f1f1f1d1a17120c050000000000000000000000000000000000000000000000000000000002090f14191c1e1f1f1f1d1b17120d060000000000000000000000000000000000000011223241505f6d7a86929da6afb5bbbfc1c1c0beb9b4aca3998f837568594a3b2b1b0a00000000000000000000000000081d32475c70869bb0c5dadadadacfbaa5907a66503b3d52677c92a7bcd1dadadad8c3ae99856f5a45311c07000000000000000000000000000000000000051a2f44596e8398adc1d6ebffffe9d4bfaa96826b57422d1803000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000000000000000000061a2e42566a8094a8bcd0dcc7b39f8a75614c54687c92a6bbcfddc9b4a08c77634f3a2612000000001f344a5f748ba0b5cbe0e1ccb7a18c7668686868686868686868686868686868685d4c39251100182b3d4e5a5e5e5e5e5e5e5e5e5e5e62778da3b8cde2d5c0ab95806a543f2a15000000000000000000172c41566b8095aabfd4dcc7b29d88735e4a35200b000000000416283a4c5d6f8294a6b7c9beac9a888395a7b9cbbeac9a89766452412f1d0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1e2f40505f6e7d8b98a4afb9c2cacfd3d6d6d5d3cec8c0b6aca0948677685949392817050000000000000000000000000c21364b5f748a9fb4c8ddf0f0e7d2bda8937d68533f40556a8095aabfd4e9f0f0dcc7b29d88735e49341f0a0000000000000000000000000000000000000a1f33485d72879cb1c6daefffffedd8c3ae9a85705b46311c07000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000000013273c5064788da1b6cadecdb9a48f7a6652596d8397acc0d5d6c2ae9a86715d4834200c000000001f344a5f748ba0b5cbe0e1ccb7a18c7660535353535353535353535353535353534c3f2f1d0a000e20303d464848484848484848484c62778da3b8cde2d5c0ab95806a543f2a150000000000000000061b30455a6f8499aec3d8d8c3ae9a856f5a46311c0700000000000b1c2e40526476889aacbec9b7a59492a1b2c5c5b3a18f7c6b594735231100000000000000000000000000000000000000000000040a0e111415151513110d090300000000000000000000000000000000000000000000000000000000000000060b0f121415151513110d080300000000000000000000000000000000000007192b3c4d5e6e7d8d9ba9b5c1ccd6dee4e8ebeceae7e3dcd3c9beb1a49687776757463523110000000000000000000000000f24394e63788da2b7cce1f6ffead5c0ab96826b574143586d8398adc2d7ecfff4dfcbb6a18c76614d38230e0000000000000000000000000000000000000e23384c61768ba0b5cadff3fffff1dcc7b39e89745f4a35200b000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead7c2ad98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000000000000000000000d2135495e72879bafc3d8d2beaa95806c575f73889db1c6dad0bca793806a56422e1905000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e392f211100000212202b323333333333333333374c62778da3b8cde2d5c0ab95806a543f2a1500000000000000000a1f34495d72889db2c6dbd4c0ab96826c57422d180300000000000011233547596a7c8fa1b3c5c2b2a7a6afbecbb9a79583715f4d3c29180600000000000000000000000000000000000000020b12191e2326292a2a2a2826221d1811090100000000000000000000000000000000000000000000000000040c141a1f2427292a2a2a2826221d17110900000000000000000000000000000000122436485a6b7b8c9cabb9c6d3dee9e4ded9d7d6d7dae0e7e6dbcfc2b4a59686756452402e1c0a000000000000000000000013283d52677b91a6bbd0e5f9ffedd8c3ae99846f5a44465b70869bb0c5daeffff8e3ceb9a48f7965503b261200000000000000000000000000000000000012273c51657a8fa4b9cee3f8fffff5e0ccb7a28d77634e39240f000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56412c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000000000061b2f43576b8095a9bdd1d8c4af9a86715d64788ea2b7cbdecab5a18d7864503b271300000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b362929292929292929292929292928251d1103000000020e171d1e1e1e1e1e1e1e22374c62778da3b8cde2d5c0ab95806a543f2a1500000000000000000e23384c61768ca0b5cadfd1bca7927c68533e2914000000000000000617293b4d5f718395a7b9cbc4bcbbc1cdbfad9c8a77665442301e0c000000000000000000000000000000000000010c151e262d33383b3e3f3f3f3e3b37322c251d140a00000000000000000000000000000000000000000000040e1820282e34393c3e3f3f3f3d3b37322b241c130900000000000000000000000000081b2e41536677899aaabac9d7e4e5dad1c9c4c1c1c2c6ccd4dde9e0d2c3b4a393826f5e4c3926130000000000000000000000172c40556a8094a9bed3e8fdfff0dbc6b19c87725c47495e73899eb3c8ddf2ffffe7d2bda8937d69543f2a15000000000000000000000000000000000000172b4055697d94a8bdd2e7fcfffffae4d0bba6917c67523d2814000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000000000000000000000014283d5165798ea2b7cbddc9b5a08b7762697d93a7bcd1d8c3af9b87725d4935210c00000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36211313131313131313131313131310090000000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000000000012263b5065798fa4b9cee2cdb8a38e78644f3a251000000000000000000c1e30425466778a9caebfd1d1d0d5c6b4a2907d6c5a4836251301000000000000000000000000000000000008131e28313a41484d505354545453504c46403930271d1106000000000000000000000000000000000000000b16212b343c43494d515354545453504b46403830261c110500000000000000000000001225384b5e708395a6b7c8d8e7e1d4c8beb5afacacadb1b8c1cbd8e6e1d2c1b19f8d7b685643301c09000000000000000000041a2f44596e8398adc2d7ecfffff3dec9b49f8a745f4b4c61768ca1b6cbe0f5ffffead5c0ac97826c57422e190400000000000000000000000000000000061b2f44596e8398adc1d6ebffffffffe8d4bfaa95806b56412d18030000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c3722131313110f0b070100000000000000000000000000000000000000000e22364a5f73889cb0c4d9cebaa5917c686f8498adc1d6d1bda995806b57432f1a0600000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00000000000000000000000000000000000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000000152a3f54697d93a8bdd2dec9b49f8a75604b36210d000000000000000001132436485a6c7d90a2b4c6d8deccbaa9978572604f3d2b190700000000000000000000000000000000000d1925313b454e555c6165686a6a6a6865605b544c43392f23170a0000000000000000000000000000000003101c28333e4750575d6266686a6a6a6864605b544c43392e22160900000000000000000006192d4154677a8ea0b2c4d5e6e0d1c3b6aba29b9797989ca4aebac8d7e6dfcebcab9886725f4c382411000000000000000000091e33475c71879cb1c6daeffffff6e1ccb7a28d77624d4f64798fa3b8cee3f8ffffeed9c4af9a86705b46311c07000000000000000000000000000000000a1f34495d72889cb1c6dbefffffffffedd8c3ae99856f5a46311c070000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37292929282624201b150f07000000000000000000000000000000000000071c3044586c8295aabed2d4bfab97826d74899eb2c7dbcbb7a28e7965513d28140000000000001f344a5f74899fb4c9dee1ccb7a18c76604b36210b00000000000000000000000000000000000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000003192e43586d8397acc1d6dac5b09b87715c47321e0900000000000000000007192b3d4f61728597a9bbccd3c1af9d8b7967554331200d0000000000000000000000000000000002101d2a37434e58616970767a7d8080807c79756f6860564c4135281b0d00000000000000000000000000000413212e3a45505a636b71777b7d8080807c79756f675f564b4034271a0c00000000000000000c2135495d708598abbed0e2e4d2c2b3a5988e8682828388919caab9c8d9eadac8b5a28f7b6754402b170300000000000000000c21364b60758b9fb4c9def3fffffbe4cfbaa5907a655052677c91a7bbd0e6fbfffff2ddc8b39e89745f4a35200b000000000000000000000000000000000e23384d61768ca0b5cadff4fffffffff1dcc7b29e89735f4a35200b0000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c3e3e3e3e3d3b39353029221a1108000000000000000000000000000000000015293e52667a8fa3b7ccdac5b09c8872798fa3b8ccd9c4b09c88735f4a36220e0000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000000000000000000000000000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000000000000081d32475c70869bb0c5d9d6c1ac97836d58442f1a05000000000000000000000d2031435567798b9dafc1c7b5a391806d5c4a382614020000000000000000000000000000000211202e3b4854606a757d858b9093959595938f8a847c73695e5246392b1d0e000000000000000000000000041423313e4b57636d7680868c9093959594928f8a837b72685d5145382a1b0c0000000000000012273b5064788ca0b4c7daead8c6b5a495877b726c6b6d747d8c9baabbcddfe5d2beab97836f5b46321d09000000000000000010253a4f64788ea3b8cde2f7ffffffe7d2bda8937d6853556a8094a9bfd3e9fefffff5e0cbb6a28d77624d39240f0000000000000000000000000000000012273c51667a90a5b9cee3f8f5f1f2f6f5e0cbb6a28d77634e39240f0000000000000000001f344a5f74899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d7762535353535352504e4a443e362e241a0f030000000000000000000000000000000f23374b6074889cb1c5d9cab6a28d788094a9bdd2d2beaa95826d5844301c070000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0a0a0a0a0a0a0a0a0a0a0a0a07010000000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000000000c21364b5f748a9fb3c8ddd2bea8947d6954402b160100000000000000000000021426384a5c6e8092a4b5bcaa98867462503e2c1a090000000000000000000000000000000010202f3e4c5966727d8891999fa5a8aaabaaa7a39e978f867b706457493b2c1c0d0000000000000000000003132332414f5c6975808a939aa1a5a8ababa9a7a39e978f867a6f635648392a1b0b000000000000172c40556a7d93a7bccfe3e1cebba9978676695e585659616d7c8d9dafc2d5e8dac6b29e8a75604c37230e000000000000000014283d52677c92a6bbd0e5faffffffead5c0ab96826b56586d8397acc2d7ebfffffff9e4cfbaa5907b66513c271200000000000000000000000000000000172b40556a8094a9bed2e7eae1dcdce1eae4d0bba6917b67523d28130000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d776868686868686766635e58524a41372c2115080000000000000000000000000000081c3145596d8296aabfd3d0bba7927d859aaec2d7ccb7a38f7a66523e2915010000000000001e33485e73899fb4c9dee1ccb7a18c76604b36211f1f1f1f1f1f1f1f1f1f1f1f1f1c150a00000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000000001025394e63788da2b7cce1cebaa5907a66513c2712000000000000000000000000091a2c3e5062748698aab09e8d7a68564433210f000000000000000000000000000000000e1e2e3e4d5c6a7784909ba4adb4b9bdbfc0bfbcb8b3aba3998e827467584a3a2b1a0a00000000000000000011213141505f6d7a87929da6afb5babdc0c0bfbcb8b2aba2988d82736657483929190800000000001b3045596e8498adc2d6ebd9c5b29e8c7968584c4340454f5e6e8092a5b9cde1e1cdb8a48f7965503b27120000000000000000172c41566b8095aabfd4e9fefcfafdedd8c3ae99846e595b70869bafc4daeffbf9fbffe8d3bea9947d6955402b16010000000000000000000000000000061b2f44596e8398adc2d7e6d8cdc7c7ced9e7d3bfaa95806b56412c180300000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b09152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d7d7d7d7d7d7d7d7c7b77736d655d544a3e3226180a0000000000000000000000000001162a3e53677b8fa4b8ccd5c1ac98838a9fb4c8dac5b19d8974604b37230f000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36343434343434343434343434343431281b0c000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000014283d52677c91a6bbd0e0cbb6a18c77624d38230e000000000000000000000000000f21334557687a8d9d9f93826f5d4b39271504000000000000000000000000000000091b2c3c4c5c6b798895a1adb7c0c8ced2d4d5d4d1cdc7bfb5ab9f92857668584838271605000000000000000c1d2f3f4f5f6e7d8b98a4b0bac2c9cfd3d5d5d4d1cdc6beb5aa9e92847566574737261503000000001d32475c72879cb1c6dbe8d3bfaa96836e5c4a3b2f2b32405063758a9eb2c7dbe7d2bda8937d69543f2a1500000000000000051b30455a6f8499aec2d7ecece7e5e8efdbc6b19c87715c5e73889db3c7dcede6e4e6ecebd6c1ac97836d58432e1a0500000000000000000000000000000a1f34495d72889cb1c6dbd8c8bab2b3bbc9dad8c3ae99846f5a45311c0700000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36211e1e1e2a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9dee5d0bca8989494949494949493908d88827970665c504436281a0b000000000000000000000000000f24384c6075899db1c6dac6b29e8d91a4b9cdd3bfab97836d5945311c08000000000000001e33485e73899fb4c9dee1ccb7a18c76604b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392a19060000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000000000000172c41566b8095aabfd4dcc7b29d88735e49341f0b00000000000000000000000000041628394b5d6f80898b85756351402e1c0a00000000000000000000000000000003152738495a6a7a8a98a6b3bfcad4dce3e7e9e9e9e6e1dbd2c8bdb0a39587766656453422100000000000000618293b4c5d6d7d8d9ba9b6c2ccd6dee4e8eaeae9e6e1dad2c7bcb0a294857565554432210f000000001f34495e73899fb4c9d4d4d0bba6917b67533f2c1d162233465a6f8498adc2d7ead5c0ab96826b56412c1700000000000000091e33485d72889cb1c6dbe4d9d2d0d4dcdec9b49f8a745f61768ca0b5cbdfdad2cfd1d8e4dac5b09b87715c47321d0800000000000000000000000000000e23384d61768ca0b5cadfcfbbaa9e9eabbcd0dcc7b29d88735e4a35200b00000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3633333333333f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9deebd8c6b6aca9a9a9a9a9a9a9a8a5a29c958d84796e6154463829190a000000000000000000000000091d31465a6e8397abbfd4cebbaba1a3afc1d4cdb9a4907b67533f2a1602000000000000001e33485e73899fb4c9dee1ccb7a18c76605f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574836220f0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000000061b30455a6f8499aec3d8d8c3ae99846f5a45301b0700000000000000000000000000000a1c2e4052616d737471675846342210000000000000000000000000000000000e2133445667788999a8b6c4d0dce7e3dcd7d4d4d5d8dee5e5dacec1b3a49585736351402d1b08000000000010233547596a7b8c9cabb9c7d3dfe9e4ddd8d6d5d7dae0e7e4dacdc0b2a394837261503e2c1a070000001f344a5f748ba0b5bfbfbfbfb8a38e78634e39241004172c40566b8095abc0d5ead7c2ad98836c57422c17000000000000000d22374c61768ba0b5cadfd4c6bdbbc0cad9ccb7a28d776264798fa3b8ced7c8beb9bcc6d4dec9b49f8a745f4b36210c000000000000000000000000000012273c51667a90a5b9cedec9b4a08c8da0b5cadfcbb6a28d77634e39240f00000000000000001e33485e73899fb4c9dee1ccb7a18c76604b48484848484848546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9def4e4d4c8c0bfbfbfbfbfbfbfbdbab6b0a9a0968b807264564737281706000000000000000000000002162b3f53687c90a5b9cdd9c9bcb6b7c0cddbc6b29e8a75614d38241000000000000000001e33485e73899fb4c9dee1ccb7a18c76747474747474747474747474747474747465523d28140000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000a1f34495d72889db2c6dbd4bfaa96826b56412d18030000000000000000000000000000001122344350595e5f5d54493a28170500000000000000000000000000000005182b3e5062738596a7b7c6d4e1e4d8cfc7c2bfbfc0c3c9d1dbe7dfd1c2b3a392826f5d4b38251200000000071a2d405264768899aabac9d7e5e4d9d0c9c4c1c0c2c6ccd4deeaded0c1b1a191806d5c493724110000001f344a5f748ba0a9a9a9a9a9a9a38d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c170000000000000011253a4f64798fa3b8cddac7b6a9a5adbbcdcfbaa5907a65677c91a7bbd0cbb9aba4a9b6c7daccb7a28d78634e39240f0000000000000000000000000000172b40556a8094a9bed2dac6b19c87889cb1c6dbcfbaa6917b67523d281300000000000000001e33485e73899fb4c9dee1ccb7a18c76605e5e5e5e5e5e5e5e5e6a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9def4f2e5dbd5d4d4d4d4d4d4d3d2cfcbc4bcb3a99d9083746555453524130100000000000000000000001024394d61758a9eb2c7dbdad0cbccd2ddd4c0ac97836f5b46321e0900000000000000001e33485e73899fb4c9dee2cdb8a3908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a150000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000000e23384c61768ca0b5cadfd0bba6927c68533e291400000000000000000000000000000000051625333d45494a4841372b1c0b000000000000000000000000000000000e2135485a6d8091a3b4c4d4e4e0d2c6bcb3adaaa9abafb5bec9d6e4e0d1c1b09e8d7a6754412e1b080000001023364a5c6f8294a6b7c8d8e7e0d2c7bcb4afacabadb1b8c1cdd9e8dfcfbfae9d8b796653402d1a0600001f344a5f748b94949494949494948d77624c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c170000000000000014293e53687c92a7bcd1d3beaa98909db0c5d2bda8937d686a8094a9bfd3c3af9b8f98abbfd4d0bba6917c67523d281300000000000000000000000000061b2f44596e8398adc2d7d7c2ad98838499aec2d7d3bfaa95806b56412c1702000000000000001e33485e73899fb4c9dee1ccb7a18c7673737373737373737373738095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9def4fff7efeae9e9e9e9e9e9e9e7e4dfd8d0c6baaea1928473635342301f0d00000000000000000000000a1e32465b6f8498acc0d4e9e4e0e1e6e2cebaa5917c6854402b170300000000000000001e33485e73899fb4c9dee6d3c0aea2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a094806a543f2a150000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000000000012263b5065798fa4b9cee1ccb8a38e78644f3a251000000000000000000000000000000000000715212a313434332e251a0d0000000000000000000000000000000002162a3e5164778a9dafc1d2e2dfd0c2b5a99f999594969aa2acb8c6d5e4decdbcaa9885715e4b372310000004182b3f5366798c9fb1c3d4e5dfd0c2b5a9a09a9795989da5afbbcad9e8ddccbaa89683705d4936220e00001f34495e737d7d7d7d7d7d7d7d7d7d76614c37220d00152a3f546a8095abc0d5ead8c3ad98836c57422c1700000000000000182d41576b8296abc0d5cfbaa5908397acc1d5c0ab96826b6d8397acc2d5c0ab968292a7bcd1d3bfaa95806a55412c17020000000000000000000000000a1f34495d72889cb1c6dbd3bea994808095aabfd4d7c2ae99846f5a45301b07000000000000001e33485e73899fb4c9dee2cdb8a3908989898989898989898989898998acc1d6ebd6c1ac97826b56402b16001e33485e73899fb4c9def4f5e8dfd9d8d8d8d8d8d8d8d9dce2e9e3d8ccbfb0a1928270604e3c2a18060000000000000000000003172c4054687c91a6bacee2f6f5f6f0dcc7b39f8b76624e3925110000000000000000001e33485e73899fb4c9deefddcdbfb7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a9947d68533e29130000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000000152a3f54697d93a8bdd2dec9b49f8a74604b36210c000000000000000000000000000000000000040e161c1f1f1e1912080000000000000000000000000000000000091d3146596d8294a7baccdee3d2c1b2a4978c84807d82868f9aa8b7c6d7e8d9c7b4a18e7a66533f2b1602000a1e33475b6f8396a9bccee1e3d2c1b2a4978d8682808389929eacbbcadbe9d8c5b3a08d7965513e291501001b3043556368686868686868686868655846331e0a00152a3f546a8095abc0d5ead8c3ad98836c57422c17000000000000061b30455a6f8599aec3d8ccb7a28d8094a9bed3c3ae99846e70869aafc4d2bda8937d8fa4b9ced7c2ad98846e59442f1a050000000000000000000000000e23384d61768ca0b5cadfcfbaa5907b7c91a6bbd0dbc7b29d88735e4934200b000000000000001e33485e73899fb4c9dee6d2bfaea19f9f9f9f9f9f9f9f9f9f9f9f9fa6b5c7dbecd6c1ac97826b56402b16001e33485e73899fb4c9def4e6d7cbc4c3c3c3c3c3c3c3c4c7ced6e0e9ddcebfb0a08f7d6b5a4735231000000000000000000000001125394e62768b9fb3c8dcf0ffffead5c1ad9985705b47331f0a0000000000000000001e33485e73899fb4c9def4ebddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbbfa9947d68533e29130000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000003192e43586d8397acc1d6dac5b09b86715c47321d080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f24384c6075899db1c4d7e9d7c5b4a3948679706a686b727c8a99a8b9cbdde4d1beaa96836e5a45311c08001025394d62768a9eb2c5d8ead7c5b4a394867a716c6b6d75808e9dacbdcfe1e2cfbca995826d5844301b070014263746505353535353535353535351483a29170300152a3f546a8095abc0d5ead8c3ad98836c57422c170000000000000a1f34495e73889db2c7dcc9b49f8b7b91a6bbd0c6b19c877173889db2c7cfbaa590798ca1b6cbdbc6b19c87725d48331e0900000000000000000000000013273c51667a90a5b9cee0ccb7a28d77788ea3b8cce0cbb6a18c77624d39240f000000000000001e33485e73899fb4c9deeedcccbeb5b4b4b4b4b4b4b4b4b4b4b4b4b4b8c3d3e4ecd6c1ac97826b56402b16001e33485e73899fb4c9deeddac8b9afadadadadadadadafb3bac3cfdbeaddcebead9b897764523f2c1905000000000000000000000b1f33475b708599adc1d6ebffffe4cfbba7927d6955412d18040000000000000000001e33485e73899fb4c9def4faeee6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d4bfa9947d68533e29130000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000081d32475c70869bb0c5d9d6c1ac97836d58432e190500000000000000050e13151515151515151515130d04070f14151515151515151515120c02000000000000000014293d52667b90a4b8cce0e1cdbaa8968675685c5553575f6b7a8a9baec1d4e7d9c5b19d89745f4b36210d00152a3e53687c91a5b9cde1e1cebba8968675685d575659626f7d8fa0b2c4d7ead8c4b09c88735e4a35200c00091928343c3e3e3e3e3e3e3e3e3e3e3d362a1c0c0000152a3f546a8095abc0d5ead8c3ad98836c57422c170000000000000e23384c61768ca0b5cadbc6b19c88788ea3b8cdc9b49f8974768ba0b5caccb7a28d77899eb3c8ddc9b4a08b75604b37220d000000000000000000000000172c40556a8094a9bed2ddc8b39e8974748a9fb4c9decfbaa5907b66523d2813000000000000001e33485e73899fb4c9def4eadcd1cac9c9c9c9c9c9c9c9c9c9c9c9c9ccd5e1f1ecd6c1ac97826b56402b16001e33485e73889db3c8dde5d1bdaa9c98989898989898999fa6b1bdccdbeadbcab8a694826f5c4835210e00000000000000000000071c3044586c8296abc0d5eaffffe2cdb8a38e7965503d2914000000000000000000001e33485e73899fb4c9def4faeee6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d4bfa9947d68533e29130000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000000000c21364b60748a9fb4c8ddd2bda8937d69543f2a15010000000000000b1822282a2a2a2a2a2a2a2a2a2720161a23292a2a2a2a2a2a2a2a2a271f140600000000000000182d42576b8295aabfd3e7d9c5b19e8b7867574a413e434d5c6c7d91a4b7cce0e0ccb7a38e79644f3a251000192e43586c8296abbfd4e8d9c5b29e8b7867574a4240455160708295a8bbcfe3dfcbb6a28d78634e39240f00000f202e383f4042444647484a4c4e4c443626170e0e1a2c41566b8095abc0d5ead7c2ad98836c57422c1700000000000011263b5065798fa4b9ced8c3ae9984768ba0b5caccb7a28d77788fa3b8cdc9b49f8974869bb0c5dacdb8a38f79644f3a25100000000000000000000000061b3045596e8498adc2d7d9c4af9a867071879bb0c5dad3beaa95806b56412c17020000000000001e33485e73899fb4c9def4f9ede4dfdededededededededededededee1e8f2ffecd6c1ac97826b56402b16001d32475c72889db3c8dde3cdb8a38e83838383838383858a94a0aebdccdce8d6c4b19f8c7764513d2915010000000000000000000f23364b5f73889cb0c4d8edffffe5d1bca894806c58432f1b070000000000000000001e33485e73899fb4c9def4ebddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbbfa9947d68533e29130000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000010253a4e63788ea2b7cce1ceb9a48f7a65503b2712000000000000091a29353d3f3f3f3f3f3f3f3f3f3c33262b373e3f3f3f3f3f3f3f3f3f3b322415030000000000001b30455a6f8599aec3d8e8d3bfaa96826e5b49392d29303e4e6174889cb1c6dae5d1bca7927c68533d2813001c31465b70869aafc4d9e8d4bfab96836e5b49392e2b33425365778c9fb4c8dce4d0bba6917b67523d281300071a2d3e4b535657595b5c5e5f6163615443352923232a37495c708499aec2d7ead5c0ab96826b56402c16000000000000152a3f54687d93a8bdd2d5c0ab978272889db2c7cfbaa590797c91a6bbd0c5b09b87718398adc2d7d1bca7927c68533e291400000000000000000000000a1f34495d72889cb1c6dbd5c0ab97826c6d8397acc1d6d7c2ae99846f5a45301b060000000000001e33485e73899fb4c9def4fcf1e8e3e2e2e2e2e2e2e2e2e2e2e2e2e2e5ebf6ffecd6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d776c6c6c6c6c6c6f76828f9eaebed0e2e1cebba894806c5844301c0700000000000000000115293e5266798ea2b7cbdff3f5f6ebd7c3af9b87725e4a36220e0000000000000000001e33485e73899fb4c9deefddcdbfb7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a9947d68533e29130000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000014283d52677c91a6bbd0dfcab5a18c76614d38230e00000000000014263847515454545454545454545044343b49535454545454545454544e4232200d0000000000001d32475c72879cb1c6dbe4cfbaa5907b66523e2c1b14203145596d8397acc2d7e9d4bfaa95806a543f2a15001e33485e73889db3c7dce5d0bba6917c67533f2c1c162435485c70859aaec3d8e8d3bea9947d69543f2a15000e22364a5c686b6c6e707273747677726152463d38383d475566788b9fb3c7dce6d1bda8937d68533f2914000000000000182d42576c8297abc0d5d2bda8937d6f869aafc4d2bda8937d8094a9bed3c2ad98846e8095aabfd4d4bfab96826b56412c1803000000000000000000000e23384d62778ca1b5cadfd2bda8937d686a8094a9bed3dbc6b29d88735e49341f0b0000000000001e33485e73899fb4c9def4ecdfd4cecdcdcdcdcdcdcdcdcdcdcdcdcdd0d8e4f3ecd6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d776257575757575b64708090a1b3c5d8ead7c4b09c88735f4a36210d0000000000000000081c3044586d8295a9bdd1e6e4e0e1e6decab6a28e7965513d29150100000000000000001e33485e73899fb4c9dee6d3c0aea2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937d68533e29130000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000000172c41566b8095aabfd4dbc6b29d88725d49341f0a0000000000001b304356646a6a6a6a6a6a6a6a6a62523f4659666a6a6a6a6a6a6a6a6960503c28130000000000001d32475c72889db3c8dde2cdb8a38d78634e38240f02162b40556a8095abc0d5ead5c0ab96826b56402b16001f344a5f74899fb4c9dee3cdb8a38f78634e39241006192d41566b8296abc0d5ead5c0ab95806b56402b160011263b5065798283848687898b8c8d80706359514d4d515965738495a8bbcee2e0ccb7a38e7965503b26110000000000071c31465b70869aafc4d9cfbaa5907b6c8297acc1d5c0ab96828397acc1d4bfab95806b7c92a7bcd1d8c3ae99846f5a45301b060000000000000000000013273c51667b90a5bacee3ceb9a48f7965667b90a5bacfdfcbb6a18c77624d38240f0000000000001e33485e73899fb4c9def0decec1b9b8b8b8b8b8b8b8b8b8b8b8b8b8bcc7d5e6ecd6c1ac97826b56402b16001d32475c72889db3c8dde2cdb8a38d77624c42424242475361718395a8bbcee2dfcbb7a28e7964503b261200000000000000000f23374b5f73889cb0c4d8dad0cbccd2ddd1bda995826c5844301c0700000000000000001e33485e73899fb4c9dee2cdb8a3908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c27120000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000000061b30455a6f8499aec3d8d8c3ae99846f5a45301b060000000000001f34495e738080808080808080806e59444c617680808080808080807d6b56412c170200000000001e33485e73899eb3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0d5d6d6c1ac97826b56402b160011263b50667b9198999b9c9ea0a19e8f82756c656262656c768392a2b3c5d7ead8c4b19c88745f4b36220d00000000000b2034495e73899eb3c7dccdb8a38d78697d94a9bed3c3ae9984869aafc4d2bca7937c68798fa4b9cedcc7b29d88725d49341f0a00000000000000000000172c40556a8094a9bed3dfcab5a08b766163778da2b6cbe0cfbaa5907b66513d28130000000000001e33485e73899fb4c9dee7d4c1b0a5a3a3a3a3a3a3a3a3a3a3a3a3a3a9b7c9dcead5c0ab95806b56402b16001d32475c72889db3c8dde2cdb8a38d77624c372c2c2d35435466788c9fb2c6dbe5d1bca8937d69543f2b160000000000000001162a3e52667a8fa3b7cbd9c9bcb6b7c0cdd8c4b09c88735f4b36220e00000000000000001e33485e73899fb4c9dee1ccb7a18c76747474747474747474747474747474747363503b26110000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000a1f34495e73889db2c7dbd4bfaa95806b56412c17020000000000001f344a5f73899595959595959586705b464c62778c95959595959595836d58432e180300000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abc0c1c1c1c1ac97826b56402b160010253a4f647990a5afb0b1b3b5b7ae9f9389807a77777a808994a1b0c0d0e2e1cebca895826d5945311c0800000000000e23384d62778ca1b6cbdfcab4a08b75667b91a6bbd0c6b19c87889db2c7ceb9a48f7965768ca1b6cbdfcab5a08c76614c37220d000000000000000000061b3045596e8498adc2d7dbc6b19c88725d5f74899eb3c8ddd3bea994806a55412c170200000000001e33485e73899fb4c9dee2cdb8a4928d8d8d8d8d8d8d8d8d8d8d8d8d99adc1d6ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c372217182536495c6f8397acc0d5e9d6c1ac97836d58432e1900000000000000081c3145596d8295aabed2cebbaba1a3afc1d4cbb7a28e7965513e291501000000000000001e33485e73899fb4c9dee1ccb7a18c76605f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f564634200c0000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000000e23384d61768ca1b5cadfd0bba6917c67523d2814000000000000001e33485d72889dababababab9d88725c474b60758ba0ababababab99856f5a442f1a0500000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a8095abacacacacacac97826b56402b16000f243a4f64788fa4b9c5c7c8caccbdb0a59c948f8d8d8f959ca6b2bfcedee6d5c3b19f8c7865513e2a1601000000000012273c51667a90a5bacfdcc7b29c887263788ea3b8cdc9b49f8a8ba0b5cacbb6a18c776273899eb3c8ddceb9a48f7965503b26110000000000000000000a1f34495d72889cb1c6dbd7c2ae99846f5a5b70869aafc4d9d7c2ad99846f5a45301b0600000000001e33485e73899fb4c9dee1ccb7a18c7777777777777777777777778095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d08192c4054687c92a6bbd0e5dac4af9b86705b46301b000000000000000f23374b6074889cb1c4d9c6b29e8d91a4b9cdd1bda995826d5844301c08000000000000001e33485e73899fb4c9dee1ccb7a18c76604b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44382817040000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000012273b50657a8fa4b9cee1ccb7a28d78634e392510000000000000001c31465b70879cb1c0c0c0b49f89735e494a5f73899fb4c0c0c0b19c87705b46311c0700000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f546a80959797979797979797826b56402b16000e23384e63788ea3b8cddcdddfdbcec2b8afa9a4a3a3a4a9afb9c3d0dde8d8c8b7a694826f5c4936220e000000000000152a3f54697d93a8bdd2d9c4af99856f60758ba0b4cacdb9a79a9ba8bbcec8b39f89745f70869bb0c5dad2bda8937d68533f2a150000000000000000000e23384d62778ca1b5cadfd4bfaa95806b56576c8297acc0d5dbc6b29d88735e49341f0a00000000001e33485e73899fb4c9dee1ccb7a18c76626262626262626262626a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d0011253a4f64788ea3b8cde2dcc7b29d88725c47321d00000000000002162a3e52667a8fa3b7ccd5c0ac97838a9fb3c7d8c4b09c88735f4b37230f000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36343434343434343434343434343430271a0b000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000000152a3f54697d93a8bdd2ddc8b39f89745f4b36210c000000000000001a2f445a6f869aafc4d5cbb5a08b76604b485d72889db3c8d5c8b39d88725d48331e0900000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00152a3f54697d828282828282828282806b56402b16000d22374c62778da3b8cde2f2f4ecdfd5cbc3bdb9b8b8b9bdc4ccd5e1e6d9cabbaa99887664523f2d1a06000000000002192e43586d8397acc1d6d6c0ac97826c5d72889cb2c7d6c5b7aeafb8c6d7c5b09b87715c6d8398adc2d7d5c0ab97826c57422d1804000000000000000013273c51667b90a5bacee3d0bba6917c675254697d93a8bdd2dfcab5a18c77624d38230e00000000001e33485e73899fb4c9dee1ccb7a18c76604c4c4c4c4c4c4c4c546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d000c21364b60768ca1b6cbe0dec9b49f89735e48331e000000000000091d3145596d8296aabed2cfbba6927d8499adc1d6cbb7a38f7a66523e2a16010000000000001e33485e73899fb4c9dee1ccb7a18c76604b36211f1f1f1f1f1f1f1f1f1f1f1f1f1c140900000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a1500000003192e43586d8397acc1d6d9c4af9b86705c47321d0800000000000000192e43586e8499aec3d8ccb7a28d77624c465b70879cb1c6dbc9b49f8a745f4a341f0a00000000001e33485e73899fb4c9dee2cdb8a38d77634d38230e01162b40556a8095abc0d5ead6c0ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0012263b4e606a6b6b6b6b6b6b6b6b6b6b614f3c2813000c21374c60768ca1b7cce1f6fff9f1e8dfd7d2cfcdcdced2d8dfe8e1d5c8bbac9d8d7b6a5947352310000000000000081d32475c70869bafc4d9d3bea8947d695a6f8599aec3d8d5c9c3c4cad5d7c2ad98846e596a8095aabfd4d9c4af9a86705b46311c070000000000000000172c40556a8094a9bed3e1ccb7a28d78634e5065798fa4b9cee3cebaa5907b66513c271300000000001e33485e73899fb4c9dee1ccb7a18c76604b3737373737373f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d000a1f344a5f748ba0b5cbe0dec9b49f89735e48331e0000000000000f24384c6074899db1c5d9c9b5a18c777d93a7bcd0d2beaa95826d5945311c080000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0a0a0a0a0a0a0a0a0a0a0a0a07010000000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a15000000081d32475c70869bb0c5dad5c0ac97826c58432e190400000000000000172c42576c8297acc1d7ceb9a48f78644f445a6f869bafc4dacbb6a18c76604b36210c00000000001e33485e73899fb4c9dee4cfbaa5907a65513d2a19111e3044586d8397acc1d6e9d4bfaa95806a543f2a15001f344a5f748ba0b5cadfe2cdb8a38d77624c37220d000b1e31424e55565656565656565656564f4232200c000b21364b60768ba0b5cbe0f5f1e6dfdcdee4e7e4e2e2e3e7e9e2d9cfc4b7aa9d8e7d6e5e4d3b2a18060000000000000b20354a5f74899eb3c8ddd0bba5907b66576c8297abc0d5e6ddd8d9dee7d4bfaa95806b56677c92a7bcd1dcc7b39e89735e4934200b00000000000000061b3045596e8498adc2d7ddc8b39f8a745f4b4c61768ca1b5cadfd3bea994806a55402c1702000000001e33485e73899fb4c9dee1ccb7a18c76604b36222222222a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d000c21364b60758ba0b5cbe0dec9b49f89735e48331e000000000002162a3e53677b8fa4b8ccd8c4af9b8671788da2b6cad9c5b19c8874604b37230f0000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00000000000000000000000000000000000000000000000000000000000d22374c62778da3b8cde2d5c0ab95806a543f2a150000000c21364b60748a9fb4c8ddd2bda8937d69543f2a150000000000000000162b40566b8095abc0d5d0bba5907b665043586e8499aec3d8cdb8a38d77634d38230e00000000001e33485e73899fb4c9dee7d2bea995806c5947372a262e3c4e6073889cb0c5dae6d2bda8937d68533e2914001e33485e73899fb4c9dee2cdb8a38d77624c37220d00021323313b40404040404040404040403c32241403000a1f344a5f748ba0b5cadff0e0d3cac7c9d0d6dadddedcd9d4cec6bcb2a69a8d7d6f6050402f1e0c000000000000000f24394e63778da2b7cce1cdb8a38d786354697d93a8bdd2e7f1eeeef2e6d1bca7927c685364798fa4b9cee0cbb6a18c77624d38230e000000000000000a1f34495d72889cb1c6dbdac5b09b86705c47495e73889db2c7dcd7c2ad98846e5945301b06000000001e33485e73899fb4c9dee1ccb7a18c76604b36210d0d152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37220d0712263a4e63788da2b7cce1ddc8b39d88735e48331e0000000000091d3146596d8296aabfd3d2beaa95826c72879cb0c4d9ccb7a38f7a66523e2a160200000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0a0a0a0a0a0a0a0a0a0a0a0a07010000000000000000020303030303030d22374c62778da3b8cde2d5c0ab95806a543f2a1500000010253a4e63788ea2b7cce1ceb9a48f7965503b26110000000000000000152a3f54697d94a9bfd4d1bca7927c675242576c8397acc1d7cfb9a48f79644f3a251000000000001e33485e73899fb4c9deecd8c4af9c89766454473e3b404c5a6b7d90a3b7cbdfe2cdb9a48f7965503b2611001e33485e73899fb4c9dee2cdb8a38d77624c37220d000005141f272b2b2b2b2b2b2b2b2b2b2b282014060000091f34495e73899fb4c9dee4d2c2b6b1b4bcc1c6c8c9c7c4c0bab2aaa095897c6e605142322211000000000000000012273c51667b90a5bacfdfcab5a08b756051667b90a5bacfe4f9fffff9e3ceb9a48f79655061768ca1b6cbe0cfbaa5907a66513c2712000000000000000f23384d62778ca1b5cadfd6c1ac97836d5843455a6f8499aec3d8dbc6b19c88725d49341f0a000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37221d1d21304155697d92a6bbd0e5dbc5b09b87705c47311c00000000001024384c6075899db1c5d9cdb8a48f7a666d8296aabfd3d2beaa96826d5945311d0900000000001e33485e73899fb4c9dee1ccb7a18c76604b36211f1f1f1f1f1f1f1f1f1f1f1f1f1c140900000000000912171919191919191922374c62778da3b8cde2d5c0ab95806a543f2a1500000014283d52677c91a6bbd0dfcab5a08b76614c37230e000000000000000013283d53687c93a8bdd2d3bea9947d695440566b8095abc0d5d0bba6917b66513c271100000000001e33485e73899fb4c9def3dfcbb8a694837265595250545d6978899badbfd3e6dbc7b39f8a75614c37220d001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000020c131616161616161616161616130c03000000061e33485e73889db3c8dddbc7b4a49ca0a8adb1b3b4b2afaba69f968d83776b5e5042322314040000000000000000162b40556a8094a9bed3dcc7b29d88725d4e63778da2b7cce1f6fffff5e0cbb6a18c77624d5e73899eb3c8ddd2bea8947d69543f2a150100000000000013283d51667b90a5bacee3d2bda8937d69543f41576b8296abbfd4dfcab5a18c77624d38230e000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c37323232353e4e5f718598acc0d5e9d7c2ae99846e59442f1a0000000002162b3f53677b90a4b8ccdbc7b29e8a7560677b90a4b9cdd9c5b19d8974604c38241000000000001e33485e73899fb4c9dee1ccb7a18c76604b36343434343434343434343434343430271a0b0000000e1b262c2e2e2e2e2e2e2e2e374c62778da3b8cde2d5c0ab95806a543f2a15000000172c41566b8095aabfd4dbc6b19c88725d48331f0a000000000000000012273c51667b91a7bcd1d5c0ab95806b564054697d94a9bfd4d2bda8937c68533e281300000000001e33485e73899fb4c9def4e8d5c3b1a19183766d6766686f7a8897a7b8cadce7d3c0ac9884705b47321e09001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000001d32475c72889db2c7dcd7c2ad98878d93989c9e9f9d9a97918b837a7065594d40322314050000000000000000031a2f44586d8398adc2d7d9c4af9a856f5a4b60748a9fb4c9def3fffff2ddc8b39e89745f4a5b70869bb0c5dad6c1ac97836d58432e1904000000000000172c41556a8094a9bed3e3ceb9a5907a65513c3e53687c92a7bcd1e3ceb9a5907a66513c2712000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77624c474747474a505c6b7c8fa1b4c8dbe7d2bea995806b56412c1700000000091e32465a6e8397abbfd3d6c1ad98846f5b61758a9fb3c7dcccb8a48f7b67533f2b1602000000001e33485e73899fb4c9dee1ccb7a18c76604b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4438291705000b1c2c39414343434343434343434c62778da3b8cde2d5c0ab95806a543f2a150000061b30455a6f8499aec3d8d7c2ad99846e5945301b06000000000000000010253a4f647990a5bacfd7c2ac97836c574253687c93a8bdd2d4bfa994806a543f2a1500000000001e33485e73899fb4c9def4f2e1cfbfafa19489827c7b7d838d98a6b5c5d6e7dccab7a4907c6855402c1804001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000001c31465b70879cb1c7dcd6c1ac9782787d838789898886827c766f665d53483c2f221405000000000000000000081d32475c71879bb0c5dad6c1ac97826c57485d72879cb1c6dbf0ffffefdac5b09b87705c47586d8397acc2d7dac5b09b86705c47321d080000000000061b30455a6f8499adc2d7dfcbb6a18c77624d383a4f64798fa3b8cde2d2bea994806a55402b17020000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d77625e5c5c5c5c5e646d7a8a9aacbed1e4e1ccb8a48f7a66513d2813000000001024394d6175899db1c6dad0bba7927d69555b708499adc1d6d3bfaa96836e5a46311d09000000001e33485e73899fb4c9dee1ccb7a18c76605f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f564734210d0015283a4a555858585858585858585862778da3b8cde2d5c0ab95806a543f2a1500000a1f34495e73889db2c7dbd3bfaa95806b56412c170200000000000000000e23384e63788fa3b8cdd9c4af99846e594451667b91a7bcd1d5c0ab97826b56412c1702000000001e33485e73899fb4c9def4feedddcdbfb2a69c96929193979faab6c4d3e3e2d1bfad9b8874604d39251100001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000001b30455a6f869bb0c5dad8c3ad98836c696e71737372706c68625b534a40362a1e1104000000000000000000000c21364b60748a9fb4c9ded3bea9947d6954445a6f8499aec3d8edffffecd7c2ad98836e5944556a8094a9bfd3ddc8b39f89745f4a35200b00000000000b1f34495e73889db2c6dbdcc7b29d88735e4934374b60758ba0b4c9ded7c2ad98836e59442f1b060000001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde2cdb8a38d777373727272727378808c99a8b8c9dbecd8c5b19d8975604c38230e00000003172b3f53687c90a4b8ccdecab6a18d78634f556a7d93a7bcd0d9c6b19d8975604c382410000000001e33485e73899fb4c9dee1ccb7a18c76747474747474747474747474747474747364503b2611001c314558686e6e6e6e6e6e6e6e6e6e6e778da3b8cde2d5c0ab95806a543f2a1500000e23384d61768ca1b5cadfd0bba6917b67523d28130000000000000000000d22374c62778da2b7ccdac5b09b86705b464f647990a5bacfd7c2ad98836d58432e1803000000001e33485e73899fb4c9def4fffbebddcfc3b9b0aaa7a7a8acb3bcc7d4e2e5d5c4b3a2907d6a5744311e0a00001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000000000000001a2f445a6f869aafc4d9d8c3ad98836d58595c5e5e5c5b58534e4740372e23190d0000000000000000000000001025394e63788da2b7cce1d0bba6917b665141576b8296abc0d5eaffffe9d4bfaa95806b564152677c91a7bbd0e1ccb7a28d77634e39240f00000000000f24384d62778ca1b6cbdfd8c3ae99856f5a453033485d72879cb1c6dbdbc6b19c88725d49341f0a0000001e33485e73899fb4c9dee1ccb7a18c77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde3ceb9a49189898988888888898d949da9b7c6d6e7e1cfbca996826e5a46311d090000000a1e32465a6e8397abbfd4d9c4b09b87725e494f64788da2b6cadfccb8a4907b67533f2b17030000001e33485e73899fb4c9dee2cdb8a3908b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c2712001f344a5f748484848484848484848484848ea3b8cde3d5c0ab95806a543f2a15000012273b50657a8fa4b9cee1ccb7a28d77634e39240f0000000000000000000b21364b60768ba0b5cbdcc7b29d88725c474e63788fa3b8ced9c4af99856f5a442f1a05000000001e33485e73899fb4c9def4fffffbede1d5ccc4bfbcbcbdc0c6cfd9e5e3d6c7b7a7968472604e3b28150200001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000192e43586e8499afc4d9d9c4af99846e58444748484746433f39332c241b11060000000000000000000000000013283d52677c91a6bbd0e2cdb8a38e78634e3f53687d93a8bdd2e7fcffe6d1bca7927c68533e4f64798fa3b8cee3d0bba6917b66513d2813000000000013283d51667b90a5bacfe4d4bfab96826b57412d2f44596e8498adc2d7dfcab5a08c76614d38230e0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8dde7d3c0afa29f9f9f9d9d9d9d9ea2a7b0bac7d5e4e6d5c4b29f8d7966523e2b16020000001125394d61758a9eb2c6dad3bfaa96826c58434a5e72879cb0c4d9d3bfab97836e5a46321e090000001e33485e73899fb4c9dee6d3c0aea2a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937c67523c2712001f344a5f748b99999999999999999999999dabbed1e6d5c0ab95806a543f2a150000152a3f54697d93a8bdd2ddc8b39e89745f4a35200b0000000000000000000a1f344a5f74899fb4c9dec9b49f89735e494c62778da2b7ccdbc6b19c87705b46311c07000000001e33485e73899fb4c9def4fff8f0ebebe8e0d9d4d1d1d2d5dbe2eadfd3c6b8a9998977665543311e0b0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000000000000182d42576c8398adc3d8d9c4af9a866f5a4432333332312e2a251f181008000000000000000000000000000000172c41556a8095aabfd3dfcab5a08b76604b3b50657a90a5bacfe4f9f9e3ceb9a48f7965503b4c61768ca0b5cbdfd3bea994806a55402b160100000000172c41556a8094a9bed3e5d1bca7927c68533e292c40556a8095aabed3e3ceb9a5907a66513c27120000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddefddcdbfb6b4b4b3b3b3b3b3b3b6bcc3cdd8e5e7d8c8b8a69583705d4a36230f00000003172b4054687c90a4b9cde1cdb9a4907b66523e44586d8296aabfd3dac6b29e8a75614d3925110000001e33485e73899fb4c9deefddcdbfb7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a8937c67523c2712001f344a5f748ba0afafafafafafafafafafb1bac9daead5c0ab95806a543f2a150003192e43586d8397acc1d6d9c4af9a86705b46311c08000000000000000000081e33485d72889db3c8cbcbb5a08b76604b4b60768ba0b5cbcbc8b39d88725d48331e09000000001e33485e73899fb4c9def4f3e6dcd6d5dae1e7e9e6e6e7eae6dfd7cdc1b5a89a8b7a6a5a49372514010000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000004060606060606060606060604000000000000172c42576c8297acc1d7dac5b09b866f5a45301e1e1d1c1915100b0505050505050505030000000000000000041a2f44596e8498adc2d7dcc7b29d88725d48384d62778da2b7cce1f6f5e0cbb6a18c77624c38495e73889db3c7dcd7c2ad98836e59442f1a05000000061b30455a6f8499adc2d7e2cdb8a38e78644f3a25283d52677b91a6bbd0e5d2bea8947d6955402b160100001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001d32475c72889db3c8ddf2ebdcd1cbc9c9c8c8c8c8c8c8cbd0d7dfeae3d7c9baaa9a89776553402d1a070000000a1e32465b6f8397acc0d4dcc7b39f8a75614c383e52677b90a4b9cde1cdb9a4907c6854402b170300001e33485e73899fb4c9def4ebddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbbda8937c67523c2712001f344a5f748ba0b5c4c4c4c4c4c4c4c4c4c5ccd8e7ead5c0ab95806a543f2a1500081d32475c70869bb0c5dad5c0ab97826c57422e1904000000000000000000021c31475c70879cb1b5b5b5b5a28d77624c4a5f74899fb4b5b5b5b49f8a745f4a341f0a000000001e33485e73899fb4c9def4e4d5c9c1c0c6cdd3d7d9dad9d6d2cbc4baafa4978a7b6c5d4d3c2b1a08000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000711181b1b1b1b1b1b1b1b1b1b1b18110700000000162b40566b8297acc1d6dbc6b19c87705b46301b1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a181208000000000000091e33485d72879cb1c6dbd9c4af9a866f5a45354a5f74899fb4c9def3f2ddc8b39e89735f4a34465b70869bafc4dadac6b19c87715c47321e090000000b1f34495e73889db2c6dbdec9b49f8b75604b362124394e63788da2b7cce1d6c1ad98836e59442f1a0600001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001c31465b70879cb1c7dcf1f5eee5dfdedededddddddddde0e4eae3dbd1c6b9ab9d8d7c6b5948362311000000001125394d61758a9eb2c6dbd6c2ad9985705b4732384c61758a9fb3c7dcd4bfab97836f5b46321e0a00001e33485e73899fb4c9def4f5eee6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d3bda8937c67523c2712001f344a5f748ba0b5cbd9d9d9d9d9d9d9d9dae0e9f5ead5c0ab95806a543f2a15000c21364b60748a9fb4c8ddd1bca7937d68533f2a1500000000000000000000001b30455a6f869ba0a0a0a0a0a08f78644f485d72889da0a0a0a0a0a08c76604b36210c000000001e33485e73899fb4c9deebd8c7b7adabb2b9bec2c4c5c4c1bdb7b0a79d9286796b5d4e3f2f1e0d00000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000918242d30303030303030303030302d241809000000152a3f546a8095abc0d5dcc7b19c87715c47322f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d25190b00000000000d21364b60758ba0b4c9ded6c1ac97826c574232475c71879cb1c6dbf0efdac5b09b86705c473143586d8397acc2d7dec9b49f8a75604b36210c0000000f24384d62778ca1b6cbdfdac5b09b87715c47331e21364b5f74899fb3c8dddac6b19c87725d48331f0a00001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0dfdddad6d0c8bfb4a89b8d7d6e5e4d3c2a190600000004182c4054687c91a5b9cde0d1bca7937d6a55412d32475b708499adc1d6dac6b29e8a75614d39251100001e33485e73899fb4c9dee0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d3bda8937c67523c2712001f344a5f748ba0b5cbe0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a150010253a4e63788ea2b7cce0cdb9a48f7965503b26110000000000000000000000192e43586e848b8b8b8b8b8b8b8b7b6650475c70878b8b8b8b8b8b8b8b77634d38230e000000001e33485e73899fb4c9dee5d0bca999979ea4a9adafb0afaca8a39c948a8074685b4d3f30211a1711070000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000517273641464646464646464646464641362716040000152a3f54697d94a9bfd4ddc8b39d88725c47444444444444444444444444444444444441372919070000000010253a4f64788ea3b8cde2d3bea9947d69543f2f44596e8499aec2d7ececd7c2ad98836e58442f40556a8094a9bfd3e2cdb8a38e78644f3a251000000013283d51667b90a5bacfe4d7c2ad98836e59442f1a1d32475c70869bb0c5dadfcab5a08b76614c38230e00001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbcac8c5c1bbb4aca2978a7d6f6050402f1e0d000000000a1e33475b6f8498acc0cbcbcbb6a28d7864503b272c41556a7d93a7bccbcbcbb9a5917c6854402c1804001e33485e73899fb4c9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbda8937c67523c2712001f344a5f748ba0b5cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc0ab95806a543f2a150014283d52677c91a6bbcbcbc9b5a08b76614c37220d0000000000000000000000172c41556874747474747474747472624e43576a74747474747474747470604c37220d000000001f344a5f748ba0b5cadfe2cdb8a38d838a909498999b9997948f8880776d63574a3d2f2f2f2f2c24180a00001e33485e73899fb4c9dee2cdb8a38d77624c37220d000e213445535b5b5b5b5b5b5b5b5b5b5b534534210d000013293e53687d94a9bed3ddc8b39d88735e5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a54473724110000000014293e53687c92a7bcd1e5d0bba6917b66513c2c41566b8095abbfd4eae9d4bfaa95806b56402c3d52677c91a6bbd0e5d0bba7927c67523d2814000000172c41556a8094a9bed3e8d3bea994806a55402b16192e43586d8397acc1d6e3ceb9a48f7a65513c271200001e33485e73899fb4c9dee0cdb8a38d77624c37220d00152a3f546a8095abc0d5e0d5c0ab95806a543f2a15001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b3b0aca7a0998f85796c5f514232221201000000001125394e62768a9fb3b5b5b5b5b09c88735e4a3621263b4f64788da2b5b5b5b5b5ac98846f5b47331e0a001e33485e73899fb4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a8937c67523c2712001f344a5f748ba0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab95806a543f2a1500172c41566b8095aab5b5b5b5b19c87725d48331e0900000000000000000000001225384a585f5f5f5f5f5f5f5f5f5e54453b4c5a5f5f5f5f5f5f5f5f5f5d5243301d09000000001f344a5f748ba0b5cbe0e2cdb8a38d77757b8083858684837d79746c645b50454444444444444036281806001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013283d5163707070707070707070707063503c2712000012273c52677c93a8bdd3dec9b49f89736f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6554402c1702000000172c41566b8095aabfd4e2cdb8a38e78634e39293e53687c93a7bcd2e6e6d1bca7927c68533d283a4f64788fa3b8cde2d4bfaa95806b56412c170200061b30455a6f8499adc2d7e4cfbaa5907b66513c2712162b4054697d94a8bed2e7d2bda8947d6955402b1601001e33485e73899fb4c9cbcbcbb8a38d77624c37220d00152a3f546a8095abc0cbcbcbc0ab95806a543f2a15001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09e9b97938d857c72675b4e41322314040000000000182c4055687c91a0a0a0a0a0a0a096826d5844301b21354a5e72879ca0a0a0a0a0a09f8a76624e392511001e33485e73899fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0937c67523c2712001f344a5f748ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095806a543f2a15001b30455a6f8499a0a0a0a0a0a098836e59442f1a060000000000000000000000091b2c3a454a4a4a4a4a4a4a4a4a4943362e3c464a4a4a4a4a4a4a4a4a494134251301000000001f344a5f748ba0b5cbe0e2cdb8a38d7762666a6d6f6f6e6c69655f595a5a5a5a5a5a5a5a5a5a5346362310001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a808787878787878787877d68533e2913000012273c51667b91a7bcd1dfcab4a08c86868686868686868686868686868686868686846f5a442f1a050000061b30455a6f8499aec3d8dfcab5a08b76604c37263b5065798fa4b9cee3e3ceb9a48f7964503b25374c61768ba0b5cadfd8c3ae99846f5a45301b06000b1f34495e73889db2c6dbe0cbb6a28d77624d39240f12273c51667a90a5bacfe4d6c1ac97836d59442f1a05001e33485e73899fb4b5b5b5b5b5a38d77624c37220d00152a3f546a8095abb5b5b5b5b5a9947d68533e2914001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8987837d7871695f554a3d302314050000000000001b30465b70848b8b8b8b8b8b8b8b8b7c67533e2a151b2f44586d828b8b8b8b8b8b8b8b8b7c68533e2813001e33485e73898b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7c67523c2712001f344a5f748b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a15001e33485e73888b8b8b8b8b8b8b8b806a55402c17020000000000000000000000000e1c2831343434343434343434342f251e2a32343434343434343434342e24160700000000001f344a5f748ba0b5cbe0e2cdb8a38d77625155585a5a59575450616e6f6f6f6f6f6f6f6f6f6f64533f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a80959c9c9c9c9c9c9c947d68533e2913000011263b50667b90a5bbd0e3cfbbaa9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b866f5a442f1a0500000a1f34495d72889cb2c6dbdcc7b29d88735e493423384d62778ca1b6cbe0e0cbb6a18c77624c382334495e73889db2c7dcdbc6b19c88725d48331e09000f24394d62778ca1b6cbdfdcc7b39e89735f4a35200b0e23384d62778ca1b6cbe0dac5b19c87725d48331e09001e33485e73899fa0a0a0a0a0a0a08d77624c37220d00152a3f546a8095a0a0a0a0a0a0a0947d68533e2913001a2f44586b74747474747474747474747474747474747473706d69635d554c43382c201205000000000000001a2f44586b7474747474747474747470604d39241015293e5265737474747474747474747465513d2813001c31465a6d7474747474747474747474747474747474747474747474747474747363503b2611001e33475b6d7474747474747474747474747474747474747474747466523e2914001d32475b6e7474747474747474747364503c281300000000000000000000000000000b151c1f1f1f1f1f1f1f1f1f1f1b130d171d1f1f1f1f1f1f1f1f1f1f1a12060000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c4043444444424053687d868686868686868686836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abb1b1b1b1b1a9947d68533e291300000f253a4f64798fa4b9cfe4d8c8bab1b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b09b866f5a442f1a0500000d22374c61768ba0b5cadfd9c4af9a86705b463120354a5f74899eb3c8ddddc8b39e89735f4a342031465b70869aafc4d9dfcab5a08b76614c37220d0013283d52667b90a5bacbcbcbc4af9a86705b46311c070b2034495e73899eb3c7cbcbc9b5a08b76614c37230e001e33485e73898b8b8b8b8b8b8b8b8b77624c37220d00152a3f546a808b8b8b8b8b8b8b8b8b7d68533e29130015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5c59544f49413930261a0f02000000000000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5d5243311d090f233547565f5f5f5f5f5f5f5f5f5f5f574836220e00172b3e4f5c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e554634200c00182b3e4f5c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574836230f00182c3f505c5f5f5f5f5f5f5f5f5f5e554634210d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e2cdb8a38d77624c372e2f2f2f2d3e53687d949b9b9b9b9b9b9b98836c57422c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0c7c7c7bfa9947d68533e291300000e23384e63788fa3b8cde3e6d8ccc6c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b09b866f5a442f1a05000011263b5064798fa4b9cee0d6c1ac97836c58432d1d32475c70869bb0c5dadac5b09b86705b46311c2e43586d8397acc1d6e0ceb9a48f7964503b261100172c41566b8095aab5b5b5b5b5ab96826c57422d1804071c31465b70869aafb5b5b5b5b5a48f7965503b2712001c31465a6c74747474747474747474705f4a36210c0014293e5266747474747474747474747364513c2712000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a484744403b352e261d1309000000000000000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a49413425140106182938444a4a4a4a4a4a4a4a4a4a4a44392a1906000e20313e484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a494337281704000f21313e484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392a1907000f21323f484a4a4a4a4a4a4a4a4a4943372817050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbdfe2cdb8a38d77624d38231a1a1a293e53687d94a9b0b0b0b0b0ad98836c57422c17001e33485d72889db3c8dde2cdb8a38d77624d38230e00152a3f546a8095abc0d5dcd4bfa9947d68533e291300000d22374c62778da2b7cce1f5e9e0dbdadadadadadadadadadadadadadadadac5b09b866f5a442f1a05000014293e53687d93a7bccbcbcbbea994806a54402b192f44586e8398adc2cbcbc2ad98836d58432e192b40556a8094a9becbcbcbbca7927d68533e2914001b30455a6f8499a0a0a0a0a0a0a0937d68533f2a150000182d42576c8296a0a0a0a0a0a0a0937d6954402b1600172a3d4e5b5f5f5f5f5f5f5f5f5f5f5d51412f1b07000f233648575f5f5f5f5f5f5f5f5f5f5f564735220e0001111f2b3234343434343434343434343434343434343433322f2b26201a120a00000000000000000000000001111f2b3234343434343434343434342e24160700000b1a2730343434343434343434343431281b0c00000313212c33343434343434343434343434343434343434343434343434343434343026190a00000313212c333434343434343434343434343434343434343434343431281b0c00000414212c33343434343434343434343026190a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f34495e73899fb4c9dee4cfb9a48f7965503c28170e1b2d41566b8095aabfc5c5c5c1ac97826c57422c17001d32475c72889db2c7dce3ceb9a48f7964503b27130b1b2e43576c8297acc1d6e8d3bea9947d68533e291300000c21364b60768ca1b6cbe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0dac5b09b866f5a442f1a050000182d42576c8296abb5b5b5b5b5a6917b67523d28162c40566b8095aab5b5b5b5aa95806a55402b16283d52677c91a6b5b5b5b5b5ab96826c57422d18001e33485e73888b8b8b8b8b8b8b8b8b7964503b26110000152a3f53687d8b8b8b8b8b8b8b8b8b836d58432e19000e1f303e474a4a4a4a4a4a4a4a4a4a4941332412000007192a39444a4a4a4a4a4a4a4a4a4a4a44382918050000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c1a16110c06000000000000000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1a12060000000009141c1f1f1f1f1f1f1f1f1f1f1f1c150a00000000030f191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1b140900000000030f191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c150a00000000040f191e1f1f1f1f1f1f1f1f1f1f1b140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d32475c72879cb1c6dbe7d2bda894806b58463527232a394a5d70859aaec3d8dad3bfaa95806a55402b16001c31465b70869bb0c5dae6d1bca8937d6a564330211f29394b5e72869bafc4d9e5d0bba7917c67523c271200000b20354a5f748ba0b5cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc5b09b866f5a442f1a0500001c31455a6f859aa0a0a0a0a0a0a08e78644f3a2514283d52677c92a0a0a0a0a0a0927c67523d2813253a4f64788fa0a0a0a0a0a0a09a856f5a45311c001d32475b6e74747474747474747474705f4b37220d000011263a4f6272747474747474747474746956412d18000212202b3334343434343434343434342e2315060000000c1b2831343434343434343434343430271a0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f44596e8498adc2d6ebd7c3af9b88756353453b383c485767798da0b4c8dce4d0bba6917c67523d281300192e43586d8397acc1d6ead6c1ad9986725f4e3e36343a4756687a8da1b5c9dee1cdb8a38e78644f3a251000000a1f34495e73899fb4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b09b866f5a442f1a0500001e33485e73888b8b8b8b8b8b8b8b8b76614c372210253a4f64798b8b8b8b8b8b8b8b79644f3a251022374c61768b8b8b8b8b8b8b8b8b88735e48331e00182c3f505c5f5f5f5f5f5f5f5f5f5f5d51412f1c0800000c1f3345545e5f5f5f5f5f5f5f5f5f5f594b3a27130000020f181e1f1f1f1f1f1f1f1f1f1f1f1a110500000000000a151c1f1f1f1f1f1f1f1f1f1f1f1c140900000000000000000000000000000000000000000000000000000000000000000000000811181a1a1a1a1a1a1a1a1a1a171006000000000000000611171a1a1a1a1a1a1a1a19150d0200000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a170f0500000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a170f0500000000000b14191a1a1a1a1a1a1a1a1a19150d02000000000000000000000000000000060f14161616161616161616161616161616161616161616161616161616161616161616140e0500000000000000000000000000172c40556a7d93a8bcd0e4decbb8a592827062564f4d505965748697a9bcd0e3dec9b5a18d77634e39240f00162b3f54697d93a7bcd0e4dcc9b5a28f7d6c5c514b4a4e5764748698aabdd1e4dbc7b39e8a75604b36210d0000061e33485d72889da0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09b866f5a442f1a0500001d32475b6e747474747474747474746d5c48331f0d22374b5f6f7474747474747474705f4b37220d1f33485c6d747474747474747474746e5b47321d000f21323f484a4a4a4a4a4a4a4a4a4a49413324120000000316273643494a4a4a4a4a4a4a4a4a4a463b2d1c0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1a252c2f2f2f2f2f2f2f2f2f2f2b23180a00000000000918242c2f2f2f2f2f2f2f2f2f292013040000000f1d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b221708000000101d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2b2217080000000f1d272e2f2f2f2f2f2f2f2f2f2f29201203000000000000000000000000000b1822292b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2921170900000000000000000000000012273b5064788da1b5c8dce7d4c2b09f8f82736a6462656c768493a3b4c6d9e9d6c2af9b87725d4935200b0011263b4f64788da1b5c9dce5d2bfac9b8a7a6d64605f6269758392a3b5c7d9e7d4c0ac98846f5b46321d080000001d32475c71878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b866f5a442f1a050000182c3f505c5f5f5f5f5f5f5f5f5f5f5c4f3e2c19081c3042515d5f5f5f5f5f5f5f5f5d5142301c08192c3e4f5c5f5f5f5f5f5f5f5f5f5f5c503f2c18000414222d3334343434343434343434342e231506000000000918252f3434343434343434343434322a1d0f000000000000000000000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b000000000000050f161a1a1a1a1a1a1a1a1a1a1a171106000000091b2a3740444444444444444444443f3628180700000004162736404444444444444444443d31221100000c1d2d3a42444444444444444444444444444444444444444444444444444444443f34261605000d1e2e3a42444444444444444444444444444444444444444444443f34261604000c1d2d3a42444444444444444444443d302111000000000000000000000000091a29353e4040404040404040404040404040404040404040404040404040404040404040403d3427180700000000000000000000000d2135495d718699acbfd2e4dfcebdae9f91867d787779808994a2b1c1d2e4dfccb9a693806b57432e1a06000c2135495d718699adc0d3e5dccab8a8998c80797474777d8793a1b0c1d2e4ddcbb8a4917c6955402c18030000001a2f44586b74747474747474747474747474747474747474747474747474747474746a56422d190400000f21323f484a4a4a4a4a4a4a4a4a4a483e31210f0013243340484a4a4a4a4a4a4a4a4941332413000f21313e484a4a4a4a4a4a4a4a4a4a483f32210f00000410191e1f1f1f1f1f1f1f1f1f1f1f1a110500000000000008131b1f1f1f1f1f1f1f1f1f1f1f1d170c000000000000000000000000000000000000000000000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d10000000000716222b2f2f2f2f2f2f2f2f2f2f2f2c241809000014273848545a5a5a5a5a5a5a5a5a5953463624110000000e213445535a5a5a5a5a5a5a5a584f402e1b080016293b4b575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59524434210e00172a3c4c575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59524433200d0016293b4b575a5a5a5a5a5a5a5a5a584e3f2e1b080000000000000000000000132638475256565656565656565656565656565656565656565656565656565656565656565651453624110000000000000000000000061a2e4256697c90a2b5c7d8e9dbccbdafa39a928f8d8f949ca6b2c0cfdfe5d3c2af9d8a7663503c28140000061a2e42566a7d90a3b6c8dae7d6c6b7a99d948e8b8a8c9199a4b1bfcedfe4d2c0ae9b8875614d3926110000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a4c3a27130000000414222d3334343434343434343434332c211303000615232d333434343434343434342e231506000313212c3334343434343434343434332d221404000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1d2d3a4244444444444444444444433b2e1e0d0000031525343e44444444444444444444444036271706001a2f4356666f6f6f6f6f6f6f6f6f6e6453402c18030004172a3d50636f6f6f6f6f6f6f6f6c5e4b37230e001d314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e62513d2914001d3246596a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e62503c2713001c314559696f6f6f6f6f6f6f6f6f6c5d4b37230e00000000000000000000001b2f4355656b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6353412d1800000000000000000000000013263a4d60738698a9bbccdceadbcdc1b6ada7a3a3a4a8afb8c3d0dee8d8c7b6a492806d5a4734200c00000013273a4d60738799abbdcedee4d5c7bab0a8a2a09fa1a5adb6c2cfdde7d7c6b5a3917d6b5845321e0a000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a463c2e1d0b000000000410191e1f1f1f1f1f1f1f1f1f1f1e190f030000000511191e1f1f1f1f1f1f1f1f1f1a1105000000030f191e1f1f1f1f1f1f1f1f1f1f1e19100400000000000000000000000000000000000000000000000000000000000000000000020e171c1e1e1e1e1e1e1d1d1d1d1d1d1d1d1d1d1b1a17140f0a040000000000000000000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a1704000d20334351595a5a5a5a5a5a5a5a5a5a534535230f001e33485d7284868686868686868683705b46301b06000d2033465a6d80868686868686867a66503b2611001f344a5f74868686868686868686868686868686868686868686868686868686826b56402b16001f344a5f74868686868686868686868686868686868686868686806a543f2a15001e33485e738686868686868686867a65503b271200000000000000000000001e33485d72828282828282828282828282828282828282828282828282828282828282828282705b46301b0000000000000000000000000a1d304356687a8c9daebecddceaded3c9c1bcb8b8b9bdc3cbd5e1e6d9cabaa998877563503d2a17040000000b1e314457697b8e9fb0c0d0dfe5d8cdc4bcb7b5b4b6bac0c9d3e0e7d9c9b9a9978673614e3b2815020000000001111f2b323434343434343434343434343434343434343434343434343434343434322a1e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002121f2a3133333333333332323232323232323232302f2c29241e18110900000000000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e090013273c50616e6f6f6f6f6f6f6f6f6f6f63523e2a15001e33485e73899b9b9b9b9b9b9b9b87705b46301b060216293c4f6376899b9b9b9b9b9b917b66503b2611001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b97826b56402b16001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b95806a543f2a15001d32465b70869a9b9b9b9b9b9b937d69543f2b1601000000000000000000001e33485e73899797979797979797979797979797979797979797979797979797979797979787705b46301b000000000000000000000000011426394b5c6e8090a0afbeccd9e5e5ddd6d1cecdced2d7dee8e2d6c9bbac9c8c7a69574533210e000000000114273a4c5e708292a2b2c1cfdce7dfd7d1cccbc9cbcfd4dce6e2d6c9bbab9b8b79685644321f0c000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d170d000000000000000b14191a1a1a1a1a1a1a1a1a1a19140b00000000000000000812181a1a1a1a1a1a1a1a1a1a1a19150d0200000000000b14191a1a1a1a1a1a1a1a1a1a19140b000000000000010c14191a1a1a1a1a1a1a1a1a1a19140b000000000e20303d46484848484848474747474747474747474644413e39332c251c13090000000000000000000000001f344a5f748686868686868686868676604b36210b00152a3f546a80868686868686868686826c57422c17001e33485e73899fb0b0b0b0b0b09b866f5a442f1a050b1f3245596c8093a6b0b0b0b0a7917b66503b2611001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ac97826b56402b16001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ab95806a543f2a1500192e43586c8297acb0b0b0b0ac97836d58432e1905000000000000000000001e33485e73899facacacacacacacacacacacacacacacacacacacacacacacacacacacacac9c87705b46301b00000000000000000000000000091b2d3f5061718291a0aebbc8d3dde6eae5e3e2e3e6ebe4dbd0c5b8ab9d8e7d6d5c4b3a28160400000000000a1d2f415263738494a3b1becad5dfe7e5e1e0dfe0e3e9e4dbd1c5b8ab9d8e7d6d5c4a392715020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d100000000000000c1a252d2f2f2f2f2f2f2f2f2f2f2f2f292013040000000f1d272e2f2f2f2f2f2f2f2f2f2f2e281d100000000002111e282e2f2f2f2f2f2f2f2f2f2f2e271d10000000182b3d4e5a5e5e5e5e5e5e5c5c5c5c5c5c5c5c5c5c5b5956524d4740382f261b1004000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b00152a3f546a80959b9b9b9b9b9b9b98836c57422c17001e33485e73899fb4c5c5c5c5b09b866f5a442f1a0515283b4e6175889cafc2c5c5bca7917b66503b2611001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c1ac97826b56402b16001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c0ab95806a543f2a1500152a3f54687d93a8bdc5c5c5b09b86715c47321d08000000000000000000001e33485e73899fb4c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b19c87705b46301b00000000000000000000000000001021334353637282909eaab6c1cad1d8dcdee0dedbd6d0c8beb3a79a8d7d6f5f4f3e2e1c0b00000000000000122334455666758593a0adb8c3ccd3d9dcdfe0dedbd6d0c8beb3a79b8d7d6f5f4f3e2d1b0900000000000000000000000000000000000711171919191919191919191918140b0100000000000000000000000000000c1d2d3a4244444444444444444444433b2e1e0d00000000091a2a37414444444444444444444444443d31221200000c1d2d3a4244444444444444444444433b2e1e0d0000000f202f3b4344444444444444444444423a2e1e0d00001e32475a6c73737373737372727272727272727272706e6b67625b544c42382d2115080000000000000000001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b00152a3f546a8095abb0b0b0b0b0ad98836c57422c17001e33485e73899fb4c9dadac5b09b866f5a442f1a0a1e3144576a7d92a5b8cbdad1bca7917b66503b2611001f344a5f748ba0b5cbdadadadadadadadadadadadadadadadadadadad6c1ac97826b56402b16001f344a5f748ba0b5cbdadadadadadadadadadadadadad5c0ab95806a543f2a150011263b5065798fa4b9cedac9b49f8a74604b36210c000000000000000000001e33485e73899fb4c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c7b19c87705b46301b00000000000000000000000000000415253645546372808d98a3aeb6bdc3c7c9cbc9c6c2bcb4aba1968a7c6e60514131211000000000000000000617283848576674828f9ba6afb8bfc4c7c9cbc9c6c2bcb4aca1968a7c6e60514131200f00000000000000000000000000000000000b19242c2e2e2e2e2e2e2e2e2e2e2d281e11020000000000000000000000000016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a170400000013263848545a5a5a5a5a5a5a5a5a5a5a584f402f1c080016293b4b575a5a5a5a5a5a5a5a5a5a574c3c2a17040005192c3e4d585a5a5a5a5a5a5a5a5a5a574c3c2a1703001f344a5f74898989898989888888888888888888888784827c766f675f554a3f3326190b00000000000000001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b00152a3f546a8095abc0c5c5c5c3ad98836c57422c17001e33485e73899fb4c9ded9c4af99846e59442f1a13273a4d6073889baec1d4e6d1bca7917b66503b2611001f344a5f748ba0b5cbe0f0f0f0eeeae9e9e9e9e9e9e9e9e9e9e9e9e9d6c1ac97826b56402b16001f344a5f748ba0b5cbe0f0f0e9e2dfdededededededed5c0ab95806a543f2a15000d22374c61768ba0b5cadfccb8a38e78644f3a2510000000000000000000001e33485e73899fb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b19c87705b46301b000000000000000000000000000000081827364554616f7b86919aa2a9aeb2b4b5b4b1ada8a1988f84786b5e5042322313030000000000000000000a1a2a39485664717d89939ca4aaafb3b4b5b4b1ada8a1998f84786c5e50423223130200000000000000000000000000000000081a29374043434343434343434343423b2f2010000000000000000000000000001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e090000081c2f4256666f6f6f6f6f6f6f6f6f6f6f6c5e4b37230e001d314559696f6f6f6f6f6f6f6f6f6f6a5a47331e09000a1f34485c6b6f6f6f6f6f6f6f6f6f6f6a5a46321e09001f344a5f748b9f9f9f9f9f9d9d9d9d9d9d9d9d9d9c9b9996918b847b72675c514437291a0b000000000000001f344a5f748ba0b5cbdadaccb7a18c76604b36210b00152a3f546a8095abc0d5dad8c3ad98836c57422c17001e33485e73899fb4c9ded9c4af99846e58432e191d304356697c90a3b7cadde6d1bca7917b66503b2611001f344a5f748ba0b5cbe0f5f1e4dad5d4d4d4d4d4d4d4d4d4d4d4d4d4d4c1ac97826b56402b16001f344a5f748ba0b5cbe0f3e3d6cdc9c9c9c9c9c9c9c9c9c0ab95806a543f2a15000a1f34495d72889cb1c6dbd0bba7927c68533e2914000000000000000000001e33485e73899f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9c87705b46301b000000000000000000000000000000000918273644515d69747d878e959a9d9fa09f9c99938d857c71665a4e403223140500000000000000000000000c1b2a384653606b76808990969a9d9fa09f9c99938d857c72665a4e40322314050000000000000000000000000000000000122537475458585858585858585858574d3e2d1a060000000000000000000000001f344a5f748686868686868686868676604b36210b00001125384b5f72858686868686868686868679644f3a250f001f344a5f748686868686868686868676604b36210b000b21364b60768686868686868686868675604b36210b001f344a5f748ba0b4b4b4b4b3b3b3b3b3b3b3b3b3b1b0aeaaa59f978f857a6e62554738291a0b0000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9ded9c4af99846e58432e1926394c5f728699acc0d3e6e6d1bca7917b66503b2611001f344a5f748ba0b5cbe0f4e3d3c7c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfac97826b56402b16001f344a5f748ba0b5cbe0e6d5c5b9b4b4b4b4b4b4b4b4b4b4ab95806a543f2a1500061b30455a6f8499aec2d7d4bfaa96826b56412d18030000000000000000001e33485e73888989898989898989898989898989898989898989898989898989898989898987705b46301b000000000000000000000000000000000009182633404c57616a7379808588898b898784807871685f54493d30221405000000000000000000000000000c1a2836424e59636c747b8286888a8b898784807871695f54493d30221405000000000000000000000000000000000000192d4255656e6e6e6e6e6e6e6e6e6e6a5c4a36210d0000000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b00071a2d4154677a8f9b9b9b9b9b9b9b9b9885715e4b37220d001f344a5f748b9b9b9b9b9b9b9b9b8c76604b36210b000b21364b60768c9b9b9b9b9b9b9b9b8c76604b36210b001f344a5f748ba0b5c9c9c9c8c8c8c8c8c8c8c8c8c7c5c3bfb9b3aba2978c80726556473828180800000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9ded8c3ad98836d58432e1b2e4255687b8fa2b5c9dcefe6d1bca7917b66503b2611001f344a5f748ba0b5cbe0ead7c5b5aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a997826b56402b16001f344a5f748ba0b5cbe0ddc9b7a79f9f9f9f9f9f9f9f9f9f9f95806a543f2a150000172c41566b8095aabfd4d8c3ae99846f5a45311c070000000000000000001c3146596a7373737373737373737373737373737373737373737373737373737373737373736957432e1a0000000000000000000000000000000000000815222e3a444e575f656b6f72747473726f6a645d554c42372b1f12040000000000000000000000000000000a1825303c47505960676c7073747473726f6a645d554c42372b1f1204000000000000000000000000000000000000001b30465b708484848484848484848479644f3a240f0000000000000000000000001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b001023364a5d708497abb0b0b0b0b0b0a28f7b6855422e1b08001f344a5f748ba0b0b0b0b0b0b0a18c76604b36210b000b21364b60768ca1b0b0b0b0b0b0a08c76604b36210b001f344a5f748ba0b5cbdededddddddddddddddddddcdbd8d4cec7beb4a99e91837465564636251403000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9ded8c3ad98836c57422c24374b5e718598abbfd2e5f8e6d1bca7917b66503b2611001f344a5f748ba0b5cbe0e3cfbaa7989494949494949494949494949494949494826b56402b16001f344a5f748ba0b5cbe0d8c3ae9a8a8989898989898989898989806a543f2a15000013283d52677c91a6bbd0dcc7b29d88735e49341f0b000000000000000000162a3c4c595e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e584b3a27140000000000000000000000000000000000000004111c27313b434b51565a5d5f5f5e5c5a55504942392f251a0e01000000000000000000000000000000000007131f2a343d454c52575b5e5f5f5e5c5a555049423930251a0e0100000000000000000000000000000000000000001b30465b708799999999999999999079644f3a250f0000000000000000000000001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b05192c3f5366798da0b3c5c5c5c5c0ac9986725f4c39261200001f344a5f748ba0b5c5c5c5c5b7a18c76604b36210b000b21364b60768ca1b7c5c5c5c5b5a08b745f4a341f0a001f344a5f748ba0b5cbe0f3f2f2ebe6e5e5e5e5e5e5e6e9e8e2dad1c7bbafa193847464544332200f000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9ded8c3ad98836c57422c2d4154677a8ea1b4c8dbeeffe6d1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6a55402b16001f344a5f748ba0b5cbe0d8c3ad988373737373737373737373737265523d281400001025394e63788da2b7cce0cbb6a18c77624d38230e0000000000000000000d1e2e3c45484848484848484848484848484848484848484848484848484848484848484848443b2d1d0b0000000000000000000000000000000000000000000a151e2830373d4245484a4a494745403b352e261d12080000000000000000000000000000000000000000010c17212a31383e4246484a4a494745403b352e261d1308000000000000000000000000000000000000000000001b30465b70879cafafafafafafa59079644f3a250f0000000000000000000000001f344a5f748ba0b5cbdadaccb7a18c76604b36210b0e2135485c6f8396a9bcd0dadacab6a3907c695643301d0900001f344a5f748ba0b5cbdadaccb7a18c76604b36210b000b21364b60768ca1b7ccdadacbb5a08b745f4a341f0a001f344a5f748ba0b5cbe0f5efe2d7d1d0d0d0d0d0d0d1d4d9e0e8e4d8ccbfb1a2938372614f3e2c19070000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9ded7c1ac97836c57422c364a5d708497aabed1e4f7ffe6d1bca7917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c7668686868686868686868686868686868685e4e3b2712001f344a5f748ba0b5cbe0d8c3ad98836c5e5e5e5e5e5e5e5e5e5e5d564735220f00000c21364b5f74899fb3c8ddcebaa5907a66513c2712000000000000000000091928343c3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3b3224150400000000000000000000000000000000000000000000020b141c22282d303334343432302c27211a120a000000000000000000000000000000000000000000000000040d161d24292d313334343432302c27211a120a0000000000000000000000000000000000000000000000001b30465b70879cb1c4c4c4c4bba59079644f3a250f0000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b172a3e5164778b9fb2c5d8e7d4c1ae9b8773604d3a27130000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001f344a5f748ba0b5cbe0f3e1d1c4bcbbbbbbbbbbbbbcbfc5ccd5dfeaddcfc0b1a190806d5b493624110000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead8c3ad98836c57422c17001e33485e73899fb4c9ded6c1ac97826b56402c405366798da0b3c6daedffffe5d0bba6917b66503b2611001f344a5f748ba0b5cbe0e1ccb7a18c7660535353535353535353535353535353534d40301e0b001f344a5f748ba0b5cbe0d8c3ad98836c574848484848484848484843382918060000081d32475c70869bafc4d9d2bea8947d6955402b1601000000000000000014263746505353535353535353535353535353535353535353535353535353535353535353534e4233220f00000000000000000000000000000000000000000000000000080e13181b1e1f1f1f1d1b17120d060000000000000000000000000000000000000000000000000000000002090f14191c1e1f1f1f1d1b17120d0600000000000000000000000000000000000000000000000000001b30465b70879cb1c7d9d9d0bba59079644f3a250f0000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210d2033475a6d8294a8bbcee1decbb8a5917d6a5744311d0a0000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001f344a5f748ba0b5cadfe9d6c3b3a8a5a5a5a5a5a5a7abb1b9c2cedbe9decfbfae9c8b786653402d1a0700001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead7c2ad98836c57422c17001e33485e73899fb4c9ded6c1ac97826b564035495c6f8396a9bccfe3f6ffffe5d0bba59079644f3a250f001f344a5f748ba0b5cbe0e1ccb7a18c76604b3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e392f221201001f344a5f748ba0b5cbe0d8c3ad98836c57423333333333333333332f261a0b00000002192e43586d8397acc1d6d6c1ac97836d58442f1a0500000000000000001b3043556468686868686868686868686868686868686868686868686868686868686868686860513e2b1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b30465b70879cb1c7dce5d0bba59079644f3a250f0000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b362115293c4f63768a9db1c4d7e8d5c2af9c8875614e3b2814010000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee4cfbaa69590909090909092969ca6b0bdcbdae9dccbbaa89683705d4936220f00001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56412c17001e33485e73899fb4c9ded5c0ab97826b56403e5164788c9fb2c5d8ecffffffe5d0bba59079644f3a250f001f344a5f748ba0b5cbe0e1ccb7a18c76604b362929292929292929292929292928251d120400001f344a5f748ba0b5cbe0d8c3ad98836c57422c1e1e1e1e1e1e1e1e1b14090000000000152a3f54697d93a8bdd2dac5b09b87715c47321e0900000000000000001f34495e737d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6e59442f1a0000000000000000000000000000000000000000000000000000050a0e121415151513110d080300000000000000000000000000000000000000000000000000000000000000060b0f121415151513100d08030000000000000000000000000000000000000000000000000000001b30465b70879cb1c7d0d0d0bba59079644f3a250f0000000000000000000000001f344a5f748ba0b5cadfe1ccb7a18c76604b36211e3145586c8093a6b9cce0dfccb9a692806c5845321e0b000000001f344a5f748ba0b5cbdfe1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d7979797979797c8289939fadbccbdbe9d7c5b3a08d7965523e2a1601001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded5c0ab95806a543f475a6e8295a8bbcee2f5ffffffe5d0bba59079644f3a250f001f344a5f748ba0b5cbe0e1ccb7a18c76604b362113131313131313131313131313110a000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000012263b5065798fa4b9cedec9b49f8a75604b36210d00000000000000001f344a5f748b94949494949494949494949494949494949494949494949494949494949494866f5a442f1a0000000000000000000000000000000000000000000000030b13191f2327292a2a2a2826221d1710080000000000000000000000000000000000000000000000000000050d141a202427292a2a2a2825221d171008000000000000000000000000000000000000000000000000001b30465b70879cb1bbbbbbbbbba59079644f3a250f0000000000000000000000001f34495e73899fb4c9dee1ccb7a18c76604b3621273a4e6175889cafc2d5e9d6c3b09c8976634f3c291502000000001f34495e73899fb4c9dee1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d776464646465686d76828f9eadbecfe1e2cfbca995826d5945301c07001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded5c0ab95806a543f5063778a9eb1c4d7ebfeffffffe5d0bba59079644f3a250f001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000e23384c61768ca0b5cadfcdb8a38e79644f3a251000000000000000001f344a5f748ba0a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99b866f5a442f1a000000000000000000000000000000000000000000020d161f272e33383c3e3f3f3f3d3b37312b241c130900000000000000000000000000000000000000000000040e1820282f34393c3f3f3f3f3d3a37312b241c130900000000000000000000000000000000000000000000001b30465b70879ca5a5a5a5a5a5a59079644f3a250f0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36213043576a7d91a4b8cbdee1cdbaa793806d594633200d00000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d77624f4f4f5053596370808fa0b1c4d7ead8c4b19c88735f4a36210c001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded5c0ab95806a5446596d8093a7bacde1f4ffffffffe5d0bba59079644f3a250f001f344a5f74899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000a1f34495d72889db2c7dbd1bca7927c68533e291400000000000000001f344a5f748ba0b5bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb09b866f5a442f1a000000000000000000000000000000000000000009141f29323b42484d515354545453504b463f382f261c1005000000000000000000000000000000000000000b16212b343c43494e5153545454524f4b463f382f261c10050000000000000000000000000000000000000000001b30465b708790909090909090909079644f3a250f0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3626394c6073879aadc1d4e7d7c4b19e8a7763503d2a170400000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d77624c3a3a3b3e465261708295a7bacee2e0cbb7a28e78644f3a2510001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded4bfa9947d68534f6376899cb0c3d6eafdffffffffe5d0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000061b30455a6f8499aec3d8d4c0ab96826c57422d1803000000000000001f344a5f748ba0b5cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc5b09b866f5a442f1a000000000000000000000000000000000000010e1a26323c464e565c6266686a6a6a6864605a534c43392e2216090000000000000000000000000000000003101d28343e4750575d6266686a6a6a6764605a534c43392e22160900000000000000000000000000000000000000001b30455a6e7979797979797979797974624e39240f0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b362e4255687c8fa3b6c9dce2cebba895826e5a4734210e0000000000001e33485e73899fb4c9dee1ccb7a18c76604b36210c000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d77624c3725262a34425364778b9fb3c7dbe5d1bca7927c68533e2914001f344a5f74899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded4bfa9947d6853586c8092a6b9ccdff2fefdffffffe5d0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000172c41566b8095aabfd4d8c3ae9a856f5a46311c07000000000000001f344a5f748ba0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b09b866f5a442f1a000000000000000000000000000000000003111e2b38444e59626a71767b7d8080807c79756e675f554b4034271a0c00000000000000000000000000000513212e3a46515a636b72777b7d8080807c79746e675f554b4034271a0c00000000000000000000000000000000000000172b3e505f64646464646464646464635645331f0b0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36374b5e718598acbfd2e5d8c5b29f8c7864513e2b18050000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d77624c372211172535485b6f8499adc2d7e9d4bfaa95806a55402b16001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded4bfa9947d68536175889cafc2d5e8eee9e8ecf3fee5d0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000014283d52677c91a6bbd0dcc7b29e89735e4a35200b000000000000001f344a5f748ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09b866f5a442f1a000000000000000000000000000000000312212f3c4955616c757d868b9093959594928f89837b72685d5145382a1b0c000000000000000000000000051423313f4c58636d7780878c9094959594928f89837b72685d5145382a1b0c0000000000000000000000000000000000000f2132414c4f4f4f4f4f4f4f4f4f4f4e46382816030000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b364053677a8ea1b4c8dbe3cfbca996836f5c4935220f000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1e0cbb5a08b745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d77624c37220d07182c40556a8095aabfd4e9d7c1ac97826c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b09152a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded3bda8937c68576a7d91a5b8cbdee4dad4d3d7e0ede5d0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000010253a4e63788ea2b7cce0cbb6a18c77624d38240f000000000000001f344a5f748b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b866f5a442f1a000000000000000000000000000000021221303f4d5a67737d89929aa0a5a8ababa9a7a39e978f857a6f635548392a1b0b0000000000000000000004142332414f5d6975808a939ba1a5a8ababa9a7a39e978f857a6f635548392a1b0b0000000000000000000000000000000000102334434e5353535353535353535351493b2a18050000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b36495c708397aabdd1e4d9c6b3a08d7966533f2c1906000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1dfc9b49f8a745f4a341f0a001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36211e1e1e2a3f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded3bda8937c676073879baec1d4e3d3c7bfbec4cfdee5d0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000000c21364b60748a9fb4c9decfbaa5907b66513c2713000000000000001e33485c6d7474747474747474747474747474747474747474747474747474747474747474746956422d190000000000000000000000000000000f20303f4e5d6b7885909ba5adb4babdc0c0bfbcb8b2aba2988d82736657483929190800000000000000000011213241515f6d7a87939ea7afb5babec0c0bfbcb8b2aba2988d80736657483929190800000000000000000000000000000000182c4052616868686868686868686865594734200b0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b3e5265798c9fb3c6d9e4d1beaa9784705d4a36231000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000b21364b60768ca1b7cce1dec9b49f89735e48331e09001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b3633333333333f546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded3bda8937c67697c90a3b6caddd7c5b5aaa9b1c0d1e4d0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000081d32475c71869bb0c5dad3bea994806a55402b1601000000000000192c3e4f5c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f594b3a271300000000000000000000000000000b1c2d3e4e5d6c7b8996a2aeb8c1c9ced2d5d5d4d1ccc6beb5aa9e91847566574737261503000000000000000c1e2f3f505f6f7d8c98a5b0bac2cacfd3d5d5d4d1ccc6beb5aa9e918475665747372615030000000000000000000000000000001b30455a6f7d7d7d7d7d7d7d7d7d7d77634e39240f0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b475b6e8295a8bccfe2dbc8b4a18e7a6754402d1a0700000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d000c21364b60768ca1b7cce1dec9b49f89735e48331e09001e33485e73899fb4c9dee2cdb8a38d77624c38230d0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b48484848484848546a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded1bca7917c67728699acbfd3e2cebba89794a2b5c9ded0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000003192e43586d8397acc1d6d7c2ad98836e59442f1a050000000000000f21313e484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a463b2d1c0a000000000000000000000000000517283a4b5c6c7b8b99a7b4c0cbd4dde3e7e9e9e9e6e1dad2c7bcafa294857565554432210f00000000000006182a3c4d5d6e7d8e9ca9b6c2cdd6dee4e8eaeae9e6e1dad1c7bcafa294857565554432210f0000000000000000000000000000001b30465b708794949494949494949079644f3a250f0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b5064778a9eb1c5d8e5d2beab9885715e4b3724110000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d001024384d62778da3b8cde2dec9b49f89735e48331e09001e33485e73899fb4c9dee3ceb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76605e5e5e5e5e5e5e5e5e6a8095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded1bca7917b687b8fa2b5c9dcd9c6b29f8b879cb1c7dcd0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000000162b3f54697d93a8bdd2dac6b19c87725d48331e090000000000000313212c33343434343434343434343434343434343434343434343434343434343434343434322a1d0f0000000000000000000000000000102234465868798a9aa9b7c5d1dde8e2dbd7d4d4d5d8dee5e4d9cdc0b2a394837261503e2c1a07000000000011233547596a7b8c9cabbac7d4dfeae3ddd8d6d5d7dae0e7e4d9cdc0b2a394837261503e2c1a0700000000000000000000000000001b30465b70879ca9a9a9a9a9a9a59079644f3a250f0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c76604b596c8093a7bacee1dcc9b5a28f7b6855412e1b080000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0d1b2c3f53677b90a5bacfe4dcc7b29d88725c47321d08001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c7673737373737373737373738095abc0d5ead6c1ac97826b56402b16001e33485e73899fb4c9ded1bca7917b718598abbed2e4d1bdaa9683889cb2c7dcd0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000000012273c51667a90a5bacedec9b4a08b75604c37220d00000000000000030f191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1d170c0000000000000000000000000000071a2d3f5163758798a8b8c7d5e2e2d8cec7c2bfbfc0c4cad2dce8ded0c1b1a190806d5b4937241100000000081b2e405365768999aabac9d7e5e4d9d0c9c3c1c0c2c6ccd4dee9ded0c1b1a190806d5b4937241100000000000000000000000000001b30465b70879cb1bfbfbfbfbba59079644f3a250f0000000000000000000000001e33485e73899fb4c9dee1ccb7a18c7866546275899cb0c3d6e6d3bfac9986725f4c392512000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37221e212b394a5c6f8296aabfd3e8d9c4af9a866f5a45301b06001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a3908989898989898989898989898998acc1d6ebd6c1ac97826b56402b16001e33485e73899fb4c9ded0bba6917b7a8ea1b4c8dbdcc8b5a28e7a889db3c8ddd0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000000e23384d62778ca1b6cbdfcdb8a38f7964503b261100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000102336495c6f8293a4b5c6d6e5ded1c5bbb3adaaa9abafb6bfcad7e5dfcfbfae9d8b786653402d1a060000001024374a5d708294a6b7c8d8e7e0d3c7bcb4aeacabadb1b8c1ccd8e6dfcfbfae9d8b786653402d1a06000000000000000000000000001b30465b70879cb1c7d4d4d0bba59079644f3a250f0000000000000000000000001e33485e73899fb4c9dee4cfbba8968472606b7d92a5b9ccdfddcab6a3907c695643301c09000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c373333363d495767798c9fb2c5d9e8d4bfab96826c57422d1803001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee6d2bfaea19f9f9f9f9f9f9f9f9f9f9f9f9fa6b5c7dbecd6c1ac97826b56402b16001e33485e73899fb4c9ded0bba590798497aabdd1e4d4c0ad998672889db3c8ddd0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000000a1f34495e73889db2c7dcd1bca7927d68533e2a150000000000000000000000000000000000000000000000000000000000000000080f12110e060000000000000000000000000000000000000000000004182b3f5366798c9eb0c2d3e4decfc0b3a89f989594969ba3adb9c7d6e5ddccbaa89683705d4936220e000004182c4053677a8d9fb2c3d5e6dfd0c2b5a9a09a9796989da5aebac8d7e6ddccbaa89683705d4935220e000000000000000000000000001b30465b70879cb1c7dce5d0bba59079644f3a25100000000000000000000000001e33485e73899fb4c9deead7c5b3a1907d6b74889baec1d5e7d4c1ae9a8773604d3a271300000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c4848484a505a67758697a9bbcee1e1cdb9a5907c67533e291400001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9deeedcccbeb5b4b4b4b4b4b4b4b4b4b4b4b4b4b8c3d3e4ecd6c1ac97826b56402b16001e33485e73899fb4c9ded0bba590798da0b3c6d9dfcbb8a4917d72889db3c8ddd0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000000061b30455a6f8499aec3d8d5c0ab96826c57422d18040000000000000000000000000000000000000000000000000000000000020f1b23272722190d0000000000000000000000000000000000000000000b1f33475b6f8396a9bbcedfe1d0c0b1a2968c84807d8287909ba9b8c7d8e9d7c5b3a08c7965513d291500000b1f33485b6f8396aabccfe1e2d1c1b2a4978d8682828389929daab9c9d9e9d7c5b3a08c7865513d2914000000000000000000000000001b30465b70869bb0c5dae6d1bca7927c68533f2b180700000000000000000000001e33485e73899fb4c9def4e2d1bfad9b89767d90a4b7cadedecbb8a5917d6a5744311d0a00000000000000000000001e33485e73899fb4c9dee2cdb8a38d77625e5e5e5e5f646c778594a4b4c6d8ebd8c5b19e8a75614d39241000001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9def4eadcd1cac9c9c9c9c9c9c9c9c9c9c9c9c9ccd5e1f1ecd6c1ac97826b56402b16001e33485e73899fb4c9ded0bba5908396a9bccfe2d6c3af9c887572889db3c8ddd0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000000000182d41566b8296abbfd4d9c4af9a86705b46311c07000000000000000000000000000000000000000000000000000000000613202d373c3c362b1d0d000000000000000000000000000000000000000011253a4e62768a9eb2c5d8e8d6c4b2a29385786f6a686c737d8b9aa9baccdee2cfbca895826c58432f1b060011253a4e63778b9fb2c6d9e9d7c5b3a394867a716b6b6e75808c9babbbcddfe2cfbca895806c58432f1b060000000000000000000000001a2f44596e8398adc2d7e9d4c0ab97836e5b4836241404000000000000000000001e33485e73899fb4c9def4eedccab8a694828699adc0d3e7d5c2af9b8875614e3b28140100000000000000000000001e33485e73899fb4c9dee2cdb8a38d7773737373737478808a95a3b2c2d2e3e0cebca995826e5a46321e0a00001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9def4f9ede4dfdededededededededededededee1e8f2ffecd6c1ac97826b56402b16001e33485e73899fb4c9ded2bda998929fb2c5d8e2cebba793806c73899fb3c8ded0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000000014293e53687c92a7bbd0dcc8b39e89745f4a35200b000000000000000000000000000000000000000000000000000000091623313e4a5151483b2b1b0a00000000000000000000000000000000000000162a3f53687c92a6bacee1dfccb9a6958474675c555357606c7b8c9dafc2d5e8d8c4b09b87725e4934200b00152a3f54687c92a6bacee2e0ccbaa7968575685d575659616e7c8d9eb0c3d6e9d7c4af9b87725d49341f0b000000000000000000000000172c41556a8094a9bed2e6dac6b29e8a77655342322213030000000000000000001e33485e73899fb4c9def4f9e7d6c3b2a09090a2b5c9dcdfccb9a692806c5845321e0b0000000000000000000000001e33485e73899fb4c9dee3ceb9a4918989898989898a8e949ca7b3c1d0e0e5d4c3b19f8c7966523f2b170300001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9def4fcf1e8e3e2e2e2e2e2e2e2e2e2e2e2e2e2e5ebf6ffecd6c1ac97826b56402b16001e33485e73899fb4c9ded9c6b6aaa7aebdcee1d9c6b29f8b776473899fb4c9ded0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000000010253a4f64788ea3b8cde0cbb6a28d77634e39240f00000000000000000000000000000000000000000000000000000c1a2734414e5c66655949382818070000000000000000000000000000000000001a2e43586d8397acc0d5e9d7c3af9c8977665649403f434e5d6e8092a5b9cde1decab6a18c77624d39240f00192e43586d8397acc0d5e9d8c4b09d8a7867574a424045505e6f8293a6bacee2decab5a18c77624d38230e00000000000000000000000013273c51657a8fa3b7cbdfe1cdbaa79583716050403121110100000000000000001e33485e73899fb4c9def4fff3e1cfbdaea3a3aebfd2e5d6c3b09c8976624f3c2915020000000000000000000000001e33485e73899fb4c9dee7d3c0afa29f9f9f9f9f9f9fa2a8afb9c4d1dfe8d8c7b7a594826f5c4936230f0000001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9def4ecdfd4cecdcdcdcdcdcdcdcdcdcdcdcdcdd0d8e4f3ecd6c1ac97826b56402b16001e33485e73899fb4c9dee4d4c7bebcc1ccdbe4d1bdaa96836f5e73899fb4c9ded0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a18c76604b36210b0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000000000c21364b60758a9fb4c9decfbaa5907b66513d281300000000000000000000000000000000000000000000000002101d2a3745525f6c79776756463625150400000000000000000000000000000000001c32475c70879bb0c5dae6d1bda894806c5948382c29313f5062768a9eb3c7dce4cfbaa5907b66513c2711001c31475c70869bb0c5dae6d2bda995826d5a49392e2b32405163768b9fb3c8dce4cfbaa5907a66503b26110000000000000000000000000e23374b6074889cb0c4d7ead7c4b2a08f7d6e5e4f3f2f1f0f00000000000000001e33485e73899fb4c9def4fffeecdbccbfb8b8c0cddde0cdbaa793806d594633200d000000000000000000000000001e33485e73899fb4c9deefddcdbfb6b4b4b4b4b4b4b4b7bcc3ccd6e2efdecbbaaa99887664523f2d1a070000001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9def0decec1b9b8b8b8b8b8b8b8b8b8b8b8b8b8bcc7d5e6ecd6c1ac97826b56402b16001e33485e73899fb4c9def2e4dad3d1d5deeadcc8b5a28e7a665e73899fb4c9ded0bba59079644f3a250f001e33485e73899fb4c9dee1ccb7a28d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000000000091e32475c71879bb0c5dad3bea994806a55402c1702000000000000000000000000000000000000000000000613202d3b485562707d8b857464534333221201000000000000000000000000000000001e33485e73899eb3c8dde3ceb8a38f7965503d2a1a142133465b6f8499aec3d8e7d2bda8937d68533e2813001e33485e73899eb3c8dde3ceb9a48f7965513e2b1c162234475b70869aafc4d9e7d2bda8937c68533e2813000000000000000000000000081c3145596c8094a7bbcde0e1cfbead9c8c7c6d5d4d3d2d1d0d000000000000001e33485e73899fb4c9def4fffff9eadcd2cdcdd3ddebd7c4b19e8a7763503d2a1704000000000000000000000000001e33485e73899fb4c9def4ebdcd1cbc9c9c9c9c9c9c9ccd1d7dfe8f3ecd7c2ae9c8c7b6a5847352210000000001e33485d72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee7d4c1b0a5a3a3a3a3a3a3a3a3a3a3a3a3a3a9b7c9dcead5c0ab95806b56402b16001e33485e73899fb4c9def4f6ede8e7eaf1e7d4c0ad9986725e5e73899fb4c9ded0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000000000041a2f44586d8397acc1d6d7c2ad98846e59442f1a06000000000000000000000000000000000000000000091624313e4b596673828e9b928271615040301f0f000000000000000000000000000000001f344a5f748ba0b4cadfe1ccb7a18c76614c37220d04182d42576c8297acc1d6e9d4bfa9947d68533e2913001f344a5f748b9fb4c9dfe1ccb7a18c76614c3722181a1a2d42576c8397acc1d7e9d4bfa9947d68533e29130000000000000000000000000116293d5164778b9eb1c3d5e6dbcbbaaa9b8c7b6b5b4b3b2b1a0a0000000000001e33485e73899fb4c9def4fffffffaeee6e2e2e6efe1cebba895826d5a4734210e00000000000000000000000000001e33485e73899fb4c9def4faeee5dfdededededededfe1e5ebf2fbffead5c0ab96827262534231200f000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee2cdb8a4928d8d8d8d8d8d8d8d8d8d8d8d8d99adc1d6ead5c0ab95806a543f2a15001e33485e73899fb4c9def4fffffffffff2dfcbb8a4917d69565f748ba0b5cadfd0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000000000162b4055697d94a9bed2dbc6b19c87725d48331e0900000000000000000000000000000000000000000c1a2734414f5c697684919faca090806e5e4e3d2c1b080000000000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e1ccb7a18c76604b36262d2f2f2f40566b8297acc1d6e9d4bfa9947d68533e2913000000000000000000000000000e2135485b6e8293a6b7c9dae8d8c8b9a99a8a796959493828170600000000001e33485e73889db3c8ddf2ffffffffffffffffffebd8c5b29f8c7864513e2b180500000000000000000000000000001e33485e73889db3c8ddf2fbefe6e1e0e0e0e0e0e0e0e0e1e5eaf1f9edd8c4b19f918270604f3e2c1a080000001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c7777777777777777777777778095abc0d5ead5c0ab95806a543f2a15001e33485e73899fb4c9def4fffffffffdead6c3af9c8875614d5f748ba0b5cbe0d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000000000012273c51667b90a5bacfdfcab5a08b76614c37220d00000000000000000000000000000000000003101d2a3845525f6d7a8895a2afbcae9d8d7c6b5b4a3724100000000000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e1ccb7a18c76604b36384144444444566b8297acc1d6e9d4bfa9947d68533e29130000000000000000000000000005182b3e516476889aabbccddce6d7c7b8a898887766564535241301000000001d32475c72889db3c8ddf2fffffffffffffffff6e2cfbca996836f5c4935220f0000000000000000000000000000001d32475c72889db3c8ddf2ecddd2cccbcbcbcbcbcbcbcbccd0d6dde6f1e0cebdaf9f8f7d6d5b493724110000001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76626262626262626262626a8095abc0d5ead5c0ab95806a543f2a15001e33485e73899fb4c9def4fffffffff5e2cebba793806c594a5f748ba0b5cbe0d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000000000000e23384d62778ca1b6cbe0ceb9a48f7965503b261100000000000000000000000000000000000613202e3b485563707d8b98a5b2c0cbbbab9a8a7967533e29140000000000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e1ccb7a18c76604b3848555a5a5a5a5a6b8297acc1d6e9d4bfa9947d68533e291300000000080d0e0e0e0e0e0e0e0e0f223447596a7c8e9eaebecedde5d5c6b6a5958574635241301f0d000000001d32475c72889db3c8ddf2fffff9f5f4f7feffedd9c6b3a08d7966533f2c19060000000000000000000000000000001d32475c72889db3c8ddf0decdc0b7b5b5b5b5b5b5b5b5b7bbc1c9d4dfebdccdbdad9c8b796654412e1b0800001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604c4c4c4c4c4c4c4c546a8095abc0d5ead5c0ab95806a543f2a15001e33485e73899fb4c9def4ffffffffedd9c6b29f8b7764504a5f748ba0b5cbe0d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17020000000000000000000000000000000000000b2034495e73889db2c7dcd1bda8937d68543f2a1500000000000000000000000000000000091624313e4c596673828f9ba9b6c3cfc2b4a7998c7d69543f2a150000000000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e1ccb7a18c76604b4255666f6f6f6f6f6f8297acc1d6e9d4bfa9947d68533e2913000007131c2223232323232323232323293b4d5e6f8090a0b0bfcedde3d3c3b3a39282705f4e3c2b19060000001d32475c72889db3c8ddf2faeee5dfdfe3ebf6e5d1bdaa9783705d49362310000000000000000000000000000000001d32475c72889db3c8dde8d4c1afa3a0a0a0a0a0a0a0a0a2a7aeb7c2cedcebdbcbbaa89684705d4a37241000001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b3737373737373f546a8095abc0d5ead5c0ab95806a543f2a15001e33485e73899fb4c9def4fffffff8e4d1bdaa96836f5b484b5f748ba0b5cbe0d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1702000000000000000000000000000000000000071c31465a6f859aaec3d8d5c0ab97826c57422e190400000000000000000000000000000d1a2734414f5c697684919facb9c6ccbfb1a496897b6e604e3b27120000000000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b708586868686868697acc2d7e9d4bfa9947d68533e2913000616253037383838383838383838383730415162728292a1b0bfcedee1d1c1b09f8f7d6b5a483623100000001d32475c72889db3c8ddf2ebdcd1cbcacfd8e6e3cdb8a38e7a6754402d1b09000000000000000000000000000000001d32475c72889db3c8dde3ceb9a4918b8b8b8b8b8b8b8b8d929aa4b0becddce8d7c5b3a08d7a66533f2b1804001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36222222222a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748a9fb4c9def4fffffff0dcc8b5a28e7a66533f4b60768ca1b7cce1d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c170200000000000000000000000000000000000000182d42576c8296abc0d4d9c4af9a86705b46321d0800000000000000000000000003101d2b3845525f6d7a8895a2afbdcac9bbaea19386786b5d5042311f0c0000000000000000000000000000001f344a5f748ba0b5cadfe1ccb7a18c76604b36210c03172c42576c8297acc1d6e9d4bfa9947d68533e2913001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879b9b9b9b9b9ba3b4c7dbe9d4bfa9947d68533e291300122434424b4e4e4e4e4e4e4e4e4e4e4b4234445463738392a1b0c0cfdfdecebdac9b89776553402d1a0600001d32475c72889db3c8ddefddcdbfb6b4bbc8d8e3cebaa592806e5c4a382614020000000000000000000000000000001d32475c72889db3c8dde2cdb8a38d7774747474747476787d8892a0aebecedfe3d0bdaa96836f5b47331e0a001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210d0d152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5fffffbe7d4c0ad9986725e4b374b60768ca1b7cce1d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c17030303030303030100000000000000000000000014293e53687c92a7bcd1ddc8b39e89745f4a35200c00000000000000000000000613212e3b485663707d8b98a5b3c0cdc6b8ab9e908375685a4d3f322314020000000000000000000000000000001f34495e73899fb3c8dee2cdb8a38e78644f3b2817112032465a6f8499aec3d8e8d3bda8937d68533e2913001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb0b0b0b0b0b5c1d1e3e9d4bfa9947d68533e2913001a2e41525f636363636363636363635f524136465564738392a2b1c1d1e2dbcab8a795826f5c4936220e00001d32475c72889db3c8dde7d3c0afa2a0aabaccded5c2b09e8c7967564432200d0000000000000000000000000000001d32475c72889db3c8dde2cdb8a38d77625f5f5f5f5f60636a758290a0b1c2d4e7d9c6b29e8a76614d38240f001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5fffff2dfcbb8a4917d695642364b60768ca1b7cce1d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422c1919191919191918150e040000000000000000000010253a4f64798fa3b8cde1ccb7a28d78634e39240f00000000000000000000091724313e4c596673828f9ca9b6c3d0c2b5a89b8d807264574a3c2f221405000000000000000000000000000000001d32475c71879cb1c6dae5d1bca7937d6a57453529262f3e4f6175899eb2c7dbe5d0bba6917b66513c2712001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c5c5c5c5c9d2dfefe9d4bfa9947d68533e2913001f34495d7078787878787878787878705d493437465564738493a3b3c4d5e7d6c4b29f8c7965513e291501001d32475c72889db3c8dde3ceb9a4918c9dafc1d2dfcdbba9978573614f3d2b190700000000000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c4a4a4a4a4b4f5763718293a5b8cbdee1ceb9a5907b67523d2814001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5fffdead6c3af9c8875614d3a364b60768ca1b7cce1d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57422e2e2e2e2e2e2e2e2e2a2116070000000000000000000d22374b60758b9fb4c9ded0bba6917b67523d28130000000000000000000d1a2734424f5c6a7785929facb9c7cdbfb2a5978a7c6f615447392c1e110400000000000000000000000000000000001a2f44596e8398acc1d6ead6c2ae9b88756353463d3b414d5c6d7d92a5b8cce1e0cbb7a28d78634e39240f001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c7dadadadde5f0fde9d4bfa9947d68533e2913001f344a5f748b8f8f8f8f8f8f8f8f8b745f4a342837465565758595a6b8cadce1cfbca895826d58442f1b06001d32475c72889db3c8dde2cdb8a38d8091a3b5c6d8d8c6b4a2907d6c5a4836241200000000000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c37343434363b46536475889bafc3d7e8d3bfaa95806b56412c17001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5fff5e2cebba793806c594531374c61768ca1b7cce1d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c57434343434343434343433e332515030000000000000000091e33485d71879cb1c5dad3bfaa95806b56412c170200000000000003101d2b384552606d7a8895a2b0bdcacabcafa19487796c5e514336291b0e01000000000000000000000000000000000000162b4054697d93a7bbcfe3ddcab7a492827164595250545e6a798a9caec1d4e8d9c5b19d88735f4a35200c001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c7dce8e8e8e8e8e8e8d4bfa9947d68533e2913001f344a5f748ba0a4a4a4a4a4a4a08b745f4a341f283747576777899aadc0d3e7d8c4b09c88725e4934200b001d32475c72889db3c8dde2cdb8a38d778697a9bbcdded2c0ae9c8a776653412f1d0b000000000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c37221f1f21283546586b8094a9bdd2e7d8c3ad98846e58442f19001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5ffedd9c6b29f8b7764503d29374c62778da3b8cde2d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836c5858585858585858585858514332200c0000000000000000041a2f44596e8398adc2d7d7c2ae99846f5a45301b0600000000000614212e3b495663707d8b98a6b3c0cdc7b9ac9e918476685b4e403326180b000000000000000000000000000000000000000011263b4f63778ca0b3c7dae7d4c2b09f9082756c676669707b8998a8b9cbdee5d2beaa96836d5945301c07001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1c7d3d3d3d3d3d3d3d3d3bfa9947d68533e2913001f344a5f748ba0b5b9b9b9b9b5a08b745f4a341f1a293949596b7d90a4b8cce0dfcab6a18c77624d38230e001d32475c72889db3c8dde2cdb8a38d77798c9eafc1d3ddcbb9a79583705f4d3b2917050000000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0a0c17293c51657a90a5bacfe4dac5b09b866f5a442f1a001d32475c72889db3c8dde4cfb9a48f78634e38230e0d1b2d41556a8095aabfd4e9d6c1ac97826c57422c17001e33485e73899fb4c9dee1ccb7a18c76604b36210b00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5f8e4d1bdaa96836f5b483422374c62778da3b8cde2d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ad98836e6e6e6e6e6e6e6e6e6e6e6d614f3b2712000000000000000000162b40556a8094a9bed3dbc6b19c88725d49341f0a000000000a1724313f4c596673828f9ca9b6c3d1c3b6a99c8e807365584b3d302215080000000000000000000000000000000000000000000c2034485c708498abbed0e3dfcebdaea09389827c7b7d848d99a7b6c6d7e8dbc8b5a28f7a67533f2b1602001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879cb1bdbdbdbdbdbdbdbdbdbdbda9947d68533e2913001f344a5f748ba0b5cbcfcfcbb5a08b745f4a341f0b1b2b3c4d6074899eb2c7dce4cfbaa5907a65503b2611001d32475c72889db3c8dde2cdb8a38d776e8092a3b5c7d8d6c4b2a08f7c6a58463422100000000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d00000e23384e63788fa4b9cfe4dbc6b19c87705b46301b001d32475c72889db3c8dde4cfb9a48f78634e382321212a394a5c708599adc2d7e9d4bfaa95806a55402b16001e33485e73899fb4c9dee1ccb7a18c77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5efdcc8b5a28e7a66533f2c22374c62778da3b8cde2d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0d8c3ae99858484848484848484848484806a543f2a1500000000000000000012273c51667b90a5bacfdfcab5a08c76614c38230e0000000b1a2735424f5d6a7785929facbac7cec0b3a6988b7d706255483a2d1f12050000000000000000000000000000000000000000000005192d4154677b8ea1b3c5d7e8dccdbeb1a59c9591919398a0abb7c5d4e4e1d0beac9986725f4b38241000001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879ca8a8a8a8a8a8a8a8a8a8a8a8a8947d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a0d1e31465a6f859aafc4d9e7d1bca7927c67523c2712001d32475c72889db3c8dde2cdb8a38d7762748698a9bbcddfd0beac99887563513f2d1b0900000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d090a16273b5065798fa4b9cfe4dac5b09b866f5a45301b001d32475c72889db3c8dde4cfb9a48f78634e383636363c485767798ca0b4c8dce4d0bba6917c67523d2813001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f5e7d4c0ac9986725e4b372422374c62778da3b8cde2d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0dcc7b4a39a9999999999999999999995806a543f2a150000000000000000000f24394d62778da2b6cbe0ceb9a48f7965503b26120000071829384552606d7a8895a2b0bdcacbbdb0a295887a6d5f5244372a1c0f010000000000000000000000000000000000000000000000001125384c5e718496a8b9cadbebdccec2b8b0aaa7a7a8acb3bdc8d5e3e4d4c3b2a18f7c6956432f1c0800001f344a5f748ba0b5cbe0e1ccb7a18c76604b465b70879393939393939393939393939393937d68533e2913001f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f0a02182d43586c8398adc3d8e8d3bea9947d68533e2913001d32475c72889db3c8dde2cdb8a38d7762687a8c9eb0c1d3dbc9b7a593826e5d4b39271402000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c37221e1e1f263444576a7d93a8bdd1e6d8c3ae99846e59442f1a001d32475c72889db3c8dde4cfb9a48f78634e4b4b4b4b505966748697a9bccfe3decab6a18d77634e3a2510001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0f2dfcbb8a4907c6956422f1b23384e63788ea3b8cde2d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e4d1c1b5afafafafafafafafafafab95806a543f2a150000000000000000000b20354a5f73899eb3c7dcd2bda8937d69543f2a150000112436475663707d8c99a6b3c0cdc8baad9f9285776a5c4f413427190c0000000000000000000000000000000000000000000000000000091c2f415466788a9cadbdcdddece0d5cbc4bfbcbcbdc1c7d0dae6e7d6c6b6a69583715f4c3926130000001f344a5f748ba0b5cbe0e1ccb7a18c76604b455a6e7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7a67523d2813001f344a5f748ba0b5cbe0e0cbb5a08b74604b36200b01182d42576c8398adc3d8e9d4bfa9947d68533e2913001d32475c72889db3c8dde2cdb8a38d77625c6e8092a4b5c7d9d4c2b09e8c7a68564432200e000000000000000000001d32475c72889db3c8dde2cdb8a38d77624c37333333343944526274879aaec2d6e9d4bfab96826b56412c17001d32475c72889db3c8dde4cfb9a48f78636260606060646b768493a3b4c6d8e9d6c2af9b87725e4935200b001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0ead6c3af9c8874614d3a261323384e63788fa4b9cfe4d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0efdfd2c8c4c4c4c4c4c4c4c4c4c0ab95806a543f2a15000000000000000000071c31465b70869aafc4d9d5c1ac97826d58432e190400192d40536573828f9ca9b6c4d1c8b8aa9c8f827366594c3e3123160900000000000000000000000000000000000000000000000000000000122537495b6d7d8f9fafc0d3e7f2e8dfd8d4d1d1d2d5dbe3ecf3decbb8a89888766553412f1d0a0000001f344a5f748ba0b5cbe0e1ccb7a18c76604b3e516067676767676767676767676767676767665c4b382410001f344a5f748b9fb4c9dfe1ccb7a28d77624d3925120b1d31455a6f8499aec3d8e7d2bda8937c67523d2813001d32475c72889db3c8dde2cdb8a38d77625163748698aabbcddfcdbba9988673614f3d2b19070000000000000000001d32475c72889db3c8dde2cdb8a38d77624c48484848494d5561708091a3b6c9dde3cebaa6917c68533e2914001d32475c72889db3c8dde4cfb9a48f7877777676767678808995a2b1c1d2e4dfccbaa693806b57432f1b06001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0e1cebaa793806c5845311e0e23384e63788fa4b9cfe4d0bba59079644f3a250f001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0f5efe4dcd9d9d9d9d9d9d9d9d5c0ab95806a543f2a1500000000000000000001182d42576c8296abc0d5d9c5b09b86705c47321d08001e33475c7083929fadbac7d4d2beab9a8c7d706356493b2e2013060000000000000000000000000000000000000000000000000000000000081a2c3d4f60708291a4b9cee3f8fbf3ede9e6e6e7eaeff7ffefdac5b09b8a796a5948362412000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36424d52525252525252525252525252525252514a3e2e1b08001e33485d72889db2c7dce4cfbaa5917c68544130221f293a4c6074889db2c6dbe4cfbaa5907b66503b2611001d32475c72889db3c8dde2cdb8a38d77624c57687a8c9eb0c2d3d9c7b5a3917d6c5a483624120000000000000000001d32475c72889db3c8dde2cdb8a38d77625e5e5e5e5e5e616873808f9eafc1d3e6dbc7b4a08b77624e392510001d32475c72889db3c8dde5d0bba7948d8d8d8c8c8c8c8e939ba6b2c0cfdfe5d3c2af9d8a7663503c281400001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbe0d9c5b29f8b7763503d29150e23384e63788fa4b9cfe0d0bba59079644f3a250f001e33485e73899fb4c9dee0cdb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbe0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a1500000000000000000000152a3e53687d92a7bcd1ddc8b39f8a745f4b36210c001f344a5f748b9fafbcc9d6e4d0bba5907c6f615447392c1f11040000000000000000000000000000000000000000000000000000000000000215283a4c5e6f8091a4b9cee3f8f5ede6e1dededfe3e9f0faefdac5b09b8978675644321f0d000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b3631393c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c372d201000001b30455a6f8599aec3d8e8d4bfab9784705f4e4036343a4757697c8fa3b7cce0e0cbb7a28d77634e39240f001d32475c72889db3c8dde2cdb8a38d77624c4b5d6f8292a4b6c8d9d2c0ae9c8a77665442301e0c00000000000000001d32475c72889db3c8dde2cdb8a38d7773737373737373767c85919eadbccddee4d2bfac9885705c48331f0b001d32475c72889db3c8ddead6c3b2a6a3a3a2a1a1a1a1a3a7afb8c3d0dee7d7c7b6a492806d5a4734200d00001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead5c0ab95806a543f2a15001f344a5f748ba0b5cbcbcbbdaa96836f5b4834210d0e23384e63788fa4b9cbcbcbbba59079644f3a250f001e33485e73899fb4c9cbcbcbb8a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc0ab95806a543f2a150000000000000000000011263b5064798fa3b8cbcbcbb7a28d78634e392510001e33485c7083919eabb8c6d3d3bfab9b8d807264574a3d2f22140700000000000000000000000000000000000000000000000000000000000c1f3245576a7b8d9eaec0d3e7eee3d9d1ccc9c9caced4dde8f3decbb8a7968573614f3c2916030000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36212527272727272a2e2e2e2e2e2e2e2e2e2e2d292115060000182d42566b8095a9bed2e6dac7b3a08e7c6c5e524b4a4e5865758799acbfd2e6dac6b19d88735f4a35200b001d32475c72889db3c8dde2cdb8a38d77624c3f5163758798aabcceddcbb9a79583715f4d3b291705000000000000001d32475c72889db3c8dde3ceb9a49189898989898989898b9098a2aebccbdae9d8c7b5a28f7c6855412d1905001d32475c72889db3c8ddf2e1d0c3bab8b8b7b7b7b7b7b8bcc2cbd5e1e6d8c9baa998877563503e2b180400001e33485e73899fb4c9dee0cdb8a38d77624c37220d00152a3f546a8095abc0d5e0d5c0ab95806a543f2a15001f344a5f748ba0b5b5b5b5b5a18e7a66533f2c18050f253a4f647990a5b5b5b5b5b5a48f79644f3a240f001e33485e73899fb4b5b5b5b5b5a38d77624c37220d0000000000000000000000000000000000001f344a5f748ba0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab95806a543f2a15000000000000000000000d22374c60768ba0b4b5b5b5b5a6917c67523d281400192d41546472808e9ba8b5c2d0c9b9ab9e908375685a4d403225170a0000000000000000000000000000000000000000000000000000000114283b4e61758799abbcccddebddd1c6bdb7b4b4b5b9c1cad6e3e7d5c5b4a3917d6c5946321f0b0000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36211012121626343e43434343434343434343433d332414020013283d51657a8fa3b7cadee3d0beac9b8b7b6f65605f626a758493a4b6c8dbe6d3bfab97836e5a45301c07001d32475c72889db3c8dde2cdb8a38d77624c374557697a8d9fb0c2d4d7c5b3a18f7c6a5846342210000000000000001d32475c72889db3c8dde7d3c0afa29f9f9f9f9f9f9f9fa0a5acb5c0ccdae9dcccbba99785725f4c39251200001d32475c72889db2c7dcf1eee0d5cfcdcdcccccccccccdd1d6dee8e1d5c8baab9c8b7a69574533210e0000001e33485e73899fb4c9cbcbcbb8a38d77624c37220d00152a3f546a8095abc0cbcbcbc0ab95806a543f2a15001f344a5f748ba0a0a0a0a0a09986725e4a372310000f253a4f647990a0a0a0a0a0a0a08f78634e38230e001e33485e73899fa0a0a0a0a0a0a08d77624c37220d0000000000000000000000000000000000001f344a5f748ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095806a543f2a1500000000000000000000091e33485d72879ca0a0a0a0a0a095806b56412c17001124364655626f7c8a97a5b2bfccc9bbaea19386786b5e504335281b0d0000000000000000000000000000000000000000000000000000081c3044576b7d92a4b6c8daeadccdbfb3aaa29f9fa0a5aeb8c5d3e2e3d1c0ae9c8975624e3b27130000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000e2134445158585858585858585858585042321f0b000e23374b5f73889baec2d4e6dbc9b8a99a8d82797574777d8793a2b1c2d3e5dcc9b6a38f7b68533f2b1602001d32475c72889db3c8dde2cdb8a38d77624c373a4b5d6f8293a5b6c8dad0beac9a887563513f2d1b090000000000001d32475c72889db3c8ddefddcdbfb6b4b4b4b4b4b4b4b4b5b9bfc8d2ddeadccdbeae9d8c7a685543301d0900001c31465b70879cb1c7dcf1f2f2e9e4e2e2e1e1e1e1e1e2e5e9e2d9cfc4b7aa9c8e7d6d5c4b3a2816040000001e33485e73899fb4b5b5b5b5b5a38d77624c37220d00152a3f546a8095abb5b5b5b5b5a9947d68533e2914001f344a5f748a8b8b8b8b8b8b8b7c6956422e1b08000f253a4f64798b8b8b8b8b8b8b8b8b78634e38230e001e33485e73898b8b8b8b8b8b8b8b8b77624c37220d0000000000000000000000000000000000001f344a5f748b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a1500000000000000000000041a2f44596e838b8b8b8b8b8b8b8b846f5a442f1a000719283744515f6c798794a1aebcc9ccbfb1a497897b6e615346382b1e10030000000000000000000000000000000000000000000000000e23374b5f73879baec1d4e6decdbdafa2978e89898b929ba7b5c4d5e6ddcbb8a5927d6a56422e190500001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b0014293d51626d6e6e6e6e6e6e6e6e6e6c604e3b261100081c3044586b7d92a5b7c9dbe7d6c7b8aa9f958e8b8a8c919aa5b1c0cfe0e3d1bfad9a8773604c38241000001d32475c72889db2c7dce2cdb8a38d77624c372e405263758799aabccedbc9b7a593826f5d4b3927150300000000001d32475c72889db3c8ddf2ebdcd1cbc9c9c9c9c9c9c9c9cbced4dbe4e4d9ccbeafa090806e5c4a3826130000001b30465b70879cb1c7dcdddddddddddddddddddddedddcdad5cec6bdb2a69a8d7d6f5f4f3e2e1c0b000000001e33485e73899fa0a0a0a0a0a0a08d77624c37220d00152a3f546a8095a0a0a0a0a0a0a0947d68533e2913001d32465a6b747474747474747472614d3a261300000d22374b5e6f7474747474747474746f5f4b37220d001c31465a6c747474747474747474746f5e4a36210c0000000000000000000000000000000000001e33485c6e7474747474747474747474747474747474747474747466523e29140000000000000000000000172b405467747474747474747474746b58432e1900000a192633414e5b687583909eabb8c5cfc2b4a79a8c80716456493c2e211406000000000000000000000000000000000000000000000013283d51657a8fa3b6cadee4d2c0af9f91847a7473767d8997a6b7c8dbe8d4c1ad9a86715d48341f0a00001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b828484848484848484847d68533e2913000115283b4f6275889aacbecfdfe5d6c8bcb1a9a3a09fa1a6adb6c2cfdee6d6c5b4a2907d6a5744301d0900001c31465b70879cb1c7dce2cdb8a38d77624c3722344658697b8d9fb1c2d4d4c2b09e8c7a68564432200e00000000001c31465b70879cb1c7dcf1f5eee5dfdedededededededee0e3e8e4dcd2c7bbaea091827161503f2d1b090000001b30465b70879cb1c7c8c8c8c8c8c8c8c8c8c8c8c9c8c7c5c0bab3aaa095897b6e60514131211000000000001e33485e73898b8b8b8b8b8b8b8b8b77624c37220d00152a3f546a808b8b8b8b8b8b8b8b8b7d68533e291300172a3d4d5a5f5f5f5f5f5f5f5f5e5444311e0a0000081c2f41515c5f5f5f5f5f5f5f5f5f5d51412f1c0800162a3d4e5b5f5f5f5f5f5f5f5f5f5f5d51412e1b07000000000000000000000000000000000000192c3f505c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574836230f000000000000000000000011253849585f5f5f5f5f5f5f5f5f5f5a4d3b2814000000091623303d4b586572808d9ba7b5c2cfc5b7aa9d8f8274675a4c3f3124170900000000000000000000000000000000000000000000182d41566b8095a9bed2e6dbc8b5a3918272675f5e626b788999abbed1e4ddc9b4a08c77624d38240f00001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b829799999999999999947d68533e291300000c203345586a7c8fa0b1c1d0dfe6d9cec4bdb8b5b4b6bac1c9d4e0e6d8c8b8a7968572604d3a27140100001b30465b70879cb1c7dce0cdb8a38d77624c3722283a4c5d6f8293a5b7c8dacebcaa988673614f3d2b1907000000001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0e0dedcd7d1c9c0b5aa9d908272635343322110000000001b30465b70879cb1b2b3b3b3b3b3b3b3b3b3b3b3b4b3b2b0aca69f978d83776b5e50423223130300000000001c31465a6c74747474747474747474705f4a36210c0014293e5266747474747474747474747364513c2712000d1f2f3d464a4a4a4a4a4a4a4a4943362615020000001223323f484a4a4a4a4a4a4a4a4a484033241200000e1f303e474a4a4a4a4a4a4a4a4a4a4840332312000000000000000000000000000000000000000f21323f484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392a19070000000000000000000000081a2b3a454a4a4a4a4a4a4a4a4a4a463d2f1e0c0000000005121f2d3a4754616f7c8a97a4b1bfccc8bbada09285776a5d4f4234271a0c0000000000000000000000000000000000000000021b30455a6f8599aec3d8e7d3bfab98857363554b484e5b6a7b8ea2b5c9dde3cfbaa5907b66513c271200001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acafafafafafa9947d68533e291300000316283b4d5f708293a3b2c1cfdce8e1d8d1cdcbc9cbcfd4dce6e2d5c8baaa9a8a78675543311e0b0000001b30465b70879cb1c7cbcbcbb8a38d77624c37221d2e405264758899abbdcbcbc7b5a391806d5a49372513010000001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbcbc9c7c2bdb5ada3988c807163544535251504000000001b30465b70879c9c9d9d9d9d9d9d9d9d9d9d9d9d9f9e9d9b97928b847a7065594d4032231405000000000000172a3d4e5b5f5f5f5f5f5f5f5f5f5f5d51412f1b07000f233648575f5f5f5f5f5f5f5f5f5f5f564735220e0001111f2a323434343434343434342f251809000000000514222d33343434343434343434332d23150600000212202b3334343434343434343434332d231506000000000000000000000000000000000000000414222d333434343434343434343434343434343434343434343431281b0c000000000000000000000000000d1c283134343434343434343434322a1f11000000000000020f1c293744515e6b798694a1aebbc8cbbeb0a396887a6d605245382a1d1002000000000000000000000000000000000000081e33485d72889db2c7dce3ceb9a4907c68564537333d4c5e72869aafc4d8e8d3bea9947d69543f2a1400001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b00162b40566b8297acc1c4c4c4bfa9947d68533e29130000000c1e30415364748594a3b1becad5dfe7e6e1e0dfe0e3e9e3dad0c4b7aa9c8d7c6c5b49382614010000001b30465b70879cb1b5b5b5b5b5a38d77624c372211233546586a7b8d9fb1b5b5b5b5ae9c8a78665442301e0b0000001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b2aea8a29990867a6e6153453627170700000000001b30465b7087878788888888888888888888888889898886837d7770675d53483c2f221405000000000000000e1f303e474a4a4a4a4a4a4a4a4a4a4941332412000007192a39444a4a4a4a4a4a4a4a4a4a4a44382918050000010d171d1f1f1f1f1f1f1f1f1f1b13080000000000000410191e1f1f1f1f1f1f1f1f1f1e19110500000000020f181e1f1f1f1f1f1f1f1f1f1f1e1911050000000000000000000000000000000000000000000410191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c150a0000000000000000000000000000000b151c1f1f1f1f1f1f1f1f1f1f1d170d0100000000000000000b192633404e5b687583909eabb8c5cec1b3a6998c7d706355483b2d20130500000000000000000000000000000000000a1f344a5f74899fb4c9dee0cbb5a08b76614c39271f2f42576c8296abc0d5ead5c0ab95806b56402b1601001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b02182d42576c8397acc1d7d9d4bfa9947d68533e291300000001122435465666758593a0adb8c3ccd3d9dcdfdfdedbd6cfc7beb3a69a8c7d6e5e4e3d2c1a09000000001b30465b70879ca0a0a0a0a0a0a08d77624c37220d17293a4c5e708294a0a0a0a0a0a0a09583715f4d3a26110000001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9d99948d867d73685d5043362718090000000000001a2e435768707070727272727272727272727272737372706d68635c544a41362a1e110400000000000000000212202b3334343434343434343434342e2315060000000c1b2831343434343434343434343430271a0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081523303d4a586572808d9aa7b5c2cfc4b7a99c8f827366594b3e30231404000000000000000000000000000000000a1f344a5f748ba0b5cbe0e0cbb5a08b745f4a341f152a3f546a8095abc0d5ead6c1ac97826b56402b1601001f344a5f74899fb4c9dee1ccb7a28d77634e3925130c1e31465a6f8499aec3d8e8d3bea9947d68533e2913000000000617283848576675838f9ba6b0b8bfc4c7c9cbc9c6c1bcb4aba095897b6e5f5040301f0e00000000001b30465b70878b8b8b8b8b8b8b8b8b77624c37220d0b1d2f41526476888b8b8b8b8b8b8b8b8b7c69543f2a140000001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a88848079726a60564b3f332618090000000000000014273a4a575b5b5b5c5c5c5c5c5c5c5c5c5c5c5d5e5e5c5b58544e4840372e24190d0000000000000000000000020f181e1f1f1f1f1f1f1f1f1f1f1f1a110500000000000a151c1f1f1f1f1f1f1f1f1f1f1f1c140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a13191a1a1a1a1a1a1a1a1a1a19140c0000000000000000000000000000000000000000000000000000000000000000040e161a1a1a1a1a1a1a1a1a17110600000000000000000000000000000a12171919191919191919191918130a000000000000000000000000000000000005121f2c3a4754616f7c8a97a4b1beccc7baad9f928476695c4e41322210000000000000000000000000000000000a1f344a5f74899fb4c9dee0cbb5a08b76614d39271f2f43576c8297abc0d5ead5c0ab95806a55402b1601001e33485d72889db2c7dce4cfbaa6917c68554231231e2a3a4d6075899eb2c7dce6d1bca7927c67523d281300000000000a1b2a39485764717d89939ca4aaafb3b4b5b4b1ada7a0988e83776b5e50413222120100000000001a2f44586b74747474747474747474705e4a36210c00112335475869747474747474747474747466533e29140000001a2f44586b74747474747474747474747474747474747474726f6a655e564d44392e22150800000000000000000a1c2c3a4346464647474747474747474747474848484746433f3a332c241b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c272d2f2f2f2f2f2f2f2f2f2f2e281e110100000000000000000000000000000000000000000000000000000000000615212a2f2f2f2f2f2f2f2f2f2c2418090000000000000000000000000f1c262c2e2e2e2e2e2e2e2e2e2e2d271d100000000000000000000000000000000000010e1c293644515e6b788693a0aebbc8cabdb0a295887a6c5f503f2c1803000000000000000000000000000000071e33485d72889db2c7dce3ceb9a4907c68564437333d4d5f72869aafc4d9e7d2bda8937d68533f291400001b30455a6f8599aec3d8e9d4c0ac988572604f4135333a48586a7c90a4b8cce1e2cdb9a48f79644f3a25100000000000000c1b2a394754606b76808990969a9d9fa09f9c98938c857b70665a4d403223140400000000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5d51412e1b07000617293b4b595f5f5f5f5f5f5f5f5f5f5f584937230f00000015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5a56504a433a31271c1004000000000000000000000e1c272e303031323232323232323232323233333332312e2a251f191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1812080000000c1d2d3a4244444444444444444444433b2f1f0f00000000000000000000000000000000000000000000000000000000011324333e4444444444444444444036271706000000000000000000000c1d2d394143434343434343434343413a2e1e0d0000000000000000000000000000000000000b192633404d5b687583909daab8c5cdc0b3a5988b7d6e5b46311c07000000000000000000000000000000011b30455a6f8599aec3d7e8d3bfab98857362544a484e5b6a7c8fa2b5c9dee3ceb9a5907b66513c27120000182d41566b8095a9bdd2e6dbc8b4a28f7d6d5f524a484d586576889aacc0d3e7dcc8b49f8a75614c37220d000000000000000c1b2936434e59636c757b8286888a8b8987837d7870685e54483c2f221304000000000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a49413323120000000c1d2d3b454a4a4a4a4a4a4a4a4a4a4a453a2b1a070000000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4845413c362f271e1409000000000000000000000000000a141a1b1b1c1d1d1d1d1d1d1d1d1d1d1d1e1e1e1d1c1915110b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d25190b000016293b4b565a5a5a5a5a5a5a5a5a5a584d3d2c19050000000000000000000000000000000000000000000000000000000a1e314251595a5a5a5a5a5a5a5a534535230f0000000000000000000016293b4b5558585858585858585858564c3c2a17040000000000000000000000000000000000000815222f3d4a576471808d9aa7b4c1cfc3b6a69585715c47321c0700000000000000000000000000000000182d41566b8094a9bdd1e5dbc8b5a2918272665f5d616b798999acbed1e5dcc8b49f8b76614d38230e000013283d5165798fa2b6cadee4d1bead9c8c7c6f655e5d6169758494a5b7c9dce8d5c1ad9985705c47321e0900000000000000000b1825313c47505960676c7073747473726e69645d544c41362b1e1104000000000000000001111f2b3234343434343434343434342e231506000000000f1d2931343434343434343434343431281c0d0000000001111f2b323434343434343434343434343434343434343433302c27221b130b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1e2e3a4244444444444444444444444444444444444444444444444444444444444444444137291908001d314559696f6f6f6f6f6f6f6f6f6f6b5b4834200b0000000000000000000000000000000000000000000000000000001025394d606d6f6f6f6f6f6f6f6f63523e2a15000000000000000000001d314559686e6e6e6e6e6e6e6e6e6e695a47331e090000000000000000000000000000000000000004121f2c394754616e7c8996a3b1bebaa99888776655422e19050000000000000000000000000000000013283c5165798ea2b6c9dde4d2c0af9f9084797372767d8998a7b7c9dbe6d4c0ad9985705c48331f0a00000e22374b5f73879baec1d4e6dccabaaa9b8d82787372757c8794a2b2c3d4e6dfccb9a5927d6a55412d190400000000000000000007131f2a343d454c52575b5e5f5f5e5c59554f4941382f24190d0100000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1a11050000000000000c161d1f1f1f1f1f1f1f1f1f1f1f1c150b000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1b18130d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e171c1e1e1e1e1e1e1d1d1d1d1d1d1d1d1d1d1b1a17140f0a0400000000000000000000000000000000172a3c4c575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5447372512001f344a5f748686868686868686868677624c37220d00000000000000000000000000000000000000000000000000000012273c52677c86868686868686826c57422c17020000000000000000001f344a5f748484848484848484848476604b36210b0000000000000000000000000000000000000000010e1c293643505e6b788693a0aeac9c8b7a6a594838261200000000000000000000000000000000000e22364b5f72879aaec0d2e5decdbdaea1968e89888b919ba7b6c5d5e6dbc9b7a4917d6955412d19040000081c3044576b7d92a5b7c9dbe8d8c8b9ab9f958d89888b9099a5b2c0d0e0e5d4c2af9c8976624e3b26120000000000000000000000020d17212a31383e4246484a4a494744403b352d251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002121f2a3133333333333332323232323232323232302f2c29241e18110900000000000000000000000000001d3246596a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6554412d18001f344a5f748b9b9b9b9b9b9b9b9b8d77624c37220d00000000000000000000000000000000000000000000000000000012273c52677c939b9b9b9b9b98836c57422c17020000000000000000001f344a5f748b99999999999999998c76604b36210b000000000000000000000000000000000000000000000b182533404d5a677582909d9f8f7d6d5c4c3b2b1a090000000000000000000000000000000000071c2f43576a7d91a3b5c7d8e9dccdbfb3a9a29e9da0a5aeb8c5d4e3e0cfbeac9a8874614d3a26120000000014283b4e6175889aacbdcedee6d7c9bcb1a8a29e9d9fa4acb6c2d0dee8d8c8b6a592806c5946331f0b00000000000000000000000000040e161d24292e3133343434322f2b26211912090000000000000000000000000000000000000000000000000000000000000000000812181a1a1a1a1a1a1a1a1a1a1a160e0300000000000000000000000b14191a1a1a1a1a1a1a1a1a1a181309000000000000000913181a1a1a1a1a1a1a1a1a1a19140b0000000000000b14191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1815120e0802000000000000000000000000000000000e20303d46484848484848474747474747474747474644413e39332c251c13090000000000000000000000001f344a5f7486868686868686868686868686868686868686868686868686868686868686846f5a442f1a001f344a5f748ba0b0b0b0b0b0b0a38d77624c37220d0000000000000000000000000000000000000000000000000004101b273c52677c93a8b0b0b0ad98836c57422c1b100400000000000000001f344a5f748ba0afafafafafafa18c76604b36210b00000000000000000000000000000000000000000000000815222f3c4a576471808c918270604f3e2e1d0d0000000000000000000000000000000000000014273b4e61738698aabbcbdbe9ddd0c6bdb7b3b3b4b9c1cad6e3e1d2c2b1a08f7c6a5744311e0a000000000c1f3245586a7c8e9fb0c0d0dfe7dacec4bcb6b3b3b4b9c0c9d4e0e8dacbbaaa99877563503d2a170300000000000000000000000000000002090f14191c1e1f1f1f1d1a17120c06000000000000000000000000000000000000000000000000000000000000000000000c1a252d2f2f2f2f2f2f2f2f2f2f2f2a201304000000000000000000101d272e2f2f2f2f2f2f2f2f2f2f2d261b0e00000000000d1b262d2f2f2f2f2f2f2f2f2f2f2e281e11010000000f1d272e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d2b27221d160f070000000000000000000000000000182b3d4e5a5e5e5e5e5e5e5c5c5c5c5c5c5c5c5c5c5b5956524d4740382f261b1004000000000000000000001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b866f5a442f1a001f344a5f748ba0b5c5c5c5c5b8a38d77624c37220d0000000000000000000000000000000000000000000000000815222d384152677c93a8bdc5c3ad98836c5742382d221508000000000000001f344a5f748ba0b5c4c4c4c4b7a18c76604b36210b00000000000000000000000000000000000000000000000004111e2c394653616e7b847363524231211000000000000000000000000000000000000000000b1e314456687a8c9dadbdcbd9e5e2d9d1cbc8c8caced4dde8ded1c3b4a49483715f4d3b281502000000000215283b4d5e708292a2b2c1cfdbe7e1d7d0cbc8c8c9cdd4dce6e3d7cabcad9d8c7a69584533200d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081a2a374144444444444444444444443d31221200000000000000000d1e2e3a424444444444444444444442392c1c0b0000000a1b2b394244444444444444444444433b2f1f0e00000c1d2d3a42444444444444444444444444444444444442403c37312a231a10060000000000000000000000001e32475a6c73737373737372727272727272727272706e6b67625b544c42382d2115080000000000000000001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b09b866f5a442f1a001f344a5f748ba0b5cbdadacdb8a38d77624c37220d0000000000000000000000000000000000000000000000091826333f4a545e677c93a8bdd3c3ad98836c5d544a3f3326190a0000000000001f344a5f748ba0b5cbd9d9ccb7a18c76604b36210b00000000000000000000000000000000000000000000000000010e1b283643505d6b70655545342413030000000000000000000000000000000000000000021427394b5d6e808f9eadbbc8d3dee6e5e0dddddfe2e8e2d8cdc0b3a5968675645342301e0b0000000000000b1e2f415263748594a3b1becad5dfe7e4e0dddddfe2e8e4dbd1c6b9ac9e8f7d6e5d4c3a281604000000000000000000000000000000000001070b0f121415151513100d08020000000000000000000000000000000000000000000000000000000000000000000012253748545a5a5a5a5a5a5a5a5a5a594f402f1c0800000000000000172a3c4c575a5a5a5a5a5a5a5a5a5a564a3a281501000014273949565a5a5a5a5a5a5a5a5a5a574d3d2b18040016293b4b575a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a595754514b453e362d23190d01000000000000000000001f344a5f74898989898989888888888888888888888784827c766f675f554a3f3326190b00000000000000001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b09b866f5a442f1a001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000000000000000000000000000000000000000918273644515d6771798293a8bdd3c3ad98837971675d51443628190a00000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b0000000000000000000000000000000000000000000000000000000b1825323f4d585b554738271706000000000000000000000000000000000000000000000a1c2e3f506170808f9daab6c1cad2d8dcdedfdedad5cec5bbafa29587776858473624130100000000000000122435465666758593a0adb8c2cbd3d9dcdfdfdedbd6d0c8bfb4a89b8e807060503f2e1d0b00000000000000000000000000000000060e151b202427292a2a2a2825211c160f080000000000000000000000000000000000000000000000000000000000000000182d4154666f6f6f6f6f6f6f6f6f6f6d5e4b37230e000000000000001d3246596a6f6f6f6f6f6f6f6f6f6f685744301b0700061b304457676f6f6f6f6f6f6f6f6f6f6a5a47331e09001d314559696f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e6c69656059524940362b1f12060000000000000000001f344a5f748b9f9f9f9f9f9d9d9d9d9d9d9d9d9d9c9b9996918b847b72675c514437291a0b000000000000001f344a5f748ba0b5cbdadadadadadadadadadadadadadadadadadadadadadadadac5b09b866f5a442f1a001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d000000000000000000000000000000000000000000061727364554616e7a858d959eaec1d6c6b2a0958d857a6e62544637281807000000001f344a5f748ba0b5cbd3d3ccb7a18c76604b36210b000000000000000000000000000000000000000000000000000000000714222f3b44464237291a0900000000000000000000000000000000000000000000000010213242526170808c98a4aeb7bec4c7c9cbc9c6c1bab2a99e92857668594a3a29180700000000000000000617283848576674828f9ba6afb8bfc4c7c9cbc9c6c2bcb4aca2978a7d6f61514232211000000000000000000000000000000006101a22292f35393c3f3f3f3f3d3a36312a231b11070000000000000000000000000000000000000000000000000000000000001a2f445a6f8586868686868686868679644f3a250f000000000000001f344a5f7486868686868686868686735e4934200a000a1f34495e738686868686868686868676604b36210b001f344a5f748686868686868686868686868686868684837d79746d655c53483c3023160800000000000000001f344a5f748ba0b4b4b4b4b3b3b3b3b3b3b3b3b3b1b0aeaaa59f978f857a6e62554738291a0b0000000000001f344a5f748ba0b5cbe0f0f0f0f0e7e0dedededededededededededededededed9c4af9a866f5a442f1a001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d00000000000000000000000000000000000000000213243545546372808c97a1a9b0bcccdecfbeb1a9a1978c8072645546362514020000001f344a5f748ba0b5bdbdbdbdb7a18c76604b36210b000000000000000000000000000000000000000000000000000000000004111e282f302d251a0b00000000000000000000000000000000000000000000000000041425344352616e7a87919ba3aaafb2b4b5b4b1aca79f968c807366594a3b2c1c0b000000000000000000000a1a2a39485664717d89939ca4aaafb3b4b5b4b1ada8a1998f85796c5f51423324140400000000000000000000000000020e19232d363d444a4e5153545454524f4b453e372e241a0f03000000000000000000000000000000000000000000000000000000001a2f445a6f869b9b9b9b9b9b9b9b9079644f3a250f000000000000001e33485d72879b9b9b9b9b9b9b9b8c77624c38230f0f0f22374c61768b9b9b9b9b9b9b9b9b88725d49341f0a001f344a5f748b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9997948f8982796f655a4e4134261708000000000000001f344a5f748ba0b5c9c9c9c8c8c8c8c8c8c8c8c8c7c5c3bfb9b3aba2978c80726556473828180800000000001f344a5f748a9fb4c9dff4ffefe0d4ccc9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c4af99846e58432e19001f344a5f748ba0b5cbdfe2cdb8a38d77624c37220d00000000000000000000000000000000000000000d1f314253637282909ea9b4bdc4cddae1dccfc4bdb4aa9e91837363534332200e0000001f344a5f748ba0a8a8a8a8a8a8a18c76604b36210b000000000000000000000000000000000000000000000000000000000000000c151a1b1912080000000000000000000000000000000000000000000000000000000716253443505d69747d888f959a9d9fa09f9c98928b83796e6256493b2c1d0e0000000000000000000000000c1b2a384653606b76808890969a9d9fa09f9c98938d857c72675b4e4133241506000000000000000000000000000613202b36404951585e6366686a6a6a67645f59524a41372c2014070000000000000000000000000000000000000000000000000000001a2f445a6f869bb0b0b0b0b0b0a59079644f3a250f000000000000001a2f44596e8398adb0b0b0b0b0a48f7965503b26252525253a4f64798fa3b0b0b0b0b0ae99846f5a45301b06001f344a5f748ba0b0b0b0b0b0b0b0b0b0b0b0b0b0b0afaca8a39d958c83776b5f5244352617080000000000001f344a5f748ba0b5cbdededddddddddddddddddddcdbd8d4cec7beb4a99e91837465564636251403000000001e33485e73899fb4c9def4f4e2d1c2b7b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4af99846e58432e19001f34495e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000005182b3d4e60708291a0aebbc7d1d5cfccccccd0d6d0c7bbafa1928271604f3d2b180500001f344a5f748b93939393939393938c76604b36210b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071625323f4b57616b737a8286888a8b8987837d776f665c5145382b1d0e00000000000000000000000000000c1b2836424e59636c747b8286888a8b8987847d7871695f554a3d3123150600000000000000000000000000081624313d48535c656c72777b7d8080807c79746d665d54493e3225170900000000000000000000000000000000000000000000000000001a2f445a6f869bb0c5c5c5c5bba59079644f3a250f00000000000000172c40556a8094a9bec5c5c5bca7927c68533e3a3a3a3a3a3d52677c92a7bcc5c5c5bfab96826b56412c1803001f344a5f748ba0b5c5c5c5c5c5c5c5c5c5c5c5c5c5c4c1bdb8b1a99f95897d706253443525150500000000001f344a5f748ba0b5cbe0f3f2f2ebe6e5e5e5e5e5e5e6e9e8e2dad1c7bbafa193847464544332200f000000001e33485e73899fb4c9def2ecd8c5b3a49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f99846e58432e19001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000000f2235475a6c7d8f9fafbeccd5cac1bab7b7b7bcc2ccd7ccbfb0a0907d6d5a4835220f00001f34495e727c7c7c7c7c7c7c7c7c7c735f4b35200b000000050e13151515151515151515130d0400000000000000050d1112110e0a05000000000000000000000000000000000000000000000000000000000000000000000715222e3a444e575f666c7072747473716e69635c53493f33271a0d000000000000000000000000000000000a1824303c46505960676c7073747473726e6a645d554c42372c2013050000000000000000000000000008172634424e5a656f7882888d9194959594928e89827a70665b4f4235271809000000000000000000000001020202020202020202020202021a2f445a6f869bb0c5dadad0bba59079644f3a250f0200000000000013283d52667b91a6bacfdad4bfab96826b564f4f4f4f4f4f4f556a8095aabfd4dad1bca7927c68533e291400001f344a5f748ba0b5cbdadadadadadadadadadadadad9d6d2ccc5bcb2a79b8e807162534333221100000000001f344a5f748ba0b5cbe0f5efe2d7d1d0d0d0d0d0d0d1d4d9e0e8e4d8ccbfb1a2938372614f3e2c19070000001e33485e73899db0c2d5e8e8d3bea9958989898989898989898989898989898989898989846e58432e19001e33485e73899fb4c9dee2cdb8a38d77624c37220d00000000000000000000000000000000000003172b3e5164778a9badbdcdd1c3b7aea6a1a1a2a7afbac6d5cebead9c8a7764513e2b1703001b2f43546267676767676767676767635544301c0800000b1822282a2a2a2a2a2a2a2a2a2720160800000000000c1821262726231f19120900000000000000000000000000000000000000000000000000000000000000000004101c28323b444b52575b5d5f5f5e5c59544f4840362c21160900000000000000000000000000000000000007131e29333d454c52575b5e5f5f5e5c59555049423930251a0f0200000000000000000000000000071726354452606c77838c959ca2a6a9ababa9a7a39d968d84786d605345362718080000000000000000091116171717171717171717171717171a2f445a6f869bb0c5dae5d0bba59079644f3a251717140d030000000f24394e63778da2b7cce0d8c3ae99846e6464646464646464646e8398adc2d7e2cdb8a38f79644f3a251000001f344a5f748ba0b5cbe0f0f0f0ede9e8e8e8e8e8e8e9ebe6e0d8cfc4b8ac9e9082716151402f1d0b000000001f344a5f748ba0b5cbe0f3e1d1c4bcbbbbbbbbbbbbbcbfc5ccd5dfeaddcfc0b1a190806d5b493624110000001c31465a6d8093a6b9ccdee8d3bea9958273737373737373737373737373737373737373736855412c17001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000000a1e33465a6d8294a7b9cad2c2b3a69b928c8c8d939ca9b7c6d6cbbaa795826e5a46321e0a00132536454f525252525252525252524f453727140100091a29353d3f3f3f3f3f3f3f3f3f3c332617050000000a1b2a353b3c3b38332d251c12060000000000000000000000000000000000000000000000000000000000000000000a151f2830373d4246484a4a494744403a342c231a0f040000000000000000000000000000000000000000010c17202931383e4246484a4a494744403b352e261d1308000000000000000000000000000003142535445362707d8a959fa8b0b6bbbec0c0bfbcb7b1aaa0968b7d70635445362616050000000000000e1b252b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2f445a6f869bb0c5dae5d0bba59079644f3a2c2c2c2920150600000b20354a5f74899eb3c8dddbc6b19c877979797979797979797979879bb0c5dadec9b4a08b75604b37220d00001f344a5f748ba0b5cbe0f5f0e3d9d3d3d3d3d3d3d3d4d7dce3ebe1d6c9bcae9f90806f5e4c3b2916040000001f344a5f748ba0b5cadfe9d6c3b3a8a5a5a5a5a5a5a7abb1b9c2cedbe9decfbfae9c8b786653402d1a070000172a3d506376899cafc2d5e7d8c5b29f8c79665e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e584a382512001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001025394e62768a9eb1c4d6c5b4a495887d777678808b99a8b8cad7c4b19e8a75614d39241000081827333a3c3c3c3c3c3c3c3c3c3c3b3328190900001426384751545454545454545454504434220f000000152839475052504d4841392f24180b000000000000000000000000000000000000000000000000000000000000000000020c151c23292d3133343434322f2b2620191007000000000000000000000000000000000000000000000000040d161d24292e3133343434322f2c27211a120a000000000000000000000000000000000f213243536271828f9ba7b2bcc4cad0d3d5d5d4d1ccc5bdb3a89c8f827263544434231200000000000c1d2c3840424242424242424242424242424242445a6f869bb0c5dae5d0bba59079644f424242423d3224140200071c31465b70869aafc4d9dec9b5a292909090909090909090909092a1b4c8dddbc6b19c87725d48331e0900001f344a5f748ba0b5cbe0f3e2d2c6bfbdbdbdbdbdbdbfc2c8cfd9e4e7dacdbdae9e8d7b6a584633210e0000001e33485e73899fb4c9dee4cfbaa69590909090909092969ca6b0bdcbdae9dccbbaa89683705d4936220f00000e213446596c8092a5b8cbdee1cebca99683705d4a48484848484848484848484848484848453a2c1b09001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000152a3f53687c91a5b9cdcdbaa79686776a6260646d7a8a9badbfd2cdb9a5907c67523e2914000009161f26272727272727272727272620160a0000001b304356646a6a6a6a6a6a6a6a6a62523f2b170200001c314457646766625c554c4136291c0d0000000000000000000000000000000000000000000000000000000000000000000001080f14181c1e1f1f1f1d1a16110c050000000000000000000000000000000000000000000000000000000002090f14191c1e1f1f1f1d1a17120d060000000000000000000000000000000000091b2d3e4f607082909facb9c5cfd8dfe4e8eaeae9e5e0d9d0c5baad9f9182726251402f1d0b0000000016293b4a55575757575757575757575757575757575a6f869bb0c5dae5d0bba590796457575757575042321f0c0001192d42576c8297abc0d5e4d1bfb0a6a5a5a5a5a5a5a5a5a5a5a5a6afbed0e3d7c2ad98846e59442f1a0500001f344a5f748ba0b5cbdfe9d6c4b4aaa8a8a8a8a8a8a9adb4bcc6d2dfeadcccbbab99887563503d2a170400001e33485e73899fb4c9dee2cdb8a38d7979797979797c8289939fadbccbdbe9d7c5b3a08d7965523e2a16010004172a3d4f6275889baec1d4e7d8c5b3a08d7a67544133333333333333333333333333333330281c0e00001e33485e73899fb4c9dee2cdb8a38d77624c37220d000000000000000000000000000000000000192e43586d8297abc0d4c4b19e8a7867594e4b505c6c7d90a3b6cad4bfaa96826b57412d18000000030c1112121212121212121212110c04000000001f34495e738080808080808080806e59442f1a0500001f344a5f747c7b7770685e5347392b1c0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001326384a5c6d7d8f9faebdcad7e1ebe3dcd8d6d5d7dbe1e8e2d7cbbdafa090806f5e4c3b2916040000001d314558686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6f869bb0c5dae5d0bba590796c6c6c6c6c6c604e3b27120000152a3f54687d93a8bdd1e6ddcec2bbbbbbbbbbbbbbbbbbbbbbbbbbc1cddce8d3bfaa95806a55402c170200001f34495e73899fb4c9dee3cebaa6979393939393939499a0a9b4c1ceddead9c8b7a593806d5a46331f0c00001e33485e73899fb4c9dee2cdb8a38d776464646465686d76828f9eadbecfe1e2cfbca995826d5945301c0700000d203346596b7d92a4b7cadce2cfbca99784705e4b38261e1e1e1e1e1e1e1e1e1e1e1e1e1c150b0000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001c31465b70869bb0c5d3beaa95826d5a4a3b363e4e6073879bb0c5d8c3ae99846f5a442f1a00000000000000000000000000000000000000000000001f344a5f73899595959595959586705b46301b0600001f344a5f748b908b857b706557493a2b1a0900000000000000000000000000000000000000000000000000000000000000000000050a0e121415151513100d080200000000000000000000000000000000000000000000000000000000000000050a0e111415151513110d08030000000000000000000000000000000000091d30425567798c9cadbdcddbe8e2d8cfc8c3c1c0c2c6cdd5e0e9dbcdbeae9e8d7c6a584633200d0000001f344a5f74838383838383838383838383838383838383869bb0c5dbe5d0bba5908383838383837d69543f2a15000011263b5065798fa4b9cee3ecdfd5d0d0d0d0d0d0d0d0d0d0d0d0d0d5deebe5d0bba6917c67523d28130000001e33485e73899fb4c9dee1ccb7a18c7c7c7c7c7c7c80858d97a3b0bfcfdfe6d4c2af9d8a76634f3b271300001e33485e73899fb4c9dee2cdb8a38d77624f4f4f5053596370808fa0b1c4d7ead8c4b19c88735f4a36210c00000316293b4e6174889badc0d3e5d9c6b3a08e7a6755422f1d0a00000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001d32475c72889db2c7d0bba5907b66523e2c213044586d8397acc1d7c5b09b87705b46301b00000000000000000000000000000000000000000000001e33485d72889dababababab9d88725c47321d0800001f344a5f748ba0a0988e837567584838271503000000000000000000000000000000000000000000000000000000000000040c131a1f2327292a2a2a2825211c1610080000000000000000000000000000000000000000000000000000030b13191f2327292a2a2a2826221d1711090000000000000000000000000000001225394c5f728597a9bacbdbebddd0c5bbb4aeacabadb2b9c3cedbeadcccbcab99887563503d2a170300001f344a5f748b989898989898989898989898989898989899a4b6c9dee8d4c0ad9d989898989895806a543f2a1500000d22374c61768ba0b5cadff4f1e9e2dbd8d8d8d8d8d8d8d8d8dae2e9f1f6e1ccb7a28d78634e39240f0000001e33485e73899fb4c9dee1ccb7a18c7667676767676a70798592a1b1c2d3e5dfccb9a6927d6a56422d1905001e33485e73899fb4c9dee2cdb8a38d77624c3a3a3b3e465261708295a7bacee2e0cbb7a28e78644f3a25100000000c1f3245576a7d90a3b6c9dce3d0beab9885725f4c39261401000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0000000000000000000000000000000000001d32475c72889db3c8c9bba59079644f3a25212f41576b8297acc1d6c7b19c87705b46301b00000000000000000000000000000000000000000000001c31465b70879cb1c0c0c0b49f89735e49341f0a00001f344a5f748ba0b4aba094867666564432210e00000000000000000000000000000000000000000000000000000000030d171f272e34383c3e3f3f3f3d3a36312b241b120800000000000000000000000000000000000000000000020d161f272d33383c3e3f3f3f3e3b37322b251d130a00000000000000000000000005192d4155687c8fa2b4c6d8e9ddcdbfb3a89f9a9795989ea6b1bdccdbeadac9b7a592806c5946321f0b00001f344a5f748ba0adadadadadadadadadadadadadadadadaeb5c2d3e5efdccabbb0adadadadab95806a543f2a150000091e33485d72889cb1c6dbf0edddd0c6c3c3c3c3c3c3c3c3c3c6cfdcecf2dec9b49f8a745f4b36210c0000001e33485e73899fb4c9dee1ccb7a18c766052525252555d67748393a4b5c8dae8d5c1ae9a86705c48331e0a001e33485e73899fb4c9dee2cdb8a38d77624c3725262a34425364778b9fb3c7dbe5d1bca7927c68533e29140000000215283b4e60738799acbfd2e5dac7b4a28f7c695643301d0b000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d0a0a0a0a0a0a0a0a0a0a0a0a0701000000001d32475c72889db3b4b4b4a59079644f3a28333f4d5e71859aaec3d8c5b09b86705b46301b00000000050a0b0b0b0b0b0b0b0b0b0b0a0500000000001a2f445a6f869aafc4d5cbb5a08b76604b36210b00001f344a5f748b9ea5aeb1a495857362503d2a170400000000000000000000000000000000000000000000000000000a15202a333b42484d5153545454524f4b463f372f251b10040000000000000000000000000000000000000009141f29323b42484d515354545453504b46403830261c1105000000000000000000000c2034485d708598abbfd1e4e0cfbfafa1958c858280838a939faebdccdde6d4c2af9c8975624e3a261200001f344a5f748ba0b5c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c8d2e0f1f9e8d9cdc5c3c3c3c0ab95806a543f2a150000051b3045596e8499adc2d7ece2d0bfb3adadadadadadadadadb2becfe1efdac5b09b87715c47321d080000001e33485e73899fb4c9dee1ccb7a18c76604b3c3c3d414a5664758698abbed1e5ddc8b4a08b76614c38230e001e33485e73899fb4c9dee2cdb8a38d77624c372211172535485b6f8499adc2d7e9d4bfaa95806a55402b16000000000b1e314457697c90a2b5c8dbe4d1beab998672604d3a2714020000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37221f1f1f1f1f1f1f1f1f1f1f1f1f1c150b0000001d32475c72889d9f9f9f9f9f9079644f3a3b45505d6b7b8da0b4c8d7c2ae99846e59442f1a00000410191f212121212121212121211f191105000000192e43586e8499aec3d8ccb7a28d77624c38230d00001f344a5f74868a929caab3a291806d5a4734200c000000000000000000000000000000000000000000000000020f1b27323d464f565d6266686a6a6a67645f5a534b42382d21150900000000000000000000000000000000000e1a26323c464e565c6166686a6a6a6865605b544c43392e23170a00000000000000000011263a4f63778ca0b4c7dbe8d5c3b1a1918478706b6b6e76828f9eaebfd1e3dfccb9a5927d6955412d1804001f344a5f748ba0b5cbd8d8d8d8d8d8d8d8d8d8d8d8d8d8d8dce4f0fefff7eae0d9d8d8d5c0ab95806a543f2a15000000172c41566b8095aabfd3e8dac6b2a1989898989898989898a0b1c4d9ebd6c1ac97836d58432e1a050000001e33485e73899fb4c9dee1ccb7a18c76604b3627282d384757687a8ea2b6cadee3ceb9a48f7a65503b2611001e33485e73899fb4c9dee2cdb8a38d77624c37220d07182c40556a8095aabfd4e9d7c1ac97826c57422c17000000000114273a4d60728699abbed1e4dbc8b5a2907c695744311e0b0000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37343434343434343434343434343431281c0d00001d32475c72888989898989898979644f434d58636e7a8a99abbdd0d2bea995806b56412c17000414222d3436363636363636363636342d2214050000172c42576c8297acc1d7ceb9a48f78644f3a240f00001e33475b6b7075808c9babaf9d8a76634f3b271300000000000000000000000000000000000000000000000412202d39444f59626a71777b7d8080807c79746e675e544a3f3326190b000000000000000000000000000003111e2b38444e59626a70767a7d8080807c79756f685f564c4034281b0d0000000000000000162b4054697d92a7bbcfe3decbb8a5948373665c57565a64708090a2b4c6d9e8d4c1ad9985705b47321d08001f344a5f748ba0b5cbe0ededede9e5e5e5e5e5e5e5e5e5e5e9f0fbfffffff5ece6e5e5d5c0ab95806a543f2a1500000013283d52677b91a6bbd0e5d7c1ac9783838383838383838396abc0d5e8d3bea9947d6955402b16010000001e33485e73899fb4c9dee1ccb7a18c76604b3621131b29394b5f72879bb0c5d9e7d2bda8937d68533e2914001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000a1d304356697b8fa2b4c7dae5d2bfac998773604e3b28150200000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392b1a07001b3045596b737373737373737370604c56606a75808c99a8b7c8dacab6a38f7a66513d2813001022323f484b4b4b4b4b4b4b4b4b4b48403223110000162b40566b8095abc0d5d0bba5907b66503b26110000182b3e4e585b616e7c8d9fb2a6937d6a56412d1804000000000000000000000000000000000000000000041422303d4a56616c767d868c9093959594928e89837a71675c514437291b0c0000000000000000000000000312212f3c4955616c757d868b9093959594928f8a837b72695e5246392b1c0e000000000000001a2f44596d8397acc1d5ead7c3af9c89766455494140475361728597aabdd1e5dcc7b39f8a75604b36210d001f344a5f748ba0b5cbe0f5ebded5d0d0d0d0d0d0d0d0d0d0d4ddeaf9fff1e3d8d2d0d0d0c0ab95806a543f2a150000000f24394e63788da2b7cce1d7c2ad98846e6c6c6c6c6c6d8397acc2d7e4cfbaa5907b66513c2712000000001e33485e73899fb4c9dee1ccb7a18c76604b36210b0b1c2f43586d8297acc1d6ead4bfab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000011426394c5f728598abbdd0e3dcc9b6a3907d6a5745321f0c00000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574937241000162a3c4d595e5e5e5e5e5e5e5e5c545e68727d88929da9b7c6d5d0bfad9b8773604b37230e00192d3f505c606060606060606060605d51402e1a0600152a3f54697d94a9bfd4d1bca7927c67523d281300000f21313e4648505e6f8295a9ae9a85705b46311c07000000000000000000000000000000000000000003132332404e5b68748089929aa0a5a8ababa9a7a39d968e85796e625547392a1a0b00000000000000000000011221303f4d5a67737d899299a0a5a8ababa9a7a39e978f867b6f6356493a2c1c0d0000000000001d32475c71879bb0c5dae6d1bda894806c5947372d2b354455677a8ea2b6cadfe1cdb8a38e78644f3a2510001f344a5f748ba0b5cbe0eddccdc1bbbbbbbbbbbbbbbbbbbbc1ccdbecf5e3d3c6bdbbbbbbbbab95806a543f2a150000000c21364a5f74899eb3c8dddbc6b19c87715c5757575b70869bafc4dae0cbb6a28d77624d39240f000000001e33485e73899fb4c9dee1ccb7a18c76614c37220c00152b40546a8095abc0d5ead6c0ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c38230d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000a1d2f4255677a8ea0b3c6d9e6d3c0ad9b8874614e3c291603000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77747474747474747474747474747474747466533f2a15000d1f2f3c4548484848484849535d67717b86909aa5afbbc7d5d1c2b2a1907d6a5744301c08001e33485c6e767676767676767676766f5d4934200a0013283d53687c93a8bdd2d3bea9947d69543f2a140000182b3e4f5a5e5e5e66798fa3b39e89735f4a341f0a000000000000000000000000000000000000000010213141505e6c7986919ca6aeb5babdc0c0bfbcb7b1aaa1978c8072655748382919080000000000000000000f1f303f4e5d6b7885909ba5adb4b9bdbfc0bfbcb8b2aba2988d827467584a3a2b1b0a00000000001f34495e73899eb3c8dde2cdb8a38f7965503c29191726374a5e72879cb1c5dae5d0bba6917b67523c2712001f344a5f748ba0b5cbe0e3d0beafa6a5a5a5a5a5a5a5a5a6aebdcfe2ecd8c6b5a9a5a5a5a5a595806a543f2a15000000081d32475c70869bafc4d9dec9b49f8a74604b42495e73899eb3c8ddddc8b39e89745f4a35200b000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d04172c41566b8296abc0d5ead5c0ab95806b56402b16001e33485e73899fb4c9dee3ceb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17000000000000001326384b5e708497a9bccfe2ddcab7a4927d6b594633200d000000000000000000000000001e33485e73899fb4c9dee3ceb9a4918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b826b56402b160001111f2a313333333845515b66707a848e98a2acb7c2cdd8cfc2b3a4948472604e3b281401001f344a5f748b8c8c8c8c8c8c8c8c8c76604b36210b0012273c51667b91a7bcd1d5c0ab95806b56402b1601001e33475b6d73737373768ba0b5a08b76604b36210b000000000000000000000000000000000000000c1d2e3f4f5f6e7c8a97a3aeb9c1c9cfd2d5d5d4d1ccc6beb4a99e91837466564736261503000000000000000b1c2d3d4e5d6c7b8996a2aeb8c1c8ced2d4d5d4d1cdc6bfb5ab9f92857668584938281705000000001f344a5f748ba0b5cbdfe0cbb6a18c76614c37220d081b2f44596e8498adc3d8e8d3bda8937d68533e2913001f344a5f748ba0b4c7daddc8b4a1929090909090909090919fb3c7dce6d2bda997909090909090806a543f2a1500000002192e43586c8297acc0d5e1ccb7a28d78634e394c61768ca1b6cbe0d9c4af9a86705b46311c07000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d132233475b6f8499aec2d7e8d3bea9947d69543f2a15001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000091b2e415467798da0b3c5d8e7d4c1ae9b897562503d2a17040000000000000000000000001e33485e73899fb4c9dee8d4c1afa3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a097826b56402b160000010d161c1e2d3c4956626e78838d97a1abb5bfc9d4d3c9beb1a4958676665543311e0b00001f344a5f748ba0a1a1a1a1a1a1a18c76604b36210b0010253a4f647990a5bacfd7c2ac97836c57422d1803001f344a5f7489898989898fa2b6a18c76604b36210b0000000000000000000000000000000000000617293b4c5d6d7c8c9ba8b5c1ccd5dde3e7eaeae9e6e1d9d1c6bbafa193857464544332210f000000000000051628394a5b6b7b8b99a7b4c0cbd4dce3e7eaeae9e6e1dad2c8bcb0a3958776675645342211000000001f344a5f748ba0b5cbd6d6cbb5a08b745f4a34200a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001f34495d718598abbed1dcc7b19c877979797979797979869bb0c5dae5d0bba5907979797979797867533e291400000000152a3f54697d93a8bdd2e5d0bba6917b66513d4f64798fa4b9cee3d5c0ac97826c57422e1904000000001e33485e73899fb4c9dee2cdb8a38d77624c37221f2431405163768a9eb2c7dbe4d0bba6917b67523d2813001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000001224374a5d708396a9bccee1decbb8a592806c594734210e0000000000000000000000001e33485e73899fb4c9def0decdc0b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ac97826b56402b16000000000c1c2c3c4b596774808b959fa9b3bec8d2d5cbc1b6aca09386776858483725140200001f344a5f748ba0b5b7b7b7b7b7a18c76604b36210b000e23384e63788fa3b8cdd9c4af99846e59442f1a05001f344a5f748b9f9f9f9fa1adb7a18c76604b36210b00000000000000000000000000000000000010233547586a7a8b9baab8c6d3dee8e5dedad8d8d8dce2e9e4d8ccbfb1a393837261503e2c1a0700000000000f2234455768798a9aa9b7c5d1dde8e4ddd9d6d5d7dae0e7e5dacec1b3a59585746352402e1c090000001f344a5f748ba0b5c1c1c1c1b5a08b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001a2e4154677b8fa2b5c8dbcab6a3907c6964646464646f869bb0c5dae5d0bba590796464646464645a4a3824100000000011263b5065798fa4b9cee3d3bea994806a554052677c92a7bcd1e6d2bda8937d69543f2a1500000000001e33485e73899fb4c9dee2cdb8a38d77624c37333438424f5e6e8093a6b9cde1dfcbb6a28d78634e392510001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000081b2d405366798c9fb2c5d7e7d5c2af9c897663503d2b180500000000000000000000001e33485e73899fb4c9def4ecddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbc1ac97826b56402b160000000618293a4a5a697785929ea8b2bcc6d1d7cdc3b8aea4998f827567594a3a2a19080000001f344a5f748ba0b5cbccccccb7a18c76604b36210b000d22374c62778da2b7ccdac5b09b86705b46301b06001f344a5f748ba0b4b4b4b5bdb7a18c76604b36210b0000000000000000000000000000000000071a2d405264768899a9b9c8d6e4e5dad1cac5c3c3c3c7ced6e0eaddcfc1b1a190806d5c493724110000000006192c3f5163758697a8b8c7d5e2e5dad1c9c4c1c0c2c6ccd4deeadfd1c2b3a392826f5d4b3926130000001f344a5f748ba0acacacacacaca08b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e2913001225384c5f728599acbfd2d3c0ac9986725f4f4f4f5a6f869bb0c5dae5d0bba59079644f4f4f4f4f493c2c1b08000000000e23384c61768ca0b5cadfd6c1ac97836d5843556a8095aabfd4e3ceb9a48f7965503b261200000000001e33485e73899fb4c9dee2cdb8a38d77624c4848494c545f6d7c8d9eb0c2d5e9d8c4b09c88735e4a35200c001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17000000000000000000112436495c6f8295a8bbcee0deccb9a693806d5a4734220f00000000000000000000001e33485e73899fb4c9def4fbefe6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a15000000112335475868788896a3afbbc5cfd9cfc5bbb0a69c91877c706457493b2c1c11070000001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000b21364b60768ba0b5cbdcc7b29d88725c47321d08001f344a5f748ba0b5c9c9caccb7a18c76604b36210b00000000000000000000000000000000001024374a5d6f8294a5b6c7d7e6e1d3c8beb6b0adadaeb3bac3cedae8dfcfbfae9d8b796654412e1a070000000f2336495c6e8292a4b5c6d6e5e1d4c8beb5afacabacb1b8c1ccd9e7e0d1c1b09f8d7a685643301c0900001f344a5f748b97979797979797978b745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e291300091c2f4255697c8fa2b6c9dcc9b5a28f7b685541445a6f869bb0c5dae5d0bba59079644f3a3a3a3a352b1e0e00000000000a1f34495d72889cb2c6dbdac5b09b86705c47586e8398adc2d7dfcbb6a18c76614d38230e00000000001e33485e73899fb4c9dee2cdb8a38d77625e5e5e5e6167717d8c9baabbcddfe3cfbca995826d5844301b07001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17000000000000000000071a2d3f5265788b9eb1c4d7e8d5c3b09d8a7764513e2b1906000000000000000000001e33485e73889db3c8ddf2fdf1e9e3e2e2e2e2e2e2e2e2e2e2e2e2e2d5c0ab95806a543f2a150000081b2e415364768797a6b4c1cdd7d1c7bcb2a89e93897d746a5f5347392f2f2c24190b00001f344a5f748ba0b5cbe0e0ccb7a18c76604b36210b000a1f344a5f74899fb4c9dec9b49f89735e49341f0a001f344a5f748ba0b5cbdedfccb7a18c76604b36210b0000000000000000000000000000000004182c3f5366798c9fb1c3d4e5e0d1c3b6aba29b9898999fa6b0bccad9e8ddccbaa89683705d4a36230f000004172b3f5265788c9eb0c2d3e4e1d1c3b6aba19a9795979ca5afbbc9d8e7dfcebcaa9886725f4c38241100001f344a5f7482828282828282828282745f4a341f0a00172c42576c8398adc3d8e9d4bfa9947d68533e291300001326394c5f728699acc0d3d2beab9885715e4a445a6f869bb0c5dae5d0bba59079644f3a25252421190e000000000000061b30455a6f8499aec2d7ddc8b39e89745f4a5c70869bb0c5dadcc7b29d88735e49341f0a00000000001e33485e73899fb4c9dee2cdb8a38d777373737373767b848f9ba9b8c8d9ead8c6b3a08d7965513e291501001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000102336495b6e8294a7baccdfdfccbaa794826e5b48362310000000000000000000001d32475c72889db3c8ddf2ede0d5cecdcdcdcdcdcdcdcdcdcdcdcdcdcdc0ab95806a543f2a1500001124374a5d708294a5b5c4d2d7cbbfb4aaa0958b82766c61574d44444444444037291907001f344a5f748ba0b5cbcbcbcbb7a18c76604b36210b00081e33485d72889db3c8cbcbb5a08b76604b36210b001f344a5f748ba0b5cbe0e0ccb7a18c76604b36210b000000000000000000000000000000000b1f33475b6f8396a9bccee0e3d2c2b3a5988f878383858a939facbbcadbe9d8c5b3a08d7966523e2a1601000a1e33475a6e8295a8bbcddfe4d3c3b3a5988e8682808389929dabbac9d9ebdac8b5a28f7b6754402b1703001c314558676b6b6b6b6b6b6b6b6b6b675845311c0800172c42576c8398adc3d8e9d4bfa9947d68533e291300000a1d304356697c90a3b6c9dbc7b4a18d7a6753445a6f869bb0c5dae5d0bba59079644f3a250f0f0c060000000000000000172c41566b8095aabfd4e0cbb6a28d77624d5f73899eb3c8ddd8c3ae99856f5a45311c0700000000001e33485e73899fb4c9dee3ceb9a4918989898989898b9097a1acb9c7d6e6decdbba99684705d4a36220e00001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000006192b3e5164778a9db0c3d5e8d7c4b19e8b7765523f2d1a070000000000000000001d32475c72889db3c8ddf1e0cfc2bab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ab95806a543f2a150005192d4054677a8da0b1c2d3d5c7baada2988d83786e63595a5a5a5a5a5a5a5a5447362410001f344a5f748ba0b5b5b5b5b5b5a18c76604b36210b00021c31475c70879cb1b5b5b5b5a28d77624c38230d001f344a5f748ba0b5cbcbcbcbb7a18c76604b36210b0000000000000000000000000000000011253a4e62768b9fb2c6d9e9d7c5b4a495877b726d6c7076828e9dacbdcfe1e2d0bca995826d5945311c08001025394e62768a9eb1c5d8ead8c6b5a595877a726c6b6d75808d9cabbbcddfe4d2beab97836f5b46321d090015283a49535656565656565656565653493a28150200172c42576c8398adc3d8e9d4bfa9947d68533e291300000014273a4d6073879aadc1d4d1bdaa9783705d495a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000014283d52677c91a6bbd0e4cfbaa5907a665162778ca1b6cbe0d5c0ab96826c57422d180300000000001e33485e73899fb4c9dee7d3c0afa29f9f9f9f9f9fa0a4abb3becad7e5e0d1c0af9e8c796654412d1a0600001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000f2235475a6d8093a6b9ccdee0cebba895826f5c493624110000000000000000001d32475c72889db3c8dde9d5c2b1a5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a395806a543f2a15000c2034485c708497aabdcfd6c6b7a99c90857a70665b626e6f6f6f6f6f6f6f6f65533f2b16001f344a5f748ba0a0a0a0a0a0a0a08c76604b36210b00001b30455a6f869ba0a0a0a0a0a08f78644f3a240f001f344a5f748ba0b5b5b5b5b5b5a18c76604b36210b00000000000000000000000000000000162b3f54687c92a6bacee2e0ccbaa8968676695f58575b63707d8f9fb1c4d7ead8c5b19c88745f4a36210d00152a3f53687c91a5b9cde1e1cebba9978776695e575659626e7d8d9eb0c2d5e8dac6b29e8a75604c37230e000b1c2b373f404040404040404040403f372b1c0b0000172c42576c8398adc3d8e9d4bfa9947d68533e29130000000a1d3144576a7d91a4b7cbd9c6b3a08c7966525a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000001025394e63788da2b7cce1d2bda8937d695465798fa4b9cee3d1bca7927c68533e29140000000000001e33485e73899fb4c9deefddcdbfb6b4b4b4b4b4b4b5b9bfc7d0dbe8e4d3c2b3a291806e5c4a3724110000001e33485e73899fb4c9dee4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17000000000000000000000005182b3e506376899cafc2d5e8d7c5b29f8c796653402d1b0800000000000000001d32475c72889db3c8dde3cebaa5938d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d806a543f2a150011263a4f63778c9fb3c6d9cab8a8998b7d72675d53546a8086868686868686836e58432e19001f344a5f748b8b8b8b8b8b8b8b8b8b76604b36210b0000192e43586e848b8b8b8b8b8b8b8b7b66503b2611001f344a5f748ba0a0a0a0a0a0a0a08c76604b36210b000000000000000000000000000000001a2f44586d8397acc0d5e9d8c4b09d8a7867584c4442475260708294a7bacee2e0ccb7a28e79644f3a251000192e43586d8297abc0d4e9d9c6b29f8c7968594b424045505f6f8092a5b8cce0e1cdb8a48f7965503b271200000d1a242a2b2b2b2b2b2b2b2b2b2b2a241a0d000000172c42576c8398adc3d8e9d4bfa9947d68533e29130000000114273b4e6174889baec1d4cfbca995826f5b5a6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000c21364b5f748a9fb3c8ddd6c1ac97826c57687c92a7bcd1e2cdb8a38f79644f3a26110000000000001e33485e73899fb4c9def4ebdcd1cbc9c9c9c9c9c9caced3dae3edefdbc7b5a495857362513f2d1a080000001e33485d72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000e213447596c8092a5b8cbdee1cebba99683705d4a37241200000000000000001d32475c72889db3c8dde2cdb8a38d77777777777777777777777777777777777566523d281400162b3f54697d92a7bbcfd2bfac9b8a7a6d60554b40546a80959b9b9b9b9b99846e58432e19001e33485c6e747474747474747474746f5d49341f0a0000172c41556874747474747474747472624e3a2510001f344a5f748b8b8b8b8b8b8b8b8b8b76604b36210b000000000000000000000000000000001d32475c71879bb0c5dae5d2bda995826d5b4a3a2f2d34425264778b9fb3c8dce5d1bca7927c68533e2914001c31465b70869bb0c5d9e8d3bfab96836f5c4a3b2e2b3341516375899db1c5dae7d2bda8937d69543f2a150000000810151616161616161616161615100800000000172c42576c8398adc3d8e9d4bfa9947d68533e2913000000000b1e3144586b7d92a5b8cbd8c5b29f8b77645a6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000081d32475c70869bb0c5dad9c4af9a86705b6b8095abbfd4dfcab5a08b76614c37220d0000000000001e33485e73899fb4c9def4faeee5dfdededededededfe3e7eef6ffebd6c1ac98867666564533210f000000001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000004172a3d506275899baec1d4e7d8c5b2a08d796754412e1b09000000000000001d32475c72889db3c8dde2cdb8a38d776262626262626262626262626262626261584836230f001a2f44586d8397acc1d5c9b6a28f7d6c5d4f43383f546a8095abb0b0b0af99846e58432e1900192c3f505c5f5f5f5f5f5f5f5f5f5f5c51402d1a0600001225384a585f5f5f5f5f5f5f5f5f5e5445331f0b001e33485c6e747474747474747474746f5d49341f0a000000000000000000000000000000001f34495e73899fb3c8d0d0cdb8a38f7965513e2c1c182435485b70859aaec3d8e9d4bfaa95806a55402b16001e33485e73889db3c8dde5d0bba6917b67533f2d1d16233346596d8397acc1d6ead5c0ab96826b56412c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e9d4bfa9947d68533e2913000000000215283b4e6175899cafc2d5cebba894826d5a6f869bb0c5dae5d0bba59079644f3a250f000000000000000000000003192e43586d8397acc1d6dcc7b29d88735e6e8498adc2d7dbc6b19c88725d48331e090000000000001e33485e73889db3c8ddf2fdf1e9e3e2e2e2e2e2e2e2e3e5eaf0f8ebd6c1ac9888796a5a49382715040000001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17000000000000000000000000000d203346596b7d92a4b7cadde2cfbca99784705e4b382613000000000000001d32475c72889db3c8dde2cdb8a38d77624c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c463a2b1907001c32475c70879bb0c5d8c4af9a86725f4e3f312a3f546a8095abc0c5c4af99846e58432e19000f21323f484a4a4a4a4a4a4a4a4a4a483f322211000000091b2c3a454a4a4a4a4a4a4a4a4a49433627160300192d3f505c5f5f5f5f5f5f5f5f5f5f5d51402d1a06000000000000000000000000000000001f344a5f748ba0b5bbbbbbbbb5a08c76604c37220f0f182d42576c8297acc1d6ebd6c1ac97826b56402b16001f344a5f748b9fb4c9dfe3cdb8a38e78634e39241005162a3f54697d94a9bfd4e9d7c2ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bea9947d68533e291300000000000c1f3246596c8093a6b9ccd7c4b19d8a76636f869bb0c5dae5d0bba59079644f3a250f000000000000000000000000152a3f54697d93a8bdd2e0cbb6a18c766171879bb0c5dad7c2ae99846e5945301b060000000000001d32475c72889db3c8ddf2ede0d5cecdcdcdcdcdcdcdcdd0d5dce5efdbc8b6a698887767564433210f0000001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17000000000000000000000000000316293c4e6175889badc0d3e6d9c6b3a08e7a6755422f1d0a0000000000001d32475c72889db3c8dde2cdb8a38d77624c37373737373737373737373737373732291c0d00001e33485e73899eb3c8d5c0ab96826c574330212b40566b8297abc0d5c4af99846e58432e19000414212c3334343434343434343434332d221405000000000e1c2831343434343434343434342f25180900001022323f484a4a4a4a4a4a4a4a4a4a484032221100000000000000000000000000000000001f344a5f748ba0a5a5a5a5a5a5a08b745f4a34242525252b40566b8297acc1d6ecd6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523d281300000000000316293c4f6376899cb0c3d6cdb9a693806c6f869bb0c5dae5d0bba59079644f3a250f00000000000000000000000012273b50657a8fa4b9cee3ceb9a48f796574899fb4c9ded4bfaa95806b56412c17020000000000001d32475c72889db3c8ddf1e0cfc2bab8b8b8b8b8b8b8b8bbc1c9d2dde5d3c4b6a696857362503e2b190600001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000000000d1f3245576a7d90a3b6c9dce3d0bdab9885725f4c3926140100000000001d32475c72889db3c8dde2cdb8a38d77624c3722222222222222222222222222221e160b0000001f344a5f748b9fb4c9d3bda8937d68533e29162b40566b8297acc1d6c4af99846e58432e190000040f191e1f1f1f1f1f1f1f1f1f1f1e1910040000000000000b151c1f1f1f1f1f1f1f1f1f1f1b13080000000414222d3334343434343434343434332d22140500000000000000000000000000000000001f344a5f748b90909090909090908b745f4a37393a3a3a3840566b8297acc1d6ecd6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c27120000000000000d203346596c8093a6b9cdd6c2af9c89756f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000e23384d61768ca1b6cbdfd2bca7937d68778da2b7cce1d0bba6917c67523d2814000000000000001d32475c72889db3c8dde9d5c2b1a5a3a3a3a3a3a3a3a3a7adb5c0ccdae2d4c4b4a391806d5b4936230f00001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000000000215283b4e60738799acbfd2e5dac7b4a28f7b695643301d0a00000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0d0d0d0d0d0d0d0d0d0d0d0c0903000000001f344a5f748ba0b4cad3bda8937d68533e29192c41576b8297acc1d6c3ad98836d58432e18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410191e1f1f1f1f1f1f1f1f1f1f1e1911050000000000000000000000000000000000001f34495e7179797979797979797979715e494c4e4f4f4f4d4a566b8297acc1d6ecd6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000004172a3d5063768a9eb1c4d7cbb8a5927d6f869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000a1f34495e73889db2c7dcd5c0ab96826b7a90a5bacfe1cdb8a38e78644f3a2510000000000000001d32475c72889db3c8dde3cebaa5938d8d8d8d8d8d8d8e9299a3aebccbdbe2d1c1af9d8b7865523f2b1804001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000b1e3144576a7c90a2b5c8dbe4d1beab998672604d3a271401000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0000000000000000000000000000000000001e33485e73899eb3c8d5c0ab96826c5845342d36475b6f8499aec3d6c1ac97826c57422c170000000000000000090f12110d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b2f4253606464646464646464646460585d6163646464625f5a6b8297acc1d6ecd6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712000000000000000e2134475a6d8294a7bbced4c1ae9b8874869bb0c5dae5d0bba59079644f3a250f000000000000000000000000061b30455a6f8499aec3d8d8c3ae99846f7d93a8bdd2dec9b49f8a75604b36210c000000000000001d32475c72889db3c8dde2cdb8a38d77777777777777787d86919eadbdcddfdeccbaa895826e5b47331f0b001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000214273a4d60738699acbed1e4dbc8b5a2907c695744311e0b000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0a0a0a0a0a0a0a0a0a0a0a0a0701000000001c31475c70869bb0c4d9c4b09c887563524642485464778a9eb3c7d2bda8947d69543f2a1500000000000004111d24272621170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000122535434d4f4f4f4f4f4f4f4f555e666d72767879797977746f6b8297acc1d6ecd6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c27120000000000000004172b3e5164778b9eb1c4d8cab7a4907d869bb0c5dae5d0bba59079644f3a250f00000000000000000000000000182c41566b8095aabfd4dcc7b29c88728296abc0d5dac5b09b87715c47321e09000000000000001d32475c72889db3c8dde2cdb8a38d77626262626262646973808f9fb0c1d4e7d7c5b29e8a76624e3a2511001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c17000000000000000000000000000000000b1d304356697c8fa2b5c7dae5d2bfac998673604e3b2815020000001d32475c72889db3c8dde2cdb8a38d77624c37221f1f1f1f1f1f1f1f1f1f1f1f1f1c150a000000192e43586c8296aabfd3cbb8a5928270635a575b65728394a7baceccb8a38f7965513c271200000000000213222f393c3b34291c0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007172631383a3a3a3a3a47535e68727a82878b8f90908f8d89847d8297acc1d6ecd6c1ac97826b56402b16001f344a5f748ba0b5cbe0e2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000e2134485b6e8295a8bbced3c0ad9986869bb0c5dae5d0bba59079644f3a250f0000000000000000000000000014293e52677c92a6bbd0dfcab5a08b768499aec3d8d7c2ad98836e59442f1a05000000000000001d32475c72889db3c8dde2cdb8a38d77624c4c4c4c4c4f5661708292a4b7cadde1cebaa6927d68543f2b16001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000000000000000000000000000011426394c5f728598abbed0e3dcc9b6a3907d6a5744321f0c0000001d32475c72889db3c8dde2cdb8a38d77624c37343434343434343434343434343431281b0c000015293e53677b8fa3b7cad4c2b09f8f82756e6c6f778391a0b1c4d6c4b09c8974604b37220e0000000000102031404c525047392c1f1204000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141d2325252e3d4a5864707b858e959ba0a3a5a5a4a29e98928c9aaec2d7ecd6c1ac97826b56402b16001f344a5f748b9fb4c9dfe2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712000000000000000005182b3e5265788c9fb2c5d8c9b6a28f879bb0c5dbe5d0bba59079644f3a250f0000000000000000000000000010253a4f64788ea3b8cde1cdb8a38f79879cb1c6dbd3bea994806a55402b1601000000000000001d32475c72889db3c8dde2cdb8a38d77624c373737373a44526375889baec2d6e9d5c0ac97836d58442f1a001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c1700000000070f1313131313131313131313131d2f4255687a8ea1b3c6d9e5d3c0ad9b8874614e3b29160300001d32475c72889db3c8dde2cdb8a38d77624c4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392a1906000f24384c6074889baec0d1cdbdae9f92898483848b95a1afbecfcbb9a794826d5945311d08000000000d1d2e3e4f5e6764574a3d2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090e1d2e3d4c5a6875828e98a2aab0b5b8bbbbb9b6b2aca5a1a9b7c9ddecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c27120000000000000000000f2236495c6f8396a9bccfd2bfac9e9aa5b6cadee5d0bba59079644f3a250f000000000000000000000000000c21364b60758a9fb4c9ded0bba7917b8a9fb4c9decfbaa5907b66513d281300000000000000001d32475c72889db3c8dde2cdb8a38d77624c37222222273445576a7d93a7bcd1e5dac5b09b87715c47321c001d32475c72889db3c8dde4cfb9a48f78634e38230e0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000d1a232829292929292929292929292929384b5e718497aabccfe2dccab7a4917d6b594633200d00001d32475c72889db3c8dde2cdb8a38d77625f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574836220f00091d3144576a7d90a2b3c4d4ccbdb0a59d9898999fa7b2bfcdcfbfae9c8a7764513d2a16020000000a1a2b3b4c5c6d7c75685b4d403326180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091a2b3b4c5b6a788794a0abb5bdc4cacdd0d0cfcbc7c1b9b7bbc6d5e6ecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000006192c3f5366798da0b3c6d9cabbb1afb6c3d4e6e5d0bba59079644f3a250f00000000000000000000000000081d32475c71879bb0c5dad3bea9947d8da2b7cce1ccb7a28d77634e39240f00000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d0d16283b4f64788ea3b8cde3ddc8b39e89735e48331e001d32475c72889db3c8dde4cfb9a48f78634e38230e0d1b2d41556a8095aabfd4e9d6c1ac97826c57422c1700000d1d2b373d3e3e3e3e3e3e3e3e3e3e3e3e3e3e4154677a8da0b3c5d8e7d4c1ae9b8875624f3d2a1704001d32475c72889db3c8dde2cdb8a38d77747474747474747474747474747474747465523d2814000115283b4e61738596a6b6c5d3cdc2b8b1adadaeb3bac4d0cfc0b1a1907d6c5a4734210e0000000717283849596a7a8b86786b5e514336291c0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003142638495969798997a4b1bdc8d1d9dee2e5e5e4e0dbd5cecccfd8e4f3ecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000000102336495d708396aabdd0d9cdc6c4c9d3e1f1e5d0bba59079644f3a250f00000000000000000000000000031a2e43586d8397acc1d6d5c0ab968291a6bbd0ddc8b39e89745f4a35200b00000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d000d22374c61768ca1b7cce1dec9b49f89735e48331e001d32475c72889db3c8dde4cfb9a48f78634e382321212a394a5c708599adc2d7e9d4bfaa95806a55402b160005182a3b4952535353535353535353535353535353535d708396a9bccee1decbb8a592806c594634210e001d32475c72889db3c8dde3ceb9a4918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a1500000b1e31445567778998a7b5c2cdd5ccc6c3c3c3c7ced4cabeb1a2938372614f3d2b1805000004142535465666778898978a7c6f615447392c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d2032445566778898a7b5c2cfdae4e8e2dedbdadcdfe5e9e3e1e4ebf5ffecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d8c3ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000000071a2d4053667a8da0b3c7dae0dad9dde5f1ffe5d0bba59079644f3a250f0000000000000000000000000000162b4054697d94a8bed2d7c2ae9a8c97aabfd3d9c4af9b86705c47321d0800000000000000001d32475c72889db3c8dde2cdb8a38d77624c37220d071426394e63788da3b8cde2dec9b49f89735e48331e001d32475c72889db3c8dde4cfb9a48f78634e383636363c485767798ca0b4c8dce4d0bba6917c67523d2813000b2034475966686868686868686868686868686868686868798c9fb2c6dae7d5c2af9c897663503d2914001d32475c72889db3c8dde8d4c1afa3a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095806a543f2a15000002142638495a6a798997a4b0bbc4cbd4d8d8d8d1c8c1b8ada093847464544332200e0000000e2132435363748595a6a79a8d807264574a3d30221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004172a3d4f61738595a6b6c5d3e0e8ded4cdc9c6c5c7cbd1d8e2edfaffffffecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d7c2ad98836c57422c170000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000000001124374a5d708498abbed1e4efeff2f9ffffe5d0bba59079644f3a250f000000000000000000000000000012273c51667a90a5baceddc9b7a9a1a6b4c6d9d6c1ac97836d58432e190400000000000000001d32475c72889db3c8dde2cdb8a38d77624c37221d1d23324255687c92a6bbd0e5dbc6b19c87725c47321d001d32475c72889db3c8dde4cfb9a48f78634e4b4b4b4b505966748697a9bccfe3decab6a18d77634e3a2510000e23384d63777d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8398adc3d8eddeccb9a693806c57422c17001d32475c72889db3c8ddf0decdc0b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab95806a543f2a15000000091a2b3c4c5c6a7987939ea8afb7c2d2e1cfc0b4ada59b8f837465564736251402000000172b3e5061718292a3b3b8ab9e908375685b4e403326190b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e2134475a6c8091a2b3c4d4e3e4d7cbc1b9b4b1b0b2b6bcc5d0dceaf8ffffecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402c160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c27120000000000000000000000081b2e4154677a8ea1b5c8dbeeffffffffffe5d0bba59079644f3a250f00000000000000000000000000000e23384d62778ca1b6cbe0d5c6bbb7bac4d2e3d2bda8937d69543f2a150100000000000000001d32475c72889db3c8dde2cdb8a38d77624c3732323236415060728598acc0d4e9d7c2ae99846f5a45301b001d32475c72889db3c8dde4cfb9a48f78636260606060646b768493a3b4c6d8e9d6c2af9b87725e4935200b000e23384e63788f94949494949494949494949494949494949494a0b2c6daefe8d5c2ad98836c57422c17001d32475c72889db3c8ddf2ecddd2cccbcbcbcbcbcbcbcbcbcbcbcbcbcbc0ab95806a543f2a15000000000d1e2e3e4d5b6875828b949ca5b4c7d8c4b1a29992887d7164564738291908000000001c31465a6d808fa0b0c1c8bbaea19386796b5e514436291c0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000216293d5063768a9caec0d1e2e3d4c6b9aea59f9c9b9da2a9b2beccdae9f9ffecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c27120000000000000000000000001125384b5e718598abbed2e5f8ffffffffe5d0bba59079644f3a250f00000000000000000000000000000b1f34495e73889db2c7dce4d8cfccced6e2e3cebaa5907a66513c27120000000000000000001d32475c72889db3c8dde2cdb8a38d77624c474747474a535f6e7d8fa2b5c8dbe6d1bda994806b56412c17001d32475c72889db3c8dde4cfb9a48f7877777676767678808995a2b1c1d2e4dfccbaa693806b57432f1b06000e23384e63788fa4a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b0becfe1f5edd8c3ad98836c57422c17001c31465b70879cb1c7dcf1f5efe6e1e0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a15000000000010202f3d4a57636e77808897acc0d4bfaa95867d756b60534638291a0b00000000001c32475c7183919eacb9c6ccbfb1a4978a7c6f6154473a2c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091d3145596c8093a6b9cbdde6d5c5b6a89c928a8786888d96a1aebcccdcedfeecd6c1ac97826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712000000000000000000000000081b2e4255687b8fa2b5c8dcefffffffffe4cfb9a48f79644f3a250f0000000000000000000000000000071c31455a6f8599aec3d8edebe4e1e3e9f3e0cbb6a18c77624d38230e0000000000000000001d32475c72889db3c8dde2cdb8a38d77625c5c5c5c5c5f65707d8c9cadbfd1e4ddcab6a28e7965513c2813001d32475c72889db3c8dde5d0bba7948d8d8d8c8c8c8c8e939ba6b2c0cfdfe5d3c2af9d8a7663503c281400000e23384e63788fa4b9bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfc3cddcecfeedd8c3ad98836c57422c17001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d5c0ab95806a543f2a15000000000002111f2d3a46515b646c8095abc0d4bfa9947d6a61584e4236281a0b0000000000001a2e42556572808e9ba8b6c3cfc2b5a79a8d807265584a3d3023150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f23384c6074889cb0c3d6e8dac8b7a7988a7d7571707379838f9eaebecfe1f4ead5c0ab96826b56402b16001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712000000000000000000000000001226394c5f728699acbfd2e5f9ffffffe4cfb9a48f78634e38230e000000000000000000000000000000182d42576b8296abbfd4e9fefffffffff1dcc7b29d88735e4934200b0000000000000000001d32475c72889db3c8dde2cdb8a38d777272727272727479828e9baabacbdce6d4c1ae9b87735f4b36220e001d32475c72889db3c8ddead6c3b2a6a3a3a2a1a1a1a1a3a7afb8c3d0dee7d7c7b6a492806d5a4734200d00000e23384e63788fa4b9cfd4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d7dfebf5f5edd8c3ad98836c57422c17001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc0ab95806a543f2a15000000000000010f1c28343e48546a8095abc0cbbfa9947d6853453b3025180b000000000000001225374754626f7d8b98a5b2c0cdc5b8ab9e908375685b4e403326190b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014283d52667a8fa4b8cbdfe2cfbdaa9989796c625c5b5e6671808fa0b2c4d7eaead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d0013293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000000000000091c304356697c90a3b6c9dcefffffffe4cfb9a48f78634e38230e00000000000000000000000000000014293e53687c92a7bcd1e5faffffffffedd9c4af9a86705b46311c070000000000000000001d32475c72889db3c8dde3ceb9a49088888888888888898e959facb9c8d8e8dbc9b7a5927d6a5743301c07001d32475c72889db3c8ddf2e1d0c3bab8b8b7b7b7b7b7b8bcc2cbd5e1e6d8c9baa998877563503e2b180400000e23384e63788fa4b9cfe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d8c3ad98836c57422c17001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ab95806a543f2a1500000000000000000b17222b3f546a8095abb5b5b5a9947d68533e291e13070000000000000000081a293744515f6c798895a2afbdcac9bbaea19486796c5e514437291c0f010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000182d41566b8095aabed2e7dac6b3a08d7b6a5b4f47464a5361718395a8bbcfe3ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d0014293e53687d94a9bfd4e9d6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712000000000000000000000000000013263a4d6073869aadc0d3e7faffffe4cfb9a48f78634e38230e00000000000000000000000000000010253a4f64788ea3b8cde2f7ffffffffead5c0ab96826c57422d18030000000000000000001d32475c72889db3c8dde7d3bfaea09d9d9d9d9d9d9d9ea2a9b2bdc9d7e6decebdac9a8875614e3b281400001d32475c72889db2c7dcf1eee0d5cfcdcdcccccccccccdd1d6dee8e1d5c8baab9c8b7a69574533210e0000000e23384e63788fa4b9cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc3ad98836c57422c17001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a095806a543f2a1500000000000000000005152a3f546a8095a0a0a0a0a0947d68533e291301000000000000000000000b192633414e5c697684919fadbac7ccbfb1a4978a7c6f6154473a2d1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b30455a6f8599aec3d8e8d4bfab9783705d4d3d323036435365778c9fb4c8ddead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095aabfd4e9d6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000000000000000a1d3043576a7d90a4b7caddf0ffffe4cfb9a48f78634e38230e0000000000000000000000000000000d21364b60758a9fb4c9def3fffffffee6d1bca7937d68533f2a15000000000000000000001d32475c72889db3c8ddefddccbeb5b3b3b3b3b3b3b3b3b7bdc5cfdae7ded0c0b09f8e7c6a5845321f0c00001c31465b70879cb1c7dcf1f2f2e9e4e2e2e1e1e1e1e1e2e5e9e2d9cfc4b7aa9c8e7d6d5c4b3a2816040000000e23384e63788fa4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ad98836c57422c17001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b806a543f2a1500000000000000000000152a3f546a808b8b8b8b8b8b8b7d68533e2913000000000000000000000000081623303e4b596673828f9ca9b7c4cfc2b5a89b8d807265584a3d302316080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d32475c72889cb1c7dce4cfbaa6917c6854402f201b2536485c70869aaec3d8ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000000000000000114273a4d6074889baec1d4e7faffe4cfb9a48f78634e38230e000000000000000000000000000000091e32475c71879bb0c5daeffffffff8e3ceb9a48f7965503b2611000000000000000000001d32475c72889db3c8ddf2eadbd0c9c8c8c8c8c8c8c8c8ccd1d8e1e7dbcec0b2a29282705e4d3b28150200001b30465b70879cb1c7dcdddddddddddddddddddddedddcdad5cec6bdb2a69a8d7d6f5f4f3e2e1c0b000000000e23384e63788fa0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a098836c57422c17001a2f44586b7474747474747474747474747474747474747474747474747474747364513d28130000000000000000000014293e526674747474747474747364513c2712000000000000000000000000000512202d3b485563707d8c99a6b3c1cec6b8ab9e908375685b4e413326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899fb3c8dee2cdb8a38d77634e39241107192d42576c8297acc1d6ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c27120000000000000000000000000000000b1e3144576a7d92a5b8cbdef1f5e4cfb9a48f78634e38230e000000000000000000000000000000041a2f44596d8398adc1d6ebf5f5f5f4dfcab5a08b76614c37220d000000000000000000001c31465b70879cb1c7dcf1f5ede4dedddddddddddddddde0e5e7dfd5cabeb0a29484746352412f1e0b0000001b30465b70879cb1c7c8c8c8c8c8c8c8c8c8c8c8c9c8c7c5c0bab3aaa095897b6e60514131211000000000000e23384e63788b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b836c57422c170015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f564735220e000000000000000000000f233648575f5f5f5f5f5f5f5f5f564735220e0000000000000000000000000000020f1d2a384552606d7a8996a3b0becbc9bcaea19487796c5f5144372a1c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00162b40566b8297acc1d6ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c27120000000000000000000000000000000215283b4e6175889bafc2d5e0e0e0cfb9a48f78634e38230e00000000000000000000000000000000162b40556a8094a9bed3e0e0e0e0e0dbc6b29c88725d49341f0a000000000000000000001b30465b70879cb1c7dce0e0e0e0e0e0e0e0e0e0e0e0dfdcd8d3cbc2b8aca0928575665646352412000000001b30465b70879cb1b2b3b3b3b3b3b3b3b3b3b3b3b4b3b2b0aca69f978d83776b5e50423223130300000000000d22374b5f707474747474747474747474747474747474747474747474747474747474747467533f2b16000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44382918050000000000000000000007192a39444a4a4a4a4a4a4a4a4a4438291805000000000000000000000000000000000c1a2734424f5d6a778592a0adbbc8ccbfb2a4978a7c6f6255473a2d1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00162b40566b8297acc1d6ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712000000000000000000000000000000000b1f3245586b8092a5b8cbcbcbcbcbb9a48f78634e38230e0000000000000000000000000000000012273c51667b90a5bacbcbcbcbcbcbcbc3ae99846f5a45301b06000000000000000000001b30465b70879cb1c7cbcbcbcbcbcbcbcbcbcbcbcbcbc9c7c4beb7afa59b8f827466574838281706000000001b30465b70879c9c9d9d9d9d9d9d9d9d9d9d9d9d9f9e9d9b97928b847a7065594d4032231405000000000000081c3042525d5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f58493724100001111f2b323434343434343434343434343434343434343434343434343434343430271a0b0000000000000000000000000c1b283134343434343434343430271a0b000000000000000000000000000000000000091724313f4c5a6774828f9daab8c5d0c2b5a89b8e807265584b3d30231405000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00162b40566b8297acc1d6ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c2712000000000000000000000000000000000215283c4f6275899cafb5b5b5b5b5b5a48f78634e38230e000000000000000000000000000000000e23384d62778ca1b5b5b5b5b5b5b5b5b5aa95806b56412c1702000000000000000000001b30465b70879cb1b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b2afaaa49c93897d70645648392a1a0a00000000001b30465b7087878788888888888888888888888889898886837d7770675d53483c2f221405000000000000000013253441494a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a453a2b1a080000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c140900000000000000000000000000000a151c1f1f1f1f1f1f1f1f1f1c140900000000000000000000000000000000000000000614212e3c49566471808d9aa7b5c2cfc6b8ab9e918376685b4e41322312000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00162b40566b8297acc1d6ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e8d3bda8937c67523c271200000000000000000000000000000000000d203346596c8093a0a0a0a0a0a0a0a08f78634e38230e000000000000000000000000000000000b20354a5e73899ea0a0a0a0a0a0a0a0a0a0927c68533e291400000000000000000000001b30465b70879ca0a0a0a0a0a0a0a0a0a0a0a0a0a0a09f9d9a958f8880766b5f5346382a1b0c0000000000001a2e435768707070727272727272727272727272737372706d68635c544a41362a1e11040000000000000000000716242e343434343434343434343434343434343434343434343434343434343434343431281c0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101e2b394653616e7c8997a4b1bfccc9bcafa19487796c5f5141301d0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00162b40566b8297acc1d6ead5c0ab95806a543f2a15001e33485e73899fb4c9dee2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3d8e0d3bda8937c67523c2712000000000000000000000000000000000003162a3d5063768a8b8b8b8b8b8b8b8b8b78634e38230e00000000000000000000000000000000071c31465b70858b8b8b8b8b8b8b8b8b8b8b8b78644f3a251000000000000000000000001b30465b70878b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8886827b746c63594e4235281a0c0000000000000014273a4a575b5b5b5c5c5c5c5c5c5c5c5c5c5c5d5e5e5c5b58544e4840372e24190d00000000000000000000000006121a1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a0b0b0b0b0b0b0b0b0b0b0a06000000000000000000000000000000000000000000000000000000000000000d1b283643505e6b788694a1aebdcdccbfb2a5978a7c6f5f4d3a26120000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899fb4c9dee2cdb8a38d77624c37220d00162b40566b8297acc1d6ead5c0ab95806a543f2a15001e33485e73889db3c8dde2cdb8a38d77624c37220d00152a3f546a8095abc0d5ead6c1ac97826b56402b160000000000000000000000000000000000000000000000172c42576c8398adc3cbcbcbbda8937c67523c27120000000000000000000000000000000000000d2033475a6b7474747474747474747471604c37220d0000000000000000000000000000000000182d415568747474747474747474747474746f5e4b36210d00000000000000000000001a2f44586b74747474747474747474747474747474747473706c66605850463c3024170a00000000000000000a1c2c3a4346464647474747474747474747474848484746433f3a332c241b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111a1f21212121212121212121201a11050000000000000000000000000000000000000000000000000000000000000a182532404d5a687583909fb1c4d9d0c2b5a89b8e7c6955402b160000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485e73899eb3c8dde2cdb8a38e78634e3a25130c1b2f43586c8397acc1d7e9d4bfa994806a543f2a15001d32475c72889db3c7dce3ceb9a48f79644f3a26130a1a2d42576b8296abc0d5ead5c0ab95806a55402b160000000000000000000000000000000000000000000000172c42576c8398adb5b5b5b5b5a8937c67523c271200000000000000000000000000000000000004172a3d4d5a5f5f5f5f5f5f5f5f5f5f5e5343301d0900000000000000000000000000000000001226394b595f5f5f5f5f5f5f5f5f5f5f5f5f5d51412e1b07000000000000000000000015293c4d5a5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5e5b57524c453d33291e1306000000000000000000000e1c272e303031323232323232323232323233333332312e2a251f1911080000000000000000000000000000000000000000000000000000000000000000000410191e1f1f1f1f1f1f1f1f1f1e1911050000000000040c111212121212121212110e060000000000070d13171a1b1b1a18130e07000000000000000000000414222d3436363636363636363636342e231505000000000000000000000000000000000000000000000000000000000000081623303e4b5966738297acc1d6dfd2c4b7aa98836c57422c170000000000000000000000000000000000000000000000000000000000000000000000000000000000001d32475c71879cb1c6dbe5d0bba6927c68554231232029394b5e72879bb0c4d9e6d2bca7937c68533e2813001c31465b70869bb0c5dae6d1bca7927d69554231231f2737495c70869aaec3d8e8d3bea8947d68543f2a140000000000000000000000000000000000000000000000172c42576c8398a0a0a0a0a0a0a0937c67523c2712000000000000000000000000000000000000000d1f2f3d474a4a4a4a4a4a4a4a4a4a49423525140100000000000000000000000000000000000a1c2d3b454a4a4a4a4a4a4a4a4a4a4a4a4a48403323120000000000000000000000000c1e2f3d474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4846423d38312920170c010000000000000000000000000a141a1b1b1c1d1d1d1d1d1d1d1d1d1d1d1e1e1e1d1c1915110b04000000000000000000000000000000000000000000000000000000000000000000000414222d33343434343434343434332d2214050000000a17202627272727272727272722190c000009121b21272c2f30302f2d28221b1208000000000000000010223240494b4b4b4b4b4b4b4b4b4b494133231100000000000000000000000000000000000000000000000000000000000c192634414e5c697684919fb1c5d9cfc1b4a7998d7d6a55412c170000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f44596e8499adc2d7e9d5c0ac9885715f4f4036343b4757687a8ea2b5c9dee2cdb9a48f7965503b261100192f44586d8398adc1d6ead5c1ad998572604f41373439455566798ca0b4c8dde3cfbaa5907b66513c27120000000000000000000000000000000000000000000000172c42576c838b8b8b8b8b8b8b8b8b7c67523c27120000000000000000000000000000000000000001111f2b3234343434343434343434342f251708000000000000000000000000000000000000000f1d293134343434343434343434343434332d23150600000000000000000000000001111f2b3234343434343434343434343434343434343433312d29231d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001122323f484a4a4a4a4a4a4a4a4a48403222110000081928343b3c3c3c3c3c3c3c3c3c362a1c0c131c252e363c4144464644413d362e251b1003000000000000192d3f515d606060606060606060605d51412e1a060000000000000000000000000000000000000000000000000000010f1c2a3744515f6c7a8895a2afbdcecbbeb1a396897b6e5f4d3a2612000000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41556a8094a8bdd1e5dbc8b4a18f7d6d5e524b4a4e5865758698abbed1e4dbc7b39f8a75614c37230e00162b4055697d93a8bcd0e4dcc8b5a28f7d6d5f534b4a4d5663728496a9bccfe3ddc9b5a08c77624d38240f0000000000000000000000000000000000000000000000162b4054677474747474747474747472624e3a25100000000000000000000000000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1b12070000000000000000000000000000000000000000000c161d1f1f1f1f1f1f1f1f1f1f1f1f1f1e1911050000000000000000000000000000010e181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1c19140f09020000000000000000000000000000000000060a0b0b0b0b0b0b0b0b0b0b0a06000003090b0b0b0b0b0b0b0b0b0b0b08020000040a0b0b0b0b0b0b0b0b0b0b0b07000000000000000000000000081b2e40505c5f5f5f5f5f5f5f5f5f5d51402d1a06001326374650525252525252525251483a291c262f39414a5056595b5b5a56514a41382d21140500000000001e33485c6f76767676767676767676705d4934200a0000000000000000000000000000000000000000000000000004121f2d3a4755626f7d8b98a5b3c0cdc8baada09386786b5e5041301e0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000013273c5065798ea2b6cadde4d1beac9b8c7c6f65605f626a768493a4b5c7dae7d4c0ac9885705b47321e090012263b5064788da1b5c9dce4d1bfad9c8c7d7066605f6168738291a1b3c5d8e9d5c2ae9a86715d48341f0a00000000000000000000000000000000000000000000001125384a585f5f5f5f5f5f5f5f5f5f5e5445331f0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111a1f21212121212121212121201a110c161d20212121212121212121201d150b0f181f21212121212121212121201c1308000000000000000000001225384a5d6e7474747474747474746f5d49341f0a001b2f4355636767676767676767655846332e39424c555d656a6e70706f6b655e544a3e32231405000000001f344a5f748b8c8c8c8c8c8c8c8c8c76604b36210b000000000000000000000000000000000000000000000000081522303d4a586572808e9ba8b6c3d1c4b7aa9d8f8274675a4d40322312010000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22364a5e72879aaec1d4e6dbcab9aa9b8d82797574777d8894a2b1c2d3e4ddcab8a4917d6955412d1804000d21354a5d72869aadc0d3e5dccabaaa9b8e837a7574767c86919fafbfd0e2dfccb9a6927d6a56422e1a050000000000000000000000000000000000000000000000081b2c3a454a4a4a4a4a4a4a4a4a4a49433627160300000000070c0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b050000000000000a121719191919191919191919191919191919191711080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414222d3436363636363636363636342e231d2932363636363636363636363631281c202b3336363636363636363636352f25180900000000000000000a1c2f4254677a8b8b8b8b8b8b8b8b8874604b36200b001f34495e727c7c7c7c7c7c7c7c76624d3c424c555f6871798084868784807971675c4f42322313020000001f344a5f748ba0a1a1a1a1a1a1a18c76604b36210b00000000000000000000000000000000000000000000000b182633404e5b687583919eacb9c6cec1b4a6998c7d716457493c2f22140500000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2f43576a7d92a4b6c9dae8d7c8b9ab9f958e8b8a8c929aa5b2c0cfe0e3d1bfad9b8875614d3a26120000071b2e42566a7d90a3b6c8dae8d8c8b9aca0968f8b8a8c9098a3afbdcddde5d3c1af9d8a76634f3b2713000000000000000000000000000000000000000000000000000e1c283134343434343434343434342f25180900000006121b212222222222222222222222222222222222222222222222222222222222222222222222222222221f180e010000000f1c262c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2c251a0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010223240494b4b4b4b4b4b4b4b4b4b4941332c3b464b4b4b4b4b4b4b4b4b4b4b453a2b303e484b4b4b4b4b4b4b4b4b4b4a4336261502000000000000011426394c5f718597a0a0a0a0a0a092806c5845311d08001f34495e73899393939393938f79655451555e68727b858d94999b9c99958d857a6d60514131200e0000001f344a5f748ba0b5b7b7b7b7b7a18c76604b36210b000000000000000000000000000000000000000000000e1b293643515e6b798794a1afbcc9cbbeb0a396897b6e605346392c1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014283b4e61748799abbdcedee6d7c8bcb2a9a3a09fa1a6adb7c3d0dee6d5c5b4a2907d6b5845311e0a00000013273a4d60738699aabccddde6d7c9bdb2aaa3a09fa0a5acb5c0cddce8d8c7b6a492806d5a4733200c00000000000000000000000000000000000000000000000000000b151c1f1f1f1f1f1f1f1f1f1f1f1b13080000000515242f36373737373737373737373737373737373737373737373737373737373737373737373737373737342b1f0f00000c1d2d3941434343434343434343434343434343434340372a1b0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000192d3f515d606060606060606060605d514137495860606060606060606060605848363c4e5b606060606060606060605f5444311e0a0000000000000b1e304356697b8fa1b4b5b5b5b09d8a76634f3c291502001d32475c71869ba8a8a8a8a895827268666a717b858f98a1a8aeb0b1aea9a1978c7d6f5f4e3d2c1a0700001f344a5f748ba0b5cbccccccb7a18c76604b36210b000000000000000000000000000000000000000004111e2c394754616f7c8a97a4b2bfcdc7baada09285776a5d504336281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1f3245576a7c8e9fb0c0cfdee6dacec5bdb8b5b4b6bac1c9d4e0e5d7c8b8a7968572604e3b2815020000000b1e314457697b8d9eafbfcfdde7dacfc5beb8b5b4b5b9bfc8d2dee7d9cabaa998877563503d2a170400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112333414a4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c483d2d1c0a0016293b4b5558585858585858585858585858585858585448382714000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485c6f76767676767676767676705d493f5367757676767676767676767566523e44586b7676767676767676767672614d38230e00000000000215283a4d60738699abbecbcbbba794826d5a4633200d0000192e43576c8095a8bbbdbdb2a090857d7b7d858e98a2abb4bcc2c5c6c3bdb4a99c8e7d6c5b4937241100001f344a5f748ba0b5cbe0e1ccb7a18c76604b36210b000000000000000000000000000000000000000714212f3c4a576471808d9aa7b5c2d0c4b7aa9c8f8274675a4d3f3225180a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000215283a4c5e708292a2b1c0cedbe7e1d8d1cdcbc9cbcfd5dde6e1d4c7b9aa9a8978675543311e0c000000000114273a4c5d6f8091a1b1bfcddae6e2d9d2cdcbc9cbced4dbe4e3d6c9bbac9c8c7a69574533210e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2e41515f6262626262626262626262626262626262626262626262626262626262626262626262626262625a4b392612001d314559686e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6656432f1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748b8c8c8c8c8c8c8c8c8c76604b40566b828c8c8c8c8c8c8c8c8c806a543f465b70878c8c8c8c8c8c8c8c8c79644f3a250f00000000000d1f3244576a7d90a3b5c8d8c5b29e8b7764513d2a1704000014293d5165788c9fb1c3cfbeaea19893919499a1abb5bec7c3c1c2c6ced1c7baac9b8a786653402c1905001f344a5f748ba0b5cbe0e0ccb7a18c76604b36210b0000000000000000000000000000000000000a1725323f4d5a677583909eabb8c5cec1b3a6998c7d706356493c2f21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1d2f415263738493a2b0bdc9d4dee6e6e1e0dfe0e4e9e2d9cfc3b6a99b8c7b6b5a493826140200000000000a1c2e405162738393a1afbcc9d4dee6e6e2e0dfe0e3e8e4dbd1c5b8ab9d8e7d6d5c4b3a28160400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f34495d707777777777777777777777777777777777777777777777777777777777777777777777777777776955402c16001f344a5f748484848484848484848484848484848484725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0a1a1a1a1a1a1a18c76604b40566b8297a1a1a1a1a1a1a195806a543f465b70879ca1a1a1a1a1a1a19079644f3a250f000000000417293c4e6174879aacbfd2cfbca995826f5b4834210e0000000e2235495c6f8294a5b6c5cdbfb4aca8a7a8adb4bec6bcb4aeacadb2bbc6d4cab9a896836f5c4834200c001f344a5f748ba0b5cbcbcbcbb7a18c76604b36210b00000000000000000000000000000000000a19283543505d6b788693a0aebbc9cabdb0a395887b6e605346382b1e110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000122334455665748492a0acb8c2cbd3d8dcdfdfdedbd6cfc6bdb2a6998b7c6d5d4d3d2c1a09000000000000001122344455647483919fabb7c1cad2d8dcdee0dedbd7d0c8beb3a79b8d7d6f5f4f3e2e1c0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748b8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d836c57422c17001f344a5f748b99999999999999999999999999999988725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5b7b7b7b7b7a18c76604b40566b8297acb7b7b7b7b7ab95806a543f465b70879cb1b7b7b7b7b7a59079644f3a250f000000000e213346596b7d91a4b6c9d9c6b3a08c7966523f2b180500000006192d3f5264768898a7b5c2cdc7c0bdbcbec2c6bdb3a9a09a97989ea9b6c5d6c5b39f8c77634f3a2511001f344a5f748ba0b5b5b5b5b5b5a18c76604b36210b00000000000000000000000000000000031627374653606e7b8996a3b1beccc7baad9f9285776a5d504235281b0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000617273847566574828f9aa5afb7bfc4c7c9cbc9c6c1bbb3aa9f94887a6d5e4f3f2f1f0e00000000000000000516273747566573828e99a4aeb7bec3c7c9cbc9c6c2bcb5aca1968a7c6f605141312110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a398836c57422c17001f344a5f748ba0afafafafafafafafafafafafaf9d88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbccccccb7a18c76604b40566b8297acc1ccccccc0ab95806a543f465b70879cb1c7ccccccbba59079644f3a250f00000005182b3d506375899baec1d4d1beaa9783705d493623100000000000102335475869798997a4b0bac1c5c7c5c2bcb3aaa0978d8682838b98a7b9cbcbbba7927d68533f2a15001f344a5f748ba0a0a0a0a0a0a0a08c76604b36210b000000000000000000000000000000000b1f33455563707d8c99a7b4c1cfc4b6a99c8f827467594c3f3225170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1a2938475663707c88929ca3aaafb3b4b5b4b1aca79f978d82766a5d4f4031211101000000000000000000091929384755636f7c88929ba3a9aeb2b4b5b4b1ada8a1998f84786c5e514232231303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8ad98836c57422c17001f344a5f748ba0b5c4c4c4c4c4c4c4c4c4c4c4b39d88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e1ccb7a18c76604b40566b8297acc1d6e1d5c0ab95806a543f465b70879cb1c7dce1d0bba59079644f3a250f0000000f2235475a6d8093a5b8cbdbc8b5a18e7a6754402d1a0700000000000618293b4b5b6a7987939ea6acb0b1b0ada8a0978d8479716c6f798a9cb0b5b5b5ab97826c57422d18001f344a5f748b8b8b8b8b8b8b8b8b8b76604b36210b000000000000000000000000000000000f24394e6273828f9daab7c4cdc0b3a6998c7d706356493c2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1a293846535f6b7580888f969a9d9fa09f9c98928c847a7065594c3f3122130300000000000000000000000b1a293745525e6a757d888f959a9d9fa09f9c99948d857c72665a4e403223140500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdc3ad98836c57422c17001f344a5f748ba0b5cbd9d9d9d9d9d9d9d9d9c8b39d88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e0ccb7a18c76604b40566b8297acc1d6e0d5c0ab95806a543f465b70879cb1c7dce0d0bba59079644f3a250f000007192c3e5164778a9dafc2d5d2bfac9885715e4b372411000000000000000c1d2d3d4c5b6875828a92979b9c9b98948c837a70675d575c6c8295a0a0a0a0a099846e58442f19001e33485c6d747474747474747474746e5d49341f0a000000000000000000000000000000000f24394e63778a9bacbac8cabdb0a295887a6d605345382b1e11030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1a2835414d58636c747b8286888a8b8987837d7770675d53473b2e211304000000000000000000000000000b192734414c57616b737a808588898b898884807871695f54493d302214050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0d8c3ad98836c57422c17001f344a5f748ba0b5cbe0e0e0e0e0e0e0e0ddc8b39d88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbcbcbcbb7a18c76604b40566b8297acc1cbcbcbc0ab95806a543f465b70879cb1c7cbcbcbbba59079644f3a250f0000112336495c6e8294a7b9ccdcc9b6a38f7c6855422e1b0800000000000000000f1f2e3d4b58636e767d8386878684807870675d544a4253687d8b8b8b8b8b8b8b866f5a442f1a00192c3e4f5b5f5f5f5f5f5f5f5f5f5f5c50402d1a06000000000000000000000000000000000c2034485b6c7d8e9eafbfbaac9f9285776a5d4f4235281a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303b46505860666c7073747473716e69635c544a4035291d10030000000000000000000000000000000916232f3a454e575f666b6f72747473726f6a645d554c42372c1f1204000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5cbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc3ad98836c57422c17001f344a5f748ba0b5cbcbcbcbcbcbcbcbcbcbc8b39d88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5b5b5b5b5b5a18c76604b40566b8297acb5b5b5b5b5ab95806a543f465b70879cb1b5b5b5b5b5a59079644f3a250f00081b2d405366788c9eb1c4cbcbc0ad9a8673604c39261200000000000000000001101f2d3a46515a63696d6f70706e6a645d544a41373b50637274747474747474746956422d19000f21313e474a4a4a4a4a4a4a4a4a4a483f322210000000000000000000000000000000000005192c3d4e5f6f8091a1b2a99c8f827366594c3f3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e29333c454c52575b5e5f5f5e5c59544f4840372e23180c00000000000000000000000000000000000005121d28323b444b51575a5d5f5f5e5c5a555049423930251a0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5ad98836c57422c17001f344a5f748ba0b5b5b5b5b5b5b5b5b5b5b5b5b39d88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0a0a0a0a0a0a0a08c76604b40566b8297a0a0a0a0a0a0a095806a543f465b70879ca0a0a0a0a0a0a09079644f3a250f001225374a5d708395a8b5b5b5b5b5a4917d6a5643301d0a00000000000000000000010f1c28343e474e54585a5b5b5955504940372e243446555e5f5f5f5f5f5f5f5f594b3a2713000313212b3334343434343434343434332c2114040000000000000000000000000000000000000f2030415162728394a5988b7d706356493b2e21140600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c16202931383e4246484a4a494744403b342d241b11060000000000000000000000000000000000000000000b151f2830373d4245484a4a494745413c352e261d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748ba0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a098836c57422c17001f344a5f748ba0a0a0a0a0a0a0a0a0a0a0a0a0a09d88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748b8b8b8b8b8b8b8b8b8b76604b40566b828b8b8b8b8b8b8b8b8b806a543f465b70878b8b8b8b8b8b8b8b8b79644f3a250f00192e4154677a8d9fa0a0a0a0a0a09b8874614e3a2714010000000000000000000000000b17212b333a3f4345464644413c352d241b17283743494a4a4a4a4a4a4a4a453b2d1c0a0000030f181e1f1f1f1f1f1f1f1f1f1f1e190f040000000000000000000000000000000000000002122334445565768795887a6d605245382b1d100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151d23292d3133343434322f2b2620191108000000000000000000000000000000000000000000000000020c151c23282d313334343432302c27211a120a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f344a5f748b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b836c57422c17001f344a5f748b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b88725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485c6d747474747474747474746e5d493f5366737474747474747474747365523d44586a7474747474747474747470604d38230e001c32475c71848b8b8b8b8b8b8b8b8b806b5845311e0b0000000000000000000000000000050f181f262b2e3030302f2c27211a11080a19262f34343434343434343431291d0f000000000000000000000000000000000000000000000000000000000000000000000000000000000005162637475868798476695c4f4234271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f14191c1e1f1f1f1d1a17110c050000000000000000000000000000000000000000000000000000000001080e14181c1e1f1f1f1d1b17120d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e33485c6d7474747474747474747474747474747474747474747474747474747474747474747474747474736754402b16001e33485c6e74747474747474747474747474747474746b5945301b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000192c3e4f5b5f5f5f5f5f5f5f5f5f5f5c50403748565f5f5f5f5f5f5f5f5f5f5e5647353b4c595f5f5f5f5f5f5f5f5f5f5d5243311d09001c31455a6c7474747474747474747472624f3c28150200000000000000000000000000000000040b1116191b1b1b1a17120d0600000008131b1f1f1f1f1f1f1f1f1f1d160c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000008192a3a4b5b6b7066594c3e312417090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000192c3e4f5b5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f574937241100192c3f505c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a4d3c2916000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f21313e474a4a4a4a4a4a4a4a4a4a483f322a39444a4a4a4a4a4a4a4a4a4a494338292e3c464a4a4a4a4a4a4a4a4a4a49413425140100162a3d4e5b5f5f5f5f5f5f5f5f5f5f5e544533200c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c2d3d4d585b55483b2e2113060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f21313e474a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a44392b1a08000f21323f484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a473d2f1e0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000313212b3334343434343434343434332c211b2730343434343434343434343430261a1e2a3234343434343434343434342e24160700000e1f303e474a4a4a4a4a4a4a4a4a4a4942362716030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2f3b444642372a1d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000313212b3334343434343434343434343434343434343434343434343434343434343434343434343434343430281c0d00000414212c333434343434343434343434343434343434322b1f11010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f181e1f1f1f1f1f1f1f1f1f1f1e190f0a141c1f1f1f1f1f1f1f1f1f1f1f1b14090d171d1f1f1f1f1f1f1f1f1f1f1f1a11060000000212202b3334343434343434343434342f2518090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111e282f302d251a0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f181e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c150b00000000040f191e1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e180e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f181e1f1f1f1f1f1f1f1f1f1f1f1b1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c151a1b1912080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + offset: 0 + size: 0 + path: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/Staatliches-Regular SDF.asset.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/Staatliches-Regular SDF.asset.meta new file mode 100644 index 0000000..2b5ebe2 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/Staatliches-Regular SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3821b3a54195a0844aaeb18b65cd5e63 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt new file mode 100644 index 0000000..a52cc38 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt @@ -0,0 +1 @@ +)]}〕〉》」』】〙〗〟’”⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、%,.:;。!?]):;=}¢°"†‡℃〆%,. \ No newline at end of file diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta new file mode 100644 index 0000000..6ea6551 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 312ba5b9e90627940866e19549a788cf +timeCreated: 1425440388 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt new file mode 100644 index 0000000..285696e --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt @@ -0,0 +1 @@ +([{〔〈《「『【〘〖〝‘“⦅«$—…‥〳〴〵\[({£¥"々〇〉》」$⦆¥₩ # \ No newline at end of file diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta new file mode 100644 index 0000000..95d447d --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d713940fcbede142ae4a33ea0062b33 +timeCreated: 1425440388 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders.meta b/Assets/TextMesh Pro/Resources/Shaders.meta new file mode 100644 index 0000000..8618762 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bfd97b7178e5d914ebe73156a22236a8 +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader new file mode 100644 index 0000000..a4edb35 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader @@ -0,0 +1,144 @@ +Shader "TextMeshPro/Mobile/Bitmap" { + +Properties { + _MainTex ("Font Atlas", 2D) = "white" {} + _Color ("Text Color", Color) = (1,1,1,1) + _DiffusePower ("Diffuse Power", Range(1.0,4.0)) = 1.0 + + _VertexOffsetX("Vertex OffsetX", float) = 0 + _VertexOffsetY("Vertex OffsetY", float) = 0 + _MaskSoftnessX("Mask SoftnessX", float) = 0 + _MaskSoftnessY("Mask SoftnessY", float) = 0 + + _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + + _StencilComp("Stencil Comparison", Float) = 8 + _Stencil("Stencil ID", Float) = 0 + _StencilOp("Stencil Operation", Float) = 0 + _StencilWriteMask("Stencil Write Mask", Float) = 255 + _StencilReadMask("Stencil Read Mask", Float) = 255 + + _ColorMask("Color Mask", Float) = 15 +} + +SubShader { + + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + + Lighting Off + Cull Off + ZTest [unity_GUIZTestMode] + ZWrite Off + Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct v2f { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float4 mask : TEXCOORD2; + }; + + sampler2D _MainTex; + fixed4 _Color; + float _DiffusePower; + + uniform float _VertexOffsetX; + uniform float _VertexOffsetY; + uniform float4 _ClipRect; + uniform float _MaskSoftnessX; + uniform float _MaskSoftnessY; + + v2f vert (appdata_t v) + { + v2f o; + float4 vert = v.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + vert.xy += (vert.w * 0.5) / _ScreenParams.xy; + + o.vertex = UnityPixelSnap(UnityObjectToClipPos(vert)); + o.color = v.color; + o.color *= _Color; + o.color.rgb *= _DiffusePower; + o.texcoord0 = v.texcoord0; + + float2 pixelSize = o.vertex.w; + //pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); + + // Clamp _ClipRect to 16bit. + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + o.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + + return o; + } + + fixed4 frag (v2f i) : COLOR + { + fixed4 c = fixed4(i.color.rgb, i.color.a * tex2D(_MainTex, i.texcoord0).a); + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(i.mask.xy)) * i.mask.zw); + c *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + +SubShader { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + BindChannels { + Bind "Color", color + Bind "Vertex", vertex + Bind "TexCoord", texcoord0 + } + Pass { + SetTexture [_MainTex] { + constantColor [_Color] combine constant * primary, constant * texture + } + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader.meta new file mode 100644 index 0000000..cc01207 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d1cf17907700cb647aa3ea423ba38f2e +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader new file mode 100644 index 0000000..cf1e240 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader @@ -0,0 +1,145 @@ +Shader "TextMeshPro/Bitmap" { + +Properties { + _MainTex ("Font Atlas", 2D) = "white" {} + _FaceTex ("Font Texture", 2D) = "white" {} + _FaceColor ("Text Color", Color) = (1,1,1,1) + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _Padding ("Padding", float) = 0 + + _StencilComp("Stencil Comparison", Float) = 8 + _Stencil("Stencil ID", Float) = 0 + _StencilOp("Stencil Operation", Float) = 0 + _StencilWriteMask("Stencil Write Mask", Float) = 255 + _StencilReadMask("Stencil Read Mask", Float) = 255 + + _ColorMask("Color Mask", Float) = 15 +} + +SubShader{ + + Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + + Lighting Off + Cull [_CullMode] + ZTest [unity_GUIZTestMode] + ZWrite Off + Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct v2f { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + float4 mask : TEXCOORD2; + }; + + uniform sampler2D _MainTex; + uniform sampler2D _FaceTex; + uniform float4 _FaceTex_ST; + uniform fixed4 _FaceColor; + + uniform float _VertexOffsetX; + uniform float _VertexOffsetY; + uniform float4 _ClipRect; + uniform float _MaskSoftnessX; + uniform float _MaskSoftnessY; + + float2 UnpackUV(float uv) + { + float2 output; + output.x = floor(uv / 4096); + output.y = uv - 4096 * output.x; + + return output * 0.001953125; + } + + v2f vert (appdata_t i) + { + float4 vert = i.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + vert.xy += (vert.w * 0.5) / _ScreenParams.xy; + + float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert)); + + fixed4 faceColor = i.color; + faceColor *= _FaceColor; + + v2f o; + o.vertex = vPosition; + o.color = faceColor; + o.texcoord0 = i.texcoord0; + o.texcoord1 = TRANSFORM_TEX(UnpackUV(i.texcoord1), _FaceTex); + float2 pixelSize = vPosition.w; + pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); + + // Clamp _ClipRect to 16bit. + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + o.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 c = tex2D(_MainTex, i.texcoord0) * tex2D(_FaceTex, i.texcoord1) * i.color; + + //fixed4 c = tex2D(_MainTex, i.texcoord0); + //c = fixed4 (tex2D(_FaceTex, i.texcoord1).rgb * i.color.rgb, i.color.a * c.a); + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(i.mask.xy)) * i.mask.zw); + c *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + + CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader.meta new file mode 100644 index 0000000..c55c6d9 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: edfcf888cd11d9245b91d2883049a57e +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader new file mode 100644 index 0000000..8c461cf --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader @@ -0,0 +1,304 @@ +Shader "TextMeshPro/Distance Field Overlay" { + +Properties { + _FaceTex ("Face Texture", 2D) = "white" {} + _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 + _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 + _FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 + _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _Bevel ("Bevel", Range(0,1)) = 0.5 + _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 + _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 + _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 + _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 + + _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416 + _SpecularColor ("Specular", Color) = (1,1,1,1) + _SpecularPower ("Specular", Range(0,4)) = 2.0 + _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10 + _Diffuse ("Diffuse", Range(0,1)) = 0.5 + _Ambient ("Ambient", Range(1,0)) = 0.5 + + _BumpMap ("Normal map", 2D) = "bump" {} + _BumpOutline ("Bump Outline", Range(0,1)) = 0 + _BumpFace ("Bump Face", Range(0,1)) = 0 + + _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1) + _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1) + _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } + _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) + + + _UnderlayColor ("Border Color", Color) = (0,0,0, 0.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767) + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + + Tags + { + "Queue"="Overlay" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest Always + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma target 3.0 + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ BEVEL_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + #pragma shader_feature __ GLOW_ON + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + struct vertex_t { + float4 position : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + + struct pixel_t { + float4 position : SV_POSITION; + fixed4 color : COLOR; + float2 atlas : TEXCOORD0; // Atlas + float4 param : TEXCOORD1; // alphaClip, scale, bias, weight + float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw) + float3 viewDir : TEXCOORD3; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 texcoord2 : TEXCOORD4; // u,v, scale, bias + fixed4 underlayColor : COLOR1; + #endif + float4 textures : TEXCOORD5; + }; + + // Used by Unity internally to handle Texture Tiling and Offset. + float4 _FaceTex_ST; + float4 _OutlineTex_ST; + + pixel_t VertShader(vertex_t input) + { + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.position; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; + if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float bias =(.5 - weight) + (.5 / scale); + + float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA); + + #if GLOW_ON + alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB); + #endif + + alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 underlayColor = _UnderlayColor; + underlayColor.rgb *= underlayColor.a; + + float bScale = scale; + bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale); + float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 bOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Support for texture tiling and offset + float2 textureUV = UnpackUV(input.texcoord1.x); + float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex); + float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex); + + pixel_t output = { + vPosition, + input.color, + input.texcoord0, + float4(alphaClip, scale, bias, weight), + half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), + mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz), + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4(input.texcoord0 + bOffset, bScale, bBias), + underlayColor, + #endif + float4(faceUV, outlineUV), + }; + + return output; + } + + + fixed4 PixShader(pixel_t input) : SV_Target + { + float c = tex2D(_MainTex, input.atlas).a; + + #ifndef UNDERLAY_ON + clip(c - input.param.x); + #endif + + float scale = input.param.y; + float bias = input.param.z; + float weight = input.param.w; + float sd = (bias - c) * scale; + + float outline = (_OutlineWidth * _ScaleRatioA) * scale; + float softness = (_OutlineSoftness * _ScaleRatioA) * scale; + + half4 faceColor = _FaceColor; + half4 outlineColor = _OutlineColor; + + faceColor.rgb *= input.color.rgb; + + faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y); + outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y); + + faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); + + #if BEVEL_ON + float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0); + float3 n = GetSurfaceNormal(input.atlas, weight, dxy); + + float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz; + bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); + n = normalize(n- bump); + + float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0)); + + float3 col = GetSpecular(n, light); + faceColor.rgb += col*faceColor.a; + faceColor.rgb *= 1-(dot(n, light)*_Diffuse); + faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z); + + fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n)); + faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; + #endif + + #if UNDERLAY_ON + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a); + #endif + + #if UNDERLAY_INNER + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a); + #endif + + #if GLOW_ON + float4 glowColor = GetGlowColor(sd, scale); + faceColor.rgb += glowColor.rgb * glowColor.a; + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + faceColor *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(faceColor.a - 0.001); + #endif + + return faceColor * input.color.a; + } + + ENDCG + } +} + +Fallback "TextMeshPro/Mobile/Distance Field" +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader.meta new file mode 100644 index 0000000..82f5837 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4a7755d6b5b67874f89c85f56f95fe97 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader new file mode 100644 index 0000000..8dd81a3 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader @@ -0,0 +1,245 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "TextMeshPro/Mobile/Distance Field - Masking" { + +Properties { + _FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _UnderlayColor ("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + _MaskTex ("Mask Texture", 2D) = "white" {} + _MaskInverse ("Inverse", float) = 0 + _MaskEdgeColor ("Edge Color", Color) = (1,1,1,1) + _MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01 + _MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest [unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + + struct vertex_t { + float4 vertex : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct pixel_t { + float4 vertex : SV_POSITION; + fixed4 faceColor : COLOR; + fixed4 outlineColor : COLOR1; + float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV + half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) + half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved + half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) + #endif + }; + + float _MaskWipeControl; + float _MaskEdgeSoftness; + fixed4 _MaskEdgeColor; + bool _MaskInverse; + + pixel_t VertShader(vertex_t input) + { + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; + if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float layerScale = scale; + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + float bias = (0.5 - weight) * scale - 0.5; + float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; + + float opacity = input.color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + fixed4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); + + #if (UNDERLAY_ON | UNDERLAY_INNER) + + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 layerOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Structure for pixel shader + pixel_t output = { + vPosition, + faceColor, + outlineColor, + float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), + half4(scale, bias - outline, bias + outline, bias), + half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4(input.texcoord0 + layerOffset, input.color.a, 0), + half2(layerScale, layerBias), + #endif + }; + + return output; + } + + + // PIXEL SHADER + fixed4 PixShader(pixel_t input) : SV_Target + { + half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; + half4 c = input.faceColor * saturate(d - input.param.w); + + #ifdef OUTLINE_ON + c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); + c *= saturate(d - input.param.y); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); + #endif + + #if UNDERLAY_INNER + half sd = saturate(d - input.param.z); + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + c *= m.x * m.y; + #endif + + float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a); + float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl; + a = saturate(t / _MaskEdgeSoftness); + c.rgb = lerp(_MaskEdgeColor.rgb*c.a, c.rgb, a); + c *= a; + + #if (UNDERLAY_ON | UNDERLAY_INNER) + c *= input.texcoord1.z; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader.meta new file mode 100644 index 0000000..a8f8281 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: afc255f7c2be52e41973a3d10a2e632d +timeCreated: 1463704911 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader new file mode 100644 index 0000000..adcdc05 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader @@ -0,0 +1,229 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "TextMeshPro/Mobile/Distance Field Overlay" { + +Properties { + _FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _UnderlayColor ("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "Queue"="Overlay" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest Always + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + + struct vertex_t { + float4 vertex : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct pixel_t { + float4 vertex : SV_POSITION; + fixed4 faceColor : COLOR; + fixed4 outlineColor : COLOR1; + float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV + half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) + half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved + half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) + #endif + }; + + + pixel_t VertShader(vertex_t input) + { + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; + if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float layerScale = scale; + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + float bias = (0.5 - weight) * scale - 0.5; + float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; + + float opacity = input.color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + fixed4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); + + #if (UNDERLAY_ON | UNDERLAY_INNER) + + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 layerOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Structure for pixel shader + pixel_t output = { + vPosition, + faceColor, + outlineColor, + float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), + half4(scale, bias - outline, bias + outline, bias), + half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4(input.texcoord0 + layerOffset, input.color.a, 0), + half2(layerScale, layerBias), + #endif + }; + + return output; + } + + + // PIXEL SHADER + fixed4 PixShader(pixel_t input) : SV_Target + { + half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; + half4 c = input.faceColor * saturate(d - input.param.w); + + #ifdef OUTLINE_ON + c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); + c *= saturate(d - input.param.y); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); + #endif + + #if UNDERLAY_INNER + half sd = saturate(d - input.param.z); + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + c *= m.x * m.y; + #endif + + #if (UNDERLAY_ON | UNDERLAY_INNER) + c *= input.texcoord1.z; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader.meta new file mode 100644 index 0000000..44e71b7 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9ecb3fe313cb5f7478141eba4a2d54ed +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader new file mode 100644 index 0000000..5c655d7 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader @@ -0,0 +1,229 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "TextMeshPro/Mobile/Distance Field" { + +Properties { + _FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _UnderlayColor ("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest [unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + + struct vertex_t { + float4 vertex : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct pixel_t { + float4 vertex : SV_POSITION; + fixed4 faceColor : COLOR; + fixed4 outlineColor : COLOR1; + float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV + half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) + half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved + half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) + #endif + }; + + + pixel_t VertShader(vertex_t input) + { + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; + if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float layerScale = scale; + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + float bias = (0.5 - weight) * scale - 0.5; + float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; + + float opacity = input.color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + fixed4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); + + #if (UNDERLAY_ON | UNDERLAY_INNER) + + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 layerOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Structure for pixel shader + pixel_t output = { + vPosition, + faceColor, + outlineColor, + float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), + half4(scale, bias - outline, bias + outline, bias), + half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4(input.texcoord0 + layerOffset, input.color.a, 0), + half2(layerScale, layerBias), + #endif + }; + + return output; + } + + + // PIXEL SHADER + fixed4 PixShader(pixel_t input) : SV_Target + { + half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; + half4 c = input.faceColor * saturate(d - input.param.w); + + #ifdef OUTLINE_ON + c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); + c *= saturate(d - input.param.y); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); + #endif + + #if UNDERLAY_INNER + half sd = saturate(d - input.param.z); + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + c *= m.x * m.y; + #endif + + #if (UNDERLAY_ON | UNDERLAY_INNER) + c *= input.texcoord1.z; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader.meta new file mode 100644 index 0000000..6a6d9d4 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cafd18099dfc0114896e0a8b277b81b6 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader new file mode 100644 index 0000000..ae78bc6 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader @@ -0,0 +1,136 @@ +// Simplified version of the SDF Surface shader : +// - No support for Bevel, Bump or envmap +// - Diffuse only lighting +// - Fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. + +Shader "TextMeshPro/Mobile/Distance Field (Surface)" { + +Properties { + _FaceTex ("Fill Texture", 2D) = "white" {} + _FaceColor ("Fill Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + // Should not be directly exposed to the user + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) + //_MaskSoftness ("Mask Softness", float) = 0 +} + +SubShader { + + Tags { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + LOD 300 + Cull [_CullMode] + + CGPROGRAM + #pragma surface PixShader Lambert alpha:blend vertex:VertShader noforwardadd nolightmap nodirlightmap + #pragma target 3.0 + #pragma shader_feature __ GLOW_ON + + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + half _FaceShininess; + half _OutlineShininess; + + struct Input + { + fixed4 color : COLOR; + float2 uv_MainTex; + float2 uv2_FaceTex; + float2 uv2_OutlineTex; + float2 param; // Weight, Scale + float3 viewDirEnv; + }; + + #include "TMPro_Surface.cginc" + + ENDCG + + // Pass to render object as a shadow caster + Pass + { + Name "Caster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On ZTest LEqual Cull Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_shadowcaster + #include "UnityCG.cginc" + + struct v2f { + V2F_SHADOW_CASTER; + float2 uv : TEXCOORD1; + float2 uv2 : TEXCOORD3; + float alphaClip : TEXCOORD2; + }; + + uniform float4 _MainTex_ST; + uniform float4 _OutlineTex_ST; + float _OutlineWidth; + float _FaceDilate; + float _ScaleRatioA; + + v2f vert( appdata_base v ) + { + v2f o; + TRANSFER_SHADOW_CASTER(o) + o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); + o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); + o.alphaClip = o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; + return o; + } + + uniform sampler2D _MainTex; + + float4 frag(v2f i) : COLOR + { + fixed4 texcol = tex2D(_MainTex, i.uv).a; + clip(texcol.a - i.alphaClip); + SHADOW_CASTER_FRAGMENT(i) + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader.meta new file mode 100644 index 0000000..a45c835 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3c2ea7753c1425145a74d106ec1cd852 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader new file mode 100644 index 0000000..08cee8d --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader @@ -0,0 +1,155 @@ +Shader "TextMeshPro/Distance Field (Surface)" { + +Properties { + _FaceTex ("Fill Texture", 2D) = "white" {} + _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 + _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 + _FaceColor ("Fill Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 + _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _Bevel ("Bevel", Range(0,1)) = 0.5 + _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 + _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 + _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 + _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 + + _BumpMap ("Normalmap", 2D) = "bump" {} + _BumpOutline ("Bump Outline", Range(0,1)) = 0.5 + _BumpFace ("Bump Face", Range(0,1)) = 0.5 + + _ReflectFaceColor ("Face Color", Color) = (0,0,0,1) + _ReflectOutlineColor ("Outline Color", Color) = (0,0,0,1) + _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } + _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) + _SpecColor ("Specular Color", Color) = (0,0,0,1) + + _FaceShininess ("Face Shininess", Range(0,1)) = 0 + _OutlineShininess ("Outline Shininess", Range(0,1)) = 0 + + _GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + // Should not be directly exposed to the user + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) + //_MaskSoftness ("Mask Softness", float) = 0 +} + +SubShader { + + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + + LOD 300 + Cull [_CullMode] + + CGPROGRAM + #pragma surface PixShader BlinnPhong alpha:blend vertex:VertShader nolightmap nodirlightmap + #pragma target 3.0 + #pragma shader_feature __ GLOW_ON + #pragma glsl + + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + half _FaceShininess; + half _OutlineShininess; + + struct Input + { + fixed4 color : COLOR; + float2 uv_MainTex; + float2 uv2_FaceTex; + float2 uv2_OutlineTex; + float2 param; // Weight, Scale + float3 viewDirEnv; + }; + + + #define BEVEL_ON 1 + #include "TMPro_Surface.cginc" + + ENDCG + + // Pass to render object as a shadow caster + Pass + { + Name "Caster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On + ZTest LEqual + Cull Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_shadowcaster + #include "UnityCG.cginc" + + struct v2f { + V2F_SHADOW_CASTER; + float2 uv : TEXCOORD1; + float2 uv2 : TEXCOORD3; + float alphaClip : TEXCOORD2; + }; + + uniform float4 _MainTex_ST; + uniform float4 _OutlineTex_ST; + float _OutlineWidth; + float _FaceDilate; + float _ScaleRatioA; + + v2f vert( appdata_base v ) + { + v2f o; + TRANSFER_SHADOW_CASTER(o) + o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); + o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); + o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; + return o; + } + + uniform sampler2D _MainTex; + + float4 frag(v2f i) : COLOR + { + fixed4 texcol = tex2D(_MainTex, i.uv).a; + clip(texcol.a - i.alphaClip); + SHADOW_CASTER_FRAGMENT(i) + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} + diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader.meta new file mode 100644 index 0000000..f0629ca --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8e6b9842dbb1a5a4887378afab854e63 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader new file mode 100644 index 0000000..b62ff2e --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader @@ -0,0 +1,305 @@ +Shader "TextMeshPro/Distance Field" { + +Properties { + _FaceTex ("Face Texture", 2D) = "white" {} + _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 + _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 + _FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 + _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(-1,1)) = 0 + + _Bevel ("Bevel", Range(0,1)) = 0.5 + _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 + _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 + _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 + _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 + + _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416 + _SpecularColor ("Specular", Color) = (1,1,1,1) + _SpecularPower ("Specular", Range(0,4)) = 2.0 + _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10 + _Diffuse ("Diffuse", Range(0,1)) = 0.5 + _Ambient ("Ambient", Range(1,0)) = 0.5 + + _BumpMap ("Normal map", 2D) = "bump" {} + _BumpOutline ("Bump Outline", Range(0,1)) = 0 + _BumpFace ("Bump Face", Range(0,1)) = 0 + + _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1) + _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1) + _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } + _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) + + + _UnderlayColor ("Border Color", Color) = (0,0,0, 0.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767) + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull Back + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest [unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma target 3.0 + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ BEVEL_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + #pragma shader_feature __ GLOW_ON + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + struct vertex_t { + float4 position : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + + struct pixel_t { + float4 position : SV_POSITION; + fixed4 color : COLOR; + float2 atlas : TEXCOORD0; // Atlas + float4 param : TEXCOORD1; // alphaClip, scale, bias, weight + float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw) + float3 viewDir : TEXCOORD3; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 texcoord2 : TEXCOORD4; // u,v, scale, bias + fixed4 underlayColor : COLOR1; + #endif + float4 textures : TEXCOORD5; + }; + + // Used by Unity internally to handle Texture Tiling and Offset. + float4 _FaceTex_ST; + float4 _OutlineTex_ST; + + pixel_t VertShader(vertex_t input) + { + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.position; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; + if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float bias =(.5 - weight) + (.5 / scale); + + float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA); + + #if GLOW_ON + alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB); + #endif + + alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 underlayColor = _UnderlayColor; + underlayColor.rgb *= underlayColor.a; + + float bScale = scale; + bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale); + float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 bOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Support for texture tiling and offset + float2 textureUV = UnpackUV(input.texcoord1.x); + float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex); + float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex); + + pixel_t output = { + vPosition, + input.color, + input.texcoord0, + float4(alphaClip, scale, bias, weight), + half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), + mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz), + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4(input.texcoord0 + bOffset, bScale, bBias), + underlayColor, + #endif + float4(faceUV, outlineUV), + }; + + return output; + } + + + fixed4 PixShader(pixel_t input) : SV_Target + { + float c = tex2D(_MainTex, input.atlas).a; + + #ifndef UNDERLAY_ON + clip(c - input.param.x); + #endif + + float scale = input.param.y; + float bias = input.param.z; + float weight = input.param.w; + float sd = (bias - c) * scale; + + float outline = (_OutlineWidth * _ScaleRatioA) * scale; + float softness = (_OutlineSoftness * _ScaleRatioA) * scale; + + half4 faceColor = _FaceColor; + half4 outlineColor = _OutlineColor; + + faceColor.rgb *= input.color.rgb; + + faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y); + outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y); + + faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); + + #if BEVEL_ON + float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0); + float3 n = GetSurfaceNormal(input.atlas, weight, dxy); + + float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz; + bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); + n = normalize(n- bump); + + float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0)); + + float3 col = GetSpecular(n, light); + faceColor.rgb += col*faceColor.a; + faceColor.rgb *= 1-(dot(n, light)*_Diffuse); + faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z); + + fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n)); + faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; + #endif + + #if UNDERLAY_ON + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a); + #endif + + #if UNDERLAY_INNER + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a); + #endif + + #if GLOW_ON + float4 glowColor = GetGlowColor(sd, scale); + faceColor.rgb += glowColor.rgb * glowColor.a; + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + faceColor *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(faceColor.a - 0.001); + #endif + + return faceColor * input.color.a; + } + + ENDCG + } +} + +Fallback "TextMeshPro/Mobile/Distance Field" +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader.meta new file mode 100644 index 0000000..6a086c5 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_SDF.shader.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dca26082f9cb439469295791d9f76fe5 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader b/Assets/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader new file mode 100644 index 0000000..f90467d --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader @@ -0,0 +1,113 @@ +Shader "TextMeshPro/Sprite" +{ + Properties + { + _MainTex ("Sprite Texture", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull Off + Lighting Off + ZWrite Off + ZTest [unity_GUIZTestMode] + Blend SrcAlpha OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + half2 texcoord : TEXCOORD0; + float4 worldPosition : TEXCOORD1; + }; + + fixed4 _Color; + fixed4 _TextureSampleAdd; + float4 _ClipRect; + + v2f vert(appdata_t IN) + { + v2f OUT; + OUT.worldPosition = IN.vertex; + OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); + + OUT.texcoord = IN.texcoord; + + #ifdef UNITY_HALF_TEXEL_OFFSET + OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); + #endif + + OUT.color = IN.color * _Color; + return OUT; + } + + sampler2D _MainTex; + + fixed4 frag(v2f IN) : SV_Target + { + half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; + + #if UNITY_UI_CLIP_RECT + color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); + #endif + + #ifdef UNITY_UI_ALPHACLIP + clip (color.a - 0.001); + #endif + + return color; + } + ENDCG + } + } +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader.meta b/Assets/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader.meta new file mode 100644 index 0000000..d769475 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3a1c68c8292caf046bd21158886c5e40 +timeCreated: 1450517184 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMPro.cginc b/Assets/TextMesh Pro/Resources/Shaders/TMPro.cginc new file mode 100644 index 0000000..5898130 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMPro.cginc @@ -0,0 +1,84 @@ +float2 UnpackUV(float uv) +{ + float2 output; + output.x = floor(uv / 4096); + output.y = uv - 4096 * output.x; + + return output * 0.001953125; +} + +fixed4 GetColor(half d, fixed4 faceColor, fixed4 outlineColor, half outline, half softness) +{ + half faceAlpha = 1-saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness)); + half outlineAlpha = saturate((d + outline * 0.5)) * sqrt(min(1.0, outline)); + + faceColor.rgb *= faceColor.a; + outlineColor.rgb *= outlineColor.a; + + faceColor = lerp(faceColor, outlineColor, outlineAlpha); + + faceColor *= faceAlpha; + + return faceColor; +} + +float3 GetSurfaceNormal(float4 h, float bias) +{ + bool raisedBevel = step(1, fmod(_ShaderFlags, 2)); + + h += bias+_BevelOffset; + + float bevelWidth = max(.01, _OutlineWidth+_BevelWidth); + + // Track outline + h -= .5; + h /= bevelWidth; + h = saturate(h+.5); + + if(raisedBevel) h = 1 - abs(h*2.0 - 1.0); + h = lerp(h, sin(h*3.141592/2.0), _BevelRoundness); + h = min(h, 1.0-_BevelClamp); + h *= _Bevel * bevelWidth * _GradientScale * -2.0; + + float3 va = normalize(float3(1.0, 0.0, h.y - h.x)); + float3 vb = normalize(float3(0.0, -1.0, h.w - h.z)); + + return cross(va, vb); +} + +float3 GetSurfaceNormal(float2 uv, float bias, float3 delta) +{ + // Read "height field" + float4 h = {tex2D(_MainTex, uv - delta.xz).a, + tex2D(_MainTex, uv + delta.xz).a, + tex2D(_MainTex, uv - delta.zy).a, + tex2D(_MainTex, uv + delta.zy).a}; + + return GetSurfaceNormal(h, bias); +} + +float3 GetSpecular(float3 n, float3 l) +{ + float spec = pow(max(0.0, dot(n, l)), _Reflectivity); + return _SpecularColor.rgb * spec * _SpecularPower; +} + +float4 GetGlowColor(float d, float scale) +{ + float glow = d - (_GlowOffset*_ScaleRatioB) * 0.5 * scale; + float t = lerp(_GlowInner, (_GlowOuter * _ScaleRatioB), step(0.0, glow)) * 0.5 * scale; + glow = saturate(abs(glow/(1.0 + t))); + glow = 1.0-pow(glow, _GlowPower); + glow *= sqrt(min(1.0, t)); // Fade off glow thinner than 1 screen pixel + return float4(_GlowColor.rgb, saturate(_GlowColor.a * glow * 2)); +} + +float4 BlendARGB(float4 overlying, float4 underlying) +{ + overlying.rgb *= overlying.a; + underlying.rgb *= underlying.a; + float3 blended = overlying.rgb + ((1-overlying.a)*underlying.rgb); + float alpha = underlying.a + (1-underlying.a)*overlying.a; + return float4(blended, alpha); +} + diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMPro.cginc.meta b/Assets/TextMesh Pro/Resources/Shaders/TMPro.cginc.meta new file mode 100644 index 0000000..dbc2afc --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMPro.cginc.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 438defe6a2827704f90bdf852732bc11 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc new file mode 100644 index 0000000..df1b6d9 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc @@ -0,0 +1,84 @@ +// UI Editable properties +uniform sampler2D _FaceTex; // Alpha : Signed Distance +uniform float _FaceUVSpeedX; +uniform float _FaceUVSpeedY; +uniform fixed4 _FaceColor; // RGBA : Color + Opacity +uniform float _FaceDilate; // v[ 0, 1] +uniform float _OutlineSoftness; // v[ 0, 1] + +uniform sampler2D _OutlineTex; // RGBA : Color + Opacity +uniform float _OutlineUVSpeedX; +uniform float _OutlineUVSpeedY; +uniform fixed4 _OutlineColor; // RGBA : Color + Opacity +uniform float _OutlineWidth; // v[ 0, 1] + +uniform float _Bevel; // v[ 0, 1] +uniform float _BevelOffset; // v[-1, 1] +uniform float _BevelWidth; // v[-1, 1] +uniform float _BevelClamp; // v[ 0, 1] +uniform float _BevelRoundness; // v[ 0, 1] + +uniform sampler2D _BumpMap; // Normal map +uniform float _BumpOutline; // v[ 0, 1] +uniform float _BumpFace; // v[ 0, 1] + +uniform samplerCUBE _Cube; // Cube / sphere map +uniform fixed4 _ReflectFaceColor; // RGB intensity +uniform fixed4 _ReflectOutlineColor; +//uniform float _EnvTiltX; // v[-1, 1] +//uniform float _EnvTiltY; // v[-1, 1] +uniform float3 _EnvMatrixRotation; +uniform float4x4 _EnvMatrix; + +uniform fixed4 _SpecularColor; // RGB intensity +uniform float _LightAngle; // v[ 0,Tau] +uniform float _SpecularPower; // v[ 0, 1] +uniform float _Reflectivity; // v[ 5, 15] +uniform float _Diffuse; // v[ 0, 1] +uniform float _Ambient; // v[ 0, 1] + +uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity +uniform float _UnderlayOffsetX; // v[-1, 1] +uniform float _UnderlayOffsetY; // v[-1, 1] +uniform float _UnderlayDilate; // v[-1, 1] +uniform float _UnderlaySoftness; // v[ 0, 1] + +uniform fixed4 _GlowColor; // RGBA : Color + Intesity +uniform float _GlowOffset; // v[-1, 1] +uniform float _GlowOuter; // v[ 0, 1] +uniform float _GlowInner; // v[ 0, 1] +uniform float _GlowPower; // v[ 1, 1/(1+4*4)] + +// API Editable properties +uniform float _ShaderFlags; +uniform float _WeightNormal; +uniform float _WeightBold; + +uniform float _ScaleRatioA; +uniform float _ScaleRatioB; +uniform float _ScaleRatioC; + +uniform float _VertexOffsetX; +uniform float _VertexOffsetY; + +//uniform float _UseClipRect; +uniform float _MaskID; +uniform sampler2D _MaskTex; +uniform float4 _MaskCoord; +uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w) +//uniform float _MaskWipeControl; +//uniform float _MaskEdgeSoftness; +//uniform fixed4 _MaskEdgeColor; +//uniform bool _MaskInverse; + +uniform float _MaskSoftnessX; +uniform float _MaskSoftnessY; + +// Font Atlas properties +uniform sampler2D _MainTex; +uniform float _TextureWidth; +uniform float _TextureHeight; +uniform float _GradientScale; +uniform float _ScaleX; +uniform float _ScaleY; +uniform float _PerspectiveFilter; diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc.meta b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc.meta new file mode 100644 index 0000000..211f0d3 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bc2d34f37efcbdf429ed46cb34aa2ad5 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc new file mode 100644 index 0000000..3659e87 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc @@ -0,0 +1,115 @@ +void VertShader(inout appdata_full v, out Input data) +{ + v.vertex.x += _VertexOffsetX; + v.vertex.y += _VertexOffsetY; + + UNITY_INITIALIZE_OUTPUT(Input, data); + + float bold = step(v.texcoord1.y, 0); + + // Generate normal for backface + float3 view = ObjSpaceViewDir(v.vertex); + v.normal *= sign(dot(v.normal, view)); + +#if USE_DERIVATIVE + data.param.y = 1; +#else + float4 vert = v.vertex; + float4 vPosition = UnityObjectToClipPos(vert); + float2 pixelSize = vPosition.w; + + pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy); + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(v.texcoord1.y) * _GradientScale * 1.5; + scale = lerp(scale * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + data.param.y = scale; +#endif + + //float opacity = v.color.a; + + data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; // + + v.texcoord1.xy = UnpackUV(v.texcoord1.x); + data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex)); +} + +void PixShader(Input input, inout SurfaceOutput o) +{ + +#if USE_DERIVATIVE | BEVEL_ON + float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0); + + float4 smp4x = { tex2D(_MainTex, input.uv_MainTex - delta.xz).a, + tex2D(_MainTex, input.uv_MainTex + delta.xz).a, + tex2D(_MainTex, input.uv_MainTex - delta.zy).a, + tex2D(_MainTex, input.uv_MainTex + delta.zy).a }; +#endif + +#if USE_DERIVATIVE + // Screen space scaling reciprocal with anisotropic correction + float2 edgeNormal = Normalize(float2(smp4x.x - smp4x.y, smp4x.z - smp4x.w)); + float2 res = float2(_TextureWidth * input.param.y, _TextureHeight); + float2 tdx = ddx(input.uv_MainTex)*res; + float2 tdy = ddy(input.uv_MainTex)*res; + float lx = length(tdx); + float ly = length(tdy); + float s = sqrt(min(lx, ly) / max(lx, ly)); + s = lerp(1, s, abs(dot(normalize(tdx + tdy), edgeNormal))); + float scale = rsqrt(abs(tdx.x * tdy.y - tdx.y * tdy.x)) * (_GradientScale * 2) * s; +#else + float scale = input.param.y; +#endif + + // Signed distance + float c = tex2D(_MainTex, input.uv_MainTex).a; + float sd = (.5 - c - input.param.x) * scale + .5; + float outline = _OutlineWidth*_ScaleRatioA * scale; + float softness = _OutlineSoftness*_ScaleRatioA * scale; + + // Color & Alpha + float4 faceColor = _FaceColor; + float4 outlineColor = _OutlineColor; + faceColor *= input.color; + outlineColor.a *= input.color.a; + faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y)); + outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y)); + faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); + faceColor.rgb /= max(faceColor.a, 0.0001); + + +#if BEVEL_ON + // Face Normal + float3 n = GetSurfaceNormal(smp4x, input.param.x); + + // Bumpmap + float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz; + bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); + bump = lerp(float3(0, 0, 1), bump, faceColor.a); + n = normalize(n - bump); + + // Cubemap reflection + fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n))); + float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; +#else + float3 n = float3(0, 0, -1); + float3 emission = float3(0, 0, 0); +#endif + + + +#if GLOW_ON + float4 glowColor = GetGlowColor(sd, scale); + glowColor.a *= input.color.a; + emission += glowColor.rgb*glowColor.a; + faceColor = BlendARGB(glowColor, faceColor); + faceColor.rgb /= max(faceColor.a, 0.0001); +#endif + + // Set Standard output structure + o.Albedo = faceColor.rgb; + o.Normal = -n; + o.Emission = emission; + o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5)); + o.Gloss = 1; + o.Alpha = faceColor.a; +} diff --git a/Assets/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc.meta b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc.meta new file mode 100644 index 0000000..f018b32 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d37b1512245a86f4fa830a2e6488a787 +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Sprite Assets.meta b/Assets/TextMesh Pro/Resources/Sprite Assets.meta new file mode 100644 index 0000000..3553f2a --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Sprite Assets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ce7b3ef6569c1cd4ebb8cbb1d378803f +folderAsset: yes +timeCreated: 1441876896 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset new file mode 100644 index 0000000..9330080 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset @@ -0,0 +1,296 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2103686 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TextMeshPro/Sprite + m_Shader: {fileID: 4800000, guid: 3a1c68c8292caf046bd21158886c5e40, type: 3} + m_ShaderKeywords: UNITY_UI_CLIP_RECT + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: 6ec706981a919c3489f0b061a40054e2, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _ColorMask: 15 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UseUIAlphaClip: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _Color: {r: 1, g: 1, b: 1, a: 1} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2019389346, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: EmojiOne + m_EditorClassIdentifier: + hashCode: -1836805472 + material: {fileID: 2103686} + materialHashCode: 0 + spriteSheet: {fileID: 2800000, guid: 6ec706981a919c3489f0b061a40054e2, type: 3} + spriteInfoList: + - id: 0 + x: 0 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f60a + hashCode: 57188336 + unicode: 128522 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 1 + x: 128 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f60b + hashCode: 57188339 + unicode: 128523 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 2 + x: 256 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f60d + hashCode: 57188341 + unicode: 128525 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 3 + x: 384 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f60e + hashCode: 57188340 + unicode: 128526 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 4 + x: 0 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f600 + hashCode: 57188257 + unicode: 128512 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 5 + x: 128 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f601 + hashCode: 57188256 + unicode: 128513 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 6 + x: 256 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f602 + hashCode: 57188259 + unicode: 128514 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 7 + x: 384 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f603 + hashCode: 57188258 + unicode: 128515 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 8 + x: 0 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f604 + hashCode: 57188261 + unicode: 128516 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 9 + x: 128 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f605 + hashCode: 57188260 + unicode: 128517 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 10 + x: 256 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f606 + hashCode: 57188263 + unicode: 128518 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 11 + x: 384 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f609 + hashCode: 57188264 + unicode: 128521 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 12 + x: 0 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f618 + hashCode: 57188168 + unicode: 128536 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 13 + x: 128 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f923 + hashCode: 57200239 + unicode: 129315 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 14 + x: 256 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 263a + hashCode: 1748406 + unicode: 9786 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 15 + x: 384 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 2639 + hashCode: 1748462 + unicode: 9785 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + fallbackSpriteAssets: [] +--- !u!21 &1369835458 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TextMeshPro/Sprite + m_Shader: {fileID: 4800000, guid: 3a1c68c8292caf046bd21158886c5e40, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Floats: [] + m_Colors: [] diff --git a/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta new file mode 100644 index 0000000..1fce538 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a952e2781ef26940ae089f1053ef4ef +timeCreated: 1480316912 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Style Sheets.meta b/Assets/TextMesh Pro/Resources/Style Sheets.meta new file mode 100644 index 0000000..c33633f --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Style Sheets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8b71c098faa2cd44c92acf2ea26de983 +folderAsset: yes +timeCreated: 1441876950 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset new file mode 100644 index 0000000..7431945 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset @@ -0,0 +1,68 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1936749209, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: Default Style Sheet + m_EditorClassIdentifier: + m_StyleList: + - m_Name: H1 + m_HashCode: 2425 + m_OpeningDefinition: <#40ff80>* + m_ClosingDefinition: '*' + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d00000032000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000660000006600000038000000300000003e0000002a000000 + m_ClosingTagArray: 2a0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: Quote + m_HashCode: 92254330 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000690000003e0000003c00000073000000690000007a000000650000003d0000003700000035000000250000003e0000003c0000006d000000610000007200000067000000690000006e0000003d0000003100000030000000250000003e000000 + m_ClosingTagArray: 3c0000002f000000690000003e0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f00000077000000690000006400000074000000680000003e0000003c0000002f0000006d000000610000007200000067000000690000006e0000003e000000 + - m_Name: Link + m_HashCode: 2687968 + m_OpeningDefinition: <#40a0ff> + m_ClosingDefinition: + m_OpeningTagArray: 3c000000750000003e0000003c000000230000003400000030000000610000003000000066000000660000003e0000003c0000006c000000690000006e0000006b0000003d0000002200000049000000440000005f00000030000000310000003e000000 + m_ClosingTagArray: 3c0000002f000000750000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f0000006c000000690000006e0000006b0000003e000000 + - m_Name: Title + m_HashCode: 98732960 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e0000003c000000620000003e0000003c000000610000006c00000069000000670000006e0000003d00000063000000650000006e0000007400000065000000720000003e000000 + m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000610000006c00000069000000670000006e0000003e000000 + - m_Name: H2 + m_HashCode: 2426 + m_OpeningDefinition: <#4080FF> + m_ClosingDefinition: + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e00000035000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000380000003000000046000000460000003e000000 + m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: H3 + m_HashCode: 2427 + m_OpeningDefinition: <#FF8040> + m_ClosingDefinition: + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e0000003100000037000000650000006d0000003e0000003c000000620000003e0000003c000000230000004600000046000000380000003000000034000000300000003e000000 + m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: C1 + m_HashCode: 2194 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000660000006600000034000000300000003e000000 + m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: C2 + m_HashCode: 2193 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000340000003000000046000000460000003e0000003c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e000000 + m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f00000073000000690000007a000000650000003e000000 + - m_Name: C3 + m_HashCode: 2192 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000003800000030000000410000003000000046000000460000003e0000003c000000620000003e000000 + m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f000000620000003e000000 diff --git a/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta new file mode 100644 index 0000000..ab9581a --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 54d1085f9a2fdea4587fcfc7dddcd4bc +timeCreated: 1432805430 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/TMP Settings.asset b/Assets/TextMesh Pro/Resources/TMP Settings.asset new file mode 100644 index 0000000..bf35e36 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/TMP Settings.asset @@ -0,0 +1,41 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -395462249, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: TMP Settings + m_EditorClassIdentifier: + m_version: 1.0.56.0b1 + m_enableWordWrapping: 1 + m_enableKerning: 1 + m_enableExtraPadding: 0 + m_enableTintAllSprites: 0 + m_enableParseEscapeCharacters: 1 + m_missingGlyphCharacter: 0 + m_warningsDisabled: 0 + m_defaultFontAsset: {fileID: 11400000, guid: 715b80e429c437e40867928a4e1fc975, type: 2} + m_defaultFontAssetPath: Fonts & Materials/ + m_defaultFontSize: 36 + m_defaultAutoSizeMinRatio: 0.5 + m_defaultAutoSizeMaxRatio: 2 + m_defaultTextMeshProTextContainerSize: {x: 20, y: 5} + m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50} + m_autoSizeTextContainer: 0 + m_fallbackFontAssets: [] + m_matchMaterialPreset: 1 + m_defaultSpriteAsset: {fileID: 11400000, guid: 9a952e2781ef26940ae089f1053ef4ef, + type: 2} + m_defaultSpriteAssetPath: Sprite Assets/ + m_defaultColorGradientPresetsPath: Color Gradient Presets/ + m_enableEmojiSupport: 1 + m_defaultStyleSheet: {fileID: 11400000, guid: 54d1085f9a2fdea4587fcfc7dddcd4bc, + type: 2} + m_leadingCharacters: {fileID: 4900000, guid: 8d713940fcbede142ae4a33ea0062b33, type: 3} + m_followingCharacters: {fileID: 4900000, guid: 312ba5b9e90627940866e19549a788cf, + type: 3} diff --git a/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta b/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta new file mode 100644 index 0000000..e749b31 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69ed5bac41eebaa4c97e9d2a4168c54f +timeCreated: 1436653997 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites.meta b/Assets/TextMesh Pro/Sprites.meta new file mode 100644 index 0000000..c41590f --- /dev/null +++ b/Assets/TextMesh Pro/Sprites.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c336e756999cb3042a6289c4ca4f4e9d +folderAsset: yes +timeCreated: 1465377353 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt new file mode 100644 index 0000000..384180a --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt @@ -0,0 +1,3 @@ +This sample of beautiful emojis are provided by EmojiOne https://www.emojione.com/ + +Please visit their website to view the complete set of their emojis and review their licensing terms. \ No newline at end of file diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta new file mode 100644 index 0000000..0d30e65 --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 381dcb09d5029d14897e55f98031fca5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.json b/Assets/TextMesh Pro/Sprites/EmojiOne.json new file mode 100644 index 0000000..6c4e50b --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne.json @@ -0,0 +1,156 @@ +{"frames": [ + +{ + "filename": "1f60a.png", + "frame": {"x":0,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f60b.png", + "frame": {"x":128,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f60d.png", + "frame": {"x":256,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f60e.png", + "frame": {"x":384,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f600.png", + "frame": {"x":0,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f601.png", + "frame": {"x":128,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f602.png", + "frame": {"x":256,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f603.png", + "frame": {"x":384,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f604.png", + "frame": {"x":0,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f605.png", + "frame": {"x":128,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f606.png", + "frame": {"x":256,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f609.png", + "frame": {"x":384,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f618.png", + "frame": {"x":0,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f923.png", + "frame": {"x":128,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "263a.png", + "frame": {"x":256,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "2639.png", + "frame": {"x":384,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "http://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "EmojiOne.png", + "format": "RGBA8888", + "size": {"w":512,"h":512}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:196a26a2e149d875b91ffc8fa3581e76:fc928c7e275404b7e0649307410475cb:424723c3774975ddb2053fd5c4b85f6e$" +} +} diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta b/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta new file mode 100644 index 0000000..3387566 --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 748cdb94b0f517549be55e992f81c46c +timeCreated: 1480316860 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.png b/Assets/TextMesh Pro/Sprites/EmojiOne.png new file mode 100644 index 0000000..4adb015 Binary files /dev/null and b/Assets/TextMesh Pro/Sprites/EmojiOne.png differ diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta b/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta new file mode 100644 index 0000000..b8a3558 --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 6ec706981a919c3489f0b061a40054e2 +timeCreated: 1480316860 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/User Guide.meta b/Assets/TextMesh Pro/User Guide.meta new file mode 100644 index 0000000..02a9292 --- /dev/null +++ b/Assets/TextMesh Pro/User Guide.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 863f62626963a6445b92586f336ae65d +folderAsset: yes +timeCreated: 1436068007 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/User Guide/TextMesh Pro User Guide 2016.pdf b/Assets/TextMesh Pro/User Guide/TextMesh Pro User Guide 2016.pdf new file mode 100644 index 0000000..c2ea2d2 Binary files /dev/null and b/Assets/TextMesh Pro/User Guide/TextMesh Pro User Guide 2016.pdf differ diff --git a/Assets/TextMesh Pro/User Guide/TextMesh Pro User Guide 2016.pdf.meta b/Assets/TextMesh Pro/User Guide/TextMesh Pro User Guide 2016.pdf.meta new file mode 100644 index 0000000..7d48a47 --- /dev/null +++ b/Assets/TextMesh Pro/User Guide/TextMesh Pro User Guide 2016.pdf.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 88d4997d1fa3b604a839c2353d262eb7 +timeCreated: 1487147918 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/dofdev-logo.png b/Assets/dofdev-logo.png new file mode 100644 index 0000000..3756135 Binary files /dev/null and b/Assets/dofdev-logo.png differ diff --git a/Assets/dofdev-logo.png.meta b/Assets/dofdev-logo.png.meta new file mode 100644 index 0000000..8b9f864 --- /dev/null +++ b/Assets/dofdev-logo.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 4107640e92960cf48b2733ae645113ac +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: f354d7eb34cb1134e895ff4e2cdd3618 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/entezoa.blend b/Assets/entezoa.blend new file mode 100644 index 0000000..d0bf260 Binary files /dev/null and b/Assets/entezoa.blend differ diff --git a/Assets/entezoa.blend.meta b/Assets/entezoa.blend.meta new file mode 100644 index 0000000..647c304 --- /dev/null +++ b/Assets/entezoa.blend.meta @@ -0,0 +1,296 @@ +fileFormatVersion: 2 +guid: 1cc1b125262248c4ba967763bf40c861 +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: Arrow + 100002: //RootNode + 100004: Face0Default + 100006: Face1Eat + 100008: Face2Eaten + 100010: Face3Bump + 100012: Face4BoxGameover + 100014: Face5SelfGameover + 100016: Food + 100018: Head + 100020: Head.001 + 100022: Head.002 + 100024: Head.003 + 100026: Head.004 + 100028: Head.005 + 100030: InsideOut + 100032: Leaderboard + 100034: Segment + 100036: shippingLabel + 100038: Tape + 100040: ui + 100042: uiCanvas + 100044: uiConfig + 100046: uiCursor + 100048: uiHome + 100050: uiKnob + 100052: uiPlay + 100054: uiQuit + 100056: uiRestart + 100058: Face0 + 100060: Face1 + 100062: Face2 + 100064: Face3 + 100066: Face4 + 100068: Face5 + 100070: InsideOut.001 + 100072: Core + 100074: uiColor + 100076: Core.001 + 100078: Drip + 100080: Poof + 400000: Arrow + 400002: //RootNode + 400004: Face0Default + 400006: Face1Eat + 400008: Face2Eaten + 400010: Face3Bump + 400012: Face4BoxGameover + 400014: Face5SelfGameover + 400016: Food + 400018: Head + 400020: Head.001 + 400022: Head.002 + 400024: Head.003 + 400026: Head.004 + 400028: Head.005 + 400030: InsideOut + 400032: Leaderboard + 400034: Segment + 400036: shippingLabel + 400038: Tape + 400040: ui + 400042: uiCanvas + 400044: uiConfig + 400046: uiCursor + 400048: uiHome + 400050: uiKnob + 400052: uiPlay + 400054: uiQuit + 400056: uiRestart + 400058: Face0 + 400060: Face1 + 400062: Face2 + 400064: Face3 + 400066: Face4 + 400068: Face5 + 400070: InsideOut.001 + 400072: Core + 400074: uiColor + 400076: Core.001 + 400078: Drip + 400080: Poof + 2100000: No Name + 2300000: Arrow + 2300002: Face0Default + 2300004: Face1Eat + 2300006: Face2Eaten + 2300008: Face3Bump + 2300010: Face4BoxGameover + 2300012: Face5SelfGameover + 2300014: Food + 2300016: Head + 2300018: Head.001 + 2300020: Head.002 + 2300022: Head.003 + 2300024: Head.004 + 2300026: Head.005 + 2300028: InsideOut + 2300030: Leaderboard + 2300032: Segment + 2300034: shippingLabel + 2300036: Tape + 2300038: ui + 2300040: uiCanvas + 2300042: uiConfig + 2300044: uiCursor + 2300046: uiHome + 2300048: uiKnob + 2300050: uiPlay + 2300052: uiQuit + 2300054: uiRestart + 2300056: Face0 + 2300058: Face1 + 2300060: Face2 + 2300062: Face3 + 2300064: Face4 + 2300066: Face5 + 2300068: InsideOut.001 + 2300070: Core + 2300072: uiColor + 2300074: Core.001 + 2300076: Drip + 2300078: Poof + 3300000: Arrow + 3300002: Face0Default + 3300004: Face1Eat + 3300006: Face2Eaten + 3300008: Face3Bump + 3300010: Face4BoxGameover + 3300012: Face5SelfGameover + 3300014: Food + 3300016: Head + 3300018: Head.001 + 3300020: Head.002 + 3300022: Head.003 + 3300024: Head.004 + 3300026: Head.005 + 3300028: InsideOut + 3300030: Leaderboard + 3300032: Segment + 3300034: shippingLabel + 3300036: Tape + 3300038: ui + 3300040: uiCanvas + 3300042: uiConfig + 3300044: uiCursor + 3300046: uiHome + 3300048: uiKnob + 3300050: uiPlay + 3300052: uiQuit + 3300054: uiRestart + 3300056: Face0 + 3300058: Face1 + 3300060: Face2 + 3300062: Face3 + 3300064: Face4 + 3300066: Face5 + 3300068: InsideOut.001 + 3300070: Core + 3300072: uiColor + 3300074: Core.001 + 3300076: Drip + 3300078: Poof + 4300000: Arrow + 4300002: InsideOut + 4300004: Segment + 4300006: Food + 4300008: Head + 4300010: Face1Eat + 4300012: uiPlay + 4300014: ui + 4300016: uiCursor + 4300018: uiQuit + 4300020: uiConfig + 4300022: uiRestart + 4300024: uiHome + 4300026: uiKnob + 4300028: Tape + 4300030: Face0Default + 4300032: Face4BoxGameover + 4300034: shippingLabel + 4300036: Face2Eaten + 4300038: Face3Bump + 4300040: Face5SelfGameover + 4300042: Head.001 + 4300044: Head.002 + 4300046: Head.003 + 4300048: Head.004 + 4300050: Head.005 + 4300052: Leaderboard + 4300054: uiCanvas + 4300056: Face0 + 4300058: Face1 + 4300060: Face2 + 4300062: Face3 + 4300064: Face4 + 4300066: Face5 + 4300068: InsideOut.001 + 4300070: Core + 4300072: uiColor + 4300074: Core.001 + 4300076: Drip + 4300078: Poof + 9500000: //RootNode + 2186277476908879412: ImportLogs + externalObjects: {} + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 0 + importBlendShapes: 1 + importCameras: 0 + importLights: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 0 + preserveHierarchy: 0 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 1 + hasPreviousCalculatedGlobalScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/entezoa.blend1 b/Assets/entezoa.blend1 new file mode 100644 index 0000000..04d665e Binary files /dev/null and b/Assets/entezoa.blend1 differ diff --git a/Assets/entezoa.blend1.meta b/Assets/entezoa.blend1.meta new file mode 100644 index 0000000..c2cacc1 --- /dev/null +++ b/Assets/entezoa.blend1.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 67b1d243ab193d9499b1dac9a52293a2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/snakeinabox-icon.png b/Assets/snakeinabox-icon.png new file mode 100644 index 0000000..5d86375 Binary files /dev/null and b/Assets/snakeinabox-icon.png differ diff --git a/Assets/snakeinabox-icon.png.meta b/Assets/snakeinabox-icon.png.meta new file mode 100644 index 0000000..0a74384 --- /dev/null +++ b/Assets/snakeinabox-icon.png.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 29cb7d361dca49d45b7619f3317df8fb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json new file mode 100644 index 0000000..8e29abd --- /dev/null +++ b/Packages/manifest.json @@ -0,0 +1,40 @@ +{ + "dependencies": { + "com.unity.memoryprofiler": "0.2.3-preview.2", + "com.unity.package-manager-ui": "2.0.8", + "com.unity.recorder": "2.1.0-preview.1", + "com.unity.xr.oculus.android": "1.38.6", + "com.unity.xr.oculus.standalone": "1.38.4", + "com.unity.xr.openvr.standalone": "1.0.5", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } +} diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..4f31e74 --- /dev/null +++ b/ProjectSettings/AudioManager.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..b3c263d --- /dev/null +++ b/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..93e7b16 --- /dev/null +++ b/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,11 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: + - enabled: 1 + path: Assets/Scenes/Main.unity + guid: 9fc0d4010bbf28b4594072e72b8655ab + m_configObjects: {} diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..29dea52 --- /dev/null +++ b/ProjectSettings/EditorSettings.asset @@ -0,0 +1,21 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 2 + m_DefaultBehaviorMode: 0 + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd + m_ProjectGenerationRootNamespace: + m_UserGeneratedProjectSuffix: + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..7997460 --- /dev/null +++ b/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,65 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 0 + m_LightsUseColorTemperature: 0 + m_LogWhenShaderIsCompiled: 0 diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..9582192 --- /dev/null +++ b/ProjectSettings/InputManager.asset @@ -0,0 +1,327 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Oculus_GearVR_LThumbstickX + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_GearVR_LThumbstickY + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_GearVR_RThumbstickX + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_GearVR_RThumbstickY + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 3 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_GearVR_DpadX + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 4 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_GearVR_DpadY + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 5 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_GearVR_LIndexTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 12 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_GearVR_RIndexTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.001 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 11 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_Button2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_Button4 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryThumbstick + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 8 + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryThumbstick + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 9 + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryIndexTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 8 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryIndexTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 9 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryHandTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 10 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryHandTrigger + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 11 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryThumbstickHorizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_PrimaryThumbstickVertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryThumbstickHorizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 3 + joyNum: 0 + - serializedVersion: 3 + m_Name: Oculus_CrossPlatform_SecondaryThumbstickVertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 4 + joyNum: 0 diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/ProjectSettings/NetworkManager.asset b/ProjectSettings/NetworkManager.asset new file mode 100644 index 0000000..5dc6a83 --- /dev/null +++ b/ProjectSettings/NetworkManager.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!149 &1 +NetworkManager: + m_ObjectHideFlags: 0 + m_DebugLevel: 0 + m_Sendrate: 15 + m_AssetToPrefab: {} diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..57760e2 --- /dev/null +++ b/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,38 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_ChangeStopsCallbacks: 0 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..820e662 --- /dev/null +++ b/ProjectSettings/PresetManager.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + m_DefaultList: + - type: + m_NativeTypeID: 108 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, + type: 2} + - type: + m_NativeTypeID: 1020 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, + type: 2} + - type: + m_NativeTypeID: 1006 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + defaultPresets: + - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, + type: 2} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..a141f46 --- /dev/null +++ b/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,740 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 18 + productGUID: a5a51708f810f8849bad5fece25ef681 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 3 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: dofdev + productName: SnakeInABox + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: + - logo: {fileID: 21300000, guid: 4107640e92960cf48b2733ae645113ac, type: 3} + duration: 2 + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 0 + m_MTRendering: 1 + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + displayResolutionDialog: 1 + iosUseCustomAppBackgroundBehavior: 0 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 0 + androidBlitType: 0 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 1 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + graphicsJobs: 0 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + graphicsJobMode: 0 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 0 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + vulkanEnableSetSRGBWrite: 0 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleVersion: 6 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + isWsaHolographicRemotingEnabled: 0 + vrSettings: + cardboard: + depthFormat: 0 + enableTransitionView: 0 + daydream: + depthFormat: 0 + useSustainedPerformanceMode: 0 + enableVideoLayer: 0 + useProtectedVideoMemory: 0 + minimumSupportedHeadTracking: 0 + maximumSupportedHeadTracking: 1 + hololens: + depthFormat: 1 + depthBufferSharingEnabled: 1 + oculus: + sharedDepthBuffer: 1 + dashSupport: 1 + lowOverheadMode: 0 + protectedContext: 0 + v2Signing: 1 + enable360StereoCapture: 0 + protectGraphicsMemory: 0 + enableFrameTimingStats: 0 + useHDRDisplay: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + applicationIdentifier: + Android: com.dofdev.SnakeInABox + Standalone: com.dofdev.SnakeInABox + buildNumber: {} + AndroidBundleVersionCode: 57 + AndroidMinSdkVersion: 22 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 0 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 1 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSTargetOSVersionString: 9.0 + tvOSSdkVersion: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 9.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + iPhoneSplashScreen: {fileID: 0} + iPhoneHighResSplashScreen: {fileID: 0} + iPhoneTallHighResSplashScreen: {fileID: 0} + iPhone47inSplashScreen: {fileID: 0} + iPhone55inPortraitSplashScreen: {fileID: 0} + iPhone55inLandscapeSplashScreen: {fileID: 0} + iPhone58inPortraitSplashScreen: {fileID: 0} + iPhone58inLandscapeSplashScreen: {fileID: 0} + iPadPortraitSplashScreen: {fileID: 0} + iPadHighResPortraitSplashScreen: {fileID: 0} + iPadLandscapeSplashScreen: {fileID: 0} + iPadHighResLandscapeSplashScreen: {fileID: 0} + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSUseLaunchScreenStoryboard: 0 + iOSLaunchScreenCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + iOSRenderExtraFrameOnPause: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.unity.template.3d@1.3.0 + templateDefaultScene: Assets/Scenes/SampleScene.unity + AndroidTargetArchitectures: 1 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + resolutionDialogBanner: {fileID: 0} + m_BuildTargetIcons: + - m_BuildTarget: + m_Icons: + - serializedVersion: 2 + m_Icon: {fileID: 2800000, guid: 29cb7d361dca49d45b7619f3317df8fb, type: 3} + m_Width: 128 + m_Height: 128 + m_Kind: 0 + m_BuildTargetPlatformIcons: + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 0b00000008000000 + m_Automatic: 1 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 0 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 1 + m_Devices: + - Oculus + - OpenVR + - m_BuildTarget: Android + m_Enabled: 1 + m_Devices: + - Oculus + m_BuildTargetEnableVuforiaSettings: [] + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchTouchScreenUsage: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 3 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchPlayerConnectionEnabled: 1 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + spritePackerPolicy: + webGLMemorySize: 256 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 1 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + scriptingDefineSymbols: {} + platformArchitecture: {} + scriptingBackend: + Android: 1 + il2cppCompilerConfiguration: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + allowUnsafeCode: 0 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + apiCompatibilityLevelPerPlatform: {} + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Template_3D + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Template_3D + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, + a: 1} + metroSplashScreenUseBackgroundColor: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + metroCompilationOverrides: 1 + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + xboxOneScriptCompiler: 1 + XboxOneOverrideIdentityName: + vrEditorSettings: + daydream: + daydreamIconForeground: {fileID: 0} + daydreamIconBackground: {fileID: 0} + cloudServicesEnabled: + UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_PrivateKeyPath: + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + facebookSdkVersion: 7.9.4 + facebookAppId: + facebookCookies: 1 + facebookLogging: 1 + facebookStatus: 1 + facebookXfbml: 0 + facebookFrictionlessRequests: 1 + apiCompatibilityLevel: 6 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + projectName: + organizationId: + cloudEnabled: 0 + enableNativePlatformBackendsForNewInputSystem: 0 + disableOldInputManagerSupport: 0 + legacyClampBlendShapeWeights: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..4c21eea --- /dev/null +++ b/ProjectSettings/ProjectVersion.txt @@ -0,0 +1 @@ +m_EditorVersion: 2018.4.14f1 diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..280d220 --- /dev/null +++ b/ProjectSettings/QualitySettings.asset @@ -0,0 +1,57 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 0 + m_QualitySettings: + - serializedVersion: 2 + name: Ultra + pixelLightCount: 0 + shadows: 0 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 4 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 1 + vSyncCount: 0 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 0 + Nintendo 3DS: 0 + Nintendo Switch: 0 + PS4: 0 + PSP2: 0 + Standalone: 0 + Tizen: 0 + WebGL: 0 + WiiU: 0 + Windows Store Apps: 0 + XboxOne: 0 + iPhone: 0 + tvOS: 0 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..729fae4 --- /dev/null +++ b/ProjectSettings/TagManager.asset @@ -0,0 +1,44 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: + - Record + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - PostProcessing + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..06bcc6d --- /dev/null +++ b/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.1 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..c3ae9a0 --- /dev/null +++ b/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 1 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..6e0eaca --- /dev/null +++ b/ProjectSettings/VFXManager.asset @@ -0,0 +1,11 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29